@lcap/nasl 3.2.0-beta.4 → 3.3.0-alpha

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 (774) hide show
  1. package/out/automate/upgrader/2.20.js +1 -1
  2. package/out/automate/upgrader/2.20.js.map +1 -1
  3. package/out/bak/translator.js +11 -15
  4. package/out/bak/translator.js.map +1 -1
  5. package/out/breakpoint/generator/AfterStartNode.js +3 -1
  6. package/out/breakpoint/generator/AfterStartNode.js.map +1 -1
  7. package/out/breakpoint/generator/BeforeEndNode.js.map +1 -1
  8. package/out/breakpoint/generator/BreakpointNode.d.ts +1 -0
  9. package/out/breakpoint/generator/BreakpointNode.js +48 -15
  10. package/out/breakpoint/generator/BreakpointNode.js.map +1 -1
  11. package/out/breakpoint/generator/CallbackNode.d.ts +4 -0
  12. package/out/breakpoint/generator/CallbackNode.js +22 -0
  13. package/out/breakpoint/generator/CallbackNode.js.map +1 -0
  14. package/out/breakpoint/generator/FragmentNode.d.ts +4 -0
  15. package/out/breakpoint/generator/FragmentNode.js +18 -0
  16. package/out/breakpoint/generator/FragmentNode.js.map +1 -0
  17. package/out/breakpoint/generator/index.js +25 -4
  18. package/out/breakpoint/generator/index.js.map +1 -1
  19. package/out/breakpoint/shared/constants.d.ts +3 -0
  20. package/out/breakpoint/shared/constants.js +6 -1
  21. package/out/breakpoint/shared/constants.js.map +1 -1
  22. package/out/breakpoint/shared/operations.js.map +1 -1
  23. package/out/breakpoint/shared/socket.d.ts +1 -1
  24. package/out/breakpoint/shared/socket.js +36 -7
  25. package/out/breakpoint/shared/socket.js.map +1 -1
  26. package/out/breakpoint/shared/utils.d.ts +2 -0
  27. package/out/breakpoint/shared/utils.js +15 -2
  28. package/out/breakpoint/shared/utils.js.map +1 -1
  29. package/out/breakpoint/store/core.d.ts +48 -2
  30. package/out/breakpoint/store/core.js +58 -32
  31. package/out/breakpoint/store/core.js.map +1 -1
  32. package/out/breakpoint/store/dock.js +1 -1
  33. package/out/breakpoint/store/dock.js.map +1 -1
  34. package/out/common/BaseNode.d.ts +1 -1
  35. package/out/common/BaseNode.js +105 -51
  36. package/out/common/BaseNode.js.map +1 -1
  37. package/out/common/Command.d.ts +13 -2
  38. package/out/common/Command.js +37 -9
  39. package/out/common/Command.js.map +1 -1
  40. package/out/common/EventEmitter.js.map +1 -1
  41. package/out/common/Messager.d.ts +3 -3
  42. package/out/common/Messager.js +6 -7
  43. package/out/common/Messager.js.map +1 -1
  44. package/out/common/asyncFuncMap.js.map +1 -1
  45. package/out/concepts/Abort__.js +6 -5
  46. package/out/concepts/Abort__.js.map +1 -1
  47. package/out/concepts/Anchor__.d.ts +4 -3
  48. package/out/concepts/Anchor__.js +24 -7
  49. package/out/concepts/Anchor__.js.map +1 -1
  50. package/out/concepts/AnonymousFunction__.d.ts +22 -21
  51. package/out/concepts/AnonymousFunction__.js +48 -22
  52. package/out/concepts/AnonymousFunction__.js.map +1 -1
  53. package/out/concepts/App__.d.ts +421 -247
  54. package/out/concepts/App__.js +286 -54
  55. package/out/concepts/App__.js.map +1 -1
  56. package/out/concepts/Argument__.d.ts +4 -3
  57. package/out/concepts/Argument__.js +42 -11
  58. package/out/concepts/Argument__.js.map +1 -1
  59. package/out/concepts/Assignee__.d.ts +45 -45
  60. package/out/concepts/Assignee__.js +15 -15
  61. package/out/concepts/Assignee__.js.map +1 -1
  62. package/out/concepts/AssignmentLine__.js +6 -5
  63. package/out/concepts/AssignmentLine__.js.map +1 -1
  64. package/out/concepts/Assignment__.d.ts +7 -6
  65. package/out/concepts/Assignment__.js +40 -22
  66. package/out/concepts/Assignment__.js.map +1 -1
  67. package/out/concepts/Attribute__.d.ts +3 -3
  68. package/out/concepts/Attribute__.js +8 -7
  69. package/out/concepts/Attribute__.js.map +1 -1
  70. package/out/concepts/AuthInterface__.js +4 -3
  71. package/out/concepts/AuthInterface__.js.map +1 -1
  72. package/out/concepts/AuthLogicForCallInterface__.d.ts +15 -15
  73. package/out/concepts/AuthLogicForCallInterface__.js +46 -27
  74. package/out/concepts/AuthLogicForCallInterface__.js.map +1 -1
  75. package/out/concepts/AuthLogic__.js +27 -13
  76. package/out/concepts/AuthLogic__.js.map +1 -1
  77. package/out/concepts/BackendVariable__.d.ts +5 -5
  78. package/out/concepts/BackendVariable__.js +23 -26
  79. package/out/concepts/BackendVariable__.js.map +1 -1
  80. package/out/concepts/Backend__.d.ts +18 -18
  81. package/out/concepts/Backend__.js +13 -13
  82. package/out/concepts/Backend__.js.map +1 -1
  83. package/out/concepts/BatchAssignment__.d.ts +34 -33
  84. package/out/concepts/BatchAssignment__.js +83 -43
  85. package/out/concepts/BatchAssignment__.js.map +1 -1
  86. package/out/concepts/BinaryExpression__.d.ts +7 -6
  87. package/out/concepts/BinaryExpression__.js +60 -24
  88. package/out/concepts/BinaryExpression__.js.map +1 -1
  89. package/out/concepts/BindAttribute__.d.ts +37 -37
  90. package/out/concepts/BindAttribute__.js +101 -48
  91. package/out/concepts/BindAttribute__.js.map +1 -1
  92. package/out/concepts/BindDirective__.d.ts +13 -13
  93. package/out/concepts/BindDirective__.js +23 -21
  94. package/out/concepts/BindDirective__.js.map +1 -1
  95. package/out/concepts/BindEvent__.d.ts +28 -28
  96. package/out/concepts/BindEvent__.js +99 -48
  97. package/out/concepts/BindEvent__.js.map +1 -1
  98. package/out/concepts/BindStyle__.d.ts +14 -15
  99. package/out/concepts/BindStyle__.js +16 -16
  100. package/out/concepts/BindStyle__.js.map +1 -1
  101. package/out/concepts/BooleanLiteral__.d.ts +1 -0
  102. package/out/concepts/BooleanLiteral__.js +12 -5
  103. package/out/concepts/BooleanLiteral__.js.map +1 -1
  104. package/out/concepts/CallAuthInterface__.d.ts +15 -15
  105. package/out/concepts/CallAuthInterface__.js +23 -22
  106. package/out/concepts/CallAuthInterface__.js.map +1 -1
  107. package/out/concepts/CallConnector__.d.ts +11 -9
  108. package/out/concepts/CallConnector__.js +79 -36
  109. package/out/concepts/CallConnector__.js.map +1 -1
  110. package/out/concepts/CallFunction__.d.ts +17 -16
  111. package/out/concepts/CallFunction__.js +95 -63
  112. package/out/concepts/CallFunction__.js.map +1 -1
  113. package/out/concepts/CallInterface__.d.ts +9 -8
  114. package/out/concepts/CallInterface__.js +71 -30
  115. package/out/concepts/CallInterface__.js.map +1 -1
  116. package/out/concepts/CallLogic__.d.ts +20 -19
  117. package/out/concepts/CallLogic__.js +155 -52
  118. package/out/concepts/CallLogic__.js.map +1 -1
  119. package/out/concepts/CallQueryComponent__.d.ts +51 -51
  120. package/out/concepts/CallQueryComponent__.js +66 -63
  121. package/out/concepts/CallQueryComponent__.js.map +1 -1
  122. package/out/concepts/Comment__.d.ts +1 -0
  123. package/out/concepts/Comment__.js +13 -6
  124. package/out/concepts/Comment__.js.map +1 -1
  125. package/out/concepts/CompletionProperty__.d.ts +3 -3
  126. package/out/concepts/CompletionProperty__.js +8 -7
  127. package/out/concepts/CompletionProperty__.js.map +1 -1
  128. package/out/concepts/ConfigGroup__.d.ts +15 -15
  129. package/out/concepts/ConfigGroup__.js +9 -9
  130. package/out/concepts/ConfigGroup__.js.map +1 -1
  131. package/out/concepts/ConfigPropertyValue__.js +4 -3
  132. package/out/concepts/ConfigPropertyValue__.js.map +1 -1
  133. package/out/concepts/ConfigProperty__.d.ts +15 -15
  134. package/out/concepts/ConfigProperty__.js +10 -10
  135. package/out/concepts/ConfigProperty__.js.map +1 -1
  136. package/out/concepts/Configuration__.d.ts +15 -15
  137. package/out/concepts/Configuration__.js +9 -9
  138. package/out/concepts/Configuration__.js.map +1 -1
  139. package/out/concepts/Connection__.d.ts +166 -0
  140. package/out/concepts/Connection__.js +332 -0
  141. package/out/concepts/Connection__.js.map +1 -0
  142. package/out/concepts/ConnectorTrigger__.js +4 -3
  143. package/out/concepts/ConnectorTrigger__.js.map +1 -1
  144. package/out/concepts/Connector__.d.ts +66 -66
  145. package/out/concepts/Connector__.js +16 -15
  146. package/out/concepts/Connector__.js.map +1 -1
  147. package/out/concepts/Constant__.d.ts +3 -3
  148. package/out/concepts/Constant__.js +8 -7
  149. package/out/concepts/Constant__.js.map +1 -1
  150. package/out/concepts/DataElement__.d.ts +3 -3
  151. package/out/concepts/DataElement__.js +6 -5
  152. package/out/concepts/DataElement__.js.map +1 -1
  153. package/out/concepts/DataSource__.d.ts +15 -15
  154. package/out/concepts/DataSource__.js +55 -39
  155. package/out/concepts/DataSource__.js.map +1 -1
  156. package/out/concepts/DatabaseTypeAnnotation__.js +4 -3
  157. package/out/concepts/DatabaseTypeAnnotation__.js.map +1 -1
  158. package/out/concepts/Destination__.d.ts +12 -11
  159. package/out/concepts/Destination__.js +93 -36
  160. package/out/concepts/Destination__.js.map +1 -1
  161. package/out/concepts/End__.js +15 -13
  162. package/out/concepts/End__.js.map +1 -1
  163. package/out/concepts/EntityIndex__.d.ts +1 -1
  164. package/out/concepts/EntityIndex__.js +6 -5
  165. package/out/concepts/EntityIndex__.js.map +1 -1
  166. package/out/concepts/EntityProperty__.d.ts +8 -7
  167. package/out/concepts/EntityProperty__.js +39 -24
  168. package/out/concepts/EntityProperty__.js.map +1 -1
  169. package/out/concepts/Entity__.d.ts +31 -30
  170. package/out/concepts/Entity__.js +40 -16
  171. package/out/concepts/Entity__.js.map +1 -1
  172. package/out/concepts/EnumItem__.d.ts +1 -0
  173. package/out/concepts/EnumItem__.js +12 -5
  174. package/out/concepts/EnumItem__.js.map +1 -1
  175. package/out/concepts/Enum__.d.ts +9 -8
  176. package/out/concepts/Enum__.js +24 -11
  177. package/out/concepts/Enum__.js.map +1 -1
  178. package/out/concepts/Event__.d.ts +15 -15
  179. package/out/concepts/Event__.js +6 -5
  180. package/out/concepts/Event__.js.map +1 -1
  181. package/out/concepts/ExternalDestination__.d.ts +6 -6
  182. package/out/concepts/ExternalDestination__.js +12 -11
  183. package/out/concepts/ExternalDestination__.js.map +1 -1
  184. package/out/concepts/ForEachStatement__.d.ts +25 -24
  185. package/out/concepts/ForEachStatement__.js +101 -36
  186. package/out/concepts/ForEachStatement__.js.map +1 -1
  187. package/out/concepts/FrontendLibrary__.d.ts +30 -30
  188. package/out/concepts/FrontendLibrary__.js +12 -13
  189. package/out/concepts/FrontendLibrary__.js.map +1 -1
  190. package/out/concepts/FrontendVariable__.js +4 -3
  191. package/out/concepts/FrontendVariable__.js.map +1 -1
  192. package/out/concepts/Frontend__.d.ts +64 -65
  193. package/out/concepts/Frontend__.js +23 -27
  194. package/out/concepts/Frontend__.js.map +1 -1
  195. package/out/concepts/Function__.d.ts +64 -63
  196. package/out/concepts/Function__.js +49 -21
  197. package/out/concepts/Function__.js.map +1 -1
  198. package/out/concepts/Identifier__.js +37 -31
  199. package/out/concepts/Identifier__.js.map +1 -1
  200. package/out/concepts/IfStatement__.d.ts +20 -19
  201. package/out/concepts/IfStatement__.js +64 -34
  202. package/out/concepts/IfStatement__.js.map +1 -1
  203. package/out/concepts/Integration__.d.ts +3 -3
  204. package/out/concepts/Integration__.js +8 -7
  205. package/out/concepts/Integration__.js.map +1 -1
  206. package/out/concepts/InterfaceParam__.d.ts +3 -3
  207. package/out/concepts/InterfaceParam__.js +7 -6
  208. package/out/concepts/InterfaceParam__.js.map +1 -1
  209. package/out/concepts/Interface__.d.ts +33 -33
  210. package/out/concepts/Interface__.js +19 -20
  211. package/out/concepts/Interface__.js.map +1 -1
  212. package/out/concepts/JSBlock__.d.ts +1 -0
  213. package/out/concepts/JSBlock__.js +12 -5
  214. package/out/concepts/JSBlock__.js.map +1 -1
  215. package/out/concepts/JavaLogic__.js +10 -9
  216. package/out/concepts/JavaLogic__.js.map +1 -1
  217. package/out/concepts/LogicItem__.d.ts +6 -0
  218. package/out/concepts/LogicItem__.js +14 -5
  219. package/out/concepts/LogicItem__.js.map +1 -1
  220. package/out/concepts/Logic__.d.ts +80 -79
  221. package/out/concepts/Logic__.js +204 -58
  222. package/out/concepts/Logic__.js.map +1 -1
  223. package/out/concepts/MatchCase__.d.ts +39 -38
  224. package/out/concepts/MatchCase__.js +122 -37
  225. package/out/concepts/MatchCase__.js.map +1 -1
  226. package/out/concepts/Match__.d.ts +13 -11
  227. package/out/concepts/Match__.js +128 -60
  228. package/out/concepts/Match__.js.map +1 -1
  229. package/out/concepts/MemberExpression__.d.ts +7 -6
  230. package/out/concepts/MemberExpression__.js +52 -22
  231. package/out/concepts/MemberExpression__.js.map +1 -1
  232. package/out/concepts/MicroApp__.js +4 -3
  233. package/out/concepts/MicroApp__.js.map +1 -1
  234. package/out/concepts/Module__.d.ts +239 -155
  235. package/out/concepts/Module__.js +139 -33
  236. package/out/concepts/Module__.js.map +1 -1
  237. package/out/concepts/MsgTriggerEvent__.d.ts +15 -15
  238. package/out/concepts/MsgTriggerEvent__.js +6 -5
  239. package/out/concepts/MsgTriggerEvent__.js.map +1 -1
  240. package/out/concepts/MsgTriggerLauncher__.d.ts +23 -15
  241. package/out/concepts/MsgTriggerLauncher__.js +24 -5
  242. package/out/concepts/MsgTriggerLauncher__.js.map +1 -1
  243. package/out/concepts/Namespace__.d.ts +180 -180
  244. package/out/concepts/Namespace__.js +33 -34
  245. package/out/concepts/Namespace__.js.map +1 -1
  246. package/out/concepts/NewComposite__.d.ts +49 -48
  247. package/out/concepts/NewComposite__.js +164 -49
  248. package/out/concepts/NewComposite__.js.map +1 -1
  249. package/out/concepts/NewList__.d.ts +19 -18
  250. package/out/concepts/NewList__.js +29 -12
  251. package/out/concepts/NewList__.js.map +1 -1
  252. package/out/concepts/NewMap__.d.ts +34 -33
  253. package/out/concepts/NewMap__.js +81 -72
  254. package/out/concepts/NewMap__.js.map +1 -1
  255. package/out/concepts/New__.js +6 -5
  256. package/out/concepts/New__.js.map +1 -1
  257. package/out/concepts/NullLiteral__.js +6 -5
  258. package/out/concepts/NullLiteral__.js.map +1 -1
  259. package/out/concepts/NumericLiteral__.d.ts +4 -3
  260. package/out/concepts/NumericLiteral__.js +15 -8
  261. package/out/concepts/NumericLiteral__.js.map +1 -1
  262. package/out/concepts/OqlQueryComponent__.d.ts +4 -3
  263. package/out/concepts/OqlQueryComponent__.js +25 -16
  264. package/out/concepts/OqlQueryComponent__.js.map +1 -1
  265. package/out/concepts/OverriddenLogic__.d.ts +79 -79
  266. package/out/concepts/OverriddenLogic__.js +79 -58
  267. package/out/concepts/OverriddenLogic__.js.map +1 -1
  268. package/out/concepts/Param__.d.ts +6 -5
  269. package/out/concepts/Param__.js +66 -29
  270. package/out/concepts/Param__.js.map +1 -1
  271. package/out/concepts/Point__.js +4 -3
  272. package/out/concepts/Point__.js.map +1 -1
  273. package/out/concepts/ProcessComponent__.d.ts +30 -30
  274. package/out/concepts/ProcessComponent__.js +8 -7
  275. package/out/concepts/ProcessComponent__.js.map +1 -1
  276. package/out/concepts/ProcessElement__.d.ts +96 -96
  277. package/out/concepts/ProcessElement__.js +34 -34
  278. package/out/concepts/ProcessElement__.js.map +1 -1
  279. package/out/concepts/ProcessOutcome__.js +6 -5
  280. package/out/concepts/ProcessOutcome__.js.map +1 -1
  281. package/out/concepts/ProcessOutcomes__.js +6 -5
  282. package/out/concepts/ProcessOutcomes__.js.map +1 -1
  283. package/out/concepts/Process__.d.ts +75 -75
  284. package/out/concepts/Process__.js +33 -30
  285. package/out/concepts/Process__.js.map +1 -1
  286. package/out/concepts/QueryAggregateExpression__.d.ts +3 -3
  287. package/out/concepts/QueryAggregateExpression__.js +8 -7
  288. package/out/concepts/QueryAggregateExpression__.js.map +1 -1
  289. package/out/concepts/QueryFieldExpression__.js +7 -6
  290. package/out/concepts/QueryFieldExpression__.js.map +1 -1
  291. package/out/concepts/QueryFromExpression__.d.ts +8 -8
  292. package/out/concepts/QueryFromExpression__.js +8 -7
  293. package/out/concepts/QueryFromExpression__.js.map +1 -1
  294. package/out/concepts/QueryGroupByExpression__.d.ts +3 -3
  295. package/out/concepts/QueryGroupByExpression__.js +9 -10
  296. package/out/concepts/QueryGroupByExpression__.js.map +1 -1
  297. package/out/concepts/QueryJoinExpression__.d.ts +23 -23
  298. package/out/concepts/QueryJoinExpression__.js +11 -10
  299. package/out/concepts/QueryJoinExpression__.js.map +1 -1
  300. package/out/concepts/QueryLimitExpression__.d.ts +6 -6
  301. package/out/concepts/QueryLimitExpression__.js +9 -8
  302. package/out/concepts/QueryLimitExpression__.js.map +1 -1
  303. package/out/concepts/QueryOrderByExpression__.d.ts +6 -6
  304. package/out/concepts/QueryOrderByExpression__.js +9 -8
  305. package/out/concepts/QueryOrderByExpression__.js.map +1 -1
  306. package/out/concepts/QuerySelectExpression__.d.ts +30 -30
  307. package/out/concepts/QuerySelectExpression__.js +9 -8
  308. package/out/concepts/QuerySelectExpression__.js.map +1 -1
  309. package/out/concepts/Rect__.js +4 -3
  310. package/out/concepts/Rect__.js.map +1 -1
  311. package/out/concepts/Return__.d.ts +4 -3
  312. package/out/concepts/Return__.js +37 -18
  313. package/out/concepts/Return__.js.map +1 -1
  314. package/out/concepts/Role__.js +9 -9
  315. package/out/concepts/Role__.js.map +1 -1
  316. package/out/concepts/SelectMembers__.d.ts +18 -18
  317. package/out/concepts/SelectMembers__.js +10 -9
  318. package/out/concepts/SelectMembers__.js.map +1 -1
  319. package/out/concepts/Slot__.d.ts +3 -3
  320. package/out/concepts/Slot__.js +6 -5
  321. package/out/concepts/Slot__.js.map +1 -1
  322. package/out/concepts/SqlQueryComponent__.d.ts +4 -3
  323. package/out/concepts/SqlQueryComponent__.js +21 -12
  324. package/out/concepts/SqlQueryComponent__.js.map +1 -1
  325. package/out/concepts/Start__.js +6 -5
  326. package/out/concepts/Start__.js.map +1 -1
  327. package/out/concepts/StringInterpolation__.d.ts +16 -15
  328. package/out/concepts/StringInterpolation__.js +37 -14
  329. package/out/concepts/StringInterpolation__.js.map +1 -1
  330. package/out/concepts/StringLiteral__.d.ts +1 -0
  331. package/out/concepts/StringLiteral__.js +13 -8
  332. package/out/concepts/StringLiteral__.js.map +1 -1
  333. package/out/concepts/StructureProperty__.d.ts +4 -3
  334. package/out/concepts/StructureProperty__.js +22 -9
  335. package/out/concepts/StructureProperty__.js.map +1 -1
  336. package/out/concepts/Structure__.d.ts +31 -30
  337. package/out/concepts/Structure__.js +27 -15
  338. package/out/concepts/Structure__.js.map +1 -1
  339. package/out/concepts/SwitchCase__.d.ts +12 -11
  340. package/out/concepts/SwitchCase__.js +69 -31
  341. package/out/concepts/SwitchCase__.js.map +1 -1
  342. package/out/concepts/SwitchStatement__.d.ts +9 -8
  343. package/out/concepts/SwitchStatement__.js +27 -7
  344. package/out/concepts/SwitchStatement__.js.map +1 -1
  345. package/out/concepts/Theme__.js +4 -3
  346. package/out/concepts/Theme__.js.map +1 -1
  347. package/out/concepts/Transactional__.js +4 -3
  348. package/out/concepts/Transactional__.js.map +1 -1
  349. package/out/concepts/TriggerEvent__.d.ts +15 -15
  350. package/out/concepts/TriggerEvent__.js +6 -5
  351. package/out/concepts/TriggerEvent__.js.map +1 -1
  352. package/out/concepts/TriggerLauncher__.d.ts +15 -10
  353. package/out/concepts/TriggerLauncher__.js +54 -32
  354. package/out/concepts/TriggerLauncher__.js.map +1 -1
  355. package/out/concepts/TypeAnnotation__.d.ts +28 -27
  356. package/out/concepts/TypeAnnotation__.js +144 -124
  357. package/out/concepts/TypeAnnotation__.js.map +1 -1
  358. package/out/concepts/TypeParam__.d.ts +1 -0
  359. package/out/concepts/TypeParam__.js +12 -5
  360. package/out/concepts/TypeParam__.js.map +1 -1
  361. package/out/concepts/UnaryExpression__.d.ts +4 -3
  362. package/out/concepts/UnaryExpression__.js +31 -20
  363. package/out/concepts/UnaryExpression__.js.map +1 -1
  364. package/out/concepts/Unparsed__.d.ts +1 -0
  365. package/out/concepts/Unparsed__.js +12 -5
  366. package/out/concepts/Unparsed__.js.map +1 -1
  367. package/out/concepts/UseComponent__.js +4 -3
  368. package/out/concepts/UseComponent__.js.map +1 -1
  369. package/out/concepts/ValidationRule__.d.ts +14 -14
  370. package/out/concepts/ValidationRule__.js +19 -17
  371. package/out/concepts/ValidationRule__.js.map +1 -1
  372. package/out/concepts/Variable__.d.ts +4 -3
  373. package/out/concepts/Variable__.js +39 -23
  374. package/out/concepts/Variable__.js.map +1 -1
  375. package/out/concepts/ViewBlock__.js +4 -3
  376. package/out/concepts/ViewBlock__.js.map +1 -1
  377. package/out/concepts/ViewComponent__.d.ts +90 -90
  378. package/out/concepts/ViewComponent__.js +16 -15
  379. package/out/concepts/ViewComponent__.js.map +1 -1
  380. package/out/concepts/ViewElement__.d.ts +91 -86
  381. package/out/concepts/ViewElement__.js +218 -146
  382. package/out/concepts/ViewElement__.js.map +1 -1
  383. package/out/concepts/View__.d.ts +92 -92
  384. package/out/concepts/View__.js +135 -60
  385. package/out/concepts/View__.js.map +1 -1
  386. package/out/concepts/WhileStatement__.d.ts +12 -11
  387. package/out/concepts/WhileStatement__.js +46 -23
  388. package/out/concepts/WhileStatement__.js.map +1 -1
  389. package/out/concepts/index__.d.ts +2 -1
  390. package/out/concepts/index__.js +2 -1
  391. package/out/concepts/index__.js.map +1 -1
  392. package/out/concepts/types__.d.ts +2 -1
  393. package/out/decorators/index.d.ts +1 -1
  394. package/out/decorators/index.js +20 -7
  395. package/out/decorators/index.js.map +1 -1
  396. package/out/decorators/promise.d.ts +7 -0
  397. package/out/decorators/promise.js +28 -0
  398. package/out/decorators/promise.js.map +1 -0
  399. package/out/enums/KEYWORDS.js.map +1 -1
  400. package/out/enums/LEVEL_NAME_MAP.js.map +1 -1
  401. package/out/generator/compileComponent.js.map +1 -1
  402. package/out/generator/genBundleFiles.d.ts +4 -1
  403. package/out/generator/genBundleFiles.js +15 -11
  404. package/out/generator/genBundleFiles.js.map +1 -1
  405. package/out/generator/genHash.js.map +1 -1
  406. package/out/generator/genMetaData.js +12 -8
  407. package/out/generator/genMetaData.js.map +1 -1
  408. package/out/generator/genReleaseBody.js +33 -35
  409. package/out/generator/genReleaseBody.js.map +1 -1
  410. package/out/generator/microApp.js +2 -1
  411. package/out/generator/microApp.js.map +1 -1
  412. package/out/generator/permission.js +16 -14
  413. package/out/generator/permission.js.map +1 -1
  414. package/out/generator/styleReplacer.js +4 -7
  415. package/out/generator/styleReplacer.js.map +1 -1
  416. package/out/index.d.ts +0 -2
  417. package/out/index.js +0 -3
  418. package/out/index.js.map +1 -1
  419. package/out/manager/diagnostic.d.ts +1 -1
  420. package/out/manager/diagnostic.js.map +1 -1
  421. package/out/manager/stepRecorder.js +13 -9
  422. package/out/manager/stepRecorder.js.map +1 -1
  423. package/out/natural/RequirementAnalyzer.d.ts +22 -0
  424. package/out/natural/RequirementAnalyzer.js +196 -0
  425. package/out/natural/RequirementAnalyzer.js.map +1 -0
  426. package/out/natural/RequirementExecutor.d.ts +51 -0
  427. package/out/natural/RequirementExecutor.js +692 -0
  428. package/out/natural/RequirementExecutor.js.map +1 -0
  429. package/out/natural/componentData.d.ts +31 -0
  430. package/out/natural/componentData.js +85 -0
  431. package/out/natural/componentData.js.map +1 -0
  432. package/out/natural/genNaturalTS.d.ts +3 -0
  433. package/out/natural/genNaturalTS.js +76 -0
  434. package/out/natural/genNaturalTS.js.map +1 -0
  435. package/out/natural/index.d.ts +4 -0
  436. package/out/natural/index.js +21 -0
  437. package/out/natural/index.js.map +1 -0
  438. package/out/natural/knowledgeMap.d.ts +4 -0
  439. package/out/natural/knowledgeMap.js +40 -0
  440. package/out/natural/knowledgeMap.js.map +1 -0
  441. package/out/natural/naslStdlibMap.d.ts +2 -0
  442. package/out/natural/naslStdlibMap.js +26 -0
  443. package/out/natural/naslStdlibMap.js.map +1 -0
  444. package/out/natural/transformTSCode.d.ts +7 -0
  445. package/out/natural/transformTSCode.js +760 -0
  446. package/out/natural/transformTSCode.js.map +1 -0
  447. package/out/sentry/index.d.ts +2 -1
  448. package/out/sentry/index.js.map +1 -1
  449. package/out/server/createUiTs.js +28 -16
  450. package/out/server/createUiTs.js.map +1 -1
  451. package/out/server/entity2LogicNamespace.js +24 -22
  452. package/out/server/entity2LogicNamespace.js.map +1 -1
  453. package/out/server/event.js.map +1 -1
  454. package/out/server/extendBaseNode.js +55 -70
  455. package/out/server/extendBaseNode.js.map +1 -1
  456. package/out/server/formatTsUtils.js +46 -50
  457. package/out/server/formatTsUtils.js.map +1 -1
  458. package/out/server/getConnector.d.ts +3 -3
  459. package/out/server/getConnector.js +7 -8
  460. package/out/server/getConnector.js.map +1 -1
  461. package/out/server/getExtensionModules.js +2 -2
  462. package/out/server/getExtensionModules.js.map +1 -1
  463. package/out/server/getFunctions.js.map +1 -1
  464. package/out/server/getInterfaces.js.map +1 -1
  465. package/out/server/getLogging.js.map +1 -1
  466. package/out/server/getLogics.d.ts +1 -1
  467. package/out/server/getLogics.js +34 -16
  468. package/out/server/getLogics.js.map +1 -1
  469. package/out/server/getMemberIdentifier.js +13 -10
  470. package/out/server/getMemberIdentifier.js.map +1 -1
  471. package/out/server/getProcessComponents.js.map +1 -1
  472. package/out/server/getProcesses.js +21 -29
  473. package/out/server/getProcesses.js.map +1 -1
  474. package/out/server/getScope.js.map +1 -1
  475. package/out/server/getValidates.js.map +1 -1
  476. package/out/server/index.js +0 -1
  477. package/out/server/index.js.map +1 -1
  478. package/out/server/naslServer.d.ts +99 -94
  479. package/out/server/naslServer.js +485 -465
  480. package/out/server/naslServer.js.map +1 -1
  481. package/out/server/naslStdlibMap.js +4 -2
  482. package/out/server/naslStdlibMap.js.map +1 -1
  483. package/out/server/process2LogicNamespace.js.map +1 -1
  484. package/out/server/translator.d.ts +1 -1
  485. package/out/server/translator.js +52 -47
  486. package/out/server/translator.js.map +1 -1
  487. package/out/service/storage/init.d.ts +15 -1
  488. package/out/service/storage/init.js +65 -56
  489. package/out/service/storage/init.js.map +1 -1
  490. package/out/templator/genCallComponentLogic.js +1 -2
  491. package/out/templator/genCallComponentLogic.js.map +1 -1
  492. package/out/templator/genCreateBlock.js +13 -8
  493. package/out/templator/genCreateBlock.js.map +1 -1
  494. package/out/templator/genCurdEditMultipleKeyBlock.js +19 -10
  495. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  496. package/out/templator/genCurdMultipleKeyBlock.js +22 -26
  497. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  498. package/out/templator/genEditTableBlock.js +11 -12
  499. package/out/templator/genEditTableBlock.js.map +1 -1
  500. package/out/templator/genEnumSelectBlock.js +1 -1
  501. package/out/templator/genEnumSelectBlock.js.map +1 -1
  502. package/out/templator/genGetBlock.js +2 -2
  503. package/out/templator/genGetBlock.js.map +1 -1
  504. package/out/templator/genGridViewBlock.js +10 -14
  505. package/out/templator/genGridViewBlock.js.map +1 -1
  506. package/out/templator/genListViewBlock.js +4 -7
  507. package/out/templator/genListViewBlock.js.map +1 -1
  508. package/out/templator/genQueryComponent.js +22 -15
  509. package/out/templator/genQueryComponent.js.map +1 -1
  510. package/out/templator/genSelectBlock.js +12 -33
  511. package/out/templator/genSelectBlock.js.map +1 -1
  512. package/out/templator/genTableBlock.js +8 -10
  513. package/out/templator/genTableBlock.js.map +1 -1
  514. package/out/templator/genUpdateBlock.js +12 -7
  515. package/out/templator/genUpdateBlock.js.map +1 -1
  516. package/out/templator/index.d.ts +4 -2
  517. package/out/templator/index.js +2 -2
  518. package/out/templator/index.js.map +1 -1
  519. package/out/templator/utils.d.ts +2 -2
  520. package/out/templator/utils.js +21 -22
  521. package/out/templator/utils.js.map +1 -1
  522. package/out/translator/index.js +27 -28
  523. package/out/translator/index.js.map +1 -1
  524. package/out/utils/index.d.ts +2 -1
  525. package/out/utils/index.js +8 -14
  526. package/out/utils/index.js.map +1 -1
  527. package/out/utils/logger.js.map +1 -1
  528. package/out/utils/sortTsString.js +3 -1
  529. package/out/utils/sortTsString.js.map +1 -1
  530. package/out/utils/string.js +8 -11
  531. package/out/utils/string.js.map +1 -1
  532. package/out/utils/time-slicing.d.ts +41 -0
  533. package/out/utils/time-slicing.js +81 -0
  534. package/out/utils/time-slicing.js.map +1 -0
  535. package/out/utils/traverse.js +4 -6
  536. package/out/utils/traverse.js.map +1 -1
  537. package/package.json +11 -7
  538. package/sandbox/stdlib/nasl.auth.ts +49 -46
  539. package/sandbox/stdlib/nasl.http.ts +29 -31
  540. package/sandbox/stdlib/nasl.ui.definition.ts +13 -1
  541. package/sandbox-natural/stdlib/nasl.core.ts +36 -0
  542. package/sandbox-natural/stdlib/nasl.oql.ts +8 -0
  543. package/sandbox-natural/stdlib/nasl.ui.ts +56 -0
  544. package/sandbox-natural/stdlib/nasl.util.ts +26 -0
  545. package/sandbox-natural/tsconfig.json +12 -0
  546. package/src/automate/upgrader/2.20.js +1 -1
  547. package/src/bak/translator.js +92 -99
  548. package/src/breakpoint/generator/AfterStartNode.ts +19 -17
  549. package/src/breakpoint/generator/BeforeEndNode.ts +17 -17
  550. package/src/breakpoint/generator/BreakpointNode.ts +243 -195
  551. package/src/breakpoint/generator/CallbackNode.ts +20 -0
  552. package/src/breakpoint/generator/FragmentNode.ts +14 -0
  553. package/src/breakpoint/generator/index.ts +107 -80
  554. package/src/breakpoint/shared/constants.ts +59 -53
  555. package/src/breakpoint/shared/operations.ts +6 -6
  556. package/src/breakpoint/shared/socket.ts +277 -223
  557. package/src/breakpoint/shared/utils.ts +166 -146
  558. package/src/breakpoint/store/core.ts +326 -297
  559. package/src/breakpoint/store/dock.ts +103 -103
  560. package/src/breakpoint/types/index.d.ts +11 -11
  561. package/src/common/BaseNode.ts +1102 -1024
  562. package/src/common/Command.ts +46 -16
  563. package/src/common/ComponentAPI.ts +72 -72
  564. package/src/common/EventEmitter.ts +80 -76
  565. package/src/common/Messager.ts +223 -224
  566. package/src/common/asyncFuncMap.ts +12 -12
  567. package/src/concepts/Abort__.ts +53 -60
  568. package/src/concepts/Anchor__.ts +158 -149
  569. package/src/concepts/AnonymousFunction__.ts +584 -551
  570. package/src/concepts/App__.ts +4278 -3671
  571. package/src/concepts/Argument__.ts +234 -210
  572. package/src/concepts/Assignee__.ts +680 -656
  573. package/src/concepts/AssignmentLine__.ts +80 -84
  574. package/src/concepts/Assignment__.ts +275 -264
  575. package/src/concepts/Attribute__.ts +183 -184
  576. package/src/concepts/AuthInterface__.ts +61 -63
  577. package/src/concepts/AuthLogicForCallInterface__.ts +540 -511
  578. package/src/concepts/AuthLogic__.ts +210 -194
  579. package/src/concepts/BackendVariable__.ts +414 -415
  580. package/src/concepts/Backend__.ts +317 -303
  581. package/src/concepts/BatchAssignment__.ts +987 -939
  582. package/src/concepts/BinaryExpression__.ts +370 -341
  583. package/src/concepts/BindAttribute__.ts +1057 -1007
  584. package/src/concepts/BindDirective__.ts +540 -542
  585. package/src/concepts/BindEvent__.ts +992 -911
  586. package/src/concepts/BindStyle__.ts +442 -451
  587. package/src/concepts/BooleanLiteral__.ts +89 -90
  588. package/src/concepts/CallAuthInterface__.ts +458 -433
  589. package/src/concepts/CallConnector__.ts +209 -164
  590. package/src/concepts/CallFunction__.ts +600 -600
  591. package/src/concepts/CallInterface__.ts +752 -721
  592. package/src/concepts/CallLogic__.ts +1324 -1200
  593. package/src/concepts/CallQueryComponent__.ts +1580 -1501
  594. package/src/concepts/Comment__.ts +69 -68
  595. package/src/concepts/CompletionProperty__.ts +250 -255
  596. package/src/concepts/ConfigGroup__.ts +312 -296
  597. package/src/concepts/ConfigPropertyValue__.ts +92 -93
  598. package/src/concepts/ConfigProperty__.ts +374 -357
  599. package/src/concepts/Configuration__.ts +288 -276
  600. package/src/concepts/Connection__.ts +426 -0
  601. package/src/concepts/ConnectorTrigger__.ts +146 -142
  602. package/src/concepts/Connector__.ts +1090 -1048
  603. package/src/concepts/Constant__.ts +226 -219
  604. package/src/concepts/DataElement__.ts +108 -115
  605. package/src/concepts/DataSource__.ts +508 -472
  606. package/src/concepts/DatabaseTypeAnnotation__.ts +53 -59
  607. package/src/concepts/Destination__.ts +808 -746
  608. package/src/concepts/End__.ts +85 -89
  609. package/src/concepts/EntityIndex__.ts +206 -202
  610. package/src/concepts/EntityProperty__.ts +825 -791
  611. package/src/concepts/Entity__.ts +921 -864
  612. package/src/concepts/EnumItem__.ts +133 -125
  613. package/src/concepts/Enum__.ts +347 -337
  614. package/src/concepts/Event__.ts +305 -292
  615. package/src/concepts/ExternalDestination__.ts +269 -280
  616. package/src/concepts/ForEachStatement__.ts +583 -531
  617. package/src/concepts/FrontendLibrary__.ts +507 -485
  618. package/src/concepts/FrontendVariable__.ts +44 -49
  619. package/src/concepts/Frontend__.ts +1239 -1187
  620. package/src/concepts/Function__.ts +1110 -1045
  621. package/src/concepts/Identifier__.ts +276 -272
  622. package/src/concepts/IfStatement__.ts +467 -436
  623. package/src/concepts/Integration__.ts +136 -137
  624. package/src/concepts/InterfaceParam__.ts +239 -238
  625. package/src/concepts/Interface__.ts +969 -948
  626. package/src/concepts/JSBlock__.ts +83 -83
  627. package/src/concepts/JavaLogic__.ts +101 -106
  628. package/src/concepts/LogicItem__.ts +307 -237
  629. package/src/concepts/Logic__.ts +2301 -2088
  630. package/src/concepts/MatchCase__.ts +886 -779
  631. package/src/concepts/Match__.ts +728 -659
  632. package/src/concepts/MemberExpression__.ts +330 -311
  633. package/src/concepts/MicroApp__.ts +91 -97
  634. package/src/concepts/Module__.ts +2590 -2278
  635. package/src/concepts/MsgTriggerEvent__.ts +297 -281
  636. package/src/concepts/MsgTriggerLauncher__.ts +286 -256
  637. package/src/concepts/Namespace__.ts +2579 -2466
  638. package/src/concepts/NewComposite__.ts +1487 -1350
  639. package/src/concepts/NewList__.ts +464 -450
  640. package/src/concepts/NewMap__.ts +691 -674
  641. package/src/concepts/New__.ts +42 -49
  642. package/src/concepts/NullLiteral__.ts +66 -72
  643. package/src/concepts/NumericLiteral__.ts +169 -169
  644. package/src/concepts/OqlQueryComponent__.ts +282 -279
  645. package/src/concepts/OverriddenLogic__.ts +2142 -2097
  646. package/src/concepts/Param__.ts +500 -442
  647. package/src/concepts/Point__.ts +53 -59
  648. package/src/concepts/ProcessComponent__.ts +497 -475
  649. package/src/concepts/ProcessElement__.ts +1852 -1780
  650. package/src/concepts/ProcessOutcome__.ts +59 -64
  651. package/src/concepts/ProcessOutcomes__.ts +59 -64
  652. package/src/concepts/Process__.ts +1491 -1428
  653. package/src/concepts/QueryAggregateExpression__.ts +135 -142
  654. package/src/concepts/QueryFieldExpression__.ts +138 -142
  655. package/src/concepts/QueryFromExpression__.ts +246 -254
  656. package/src/concepts/QueryGroupByExpression__.ts +130 -136
  657. package/src/concepts/QueryJoinExpression__.ts +441 -438
  658. package/src/concepts/QueryLimitExpression__.ts +159 -166
  659. package/src/concepts/QueryOrderByExpression__.ts +173 -180
  660. package/src/concepts/QuerySelectExpression__.ts +464 -439
  661. package/src/concepts/Rect__.ts +73 -79
  662. package/src/concepts/Return__.ts +366 -345
  663. package/src/concepts/Role__.ts +146 -147
  664. package/src/concepts/SelectMembers__.ts +358 -350
  665. package/src/concepts/Slot__.ts +152 -153
  666. package/src/concepts/SqlQueryComponent__.ts +230 -228
  667. package/src/concepts/Start__.ts +45 -52
  668. package/src/concepts/StringInterpolation__.ts +323 -296
  669. package/src/concepts/StringLiteral__.ts +113 -115
  670. package/src/concepts/StructureProperty__.ts +306 -295
  671. package/src/concepts/Structure__.ts +615 -578
  672. package/src/concepts/SwitchCase__.ts +326 -290
  673. package/src/concepts/SwitchStatement__.ts +236 -229
  674. package/src/concepts/Theme__.ts +64 -68
  675. package/src/concepts/Transactional__.ts +159 -153
  676. package/src/concepts/TriggerEvent__.ts +285 -274
  677. package/src/concepts/TriggerLauncher__.ts +232 -196
  678. package/src/concepts/TypeAnnotation__.ts +1049 -1011
  679. package/src/concepts/TypeParam__.ts +48 -50
  680. package/src/concepts/UnaryExpression__.ts +163 -153
  681. package/src/concepts/Unparsed__.ts +81 -82
  682. package/src/concepts/UseComponent__.ts +53 -59
  683. package/src/concepts/ValidationRule__.ts +524 -544
  684. package/src/concepts/Variable__.ts +419 -397
  685. package/src/concepts/ViewBlock__.ts +58 -64
  686. package/src/concepts/ViewComponent__.ts +1323 -1261
  687. package/src/concepts/ViewElement__.ts +2538 -2350
  688. package/src/concepts/View__.ts +2447 -2268
  689. package/src/concepts/WhileStatement__.ts +293 -272
  690. package/src/concepts/index__.ts +2 -1
  691. package/src/concepts/types__.ts +123 -121
  692. package/src/decorators/index.ts +75 -77
  693. package/src/decorators/promise.ts +28 -0
  694. package/src/enums/KEYWORDS.ts +1228 -1228
  695. package/src/enums/LEVEL_NAME_MAP.ts +24 -24
  696. package/src/generator/compileComponent.ts +10 -10
  697. package/src/generator/genBundleFiles.ts +300 -291
  698. package/src/generator/genHash.ts +2 -2
  699. package/src/generator/genMetaData.ts +280 -261
  700. package/src/generator/genReleaseBody.ts +312 -291
  701. package/src/generator/icestark.ts +1 -1
  702. package/src/generator/microApp.ts +17 -20
  703. package/src/generator/permission.ts +227 -218
  704. package/src/generator/qiankun.ts +1 -1
  705. package/src/generator/styleReplacer.ts +28 -31
  706. package/src/index.ts +0 -3
  707. package/src/manager/diagnostic.ts +84 -82
  708. package/src/manager/stepRecorder.ts +106 -94
  709. package/src/natural/RequirementAnalyzer.ts +208 -0
  710. package/src/natural/RequirementExecutor.ts +685 -0
  711. package/src/natural/componentData.ts +81 -0
  712. package/src/natural/genNaturalTS.ts +77 -0
  713. package/src/natural/index.ts +4 -0
  714. package/src/natural/knowledgeMap.ts +39 -0
  715. package/src/natural/naslStdlibMap.ts +24 -0
  716. package/src/natural/transformTSCode.ts +692 -0
  717. package/src/sentry/index.ts +109 -104
  718. package/src/server/createUiTs.ts +190 -184
  719. package/src/server/entity2LogicNamespace.ts +379 -359
  720. package/src/server/event.js +145 -145
  721. package/src/server/extendBaseNode.ts +461 -456
  722. package/src/server/formatTsUtils.ts +712 -713
  723. package/src/server/getConnector.ts +33 -33
  724. package/src/server/getExtensionModules.ts +23 -22
  725. package/src/server/getFunctions.ts +6 -6
  726. package/src/server/getInterfaces.ts +38 -37
  727. package/src/server/getLogging.ts +1 -1
  728. package/src/server/getLogics.ts +390 -344
  729. package/src/server/getMemberIdentifier.ts +286 -281
  730. package/src/server/getProcessComponents.ts +2 -2
  731. package/src/server/getProcesses.ts +548 -534
  732. package/src/server/getScope.ts +51 -51
  733. package/src/server/getValidates.ts +3 -3
  734. package/src/server/index.ts +29 -30
  735. package/src/server/naslServer.ts +4302 -4225
  736. package/src/server/naslStdlibMap.ts +43 -41
  737. package/src/server/process2LogicNamespace.ts +97 -97
  738. package/src/server/translator.ts +740 -746
  739. package/src/service/storage/init.ts +761 -728
  740. package/src/templator/genCallComponentLogic.ts +14 -15
  741. package/src/templator/genCreateBlock.ts +257 -229
  742. package/src/templator/genCurdEditMultipleKeyBlock.ts +332 -316
  743. package/src/templator/genCurdMultipleKeyBlock.ts +501 -473
  744. package/src/templator/genEditTableBlock.ts +192 -182
  745. package/src/templator/genEnumSelectBlock.ts +13 -7
  746. package/src/templator/genGetBlock.ts +57 -55
  747. package/src/templator/genGridViewBlock.ts +191 -201
  748. package/src/templator/genListViewBlock.ts +59 -64
  749. package/src/templator/genQueryComponent.ts +337 -287
  750. package/src/templator/genSelectBlock.ts +276 -285
  751. package/src/templator/genTableBlock.ts +157 -160
  752. package/src/templator/genUpdateBlock.ts +269 -255
  753. package/src/templator/index.ts +4 -4
  754. package/src/templator/utils.ts +490 -464
  755. package/src/translator/index.ts +84 -84
  756. package/src/translator/lsp.ts +22 -22
  757. package/src/translator/tsp.ts +6 -6
  758. package/src/utils/index.ts +115 -117
  759. package/src/utils/logger.ts +3 -4
  760. package/src/utils/sortTsString.ts +34 -32
  761. package/src/utils/string.ts +47 -48
  762. package/src/utils/time-slicing.ts +109 -0
  763. package/src/utils/traverse.ts +114 -126
  764. package/test/concepts/match/__snapshots__/toEmbeddedTS.spec.ts.snap +66 -0
  765. package/test/concepts/match/__snapshots__/toJS.spec.ts.snap +40 -0
  766. package/test/concepts/match/constant.ts +5 -0
  767. package/test/concepts/match/fixtures/isExpression.json +259 -0
  768. package/test/concepts/match/fixtures/lastBodyIf.json +268 -0
  769. package/test/concepts/match/fixtures/noExpression.json +176 -0
  770. package/test/concepts/match/toEmbeddedTS.spec.ts +14 -0
  771. package/test/concepts/match/toJS.spec.ts +14 -0
  772. package/test/setup.ts +2 -1
  773. package/ts-worker/src/index.js +0 -2
  774. package/tsconfig.json +21 -21
@@ -1,17 +1,17 @@
1
+ import { v4 as uuidv4 } from 'uuid';
1
2
  import { TranslatorState, shiftState, withSourceMap } from '../translator';
2
- import { ElementToVueOptions } from './ViewElement__';
3
+ import ViewElement, { ElementToVueOptions } from './ViewElement__';
3
4
  import Namespace from './Namespace__';
4
5
  import MemberExpression from './MemberExpression__';
5
6
 
6
- //================================================================================
7
+ //= ===============================================================================
7
8
  // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
8
9
  // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
9
- //================================================================================
10
+ //= ===============================================================================
10
11
  import { EventPayload, Params } from '../common/EventEmitter';
11
12
  import { concept, excludedInJSON, property } from '../decorators';
12
13
 
13
14
  import * as utils from '../utils';
14
- import { v4 as uuidv4 } from 'uuid';
15
15
  import BaseNode from '../common/BaseNode';
16
16
  import classMap from '../common/classMap';
17
17
  import LogicItem from './LogicItem__';
@@ -19,7 +19,6 @@ import Destination from './Destination__';
19
19
  import ExternalDestination from './ExternalDestination__';
20
20
  import ValidationRule from './ValidationRule__';
21
21
  import Assignee from './Assignee__';
22
- import ViewElement from './ViewElement__';
23
22
  import ProcessElement from './ProcessElement__';
24
23
  import View from './View__';
25
24
  import Module from './Module__';
@@ -32,876 +31,885 @@ import Process from './Process__';
32
31
  */
33
32
  @concept('元素绑定属性')
34
33
  export class BindAttribute extends BaseNode {
35
- /**
36
- * 产品概念
37
- */
38
- @property()
39
- concept: 'BindAttribute' = 'BindAttribute';
40
-
41
- /**
42
- * 元素绑定属性名称
43
- */
44
- @property()
45
- name: string = undefined;
46
-
47
- /**
48
- * type
49
- */
50
- @property()
51
- type: 'string' | 'static' | 'dynamic' = undefined;
52
-
53
- /**
54
- * 属性值
55
- */
56
- @property()
57
- value: string = undefined;
58
-
59
- /**
60
- * 属性表达式
61
- */
62
- @property('LogicItem')
63
- expression: LogicItem = undefined;
64
-
65
- /**
66
- * 跳转页面
67
- */
68
- @property('Destination')
69
- destination: Destination = undefined;
70
-
71
- /**
72
- * 跳转页面
73
- */
74
- @property('ExternalDestination')
75
- externalDestination: ExternalDestination = undefined;
76
-
77
- /**
78
- * 验证规则
79
- */
80
- @property('ValidationRule')
81
- rules: Array<ValidationRule> = [];
82
-
83
- /**
84
- * 经办人
85
- */
86
- @property('Assignee')
87
- assignee: Assignee = undefined;
88
-
89
- /**
90
- * 是否使用 v-model
91
- */
92
- @property()
93
- model: boolean = undefined;
94
-
95
- /**
96
- * 是否开启双向绑定
97
- */
98
- @property()
99
- sync: boolean = undefined;
100
-
101
- /**
102
- * 草稿态
103
- */
104
- @property('LogicItem')
105
- playground: Array<LogicItem> = [];
106
-
107
- /**
108
- * 祖先 ViewElement
109
- */
110
- get viewElement() {
111
- return this.getAncestor('ViewElement') as ViewElement;
112
- }
113
- /**
114
- * 祖先 View
115
- */
116
- get view() {
117
- return this.getAncestor('View') as View;
34
+ /**
35
+ * 产品概念
36
+ */
37
+ @property()
38
+ concept: 'BindAttribute' = 'BindAttribute';
39
+
40
+ /**
41
+ * 元素绑定属性名称
42
+ */
43
+ @property()
44
+ name: string = undefined;
45
+
46
+ /**
47
+ * type
48
+ */
49
+ @property()
50
+ type: 'string' | 'static' | 'dynamic' = undefined;
51
+
52
+ /**
53
+ * 属性值
54
+ */
55
+ @property()
56
+ value: string = undefined;
57
+
58
+ /**
59
+ * 属性表达式
60
+ */
61
+ @property('LogicItem')
62
+ expression: LogicItem = undefined;
63
+
64
+ /**
65
+ * 跳转页面
66
+ */
67
+ @property('Destination')
68
+ destination: Destination = undefined;
69
+
70
+ /**
71
+ * 跳转页面
72
+ */
73
+ @property('ExternalDestination')
74
+ externalDestination: ExternalDestination = undefined;
75
+
76
+ /**
77
+ * 验证规则
78
+ */
79
+ @property('ValidationRule')
80
+ rules: Array<ValidationRule> = [];
81
+
82
+ /**
83
+ * 经办人
84
+ */
85
+ @property('Assignee')
86
+ assignee: Assignee = undefined;
87
+
88
+ /**
89
+ * 是否使用 v-model
90
+ */
91
+ @property()
92
+ model: boolean = undefined;
93
+
94
+ /**
95
+ * 是否开启双向绑定
96
+ */
97
+ @property()
98
+ sync: boolean = undefined;
99
+
100
+ /**
101
+ * 草稿态
102
+ */
103
+ @property('LogicItem')
104
+ playground: Array<LogicItem> = [];
105
+
106
+ /**
107
+ * 祖先 ViewElement
108
+ */
109
+ get viewElement() {
110
+ return this.getAncestor('ViewElement') as ViewElement;
111
+ }
112
+
113
+ /**
114
+ * 祖先 View
115
+ */
116
+ get view() {
117
+ return this.getAncestor('View') as View;
118
+ }
119
+
120
+ /**
121
+ * 祖先 Module
122
+ */
123
+ get module() {
124
+ return this.getAncestor('Module') as Module;
125
+ }
126
+
127
+ /**
128
+ * 祖先 App
129
+ */
130
+ get app() {
131
+ return this.getAncestor('App') as App;
132
+ }
133
+
134
+ /**
135
+ * 祖先 Frontend
136
+ */
137
+ get frontend() {
138
+ return this.getAncestor('Frontend') as Frontend;
139
+ }
140
+
141
+ /**
142
+ * 祖先 ProcessElement
143
+ */
144
+ get processElement() {
145
+ return this.getAncestor('ProcessElement') as ProcessElement;
146
+ }
147
+
148
+ /**
149
+ * 祖先 Process
150
+ */
151
+ get process() {
152
+ return this.getAncestor('Process') as Process;
153
+ }
154
+
155
+ /**
156
+ * @param source 需要合并的部分参数
157
+ */
158
+ constructor(source?: Partial<BindAttribute>) {
159
+ // @ts-ignore
160
+ source = { ...BindAttribute.getDefaultOptions(), ...source };
161
+ super(source);
162
+ super.subConstructor(source);
163
+ }
164
+
165
+ getClassName() {
166
+ return 'BindAttribute';
167
+ }
168
+
169
+ static from(source: any, parentNode?: any, parentKey?: string): BindAttribute {
170
+ return super.from(source, parentNode, parentKey) as BindAttribute;
171
+ }
172
+
173
+ /**
174
+ * 从父级删除该节点
175
+ * @internal
176
+ */
177
+ _delete() {
178
+ let params: Params = null;
179
+ if (this.parentNode) {
180
+ params = (this.parentNode as any)?.__removeBindAttribute?.(this);
118
181
  }
119
- /**
120
- * 祖先 Module
121
- */
122
- get module() {
123
- return this.getAncestor('Module') as Module;
182
+ return params;
183
+ }
184
+
185
+ /**
186
+ * 设置属性值
187
+ */
188
+ setValue(value: string) {
189
+ const object = {
190
+ value,
191
+ };
192
+ this.update({
193
+ ...object,
194
+ });
195
+ }
196
+
197
+ /**
198
+ * 设置属性表达式
199
+ */
200
+ setExpression(expression: LogicItem) {
201
+ expression._delete();
202
+ const relationOptions = { parentNode: this, parentKey: 'expression' };
203
+ Object.assign(expression, relationOptions);
204
+ const object = {
205
+ expression,
206
+ };
207
+ this.update({
208
+ ...object,
209
+ });
210
+ }
211
+
212
+ /**
213
+ * 设置跳转页面
214
+ */
215
+ setDestination(destination: Destination) {
216
+ destination._delete();
217
+ const relationOptions = { parentNode: this, parentKey: 'destination' };
218
+ Object.assign(destination, relationOptions);
219
+ const object = {
220
+ destination,
221
+ };
222
+ this.update({
223
+ ...object,
224
+ });
225
+ }
226
+
227
+ /**
228
+ * 设置跳转页面
229
+ */
230
+ setExternalDestination(externalDestination: ExternalDestination) {
231
+ externalDestination._delete();
232
+ const relationOptions = { parentNode: this, parentKey: 'externalDestination' };
233
+ Object.assign(externalDestination, relationOptions);
234
+ const object = {
235
+ externalDestination,
236
+ };
237
+ this.update({
238
+ ...object,
239
+ });
240
+ }
241
+
242
+ /**
243
+ * 设置经办人
244
+ */
245
+ setAssignee(assignee: Assignee) {
246
+ assignee._delete();
247
+ const relationOptions = { parentNode: this, parentKey: 'assignee' };
248
+ Object.assign(assignee, relationOptions);
249
+ const object = {
250
+ assignee,
251
+ };
252
+ this.update({
253
+ ...object,
254
+ });
255
+ }
256
+
257
+ /**
258
+ * 设置是否开启双向绑定
259
+ */
260
+ setSync(sync: boolean) {
261
+ const object = {
262
+ sync,
263
+ };
264
+ this.update({
265
+ ...object,
266
+ });
267
+ }
268
+
269
+ getValidationRuleExistingNames(excludedList: Array<ValidationRule> = []) {
270
+ const excludedSet = new Set(excludedList);
271
+ return ((this.rules as ValidationRule[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
272
+ }
273
+
274
+ getValidationRuleUniqueName(name = 'validationRule1') {
275
+ return utils.unique(name, this.getValidationRuleExistingNames(), undefined, false);
276
+ }
277
+
278
+ /**
279
+ * 插入验证规则
280
+ * @internal
281
+ * @param name 验证规则名称,如果不填会自动生成一个唯一名称
282
+ */
283
+ _insertValidationRuleInRulesAt(name: string, index: number): ValidationRule;
284
+
285
+ /**
286
+ * 插入验证规则
287
+ * @internal
288
+ * @param validationRuleOptions 验证规则参数
289
+ */
290
+ _insertValidationRuleInRulesAt(validationRuleOptions: Partial<ValidationRule>, index: number): ValidationRule;
291
+
292
+ /**
293
+ * 插入验证规则
294
+ * @internal
295
+ * @param validationRule 已有的验证规则实例
296
+ */
297
+ _insertValidationRuleInRulesAt(validationRule: ValidationRule, index: number): ValidationRule;
298
+
299
+ _insertValidationRuleInRulesAt(options: string | Partial<ValidationRule> | ValidationRule, index: number) {
300
+ const validationRuleOptions: any = {};
301
+ const relationOptions = { parentNode: this, parentKey: 'rules' };
302
+ let validationRule: ValidationRule;
303
+ if (!options) {
304
+ validationRule = ValidationRule.from(
305
+ {
306
+ ...validationRuleOptions,
307
+ name: this.getValidationRuleUniqueName(),
308
+ },
309
+ this,
310
+ 'rules'
311
+ );
312
+ } else if (typeof options === 'string') {
313
+ validationRule = ValidationRule.from(
314
+ {
315
+ ...validationRuleOptions,
316
+ name: options,
317
+ },
318
+ this,
319
+ 'rules'
320
+ );
321
+ } else if (options instanceof ValidationRule) {
322
+ options.ensureDelete(); // 同一实例不支持多处存在
323
+ validationRule = options;
324
+ Object.assign(validationRule, relationOptions);
325
+ } else {
326
+ validationRule = ValidationRule.from(
327
+ {
328
+ ...validationRuleOptions,
329
+ ...options,
330
+ },
331
+ this,
332
+ 'rules'
333
+ );
124
334
  }
125
- /**
126
- * 祖先 App
127
- */
128
- get app() {
129
- return this.getAncestor('App') as App;
335
+ this.rules.splice(index, 0, validationRule);
336
+ return validationRule;
337
+ }
338
+
339
+ /**
340
+ * 插入验证规则
341
+ * @param name 验证规则名称,如果不填会自动生成一个唯一名称
342
+ */
343
+ insertValidationRuleInRulesAt(name: string, index: number): ValidationRule;
344
+
345
+ /**
346
+ * 插入验证规则
347
+ * @param validationRuleOptions 验证规则参数
348
+ */
349
+ insertValidationRuleInRulesAt(validationRuleOptions: Partial<ValidationRule>, index: number): ValidationRule;
350
+
351
+ /**
352
+ * 插入验证规则
353
+ * @param validationRule 已有的验证规则实例
354
+ */
355
+ insertValidationRuleInRulesAt(validationRule: ValidationRule, index: number): ValidationRule;
356
+
357
+ insertValidationRuleInRulesAt(options: string | Partial<ValidationRule> | ValidationRule, index: number) {
358
+ const node = this._insertValidationRuleInRulesAt(options as any, index);
359
+ node.create({
360
+ index,
361
+ parentNode: this,
362
+ parentKey: 'rules',
363
+ });
364
+ return node;
365
+ }
366
+
367
+ /**
368
+ * 添加验证规则
369
+ * @internal
370
+ * @param name 验证规则名称,如果不填会自动生成一个唯一名称
371
+ */
372
+ _addValidationRuleInRules(name?: string): ValidationRule;
373
+
374
+ /**
375
+ * 添加验证规则
376
+ * @internal
377
+ * @param validationRuleOptions 验证规则参数
378
+ */
379
+ _addValidationRuleInRules(validationRuleOptions: Partial<ValidationRule>): ValidationRule;
380
+
381
+ /**
382
+ * 添加验证规则
383
+ * @internal
384
+ * @param validationRule 已有的验证规则实例
385
+ */
386
+ _addValidationRuleInRules(validationRule: ValidationRule): ValidationRule;
387
+
388
+ _addValidationRuleInRules(options?: string | Partial<ValidationRule> | ValidationRule) {
389
+ const index = this.rules.length;
390
+ return this._insertValidationRuleInRulesAt(options as any, index);
391
+ }
392
+
393
+ /**
394
+ * 添加验证规则
395
+ * @internal
396
+ * @param name 验证规则名称,如果不填会自动生成一个唯一名称
397
+ */
398
+ addValidationRuleInRules(name?: string): ValidationRule;
399
+
400
+ /**
401
+ * 添加验证规则
402
+ * @param validationRuleOptions 验证规则参数
403
+ */
404
+ addValidationRuleInRules(validationRuleOptions: Partial<ValidationRule>): ValidationRule;
405
+
406
+ /**
407
+ * 添加验证规则
408
+ * @param validationRule 已有的验证规则实例
409
+ */
410
+ addValidationRuleInRules(validationRule: ValidationRule): ValidationRule;
411
+
412
+ addValidationRuleInRules(options?: string | Partial<ValidationRule> | ValidationRule) {
413
+ const node = this._addValidationRuleInRules(options as any);
414
+ const index = this.rules.indexOf(node);
415
+ node.create({
416
+ index,
417
+ parentNode: this,
418
+ parentKey: 'rules',
419
+ });
420
+ return node;
421
+ }
422
+
423
+ /**
424
+ * 插入逻辑项
425
+ * @internal
426
+ * @param logicItemOptions 逻辑项参数
427
+ */
428
+ _insertItemInPlaygroundAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
429
+
430
+ /**
431
+ * 插入逻辑项
432
+ * @internal
433
+ * @param logicItem 已有的逻辑项实例
434
+ */
435
+ _insertItemInPlaygroundAt(logicItem: LogicItem, index: number): LogicItem;
436
+
437
+ _insertItemInPlaygroundAt(options: Partial<LogicItem> | LogicItem, index: number) {
438
+ const logicItemOptions: any = {};
439
+ const relationOptions = { parentNode: this, parentKey: 'playground' };
440
+ let logicItem: LogicItem;
441
+ if (options instanceof LogicItem) {
442
+ options.ensureDelete(); // 同一实例不支持多处存在
443
+ logicItem = options;
444
+ Object.assign(logicItem, relationOptions);
445
+ } else {
446
+ logicItem = LogicItem.from(
447
+ {
448
+ ...logicItemOptions,
449
+ ...options,
450
+ },
451
+ this,
452
+ 'playground'
453
+ );
130
454
  }
131
- /**
132
- * 祖先 Frontend
133
- */
134
- get frontend() {
135
- return this.getAncestor('Frontend') as Frontend;
455
+ this.playground.splice(index, 0, logicItem);
456
+ return logicItem;
457
+ }
458
+
459
+ /**
460
+ * 插入逻辑项
461
+ * @param logicItemOptions 逻辑项参数
462
+ */
463
+ insertItemInPlaygroundAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
464
+
465
+ /**
466
+ * 插入逻辑项
467
+ * @param logicItem 已有的逻辑项实例
468
+ */
469
+ insertItemInPlaygroundAt(logicItem: LogicItem, index: number): LogicItem;
470
+
471
+ insertItemInPlaygroundAt(options: Partial<LogicItem> | LogicItem, index: number) {
472
+ const node = this._insertItemInPlaygroundAt(options as any, index);
473
+ node.create({
474
+ index,
475
+ parentNode: this,
476
+ parentKey: 'playground',
477
+ });
478
+ return node;
479
+ }
480
+
481
+ /**
482
+ * 添加逻辑项
483
+ * @internal
484
+ * @param logicItemOptions 逻辑项参数
485
+ */
486
+ _addItemInPlayground(logicItemOptions: Partial<LogicItem>): LogicItem;
487
+
488
+ /**
489
+ * 添加逻辑项
490
+ * @internal
491
+ * @param logicItem 已有的逻辑项实例
492
+ */
493
+ _addItemInPlayground(logicItem: LogicItem): LogicItem;
494
+
495
+ _addItemInPlayground(options?: Partial<LogicItem> | LogicItem) {
496
+ const index = this.playground.length;
497
+ return this._insertItemInPlaygroundAt(options as any, index);
498
+ }
499
+
500
+ /**
501
+ * 添加逻辑项
502
+ * @param logicItemOptions 逻辑项参数
503
+ */
504
+ addItemInPlayground(logicItemOptions: Partial<LogicItem>): LogicItem;
505
+
506
+ /**
507
+ * 添加逻辑项
508
+ * @param logicItem 已有的逻辑项实例
509
+ */
510
+ addItemInPlayground(logicItem: LogicItem): LogicItem;
511
+
512
+ addItemInPlayground(options?: Partial<LogicItem> | LogicItem) {
513
+ const node = this._addItemInPlayground(options as any);
514
+ const index = this.playground.indexOf(node);
515
+ node.create({
516
+ index,
517
+ parentNode: this,
518
+ parentKey: 'playground',
519
+ });
520
+ return node;
521
+ }
522
+
523
+ /**
524
+ * 删除逻辑项
525
+ * @param name 逻辑项名称
526
+ */
527
+ removeExpression(name: string): void;
528
+
529
+ /**
530
+ * 删除逻辑项
531
+ * @param expression 已有的逻辑项实例
532
+ */
533
+ removeExpression(expression: LogicItem): void;
534
+
535
+ removeExpression(options: string | LogicItem) {
536
+ let expression: LogicItem;
537
+ if (typeof options === 'string') {
538
+ expression = this.expression;
539
+ if (!expression) {
540
+ throw new Error(`找不到逻辑项 ${options}`);
541
+ }
542
+ } else {
543
+ expression = options;
136
544
  }
137
- /**
138
- * 祖先 ProcessElement
139
- */
140
- get processElement() {
141
- return this.getAncestor('ProcessElement') as ProcessElement;
142
- }
143
- /**
144
- * 祖先 Process
145
- */
146
- get process() {
147
- return this.getAncestor('Process') as Process;
148
- }
149
-
150
- /**
151
- * @param source 需要合并的部分参数
152
- */
153
- constructor(source?: Partial<BindAttribute>) {
154
- source = Object.assign({}, BindAttribute.getDefaultOptions(), source);
155
- super(source);
156
- super.subConstructor(source);
545
+ return expression.delete();
546
+ }
547
+
548
+ /**
549
+ * 删除跳转页面
550
+ * @param name 跳转页面名称
551
+ */
552
+ removeDestination(name: string): void;
553
+
554
+ /**
555
+ * 删除跳转页面
556
+ * @param destination 已有的跳转页面实例
557
+ */
558
+ removeDestination(destination: Destination): void;
559
+
560
+ removeDestination(options: string | Destination) {
561
+ let destination: Destination;
562
+ if (typeof options === 'string') {
563
+ destination = this.destination;
564
+ if (!destination) {
565
+ throw new Error(`找不到跳转页面 ${options}`);
566
+ }
567
+ } else {
568
+ destination = options;
157
569
  }
158
- getClassName() {
159
- return 'BindAttribute';
160
- }
161
-
162
- static from(source: any, parentNode?: any, parentKey?: string): BindAttribute {
163
- return super.from(source, parentNode, parentKey) as BindAttribute;
164
- }
165
-
166
- /**
167
- * 从父级删除该节点
168
- * @internal
169
- */
170
- _delete() {
171
- let params: Params = null;
172
- if (this.parentNode) {
173
- params = (this.parentNode as any)?.__removeBindAttribute?.(this);
174
- }
175
- return params;
570
+ return destination.delete();
571
+ }
572
+
573
+ /**
574
+ * 删除外部链接
575
+ * @param name 外部链接名称
576
+ */
577
+ removeExternalDestination(name: string): void;
578
+
579
+ /**
580
+ * 删除外部链接
581
+ * @param externalDestination 已有的外部链接实例
582
+ */
583
+ removeExternalDestination(externalDestination: ExternalDestination): void;
584
+
585
+ removeExternalDestination(options: string | ExternalDestination) {
586
+ let externalDestination: ExternalDestination;
587
+ if (typeof options === 'string') {
588
+ externalDestination = this.externalDestination;
589
+ if (!externalDestination) {
590
+ throw new Error(`找不到外部链接 ${options}`);
591
+ }
592
+ } else {
593
+ externalDestination = options;
176
594
  }
177
- /**
178
- * 设置属性值
179
- */
180
- setValue(value: string) {
181
- const object = {
182
- value,
183
- };
184
- this.update({
185
- ...object,
186
- });
187
- }
188
-
189
- /**
190
- * 设置属性表达式
191
- */
192
- setExpression(expression: LogicItem) {
193
- expression._delete();
194
- const relationOptions = { parentNode: this, parentKey: 'expression' };
195
- Object.assign(expression, relationOptions);
196
- const object = {
197
- expression,
198
- };
199
- this.update({
200
- ...object,
201
- });
202
- }
203
-
204
- /**
205
- * 设置跳转页面
206
- */
207
- setDestination(destination: Destination) {
208
- destination._delete();
209
- const relationOptions = { parentNode: this, parentKey: 'destination' };
210
- Object.assign(destination, relationOptions);
211
- const object = {
212
- destination,
213
- };
214
- this.update({
215
- ...object,
216
- });
217
- }
218
-
219
- /**
220
- * 设置跳转页面
221
- */
222
- setExternalDestination(externalDestination: ExternalDestination) {
223
- externalDestination._delete();
224
- const relationOptions = { parentNode: this, parentKey: 'externalDestination' };
225
- Object.assign(externalDestination, relationOptions);
226
- const object = {
227
- externalDestination,
228
- };
229
- this.update({
230
- ...object,
231
- });
232
- }
233
-
234
- /**
235
- * 设置经办人
236
- */
237
- setAssignee(assignee: Assignee) {
238
- assignee._delete();
239
- const relationOptions = { parentNode: this, parentKey: 'assignee' };
240
- Object.assign(assignee, relationOptions);
241
- const object = {
242
- assignee,
243
- };
244
- this.update({
245
- ...object,
246
- });
247
- }
248
-
249
- /**
250
- * 设置是否开启双向绑定
251
- */
252
- setSync(sync: boolean) {
253
- const object = {
254
- sync,
255
- };
256
- this.update({
257
- ...object,
258
- });
259
- }
260
-
261
- getValidationRuleExistingNames(excludedList: Array<ValidationRule> = []) {
262
- const excludedSet = new Set(excludedList);
263
- return ((this.rules as ValidationRule[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
264
- }
265
- getValidationRuleUniqueName(name = 'validationRule1') {
266
- return utils.unique(name, this.getValidationRuleExistingNames(), undefined, false);
267
- }
268
-
269
- /**
270
- * 插入验证规则
271
- * @internal
272
- * @param name 验证规则名称,如果不填会自动生成一个唯一名称
273
- */
274
- _insertValidationRuleInRulesAt(name: string, index: number): ValidationRule;
275
-
276
- /**
277
- * 插入验证规则
278
- * @internal
279
- * @param validationRuleOptions 验证规则参数
280
- */
281
- _insertValidationRuleInRulesAt(validationRuleOptions: Partial<ValidationRule>, index: number): ValidationRule;
282
-
283
- /**
284
- * 插入验证规则
285
- * @internal
286
- * @param validationRule 已有的验证规则实例
287
- */
288
- _insertValidationRuleInRulesAt(validationRule: ValidationRule, index: number): ValidationRule;
289
-
290
- _insertValidationRuleInRulesAt(options: string | Partial<ValidationRule> | ValidationRule, index: number) {
291
- const validationRuleOptions: any = {};
292
- const relationOptions = { parentNode: this, parentKey: 'rules' };
293
- let validationRule: ValidationRule;
294
- if (!options) {
295
- validationRule = ValidationRule.from({
296
- ...validationRuleOptions,
297
- name: this.getValidationRuleUniqueName(),
298
- }, this, 'rules');
299
- } else if (typeof options === 'string') {
300
- validationRule = ValidationRule.from({
301
- ...validationRuleOptions,
302
- name: options,
303
- }, this, 'rules');
304
- } else if (options instanceof ValidationRule) {
305
- options.ensureDelete(); // 同一实例不支持多处存在
306
- validationRule = options;
307
- Object.assign(validationRule, relationOptions);
308
- } else {
309
- validationRule = ValidationRule.from({
310
- ...validationRuleOptions,
311
- ...options,
312
- }, this, 'rules');
313
- }
314
- this.rules.splice(index, 0, validationRule);
315
- return validationRule;
316
- }
317
-
318
- /**
319
- * 插入验证规则
320
- * @param name 验证规则名称,如果不填会自动生成一个唯一名称
321
- */
322
- insertValidationRuleInRulesAt(name: string, index: number): ValidationRule;
323
-
324
- /**
325
- * 插入验证规则
326
- * @param validationRuleOptions 验证规则参数
327
- */
328
- insertValidationRuleInRulesAt(validationRuleOptions: Partial<ValidationRule>, index: number): ValidationRule;
329
-
330
- /**
331
- * 插入验证规则
332
- * @param validationRule 已有的验证规则实例
333
- */
334
- insertValidationRuleInRulesAt(validationRule: ValidationRule, index: number): ValidationRule;
335
-
336
- insertValidationRuleInRulesAt(options: string | Partial<ValidationRule> | ValidationRule, index: number) {
337
- const node = this._insertValidationRuleInRulesAt(options as any, index);
338
- node.create({
339
- index,
340
- parentNode: this,
341
- parentKey: 'rules',
342
- });
343
- return node;
344
- }
345
-
346
- /**
347
- * 添加验证规则
348
- * @internal
349
- * @param name 验证规则名称,如果不填会自动生成一个唯一名称
350
- */
351
- _addValidationRuleInRules(name?: string): ValidationRule;
352
-
353
- /**
354
- * 添加验证规则
355
- * @internal
356
- * @param validationRuleOptions 验证规则参数
357
- */
358
- _addValidationRuleInRules(validationRuleOptions: Partial<ValidationRule>): ValidationRule;
359
-
360
- /**
361
- * 添加验证规则
362
- * @internal
363
- * @param validationRule 已有的验证规则实例
364
- */
365
- _addValidationRuleInRules(validationRule: ValidationRule): ValidationRule;
366
-
367
- _addValidationRuleInRules(options?: string | Partial<ValidationRule> | ValidationRule) {
368
- const index = this.rules.length;
369
- return this._insertValidationRuleInRulesAt(options as any, index);
370
- }
371
-
372
- /**
373
- * 添加验证规则
374
- * @internal
375
- * @param name 验证规则名称,如果不填会自动生成一个唯一名称
376
- */
377
- addValidationRuleInRules(name?: string): ValidationRule;
378
-
379
- /**
380
- * 添加验证规则
381
- * @param validationRuleOptions 验证规则参数
382
- */
383
- addValidationRuleInRules(validationRuleOptions: Partial<ValidationRule>): ValidationRule;
384
-
385
- /**
386
- * 添加验证规则
387
- * @param validationRule 已有的验证规则实例
388
- */
389
- addValidationRuleInRules(validationRule: ValidationRule): ValidationRule;
390
-
391
- addValidationRuleInRules(options?: string | Partial<ValidationRule> | ValidationRule) {
392
- const node = this._addValidationRuleInRules(options as any);
393
- const index = this.rules.indexOf(node);
394
- node.create({
395
- index,
396
- parentNode: this,
397
- parentKey: 'rules',
398
- });
399
- return node;
595
+ return externalDestination.delete();
596
+ }
597
+
598
+ /**
599
+ * 删除验证规则
600
+ * @param name 验证规则名称
601
+ */
602
+ removeValidationRuleInRules(name: string): void;
603
+
604
+ /**
605
+ * 删除验证规则
606
+ * @param validationRule 已有的验证规则实例
607
+ */
608
+ removeValidationRuleInRules(validationRule: ValidationRule): void;
609
+
610
+ removeValidationRuleInRules(options: string | ValidationRule) {
611
+ let validationRule: ValidationRule;
612
+ if (typeof options === 'string') {
613
+ validationRule = (this.rules as ValidationRule[]).find((item) => item.name === options);
614
+ if (!validationRule) {
615
+ throw new Error(`找不到验证规则 ${options}`);
616
+ }
617
+ } else {
618
+ validationRule = options;
400
619
  }
401
-
402
-
403
-
404
- /**
405
- * 插入逻辑项
406
- * @internal
407
- * @param logicItemOptions 逻辑项参数
408
- */
409
- _insertItemInPlaygroundAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
410
-
411
- /**
412
- * 插入逻辑项
413
- * @internal
414
- * @param logicItem 已有的逻辑项实例
415
- */
416
- _insertItemInPlaygroundAt(logicItem: LogicItem, index: number): LogicItem;
417
-
418
- _insertItemInPlaygroundAt(options: Partial<LogicItem> | LogicItem, index: number) {
419
- const logicItemOptions: any = {};
420
- const relationOptions = { parentNode: this, parentKey: 'playground' };
421
- let logicItem: LogicItem;
422
- if (options instanceof LogicItem) {
423
- options.ensureDelete(); // 同一实例不支持多处存在
424
- logicItem = options;
425
- Object.assign(logicItem, relationOptions);
426
- } else {
427
- logicItem = LogicItem.from({
428
- ...logicItemOptions,
429
- ...options,
430
- }, this, 'playground');
431
- }
432
- this.playground.splice(index, 0, logicItem);
433
- return logicItem;
620
+ return validationRule.delete();
621
+ }
622
+
623
+ /**
624
+ * 删除经办人
625
+ * @param name 经办人名称
626
+ */
627
+ removeAssignee(name: string): void;
628
+
629
+ /**
630
+ * 删除经办人
631
+ * @param assignee 已有的经办人实例
632
+ */
633
+ removeAssignee(assignee: Assignee): void;
634
+
635
+ removeAssignee(options: string | Assignee) {
636
+ let assignee: Assignee;
637
+ if (typeof options === 'string') {
638
+ assignee = this.assignee;
639
+ if (!assignee) {
640
+ throw new Error(`找不到经办人 ${options}`);
641
+ }
642
+ } else {
643
+ assignee = options;
434
644
  }
435
-
436
-
437
-
438
- /**
439
- * 插入逻辑项
440
- * @param logicItemOptions 逻辑项参数
441
- */
442
- insertItemInPlaygroundAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
443
-
444
- /**
445
- * 插入逻辑项
446
- * @param logicItem 已有的逻辑项实例
447
- */
448
- insertItemInPlaygroundAt(logicItem: LogicItem, index: number): LogicItem;
449
-
450
- insertItemInPlaygroundAt(options: Partial<LogicItem> | LogicItem, index: number) {
451
- const node = this._insertItemInPlaygroundAt(options as any, index);
452
- node.create({
453
- index,
454
- parentNode: this,
455
- parentKey: 'playground',
456
- });
457
- return node;
645
+ return assignee.delete();
646
+ }
647
+
648
+ /**
649
+ * 删除逻辑项
650
+ * @param logicItem 已有的逻辑项实例
651
+ */
652
+ removeItemInPlayground(logicItem: LogicItem): void;
653
+
654
+ removeItemInPlayground(options: LogicItem) {
655
+ const logicItem: LogicItem = options;
656
+ return logicItem.delete();
657
+ }
658
+
659
+ __removeLogicItem(logicItem: LogicItem) {
660
+ const { parentKey } = logicItem;
661
+ const params: Params = {
662
+ parentNode: this,
663
+ parentKey,
664
+ index: -1,
665
+ object: null,
666
+ oldObject: logicItem,
667
+ };
668
+ if (parentKey) {
669
+ params.parentKey = parentKey;
670
+ if (Array.isArray((this as any)[parentKey])) {
671
+ const index = (this as any)[parentKey].indexOf(logicItem);
672
+ ~index && (this as any)[parentKey].splice(index, 1);
673
+ params.index = index;
674
+ } else if ((this as any)[parentKey] === logicItem) {
675
+ params.index = 0;
676
+ (this as any)[parentKey] = undefined;
677
+ }
458
678
  }
459
-
460
-
461
-
462
- /**
463
- * 添加逻辑项
464
- * @internal
465
- * @param logicItemOptions 逻辑项参数
466
- */
467
- _addItemInPlayground(logicItemOptions: Partial<LogicItem>): LogicItem;
468
-
469
- /**
470
- * 添加逻辑项
471
- * @internal
472
- * @param logicItem 已有的逻辑项实例
473
- */
474
- _addItemInPlayground(logicItem: LogicItem): LogicItem;
475
-
476
- _addItemInPlayground(options?: Partial<LogicItem> | LogicItem) {
477
- const index = this.playground.length;
478
- return this._insertItemInPlaygroundAt(options as any, index);
679
+ return params;
680
+ }
681
+
682
+ //= ===============================================================================
683
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
684
+ // 自动生成的代码已结束。下面可以手动编写。
685
+ //= ===============================================================================
686
+
687
+ onChange($event?: EventPayload): void {
688
+ this.emit('change', $event);
689
+ }
690
+
691
+ updateSource(source?: Partial<BindAttribute>) {
692
+ const object = {
693
+ ...source,
694
+ };
695
+ this.update({
696
+ ...object,
697
+ });
698
+ }
699
+
700
+ getNamespace(ns: string) {
701
+ if (this.parentNode && (this.parentNode as Namespace).getNamespace) {
702
+ const parentNamespace = (this.parentNode as Namespace).getNamespace();
703
+ const parentName = this.parentNode.name;
704
+ const arr = [parentNamespace];
705
+ if (this.parentNode.concept !== 'App' && parentName) {
706
+ arr.push(parentName);
707
+ }
708
+ return `${arr.join('.')}.${ns || 'bindAttribute'}`;
479
709
  }
480
-
481
-
482
-
483
- /**
484
- * 添加逻辑项
485
- * @param logicItemOptions 逻辑项参数
486
- */
487
- addItemInPlayground(logicItemOptions: Partial<LogicItem>): LogicItem;
488
-
489
- /**
490
- * 添加逻辑项
491
- * @param logicItem 已有的逻辑项实例
492
- */
493
- addItemInPlayground(logicItem: LogicItem): LogicItem;
494
-
495
- addItemInPlayground(options?: Partial<LogicItem> | LogicItem) {
496
- const node = this._addItemInPlayground(options as any);
497
- const index = this.playground.indexOf(node);
498
- node.create({
499
- index,
500
- parentNode: this,
501
- parentKey: 'playground',
710
+ throw new Error('无法获取命名空间,请设置 parentNode!');
711
+ }
712
+
713
+ // 属性上绑定的表达式
714
+ get bindExpressions() {
715
+ const expressions: any[] = [];
716
+ // 跳转需要特殊处理
717
+ if (['externalDestination', 'destination'].includes(this.name)) {
718
+ const { link, arguments: params, anchor } = (this as any)[this.name] || {};
719
+ // externalDestination有跳转链接表达式
720
+ if (link) {
721
+ expressions.push(link);
722
+ }
723
+ // destination有参数
724
+ if (Array.isArray(params)) {
725
+ expressions.push(...params);
726
+ }
727
+ // 锚点表达式
728
+ if (anchor?.expression) {
729
+ expressions.push(anchor?.expression);
730
+ }
731
+ } else if (this.name === 'rules') {
732
+ if (Array.isArray(this.rules)) {
733
+ this.rules.forEach((rule) => {
734
+ const { arguments: args, errorMessage } = rule || {};
735
+ if (Array.isArray(args)) {
736
+ expressions.push(...args);
737
+ }
738
+ expressions.push(errorMessage);
502
739
  });
503
- return node;
740
+ }
741
+ } else if (this.expression) {
742
+ expressions.push(this.expression);
504
743
  }
505
-
506
-
507
-
508
-
509
- /**
510
- * 删除逻辑项
511
- * @param name 逻辑项名称
512
- */
513
- removeExpression(name: string): void;
514
-
515
- /**
516
- * 删除逻辑项
517
- * @param expression 已有的逻辑项实例
518
- */
519
- removeExpression(expression: LogicItem): void;
520
-
521
- removeExpression(options: string | LogicItem) {
522
- let expression: LogicItem;
523
- if (typeof options === 'string') {
524
- expression = this.expression;
525
- if (!expression) {
526
- throw new Error('找不到逻辑项 ' + options);
527
- }
528
- } else {
529
- expression = options;
744
+ return expressions;
745
+ }
746
+
747
+ // 是否需要用标识符替换
748
+ get needReplaceWithIdentifier() {
749
+ let bindExpression = false;
750
+ const expressions: any[] = this.bindExpressions;
751
+ if (Array.isArray(expressions) && expressions.length) {
752
+ expressions.forEach((expression) => {
753
+ let rootMemberExpression: any;
754
+ let tempNode = expression;
755
+ while (tempNode?.concept === 'MemberExpression') {
756
+ rootMemberExpression = tempNode;
757
+ tempNode = (tempNode as MemberExpression)?.object;
530
758
  }
531
- return expression.delete();
532
- }
533
-
534
-
535
-
536
- /**
537
- * 删除跳转页面
538
- * @param name 跳转页面名称
539
- */
540
- removeDestination(name: string): void;
541
-
542
- /**
543
- * 删除跳转页面
544
- * @param destination 已有的跳转页面实例
545
- */
546
- removeDestination(destination: Destination): void;
547
-
548
- removeDestination(options: string | Destination) {
549
- let destination: Destination;
550
- if (typeof options === 'string') {
551
- destination = this.destination;
552
- if (!destination) {
553
- throw new Error('找不到跳转页面 ' + options);
554
- }
555
- } else {
556
- destination = options;
759
+ // 变量和变量的成员表达式不进行替换
760
+ if (
761
+ !(
762
+ ['Identifier', 'StringLiteral'].includes(expression?.concept) ||
763
+ (rootMemberExpression && rootMemberExpression.object?.concept === 'Identifier')
764
+ ) &&
765
+ (this.type === 'dynamic' || (this.name === 'rules' && this.rules))
766
+ ) {
767
+ bindExpression = true;
557
768
  }
558
- return destination.delete();
769
+ });
559
770
  }
560
-
561
-
562
-
563
- /**
564
- * 删除外部链接
565
- * @param name 外部链接名称
566
- */
567
- removeExternalDestination(name: string): void;
568
-
569
- /**
570
- * 删除外部链接
571
- * @param externalDestination 已有的外部链接实例
572
- */
573
- removeExternalDestination(externalDestination: ExternalDestination): void;
574
-
575
- removeExternalDestination(options: string | ExternalDestination) {
576
- let externalDestination: ExternalDestination;
577
- if (typeof options === 'string') {
578
- externalDestination = this.externalDestination;
579
- if (!externalDestination) {
580
- throw new Error('找不到外部链接 ' + options);
581
- }
582
- } else {
583
- externalDestination = options;
584
- }
585
- return externalDestination.delete();
586
- }
587
-
588
-
589
-
590
- /**
591
- * 删除验证规则
592
- * @param name 验证规则名称
593
- */
594
- removeValidationRuleInRules(name: string): void;
595
-
596
- /**
597
- * 删除验证规则
598
- * @param validationRule 已有的验证规则实例
599
- */
600
- removeValidationRuleInRules(validationRule: ValidationRule): void;
601
-
602
- removeValidationRuleInRules(options: string | ValidationRule) {
603
- let validationRule: ValidationRule;
604
- if (typeof options === 'string') {
605
- validationRule = (this.rules as ValidationRule[]).find((item) => item.name === options);
606
- if (!validationRule) {
607
- throw new Error('找不到验证规则 ' + options);
608
- }
609
- } else {
610
- validationRule = options;
611
- }
612
- return validationRule.delete();
613
- }
614
-
615
-
616
-
617
- /**
618
- * 删除经办人
619
- * @param name 经办人名称
620
- */
621
- removeAssignee(name: string): void;
622
-
623
- /**
624
- * 删除经办人
625
- * @param assignee 已有的经办人实例
626
- */
627
- removeAssignee(assignee: Assignee): void;
628
-
629
- removeAssignee(options: string | Assignee) {
630
- let assignee: Assignee;
631
- if (typeof options === 'string') {
632
- assignee = this.assignee;
633
- if (!assignee) {
634
- throw new Error('找不到经办人 ' + options);
635
- }
636
- } else {
637
- assignee = options;
638
- }
639
- return assignee.delete();
640
- }
641
-
642
-
643
-
644
- /**
645
- * 删除逻辑项
646
- * @param logicItem 已有的逻辑项实例
647
- */
648
- removeItemInPlayground(logicItem: LogicItem): void;
649
-
650
- removeItemInPlayground(options: LogicItem) {
651
- let logicItem: LogicItem = options;
652
- return logicItem.delete();
771
+ return bindExpression;
772
+ }
773
+
774
+ // 获取表达式在页面中的名字
775
+ get expressionNameInView() {
776
+ const nameList: string[] = [];
777
+ let node: BaseNode = this;
778
+ while (node) {
779
+ nameList.unshift(node.name);
780
+ if (node.concept === 'ViewElement') {
781
+ node = null;
782
+ } else {
783
+ nameList.unshift(node.parentKey);
784
+ node = node.parentNode;
785
+ }
653
786
  }
654
-
655
- __removeLogicItem(logicItem: LogicItem) {
656
- const parentKey = logicItem.parentKey;
657
- const params: Params = {
658
- parentNode: this,
659
- parentKey,
660
- index: -1,
661
- object: null,
662
- oldObject: logicItem,
663
- };
664
- if (parentKey) {
665
- params.parentKey = parentKey;
666
- if (Array.isArray((this as any)[parentKey])) {
667
- const index = (this as any)[parentKey].indexOf(logicItem);
668
- ~index && (this as any)[parentKey].splice(index, 1);
669
- params.index = index;
670
- } else if ((this as any)[parentKey] === logicItem) {
671
- params.index = 0;
672
- (this as any)[parentKey] = undefined;
673
- }
674
- }
675
- return params;
787
+ return nameList.join('_').replace(/-/g, '_');
788
+ }
789
+
790
+ // 获取表达式生成器名称
791
+ get expressionBuilderName() {
792
+ let expressionInViewName = this.expressionNameInView;
793
+ expressionInViewName = expressionInViewName.charAt(0).toUpperCase() + expressionInViewName.slice(1);
794
+ return `gen${expressionInViewName}`;
795
+ }
796
+
797
+ // 获取参数列表
798
+ getArgsList() {
799
+ const viewElement = this?.getAncestor('ViewElement');
800
+ const argsList = [];
801
+ let parent = viewElement?.parentNode;
802
+ let index = 0;
803
+ while (parent && parent.concept !== 'View') {
804
+ if ((parent as ViewElement).slotScope) {
805
+ argsList.unshift(index === 0 ? 'current' : `current${index}`);
806
+ index++;
807
+ }
808
+ parent = parent.parentNode;
676
809
  }
677
-
678
- //================================================================================
679
- // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
680
- // 自动生成的代码已结束。下面可以手动编写。
681
- //================================================================================
682
-
683
- onChange($event?: EventPayload): void {
684
- this.emit('change', $event);
685
- }
686
-
687
- updateSource(source?: Partial<BindAttribute>) {
688
- const object = {
689
- ...source,
690
- };
691
- this.update({
692
- ...object,
693
- });
694
- }
695
-
696
- getNamespace(ns: string) {
697
- if (this.parentNode && (this.parentNode as Namespace).getNamespace) {
698
- const parentNamespace = (this.parentNode as Namespace).getNamespace();
699
- const parentName = this.parentNode.name;
700
- const arr = [parentNamespace];
701
- if (this.parentNode.concept !== 'App' && parentName) {
702
- arr.push(parentName);
703
- }
704
- return `${arr.join('.')}.${ns || 'bindAttribute'}`;
705
- } else
706
- throw new Error('无法获取命名空间,请设置 parentNode!');
707
- }
708
-
709
- // 属性上绑定的表达式
710
- get bindExpressions() {
711
- const expressions: any[] = [];
712
- // 跳转需要特殊处理
713
- if (['externalDestination', 'destination'].includes(this.name)) {
714
- const { link, arguments: params, anchor } = (this as any)[this.name] || {};
715
- // externalDestination有跳转链接表达式
716
- if (link) {
717
- expressions.push(link);
718
- }
719
- // destination有参数
720
- if (Array.isArray(params)) {
721
- expressions.push(...params);
722
- }
723
- // 锚点表达式
724
- if (anchor?.expression) {
725
- expressions.push(anchor?.expression);
726
- }
727
- } else if (this.name === 'rules') {
728
- if (Array.isArray(this.rules)) {
729
- this.rules.forEach((rule) => {
730
- const { arguments: args, errorMessage } = rule || {};
731
- if (Array.isArray(args)) {
732
- expressions.push(...args);
733
- }
734
- expressions.push(errorMessage);
735
- });
736
- }
737
- } else if (this.expression) {
738
- expressions.push(this.expression);
739
- }
740
- return expressions;
741
- }
742
-
743
- // 是否需要用标识符替换
744
- get needReplaceWithIdentifier() {
745
- let bindExpression = false;
746
- const expressions: any[] = this.bindExpressions;
747
- if (Array.isArray(expressions) && expressions.length) {
748
- expressions.forEach((expression) => {
749
- let rootMemberExpression: any;
750
- let tempNode = expression;
751
- while (tempNode?.concept === 'MemberExpression') {
752
- rootMemberExpression = tempNode;
753
- tempNode = (tempNode as MemberExpression)?.object;
754
- }
755
- // 变量和变量的成员表达式不进行替换
756
- if (
757
- !(
758
- ['Identifier', 'StringLiteral'].includes(expression?.concept)
759
- || (rootMemberExpression && rootMemberExpression.object?.concept === 'Identifier')
760
- )
761
- && (this.type === 'dynamic' || (this.name === 'rules' && this.rules))
762
- ) {
763
- bindExpression = true;
764
- }
765
- });
766
- }
767
- return bindExpression;
768
- }
769
-
770
- // 获取表达式在页面中的名字
771
- get expressionNameInView() {
772
- const nameList: string[] = [];
773
- let node: BaseNode = this;
774
- while (node) {
775
- nameList.unshift(node.name);
776
- if (node.concept === 'ViewElement') {
777
- node = null;
810
+ return argsList;
811
+ }
812
+
813
+ // 表达式中需要被监听的变量
814
+ get watchedVariableMap() {
815
+ const map: any = {};
816
+ // 页面中表达式用到的变量需要监听,从而重新执行match表达式
817
+ utils.traverse(
818
+ (current: any) => {
819
+ const { node } = current || {};
820
+ const { concept } = node || {};
821
+ if (['Identifier'].includes(concept)) {
822
+ let expressionNode = node;
823
+ let memberExpressionNode = node?.parentNode;
824
+ while (memberExpressionNode?.concept === 'MemberExpression') {
825
+ expressionNode = memberExpressionNode;
826
+ // 为了处理MemberExpression里面存在CallLogic、CallFunction等的情况
827
+ const { concept: objConcept } = memberExpressionNode.object || {};
828
+ if (!['MemberExpression', 'Identifier'].includes(objConcept)) {
829
+ memberExpressionNode = null;
830
+ expressionNode = null;
778
831
  } else {
779
- nameList.unshift(node.parentKey);
780
- node = node.parentNode;
781
- }
782
- }
783
- return nameList.join('_').replace(/-/g, '_');
784
- }
785
-
786
- // 获取表达式生成器名称
787
- get expressionBuilderName() {
788
- let expressionInViewName = this.expressionNameInView;
789
- expressionInViewName = expressionInViewName.charAt(0).toUpperCase() + expressionInViewName.slice(1);
790
- return `gen${expressionInViewName}`;
791
- }
792
-
793
- // 获取参数列表
794
- getArgsList() {
795
- const viewElement = this?.getAncestor('ViewElement');
796
- const argsList = [];
797
- let parent = viewElement?.parentNode;
798
- let index = 0;
799
- while (parent && parent.concept !== 'View') {
800
- if ((parent as ViewElement).slotScope) {
801
- argsList.unshift(index === 0 ? 'current' : 'current' + index);
802
- index++;
832
+ memberExpressionNode = memberExpressionNode.parentNode;
803
833
  }
804
- parent = parent.parentNode;
834
+ }
835
+ if (expressionNode) {
836
+ map[expressionNode.toJS()] = true;
837
+ }
805
838
  }
806
- return argsList;
807
- }
808
-
809
- // 表达式中需要被监听的变量
810
- get watchedVariableMap() {
811
- const map: any = {};
812
- // 页面中表达式用到的变量需要监听,从而重新执行match表达式
813
- utils.traverse((current: any) => {
814
- const { node } = current || {};
815
- const { concept } = node || {};
816
- if (['Identifier'].includes(concept)) {
817
- let expressionNode = node;
818
- let memberExpressionNode = node?.parentNode;
819
- while (memberExpressionNode?.concept === 'MemberExpression') {
820
- expressionNode = memberExpressionNode;
821
- // 为了处理MemberExpression里面存在CallLogic、CallFunction等的情况
822
- const { concept: objConcept } = memberExpressionNode.object || {};
823
- if (!['MemberExpression', 'Identifier'].includes(objConcept)) {
824
- memberExpressionNode = null;
825
- expressionNode = null;
826
- } else {
827
- memberExpressionNode = memberExpressionNode.parentNode;
828
- }
829
- }
830
- if (expressionNode) {
831
- map[expressionNode.toJS()] = true;
832
- }
833
- }
834
- }, {
835
- node: this,
836
- }, {
837
- mode: 'anyObject',
838
- excludedKeySet: new Set([
839
- // 排除playground里的表达式
840
- 'playground',
841
- 'parentNode',
842
- 'sourceMap',
843
- 'storageJSON',
844
- 'tsErrorDetail',
845
- 'NaslAnnotatedJSON',
846
- 'calledFrom',
847
- '_events',
848
- '_collectingList',
849
- '_historyList',
850
- ]),
851
- });
852
- return map;
853
- }
854
-
855
- getInViewMethod(state?: TranslatorState) {
856
- const argsList = this.getArgsList() || [];
857
- const hasArgs = !!argsList.length;
858
- let argStr = '';
859
-
860
- // 容错代码
861
- let ftCode = '';
862
- if (hasArgs) {
863
- argsList.forEach((arg) => {
864
- ftCode += `if (!this.${this.expressionNameInView}${argStr}) {
839
+ },
840
+ {
841
+ node: this,
842
+ },
843
+ {
844
+ mode: 'anyObject',
845
+ excludedKeySet: new Set([
846
+ // 排除playground里的表达式
847
+ 'playground',
848
+ 'parentNode',
849
+ 'sourceMap',
850
+ 'storageJSON',
851
+ 'tsErrorDetail',
852
+ 'NaslAnnotatedJSON',
853
+ 'calledFrom',
854
+ '_events',
855
+ '_collectingList',
856
+ '_historyList',
857
+ ]),
858
+ }
859
+ );
860
+ return map;
861
+ }
862
+
863
+ getInViewMethod(state?: TranslatorState) {
864
+ const argsList = this.getArgsList() || [];
865
+ const hasArgs = !!argsList.length;
866
+ let argStr = '';
867
+
868
+ // 容错代码
869
+ let ftCode = '';
870
+ if (hasArgs) {
871
+ argsList.forEach((arg) => {
872
+ ftCode += `if (!this.${this.expressionNameInView}${argStr}) {
865
873
  this.${this.expressionNameInView}${argStr} = {};
866
874
  }\n`;
867
- argStr += `[${arg}.hasOwnProperty('__nodeKey') ? ${arg}.__nodeKey : ${arg}.index]`;
868
- });
869
- }
870
- ftCode += `if (!this.${this.expressionNameInView}${argStr}) {
875
+ argStr += `[${arg}.hasOwnProperty('__nodeKey') ? ${arg}.__nodeKey : ${arg}.index]`;
876
+ });
877
+ }
878
+ ftCode += `if (!this.${this.expressionNameInView}${argStr}) {
871
879
  this.${this.expressionNameInView}${argStr} = {};
872
880
  }`;
873
881
 
874
- // 新的参数
875
- const paramList = Object.keys(this.watchedVariableMap);
876
- let newParams = `const newParams = [];`;
877
- if (Array.isArray(paramList) && paramList.length) {
878
- paramList.forEach((param) => {
879
- newParams += `newParams.push(${param});\n`;
880
- });
881
- }
882
+ // 新的参数
883
+ const paramList = Object.keys(this.watchedVariableMap);
884
+ let newParams = `const newParams = [];`;
885
+ if (Array.isArray(paramList) && paramList.length) {
886
+ paramList.forEach((param) => {
887
+ newParams += `newParams.push(${param});\n`;
888
+ });
889
+ }
882
890
 
883
- // 表达式主体
884
- let expressionStr = '';
885
- if (this.type === 'dynamic') {
886
- if (['externalDestination', 'destination'].includes(this.name)) {
887
- expressionStr = (this as any)[this.name].toInViewMethod() || '';
888
- } else {
889
- expressionStr = this.expression?.toJS() || '';
890
- }
891
- }
892
- if (this.name === 'rules' && this.rules) {
893
- const ruleStrs = this.rules.map((rule) => rule.toInViewMethod());
894
- expressionStr = `[${ruleStrs.join(' , ')}]`;
895
- }
896
- // 变量重新设置,为了触发重新调用
897
- let setVarStr = `this.${this.expressionNameInView}${argStr} = {
891
+ // 表达式主体
892
+ let expressionStr = '';
893
+ if (this.type === 'dynamic') {
894
+ if (['externalDestination', 'destination'].includes(this.name)) {
895
+ expressionStr = (this as any)[this.name].toInViewMethod() || '';
896
+ } else {
897
+ expressionStr = this.expression?.toJS() || '';
898
+ }
899
+ }
900
+ if (this.name === 'rules' && this.rules) {
901
+ const ruleStrs = this.rules.map((rule) => rule.toInViewMethod());
902
+ expressionStr = `[${ruleStrs.join(' , ')}]`;
903
+ }
904
+ // 变量重新设置,为了触发重新调用
905
+ let setVarStr = `this.${this.expressionNameInView}${argStr} = {
898
906
  ...(this.${this.expressionNameInView}${argStr} || {}),
899
907
  value: value,
900
908
  };`;
901
- if (Array.isArray(argsList) && argsList.length) {
902
- setVarStr += `this.${this.expressionNameInView} = {...this.${this.expressionNameInView}};\n`;
903
- }
904
- const code = `${this.expressionBuilderName} (${argsList.join(', ')}) {
909
+ if (Array.isArray(argsList) && argsList.length) {
910
+ setVarStr += `this.${this.expressionNameInView} = {...this.${this.expressionNameInView}};\n`;
911
+ }
912
+ const code = `${this.expressionBuilderName} (${argsList.join(', ')}) {
905
913
  // 容错代码
906
914
  ${ftCode}
907
915
  (async () => {
@@ -919,177 +927,219 @@ export class BindAttribute extends BaseNode {
919
927
  return this.${this.expressionNameInView}${argStr}.value;
920
928
  }`;
921
929
 
922
- return code;
923
- }
924
-
925
- /**
926
- * 转换成 Vue 的模板格式
927
- */
928
- toVue(options?: ElementToVueOptions) {
929
- let str = '';
930
- let value = this.value;
931
- if (this.type === 'dynamic' || (this.name === 'rules' && this.rules)) {
932
- // 需要用标识符替换
933
- //if (options?.finalCode !== false && this.needReplaceWithIdentifier) {
934
- // const argsList = this.getArgsList();
935
- // value = `${this.expressionBuilderName}(${argsList.join(', ')})`;
936
- //} else
937
- if (this.name === 'rules' && this.rules) {
938
- const ruleStrs = this.rules.map((rule) => rule.toVue(options));
939
- value = `[${ruleStrs.join(' , ')}]`;
940
- } else if (['destination', 'externalDestination'].includes(this.name)) {
941
- value = (this as any)?.[this.name]?.toVue(options) || '';
942
- } else {
943
- value = this.expression?.toVue(options) || '';
944
- }
945
- } else if (this.type === 'string') {
946
- // fix-bug: http://projectmanage.netease-official.lcap.163yun.com/dashboard/BugDetail?id=2613580902909440
947
- if (
948
- (
949
- // fix: 2647986781937408 导航栏项中配置链接,取消动态绑定,直接配置为外部链接,无法跳转,且导航栏项消失
950
- (this.name === 'destination' || this.name === 'href') && value && value.startsWith('/')
951
- ) && this.frontend?.prefixPath
952
- ) {
953
- value = `${this.frontend?.prefixPath}${value}`;
954
- } else if (
955
- ['van-uploader', 'u-uploader'].includes(this.viewElement.tag)
956
- && this.name === 'url' && value.startsWith('/')
957
- && this.app?.sysPrefixPath
958
- ) {
959
- value = `${this.app?.sysPrefixPath}${value}`;
960
- } else {
961
- let code = '';
962
- if (typeof value === 'string') {
963
- code = value;
964
- if (options?.finalCode !== false) {
965
- code = value.replace(/['"`\\]/g, (m) => {
966
- const escape = '\\';
967
- if (m === '\\') {
968
- return `${escape}${escape}`;
969
- } else {
970
- return `${escape}${m}`;
971
- }
972
- });
973
- }
974
- }
975
- value = code;
976
- }
930
+ return code;
931
+ }
932
+
933
+ /**
934
+ * 转换成 Vue 的模板格式
935
+ */
936
+ toVue(options?: ElementToVueOptions) {
937
+ let str = '';
938
+ let { value } = this;
939
+ if (this.type === 'dynamic' || (this.name === 'rules' && this.rules)) {
940
+ // 需要用标识符替换
941
+ // if (options?.finalCode !== false && this.needReplaceWithIdentifier) {
942
+ // const argsList = this.getArgsList();
943
+ // value = `${this.expressionBuilderName}(${argsList.join(', ')})`;
944
+ // } else
945
+ if (this.name === 'rules' && this.rules) {
946
+ const ruleStrs = this.rules.map((rule) => rule.toVue(options));
947
+ value = `[${ruleStrs.join(' , ')}]`;
948
+ } else if (['destination', 'externalDestination'].includes(this.name)) {
949
+ value = (this as any)?.[this.name]?.toVue(options) || '';
950
+ } else {
951
+ value = this.expression?.toVue(options) || '';
952
+ }
953
+ } else if (this.type === 'string') {
954
+ // fix-bug: http://projectmanage.netease-official.lcap.163yun.com/dashboard/BugDetail?id=2613580902909440
955
+ if (
956
+ // fix: 2647986781937408 导航栏项中配置链接,取消动态绑定,直接配置为外部链接,无法跳转,且导航栏项消失
957
+ (this.name === 'destination' || this.name === 'href') &&
958
+ value &&
959
+ value.startsWith('/') &&
960
+ this.frontend?.prefixPath
961
+ ) {
962
+ value = `${this.frontend?.prefixPath}${value}`;
963
+ } else if (
964
+ ['van-uploader', 'u-uploader'].includes(this.viewElement.tag) &&
965
+ this.name === 'url' &&
966
+ value.startsWith('/') &&
967
+ this.app?.sysPrefixPath
968
+ ) {
969
+ value = `${this.app?.sysPrefixPath}${value}`;
970
+ } else {
971
+ let code = '';
972
+ if (typeof value === 'string') {
973
+ code = value;
974
+ if (options?.finalCode !== false) {
975
+ code = value.replace(/['"`\\]/g, (m) => {
976
+ const escape = '\\';
977
+ if (m === '\\') {
978
+ return `${escape}${escape}`;
979
+ }
980
+ return `${escape}${m}`;
981
+ });
982
+ }
977
983
  }
978
- if (value !== undefined && value !== null && typeof value === 'string') {
979
- value = value.replace(/"/g, "'");
984
+ value = code;
985
+ }
986
+ }
987
+ if (value !== undefined && value !== null && typeof value === 'string') {
988
+ value = value.replace(/"/g, "'");
989
+ }
990
+ let { name } = this;
991
+ if (value !== undefined && value !== null && value !== '') {
992
+ if (name === 'download') {
993
+ str += 'download="true" ';
994
+ name = 'href';
995
+ }
996
+ // 文本默认要经过toString转换
997
+ if (options?.finalCode !== false && name === 'text' && !this.sync && this.type === 'dynamic') {
998
+ const expTypeAnnotation = (this.expression as any)?.typeAnnotation || this.expression?.__TypeAnnotation;
999
+ value = `$utils['ToString'](${value}, '${expTypeAnnotation?.sortedTypeKey}')`;
1000
+ }
1001
+ if (this.type === 'string' && name !== 'rules') {
1002
+ str += `${name}="${value}"`;
1003
+ } else if (this.sync) {
1004
+ str += `:${name}.sync="${value}"`;
1005
+ } else if (name === 'destination') {
1006
+ str += `:destination="${value}"`;
1007
+ } else if (name === 'externalDestination') {
1008
+ str += `:link="${value}"`;
1009
+ } else if (name === 'rules') {
1010
+ str += `:${name}="${value}"`;
1011
+ } else {
1012
+ str += `:${name}="${value}"`;
1013
+ }
1014
+ } else if (this.type === 'string' && this.value === '')
1015
+ if (!['destination', 'externalDestination'].includes(this.name)) {
1016
+ str = `${name}="${this.value}"`;
1017
+ }
1018
+ return str;
1019
+ }
1020
+
1021
+ @withSourceMap()
1022
+ toEmbeddedTS(state?: TranslatorState): string {
1023
+ const { name, type, value, rules, expression, playground } = this;
1024
+
1025
+ let code = '() => {';
1026
+
1027
+ if (['destination', 'externalDestination'].includes(name) && type === 'dynamic') {
1028
+ code += (this as any)[name].toEmbeddedTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1029
+ code += ';\n';
1030
+ } else if (name === 'rules') {
1031
+ rules?.forEach((item, index) => {
1032
+ code += item.toEmbeddedTS(shiftState(state, code));
1033
+ code += ';\n';
1034
+ });
1035
+ } else if (expression) {
1036
+ code += expression.toEmbeddedTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1037
+ code += ';\n';
1038
+ } else if (name === 'url' && value) {
1039
+ /**
1040
+ * ls定制化处理
1041
+ * url字符串处理成实体的引用,方便改名或者删除的时候查找引用
1042
+ * 因为这里只有字符串信息,所以在这里拼接成一个有引用的内容
1043
+ */
1044
+ const names = /api\/(.+?)\/import/g.exec(value);
1045
+ if (names) {
1046
+ const dataSourceNameAndEntityName = names[1];
1047
+ let dataSourceName = '';
1048
+ let entityName = '';
1049
+ if (dataSourceNameAndEntityName.includes('/')) {
1050
+ const arr: string[] = dataSourceNameAndEntityName.split('/');
1051
+ dataSourceName = arr[0];
1052
+ entityName = arr[1];
1053
+ } else {
1054
+ entityName = dataSourceNameAndEntityName;
980
1055
  }
981
- let name = this.name;
982
- if (value !== undefined && value !== null && value !== '') {
983
- if (name === 'download') {
984
- str += 'download="true" ';
985
- name = 'href';
986
- }
987
- // 文本默认要经过toString转换
988
- if (options?.finalCode !== false && name === 'text' && !this.sync && this.type === 'dynamic') {
989
- const expTypeAnnotation = (this.expression as any)?.typeAnnotation || this.expression?.__TypeAnnotation;
990
- value = `$utils['ToString'](${value}, '${expTypeAnnotation?.sortedTypeKey}')`;
991
- }
992
- if (this.type === 'string' && name !== 'rules') {
993
- str += `${name}="${value}"`;
994
- } else {
995
- if (this.sync) {
996
- str += `:${name}.sync="${value}"`;
997
- } else {
998
- if (name === 'destination') {
999
- str += `:destination="${value}"`;
1000
- } else if (name === 'externalDestination') {
1001
- str += `:link="${value}"`;
1002
- } else if (name === 'rules') {
1003
- str += `:${name}="${value}"`;
1004
- } else {
1005
- str += `:${name}="${value}"`;
1006
- }
1007
- }
1008
- }
1009
- } else if (this.type === 'string' && this.value === '')
1010
- if (!['destination', 'externalDestination'].includes(this.name)) {
1011
- str = `${name}="${this.value}"`;
1012
- }
1013
- return str;
1056
+ // 连接符转驼峰
1057
+ entityName = entityName.replace(/\-(\w)/g, (all, letter) => letter.toUpperCase());
1058
+ entityName = entityName[0].toUpperCase() + entityName.substr(1);
1059
+ code += `app.dataSources.${dataSourceName || 'defaultDS'}.entities.${entityName}`;
1060
+ code += ';\n';
1061
+ }
1062
+ }
1063
+ if (type === 'dynamic') {
1064
+ playground?.forEach((item, index) => {
1065
+ code += item.toEmbeddedTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1066
+ code += ';\n';
1067
+ });
1014
1068
  }
1015
1069
 
1016
- @withSourceMap()
1017
- toEmbeddedTS(state?: TranslatorState): string {
1018
- const {
1019
- name,
1020
- type,
1021
- value,
1022
- rules,
1023
- expression,
1024
- playground,
1025
- } = this;
1026
-
1027
- let code = '() => {';
1028
-
1029
- if (['destination', 'externalDestination'].includes(name) && type === 'dynamic') {
1030
- code += (this as any)[name].toEmbeddedTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1031
- code += ';\n';
1032
- } else if (name === 'rules') {
1033
- rules?.forEach((item, index) => {
1034
- code += item.toEmbeddedTS(shiftState(state, code));
1035
- code += ';\n';
1036
- });
1037
- } else if (expression) {
1038
- code += expression.toEmbeddedTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1039
- code += ';\n';
1040
- } else if (name === 'url' && value) {
1041
- /**
1042
- * ls定制化处理
1043
- * url字符串处理成实体的引用,方便改名或者删除的时候查找引用
1044
- * 因为这里只有字符串信息,所以在这里拼接成一个有引用的内容
1045
- */
1046
- const names = /api\/(.+?)\/import/g.exec(value);
1047
- if (names) {
1048
- const dataSourceNameAndEntityName = names[1];
1049
- let dataSourceName = '';
1050
- let entityName = '';
1051
- if (dataSourceNameAndEntityName.includes('/')) {
1052
- const arr: string[] = dataSourceNameAndEntityName.split('/');
1053
- dataSourceName = arr[0];
1054
- entityName = arr[1];
1055
- } else {
1056
- entityName = dataSourceNameAndEntityName;
1057
- }
1058
- // 连接符转驼峰
1059
- entityName = entityName.replace(/\-(\w)/g, (all, letter) => letter.toUpperCase());
1060
- entityName = entityName[0].toUpperCase() + entityName.substr(1);
1061
- code += `app.dataSources.${dataSourceName || 'defaultDS'}.entities.${entityName}`;
1062
- code += ';\n';
1063
- }
1064
- }
1065
- if (type === 'dynamic') {
1066
- playground?.forEach((item, index) => {
1067
- code += item.toEmbeddedTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1068
- code += ';\n';
1069
- });
1070
+ code += '}';
1071
+ return code;
1072
+ }
1073
+
1074
+ @withSourceMap()
1075
+ toNaturalTS(state?: TranslatorState): string {
1076
+ const { name, type, value, rules, expression, playground } = this;
1077
+ let code = '() => {';
1078
+
1079
+ if (['destination', 'externalDestination'].includes(name) && type === 'dynamic') {
1080
+ code += (this as any)[name].toNaturalTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1081
+ code += ';\n';
1082
+ } else if (name === 'rules') {
1083
+ rules?.forEach((item) => {
1084
+ code += item.toNaturalTS(shiftState(state, code));
1085
+ code += ';\n';
1086
+ });
1087
+ } else if (expression) {
1088
+ code += expression.toNaturalTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1089
+ code += ';\n';
1090
+ } else if (name === 'url' && value) {
1091
+ /**
1092
+ * ls定制化处理
1093
+ * url字符串处理成实体的引用,方便改名或者删除的时候查找引用
1094
+ * 因为这里只有字符串信息,所以在这里拼接成一个有引用的内容
1095
+ */
1096
+ const names = /api\/(.+?)\/import/g.exec(value);
1097
+ if (names) {
1098
+ const dataSourceNameAndEntityName = names[1];
1099
+ let dataSourceName = '';
1100
+ let entityName = '';
1101
+ if (dataSourceNameAndEntityName.includes('/')) {
1102
+ const arr: string[] = dataSourceNameAndEntityName.split('/');
1103
+ dataSourceName = arr[0];
1104
+ entityName = arr[1];
1105
+ } else {
1106
+ entityName = dataSourceNameAndEntityName;
1070
1107
  }
1071
-
1072
- code += '}';
1073
- return code;
1108
+ // 连接符转驼峰
1109
+ entityName = entityName.replace(/\-(\w)/g, (all, letter) => letter.toUpperCase());
1110
+ entityName = entityName[0].toUpperCase() + entityName.substr(1);
1111
+ code += `app.dataSources.${dataSourceName || 'defaultDS'}.entities.${entityName}`;
1112
+ code += ';\n';
1113
+ }
1074
1114
  }
1075
-
1076
- setUrlValue(newValue: string) {
1077
- const object = {
1078
- value: newValue,
1079
- };
1080
- this.update({
1081
- ...object,
1082
- });
1115
+ if (type === 'dynamic') {
1116
+ playground?.forEach((item) => {
1117
+ code += item.toNaturalTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1118
+ code += ';\n';
1119
+ });
1083
1120
  }
1084
- //================================================================================
1085
- // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
1086
- // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
1087
- //================================================================================
1121
+
1122
+ code += '}';
1123
+ return code;
1124
+ }
1125
+
1126
+ setUrlValue(newValue: string) {
1127
+ const object = {
1128
+ value: newValue,
1129
+ };
1130
+ this.update({
1131
+ ...object,
1132
+ });
1133
+ }
1134
+ //= ===============================================================================
1135
+ // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
1136
+ // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
1137
+ //= ===============================================================================
1088
1138
  }
1089
1139
 
1090
1140
  classMap.BindAttribute = BindAttribute;
1091
1141
  export default BindAttribute;
1092
- //================================================================================
1142
+ //= ===============================================================================
1093
1143
  // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
1094
1144
  // 自动生成的代码已结束。下面可以手动编写。
1095
- //================================================================================
1145
+ //= ===============================================================================