@lcap/nasl 3.2.0-beta.3 → 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 (842) hide show
  1. package/out/automate/engine/utils.js +4 -0
  2. package/out/automate/engine/utils.js.map +1 -1
  3. package/out/automate/upgrader/2.20.js +1 -1
  4. package/out/automate/upgrader/2.20.js.map +1 -1
  5. package/out/bak/translator.js +11 -15
  6. package/out/bak/translator.js.map +1 -1
  7. package/out/breakpoint/generator/AfterStartNode.js +3 -1
  8. package/out/breakpoint/generator/AfterStartNode.js.map +1 -1
  9. package/out/breakpoint/generator/BeforeEndNode.js.map +1 -1
  10. package/out/breakpoint/generator/BreakpointNode.d.ts +1 -0
  11. package/out/breakpoint/generator/BreakpointNode.js +48 -15
  12. package/out/breakpoint/generator/BreakpointNode.js.map +1 -1
  13. package/out/breakpoint/generator/CallbackNode.d.ts +4 -0
  14. package/out/breakpoint/generator/CallbackNode.js +22 -0
  15. package/out/breakpoint/generator/CallbackNode.js.map +1 -0
  16. package/out/breakpoint/generator/FragmentNode.d.ts +4 -0
  17. package/out/breakpoint/generator/FragmentNode.js +18 -0
  18. package/out/breakpoint/generator/FragmentNode.js.map +1 -0
  19. package/out/breakpoint/generator/index.js +25 -4
  20. package/out/breakpoint/generator/index.js.map +1 -1
  21. package/out/breakpoint/shared/constants.d.ts +3 -0
  22. package/out/breakpoint/shared/constants.js +6 -1
  23. package/out/breakpoint/shared/constants.js.map +1 -1
  24. package/out/breakpoint/shared/operations.js.map +1 -1
  25. package/out/breakpoint/shared/socket.d.ts +1 -1
  26. package/out/breakpoint/shared/socket.js +36 -7
  27. package/out/breakpoint/shared/socket.js.map +1 -1
  28. package/out/breakpoint/shared/utils.d.ts +2 -0
  29. package/out/breakpoint/shared/utils.js +15 -2
  30. package/out/breakpoint/shared/utils.js.map +1 -1
  31. package/out/breakpoint/store/core.d.ts +48 -2
  32. package/out/breakpoint/store/core.js +58 -32
  33. package/out/breakpoint/store/core.js.map +1 -1
  34. package/out/breakpoint/store/dock.js +1 -1
  35. package/out/breakpoint/store/dock.js.map +1 -1
  36. package/out/common/BaseNode.d.ts +2 -2
  37. package/out/common/BaseNode.js +110 -53
  38. package/out/common/BaseNode.js.map +1 -1
  39. package/out/common/Command.d.ts +13 -2
  40. package/out/common/Command.js +37 -9
  41. package/out/common/Command.js.map +1 -1
  42. package/out/common/EventEmitter.js.map +1 -1
  43. package/out/common/Messager.d.ts +3 -3
  44. package/out/common/Messager.js +6 -7
  45. package/out/common/Messager.js.map +1 -1
  46. package/out/common/asyncFuncMap.js.map +1 -1
  47. package/out/concepts/Abort__.js +6 -5
  48. package/out/concepts/Abort__.js.map +1 -1
  49. package/out/concepts/Anchor__.d.ts +4 -3
  50. package/out/concepts/Anchor__.js +24 -7
  51. package/out/concepts/Anchor__.js.map +1 -1
  52. package/out/concepts/AnonymousFunction__.d.ts +22 -21
  53. package/out/concepts/AnonymousFunction__.js +48 -22
  54. package/out/concepts/AnonymousFunction__.js.map +1 -1
  55. package/out/concepts/App__.d.ts +421 -247
  56. package/out/concepts/App__.js +288 -54
  57. package/out/concepts/App__.js.map +1 -1
  58. package/out/concepts/Argument__.d.ts +4 -3
  59. package/out/concepts/Argument__.js +42 -11
  60. package/out/concepts/Argument__.js.map +1 -1
  61. package/out/concepts/Assignee__.d.ts +45 -45
  62. package/out/concepts/Assignee__.js +15 -15
  63. package/out/concepts/Assignee__.js.map +1 -1
  64. package/out/concepts/AssignmentLine__.js +6 -5
  65. package/out/concepts/AssignmentLine__.js.map +1 -1
  66. package/out/concepts/Assignment__.d.ts +7 -6
  67. package/out/concepts/Assignment__.js +41 -23
  68. package/out/concepts/Assignment__.js.map +1 -1
  69. package/out/concepts/Attribute__.d.ts +3 -3
  70. package/out/concepts/Attribute__.js +8 -7
  71. package/out/concepts/Attribute__.js.map +1 -1
  72. package/out/concepts/AuthInterface__.js +4 -3
  73. package/out/concepts/AuthInterface__.js.map +1 -1
  74. package/out/concepts/AuthLogicForCallInterface__.d.ts +15 -15
  75. package/out/concepts/AuthLogicForCallInterface__.js +46 -27
  76. package/out/concepts/AuthLogicForCallInterface__.js.map +1 -1
  77. package/out/concepts/AuthLogic__.js +27 -13
  78. package/out/concepts/AuthLogic__.js.map +1 -1
  79. package/out/concepts/BackendVariable__.d.ts +5 -5
  80. package/out/concepts/BackendVariable__.js +23 -26
  81. package/out/concepts/BackendVariable__.js.map +1 -1
  82. package/out/concepts/Backend__.d.ts +18 -18
  83. package/out/concepts/Backend__.js +13 -13
  84. package/out/concepts/Backend__.js.map +1 -1
  85. package/out/concepts/BatchAssignment__.d.ts +34 -33
  86. package/out/concepts/BatchAssignment__.js +83 -43
  87. package/out/concepts/BatchAssignment__.js.map +1 -1
  88. package/out/concepts/BinaryExpression__.d.ts +7 -6
  89. package/out/concepts/BinaryExpression__.js +60 -24
  90. package/out/concepts/BinaryExpression__.js.map +1 -1
  91. package/out/concepts/BindAttribute__.d.ts +37 -37
  92. package/out/concepts/BindAttribute__.js +102 -58
  93. package/out/concepts/BindAttribute__.js.map +1 -1
  94. package/out/concepts/BindDirective__.d.ts +13 -13
  95. package/out/concepts/BindDirective__.js +23 -21
  96. package/out/concepts/BindDirective__.js.map +1 -1
  97. package/out/concepts/BindEvent__.d.ts +28 -28
  98. package/out/concepts/BindEvent__.js +150 -57
  99. package/out/concepts/BindEvent__.js.map +1 -1
  100. package/out/concepts/BindStyle__.d.ts +14 -15
  101. package/out/concepts/BindStyle__.js +16 -16
  102. package/out/concepts/BindStyle__.js.map +1 -1
  103. package/out/concepts/BooleanLiteral__.d.ts +1 -0
  104. package/out/concepts/BooleanLiteral__.js +12 -5
  105. package/out/concepts/BooleanLiteral__.js.map +1 -1
  106. package/out/concepts/CallAuthInterface__.d.ts +15 -15
  107. package/out/concepts/CallAuthInterface__.js +23 -22
  108. package/out/concepts/CallAuthInterface__.js.map +1 -1
  109. package/out/concepts/CallConnector__.d.ts +11 -9
  110. package/out/concepts/CallConnector__.js +79 -36
  111. package/out/concepts/CallConnector__.js.map +1 -1
  112. package/out/concepts/CallFunction__.d.ts +17 -16
  113. package/out/concepts/CallFunction__.js +95 -63
  114. package/out/concepts/CallFunction__.js.map +1 -1
  115. package/out/concepts/CallInterface__.d.ts +9 -8
  116. package/out/concepts/CallInterface__.js +109 -80
  117. package/out/concepts/CallInterface__.js.map +1 -1
  118. package/out/concepts/CallLogic__.d.ts +24 -20
  119. package/out/concepts/CallLogic__.js +209 -162
  120. package/out/concepts/CallLogic__.js.map +1 -1
  121. package/out/concepts/CallQueryComponent__.d.ts +51 -51
  122. package/out/concepts/CallQueryComponent__.js +66 -63
  123. package/out/concepts/CallQueryComponent__.js.map +1 -1
  124. package/out/concepts/Comment__.d.ts +1 -0
  125. package/out/concepts/Comment__.js +13 -6
  126. package/out/concepts/Comment__.js.map +1 -1
  127. package/out/concepts/CompletionProperty__.d.ts +3 -3
  128. package/out/concepts/CompletionProperty__.js +16 -8
  129. package/out/concepts/CompletionProperty__.js.map +1 -1
  130. package/out/concepts/ConfigGroup__.d.ts +15 -15
  131. package/out/concepts/ConfigGroup__.js +9 -9
  132. package/out/concepts/ConfigGroup__.js.map +1 -1
  133. package/out/concepts/ConfigPropertyValue__.js +4 -3
  134. package/out/concepts/ConfigPropertyValue__.js.map +1 -1
  135. package/out/concepts/ConfigProperty__.d.ts +15 -15
  136. package/out/concepts/ConfigProperty__.js +10 -10
  137. package/out/concepts/ConfigProperty__.js.map +1 -1
  138. package/out/concepts/Configuration__.d.ts +15 -15
  139. package/out/concepts/Configuration__.js +9 -9
  140. package/out/concepts/Configuration__.js.map +1 -1
  141. package/out/concepts/Connection__.d.ts +166 -0
  142. package/out/concepts/Connection__.js +332 -0
  143. package/out/concepts/Connection__.js.map +1 -0
  144. package/out/concepts/ConnectorTrigger__.js +4 -3
  145. package/out/concepts/ConnectorTrigger__.js.map +1 -1
  146. package/out/concepts/Connector__.d.ts +66 -66
  147. package/out/concepts/Connector__.js +16 -15
  148. package/out/concepts/Connector__.js.map +1 -1
  149. package/out/concepts/Constant__.d.ts +3 -3
  150. package/out/concepts/Constant__.js +8 -7
  151. package/out/concepts/Constant__.js.map +1 -1
  152. package/out/concepts/DataElement__.d.ts +3 -3
  153. package/out/concepts/DataElement__.js +6 -5
  154. package/out/concepts/DataElement__.js.map +1 -1
  155. package/out/concepts/DataSource__.d.ts +15 -15
  156. package/out/concepts/DataSource__.js +55 -39
  157. package/out/concepts/DataSource__.js.map +1 -1
  158. package/out/concepts/DatabaseTypeAnnotation__.js +4 -3
  159. package/out/concepts/DatabaseTypeAnnotation__.js.map +1 -1
  160. package/out/concepts/Destination__.d.ts +12 -11
  161. package/out/concepts/Destination__.js +93 -36
  162. package/out/concepts/Destination__.js.map +1 -1
  163. package/out/concepts/End__.js +15 -13
  164. package/out/concepts/End__.js.map +1 -1
  165. package/out/concepts/EntityIndex__.d.ts +1 -1
  166. package/out/concepts/EntityIndex__.js +6 -5
  167. package/out/concepts/EntityIndex__.js.map +1 -1
  168. package/out/concepts/EntityProperty__.d.ts +8 -7
  169. package/out/concepts/EntityProperty__.js +39 -24
  170. package/out/concepts/EntityProperty__.js.map +1 -1
  171. package/out/concepts/Entity__.d.ts +31 -30
  172. package/out/concepts/Entity__.js +40 -16
  173. package/out/concepts/Entity__.js.map +1 -1
  174. package/out/concepts/EnumItem__.d.ts +1 -0
  175. package/out/concepts/EnumItem__.js +12 -5
  176. package/out/concepts/EnumItem__.js.map +1 -1
  177. package/out/concepts/Enum__.d.ts +9 -8
  178. package/out/concepts/Enum__.js +24 -11
  179. package/out/concepts/Enum__.js.map +1 -1
  180. package/out/concepts/Event__.d.ts +15 -15
  181. package/out/concepts/Event__.js +6 -5
  182. package/out/concepts/Event__.js.map +1 -1
  183. package/out/concepts/ExternalDestination__.d.ts +6 -6
  184. package/out/concepts/ExternalDestination__.js +12 -11
  185. package/out/concepts/ExternalDestination__.js.map +1 -1
  186. package/out/concepts/ForEachStatement__.d.ts +25 -24
  187. package/out/concepts/ForEachStatement__.js +101 -36
  188. package/out/concepts/ForEachStatement__.js.map +1 -1
  189. package/out/concepts/FrontendLibrary__.d.ts +30 -30
  190. package/out/concepts/FrontendLibrary__.js +12 -13
  191. package/out/concepts/FrontendLibrary__.js.map +1 -1
  192. package/out/concepts/FrontendVariable__.js +4 -3
  193. package/out/concepts/FrontendVariable__.js.map +1 -1
  194. package/out/concepts/Frontend__.d.ts +64 -65
  195. package/out/concepts/Frontend__.js +23 -27
  196. package/out/concepts/Frontend__.js.map +1 -1
  197. package/out/concepts/Function__.d.ts +64 -63
  198. package/out/concepts/Function__.js +49 -21
  199. package/out/concepts/Function__.js.map +1 -1
  200. package/out/concepts/Identifier__.js +37 -31
  201. package/out/concepts/Identifier__.js.map +1 -1
  202. package/out/concepts/IfStatement__.d.ts +20 -19
  203. package/out/concepts/IfStatement__.js +64 -34
  204. package/out/concepts/IfStatement__.js.map +1 -1
  205. package/out/concepts/Integration__.d.ts +3 -3
  206. package/out/concepts/Integration__.js +8 -7
  207. package/out/concepts/Integration__.js.map +1 -1
  208. package/out/concepts/InterfaceParam__.d.ts +3 -3
  209. package/out/concepts/InterfaceParam__.js +7 -6
  210. package/out/concepts/InterfaceParam__.js.map +1 -1
  211. package/out/concepts/Interface__.d.ts +33 -33
  212. package/out/concepts/Interface__.js +19 -20
  213. package/out/concepts/Interface__.js.map +1 -1
  214. package/out/concepts/JSBlock__.d.ts +1 -0
  215. package/out/concepts/JSBlock__.js +12 -5
  216. package/out/concepts/JSBlock__.js.map +1 -1
  217. package/out/concepts/JavaLogic__.js +10 -9
  218. package/out/concepts/JavaLogic__.js.map +1 -1
  219. package/out/concepts/LogicItem__.d.ts +6 -0
  220. package/out/concepts/LogicItem__.js +14 -5
  221. package/out/concepts/LogicItem__.js.map +1 -1
  222. package/out/concepts/Logic__.d.ts +80 -79
  223. package/out/concepts/Logic__.js +204 -58
  224. package/out/concepts/Logic__.js.map +1 -1
  225. package/out/concepts/MatchCase__.d.ts +39 -38
  226. package/out/concepts/MatchCase__.js +122 -37
  227. package/out/concepts/MatchCase__.js.map +1 -1
  228. package/out/concepts/Match__.d.ts +13 -11
  229. package/out/concepts/Match__.js +128 -60
  230. package/out/concepts/Match__.js.map +1 -1
  231. package/out/concepts/MemberExpression__.d.ts +7 -6
  232. package/out/concepts/MemberExpression__.js +52 -22
  233. package/out/concepts/MemberExpression__.js.map +1 -1
  234. package/out/concepts/MicroApp__.js +4 -3
  235. package/out/concepts/MicroApp__.js.map +1 -1
  236. package/out/concepts/Module__.d.ts +242 -154
  237. package/out/concepts/Module__.js +139 -33
  238. package/out/concepts/Module__.js.map +1 -1
  239. package/out/concepts/MsgTriggerEvent__.d.ts +15 -15
  240. package/out/concepts/MsgTriggerEvent__.js +6 -5
  241. package/out/concepts/MsgTriggerEvent__.js.map +1 -1
  242. package/out/concepts/MsgTriggerLauncher__.d.ts +23 -15
  243. package/out/concepts/MsgTriggerLauncher__.js +24 -5
  244. package/out/concepts/MsgTriggerLauncher__.js.map +1 -1
  245. package/out/concepts/Namespace__.d.ts +180 -180
  246. package/out/concepts/Namespace__.js +33 -34
  247. package/out/concepts/Namespace__.js.map +1 -1
  248. package/out/concepts/NewComposite__.d.ts +49 -48
  249. package/out/concepts/NewComposite__.js +164 -49
  250. package/out/concepts/NewComposite__.js.map +1 -1
  251. package/out/concepts/NewList__.d.ts +19 -18
  252. package/out/concepts/NewList__.js +29 -12
  253. package/out/concepts/NewList__.js.map +1 -1
  254. package/out/concepts/NewMap__.d.ts +34 -33
  255. package/out/concepts/NewMap__.js +81 -72
  256. package/out/concepts/NewMap__.js.map +1 -1
  257. package/out/concepts/New__.js +6 -5
  258. package/out/concepts/New__.js.map +1 -1
  259. package/out/concepts/NullLiteral__.js +6 -5
  260. package/out/concepts/NullLiteral__.js.map +1 -1
  261. package/out/concepts/NumericLiteral__.d.ts +4 -3
  262. package/out/concepts/NumericLiteral__.js +15 -8
  263. package/out/concepts/NumericLiteral__.js.map +1 -1
  264. package/out/concepts/OqlQueryComponent__.d.ts +4 -3
  265. package/out/concepts/OqlQueryComponent__.js +25 -16
  266. package/out/concepts/OqlQueryComponent__.js.map +1 -1
  267. package/out/concepts/OverriddenLogic__.d.ts +79 -79
  268. package/out/concepts/OverriddenLogic__.js +79 -58
  269. package/out/concepts/OverriddenLogic__.js.map +1 -1
  270. package/out/concepts/Param__.d.ts +6 -5
  271. package/out/concepts/Param__.js +66 -29
  272. package/out/concepts/Param__.js.map +1 -1
  273. package/out/concepts/Point__.js +4 -3
  274. package/out/concepts/Point__.js.map +1 -1
  275. package/out/concepts/ProcessComponent__.d.ts +30 -30
  276. package/out/concepts/ProcessComponent__.js +8 -7
  277. package/out/concepts/ProcessComponent__.js.map +1 -1
  278. package/out/concepts/ProcessElement__.d.ts +96 -96
  279. package/out/concepts/ProcessElement__.js +34 -34
  280. package/out/concepts/ProcessElement__.js.map +1 -1
  281. package/out/concepts/ProcessOutcome__.js +6 -5
  282. package/out/concepts/ProcessOutcome__.js.map +1 -1
  283. package/out/concepts/ProcessOutcomes__.js +6 -5
  284. package/out/concepts/ProcessOutcomes__.js.map +1 -1
  285. package/out/concepts/Process__.d.ts +75 -75
  286. package/out/concepts/Process__.js +33 -30
  287. package/out/concepts/Process__.js.map +1 -1
  288. package/out/concepts/QueryAggregateExpression__.d.ts +3 -3
  289. package/out/concepts/QueryAggregateExpression__.js +8 -7
  290. package/out/concepts/QueryAggregateExpression__.js.map +1 -1
  291. package/out/concepts/QueryFieldExpression__.js +7 -6
  292. package/out/concepts/QueryFieldExpression__.js.map +1 -1
  293. package/out/concepts/QueryFromExpression__.d.ts +8 -8
  294. package/out/concepts/QueryFromExpression__.js +8 -7
  295. package/out/concepts/QueryFromExpression__.js.map +1 -1
  296. package/out/concepts/QueryGroupByExpression__.d.ts +3 -3
  297. package/out/concepts/QueryGroupByExpression__.js +9 -10
  298. package/out/concepts/QueryGroupByExpression__.js.map +1 -1
  299. package/out/concepts/QueryJoinExpression__.d.ts +23 -23
  300. package/out/concepts/QueryJoinExpression__.js +11 -10
  301. package/out/concepts/QueryJoinExpression__.js.map +1 -1
  302. package/out/concepts/QueryLimitExpression__.d.ts +6 -6
  303. package/out/concepts/QueryLimitExpression__.js +9 -8
  304. package/out/concepts/QueryLimitExpression__.js.map +1 -1
  305. package/out/concepts/QueryOrderByExpression__.d.ts +6 -6
  306. package/out/concepts/QueryOrderByExpression__.js +9 -8
  307. package/out/concepts/QueryOrderByExpression__.js.map +1 -1
  308. package/out/concepts/QuerySelectExpression__.d.ts +30 -30
  309. package/out/concepts/QuerySelectExpression__.js +9 -8
  310. package/out/concepts/QuerySelectExpression__.js.map +1 -1
  311. package/out/concepts/Rect__.js +4 -3
  312. package/out/concepts/Rect__.js.map +1 -1
  313. package/out/concepts/Return__.d.ts +4 -3
  314. package/out/concepts/Return__.js +37 -18
  315. package/out/concepts/Return__.js.map +1 -1
  316. package/out/concepts/Role__.js +9 -9
  317. package/out/concepts/Role__.js.map +1 -1
  318. package/out/concepts/SelectMembers__.d.ts +18 -18
  319. package/out/concepts/SelectMembers__.js +10 -9
  320. package/out/concepts/SelectMembers__.js.map +1 -1
  321. package/out/concepts/Slot__.d.ts +3 -3
  322. package/out/concepts/Slot__.js +6 -5
  323. package/out/concepts/Slot__.js.map +1 -1
  324. package/out/concepts/SqlQueryComponent__.d.ts +4 -3
  325. package/out/concepts/SqlQueryComponent__.js +21 -12
  326. package/out/concepts/SqlQueryComponent__.js.map +1 -1
  327. package/out/concepts/Start__.js +6 -5
  328. package/out/concepts/Start__.js.map +1 -1
  329. package/out/concepts/StringInterpolation__.d.ts +16 -15
  330. package/out/concepts/StringInterpolation__.js +37 -14
  331. package/out/concepts/StringInterpolation__.js.map +1 -1
  332. package/out/concepts/StringLiteral__.d.ts +1 -0
  333. package/out/concepts/StringLiteral__.js +13 -8
  334. package/out/concepts/StringLiteral__.js.map +1 -1
  335. package/out/concepts/StructureProperty__.d.ts +4 -3
  336. package/out/concepts/StructureProperty__.js +22 -9
  337. package/out/concepts/StructureProperty__.js.map +1 -1
  338. package/out/concepts/Structure__.d.ts +31 -30
  339. package/out/concepts/Structure__.js +27 -15
  340. package/out/concepts/Structure__.js.map +1 -1
  341. package/out/concepts/SwitchCase__.d.ts +12 -11
  342. package/out/concepts/SwitchCase__.js +69 -31
  343. package/out/concepts/SwitchCase__.js.map +1 -1
  344. package/out/concepts/SwitchStatement__.d.ts +9 -8
  345. package/out/concepts/SwitchStatement__.js +27 -7
  346. package/out/concepts/SwitchStatement__.js.map +1 -1
  347. package/out/concepts/Theme__.js +4 -3
  348. package/out/concepts/Theme__.js.map +1 -1
  349. package/out/concepts/Transactional__.js +4 -3
  350. package/out/concepts/Transactional__.js.map +1 -1
  351. package/out/concepts/TriggerEvent__.d.ts +15 -15
  352. package/out/concepts/TriggerEvent__.js +6 -5
  353. package/out/concepts/TriggerEvent__.js.map +1 -1
  354. package/out/concepts/TriggerLauncher__.d.ts +15 -10
  355. package/out/concepts/TriggerLauncher__.js +54 -32
  356. package/out/concepts/TriggerLauncher__.js.map +1 -1
  357. package/out/concepts/TypeAnnotation__.d.ts +28 -27
  358. package/out/concepts/TypeAnnotation__.js +144 -124
  359. package/out/concepts/TypeAnnotation__.js.map +1 -1
  360. package/out/concepts/TypeParam__.d.ts +1 -0
  361. package/out/concepts/TypeParam__.js +12 -5
  362. package/out/concepts/TypeParam__.js.map +1 -1
  363. package/out/concepts/UnaryExpression__.d.ts +4 -3
  364. package/out/concepts/UnaryExpression__.js +31 -20
  365. package/out/concepts/UnaryExpression__.js.map +1 -1
  366. package/out/concepts/Unparsed__.d.ts +1 -0
  367. package/out/concepts/Unparsed__.js +12 -5
  368. package/out/concepts/Unparsed__.js.map +1 -1
  369. package/out/concepts/UseComponent__.js +4 -3
  370. package/out/concepts/UseComponent__.js.map +1 -1
  371. package/out/concepts/ValidationRule__.d.ts +14 -14
  372. package/out/concepts/ValidationRule__.js +19 -17
  373. package/out/concepts/ValidationRule__.js.map +1 -1
  374. package/out/concepts/Variable__.d.ts +4 -3
  375. package/out/concepts/Variable__.js +39 -23
  376. package/out/concepts/Variable__.js.map +1 -1
  377. package/out/concepts/ViewBlock__.js +4 -3
  378. package/out/concepts/ViewBlock__.js.map +1 -1
  379. package/out/concepts/ViewComponent__.d.ts +90 -90
  380. package/out/concepts/ViewComponent__.js +16 -15
  381. package/out/concepts/ViewComponent__.js.map +1 -1
  382. package/out/concepts/ViewElement__.d.ts +92 -86
  383. package/out/concepts/ViewElement__.js +258 -200
  384. package/out/concepts/ViewElement__.js.map +1 -1
  385. package/out/concepts/View__.d.ts +92 -92
  386. package/out/concepts/View__.js +173 -63
  387. package/out/concepts/View__.js.map +1 -1
  388. package/out/concepts/WhileStatement__.d.ts +12 -11
  389. package/out/concepts/WhileStatement__.js +46 -23
  390. package/out/concepts/WhileStatement__.js.map +1 -1
  391. package/out/concepts/basics/stdlib/index.js +17 -1
  392. package/out/concepts/basics/stdlib/index.js.map +1 -1
  393. package/out/concepts/basics/stdlib/nasl.browser.js +36 -0
  394. package/out/concepts/basics/stdlib/nasl.browser.js.map +1 -1
  395. package/out/concepts/basics/stdlib/nasl.event.d.ts +3 -0
  396. package/out/concepts/basics/stdlib/nasl.event.js +23 -0
  397. package/out/concepts/basics/stdlib/nasl.event.js.map +1 -0
  398. package/out/concepts/basics/stdlib/nasl.ui.js +45 -0
  399. package/out/concepts/basics/stdlib/nasl.ui.js.map +1 -1
  400. package/out/concepts/basics/stdlib/nasl.util.js +6 -22
  401. package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
  402. package/out/concepts/index__.d.ts +2 -1
  403. package/out/concepts/index__.js +2 -1
  404. package/out/concepts/index__.js.map +1 -1
  405. package/out/concepts/types__.d.ts +2 -1
  406. package/out/decorators/index.d.ts +1 -1
  407. package/out/decorators/index.js +20 -7
  408. package/out/decorators/index.js.map +1 -1
  409. package/out/decorators/promise.d.ts +7 -0
  410. package/out/decorators/promise.js +28 -0
  411. package/out/decorators/promise.js.map +1 -0
  412. package/out/enums/KEYWORDS.js.map +1 -1
  413. package/out/enums/LEVEL_NAME_MAP.js.map +1 -1
  414. package/out/generator/compileComponent.js.map +1 -1
  415. package/out/generator/genBundleFiles.d.ts +4 -1
  416. package/out/generator/genBundleFiles.js +15 -11
  417. package/out/generator/genBundleFiles.js.map +1 -1
  418. package/out/generator/genHash.js.map +1 -1
  419. package/out/generator/genMetaData.js +12 -8
  420. package/out/generator/genMetaData.js.map +1 -1
  421. package/out/generator/genReleaseBody.js +33 -35
  422. package/out/generator/genReleaseBody.js.map +1 -1
  423. package/out/generator/microApp.js +2 -1
  424. package/out/generator/microApp.js.map +1 -1
  425. package/out/generator/permission.js +31 -30
  426. package/out/generator/permission.js.map +1 -1
  427. package/out/generator/styleReplacer.js +4 -7
  428. package/out/generator/styleReplacer.js.map +1 -1
  429. package/out/index.d.ts +0 -2
  430. package/out/index.js +0 -3
  431. package/out/index.js.map +1 -1
  432. package/out/manager/diagnostic.d.ts +1 -1
  433. package/out/manager/diagnostic.js.map +1 -1
  434. package/out/manager/stepRecorder.js +13 -9
  435. package/out/manager/stepRecorder.js.map +1 -1
  436. package/out/natural/RequirementAnalyzer.d.ts +22 -0
  437. package/out/natural/RequirementAnalyzer.js +196 -0
  438. package/out/natural/RequirementAnalyzer.js.map +1 -0
  439. package/out/natural/RequirementExecutor.d.ts +51 -0
  440. package/out/natural/RequirementExecutor.js +692 -0
  441. package/out/natural/RequirementExecutor.js.map +1 -0
  442. package/out/natural/componentData.d.ts +31 -0
  443. package/out/natural/componentData.js +85 -0
  444. package/out/natural/componentData.js.map +1 -0
  445. package/out/natural/genNaturalTS.d.ts +3 -0
  446. package/out/natural/genNaturalTS.js +76 -0
  447. package/out/natural/genNaturalTS.js.map +1 -0
  448. package/out/natural/index.d.ts +4 -0
  449. package/out/natural/index.js +21 -0
  450. package/out/natural/index.js.map +1 -0
  451. package/out/natural/knowledgeMap.d.ts +4 -0
  452. package/out/natural/knowledgeMap.js +40 -0
  453. package/out/natural/knowledgeMap.js.map +1 -0
  454. package/out/natural/naslStdlibMap.d.ts +2 -0
  455. package/out/natural/naslStdlibMap.js +26 -0
  456. package/out/natural/naslStdlibMap.js.map +1 -0
  457. package/out/natural/transformTSCode.d.ts +7 -0
  458. package/out/natural/transformTSCode.js +760 -0
  459. package/out/natural/transformTSCode.js.map +1 -0
  460. package/out/sentry/index.d.ts +2 -1
  461. package/out/sentry/index.js.map +1 -1
  462. package/out/server/createUiTs.js +28 -16
  463. package/out/server/createUiTs.js.map +1 -1
  464. package/out/server/entity2LogicNamespace.js +24 -22
  465. package/out/server/entity2LogicNamespace.js.map +1 -1
  466. package/out/server/event.d.ts +12 -0
  467. package/out/server/event.js +52 -28
  468. package/out/server/event.js.map +1 -1
  469. package/out/server/extendBaseNode.js +55 -70
  470. package/out/server/extendBaseNode.js.map +1 -1
  471. package/out/server/formatTsUtils.js +46 -50
  472. package/out/server/formatTsUtils.js.map +1 -1
  473. package/out/server/getConnector.d.ts +3 -3
  474. package/out/server/getConnector.js +7 -8
  475. package/out/server/getConnector.js.map +1 -1
  476. package/out/server/getExtensionModules.js +2 -2
  477. package/out/server/getExtensionModules.js.map +1 -1
  478. package/out/server/getFunctions.js.map +1 -1
  479. package/out/server/getInterfaces.js.map +1 -1
  480. package/out/server/getLogging.js.map +1 -1
  481. package/out/server/getLogics.d.ts +1 -1
  482. package/out/server/getLogics.js +55 -8
  483. package/out/server/getLogics.js.map +1 -1
  484. package/out/server/getMemberIdentifier.js +13 -10
  485. package/out/server/getMemberIdentifier.js.map +1 -1
  486. package/out/server/getProcessComponents.js.map +1 -1
  487. package/out/server/getProcesses.js +21 -29
  488. package/out/server/getProcesses.js.map +1 -1
  489. package/out/server/getScope.js.map +1 -1
  490. package/out/server/getValidates.js.map +1 -1
  491. package/out/server/index.js +0 -1
  492. package/out/server/index.js.map +1 -1
  493. package/out/server/naslServer.d.ts +99 -94
  494. package/out/server/naslServer.js +490 -469
  495. package/out/server/naslServer.js.map +1 -1
  496. package/out/server/naslStdlibMap.js +6 -2
  497. package/out/server/naslStdlibMap.js.map +1 -1
  498. package/out/server/process2LogicNamespace.js.map +1 -1
  499. package/out/server/translator.d.ts +1 -1
  500. package/out/server/translator.js +52 -47
  501. package/out/server/translator.js.map +1 -1
  502. package/out/service/storage/init.d.ts +15 -1
  503. package/out/service/storage/init.js +65 -56
  504. package/out/service/storage/init.js.map +1 -1
  505. package/out/templator/genCallComponentLogic.js +1 -2
  506. package/out/templator/genCallComponentLogic.js.map +1 -1
  507. package/out/templator/genCreateBlock.js +14 -9
  508. package/out/templator/genCreateBlock.js.map +1 -1
  509. package/out/templator/genCurdEditMultipleKeyBlock.js +23 -14
  510. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  511. package/out/templator/genCurdMultipleKeyBlock.js +26 -30
  512. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  513. package/out/templator/genEditTableBlock.d.ts +1 -1
  514. package/out/templator/genEditTableBlock.js +14 -19
  515. package/out/templator/genEditTableBlock.js.map +1 -1
  516. package/out/templator/genEnumSelectBlock.js +1 -1
  517. package/out/templator/genEnumSelectBlock.js.map +1 -1
  518. package/out/templator/genGetBlock.js +2 -2
  519. package/out/templator/genGetBlock.js.map +1 -1
  520. package/out/templator/genGridViewBlock.d.ts +2 -2
  521. package/out/templator/genGridViewBlock.js +18 -28
  522. package/out/templator/genGridViewBlock.js.map +1 -1
  523. package/out/templator/genListViewBlock.d.ts +2 -2
  524. package/out/templator/genListViewBlock.js +9 -16
  525. package/out/templator/genListViewBlock.js.map +1 -1
  526. package/out/templator/genQueryComponent.js +22 -15
  527. package/out/templator/genQueryComponent.js.map +1 -1
  528. package/out/templator/genSelectBlock.d.ts +2 -2
  529. package/out/templator/genSelectBlock.js +21 -48
  530. package/out/templator/genSelectBlock.js.map +1 -1
  531. package/out/templator/genTableBlock.d.ts +1 -1
  532. package/out/templator/genTableBlock.js +11 -17
  533. package/out/templator/genTableBlock.js.map +1 -1
  534. package/out/templator/genUpdateBlock.js +13 -8
  535. package/out/templator/genUpdateBlock.js.map +1 -1
  536. package/out/templator/index.d.ts +4 -2
  537. package/out/templator/index.js +2 -2
  538. package/out/templator/index.js.map +1 -1
  539. package/out/templator/utils.d.ts +9 -2
  540. package/out/templator/utils.js +22 -22
  541. package/out/templator/utils.js.map +1 -1
  542. package/out/translator/index.js +27 -28
  543. package/out/translator/index.js.map +1 -1
  544. package/out/utils/index.d.ts +2 -1
  545. package/out/utils/index.js +8 -14
  546. package/out/utils/index.js.map +1 -1
  547. package/out/utils/logger.js.map +1 -1
  548. package/out/utils/sortTsString.js +3 -1
  549. package/out/utils/sortTsString.js.map +1 -1
  550. package/out/utils/string.js +8 -11
  551. package/out/utils/string.js.map +1 -1
  552. package/out/utils/time-slicing.d.ts +41 -0
  553. package/out/utils/time-slicing.js +81 -0
  554. package/out/utils/time-slicing.js.map +1 -0
  555. package/out/utils/traverse.js +4 -6
  556. package/out/utils/traverse.js.map +1 -1
  557. package/package.json +22 -20
  558. package/sandbox/stdlib/nasl.auth.ts +49 -46
  559. package/sandbox/stdlib/nasl.browser.ts +1 -0
  560. package/sandbox/stdlib/nasl.event.ts +4 -0
  561. package/sandbox/stdlib/nasl.http.ts +29 -31
  562. package/sandbox/stdlib/nasl.ui.definition.ts +13 -1
  563. package/sandbox/stdlib/nasl.ui.ts +11 -0
  564. package/sandbox-natural/stdlib/nasl.core.ts +36 -0
  565. package/sandbox-natural/stdlib/nasl.oql.ts +8 -0
  566. package/sandbox-natural/stdlib/nasl.ui.ts +56 -0
  567. package/sandbox-natural/stdlib/nasl.util.ts +26 -0
  568. package/sandbox-natural/tsconfig.json +12 -0
  569. package/src/automate/engine/utils.js +3 -0
  570. package/src/automate/upgrader/2.20.js +1 -1
  571. package/src/bak/translator.js +92 -99
  572. package/src/breakpoint/generator/AfterStartNode.ts +19 -17
  573. package/src/breakpoint/generator/BeforeEndNode.ts +17 -17
  574. package/src/breakpoint/generator/BreakpointNode.ts +243 -195
  575. package/src/breakpoint/generator/CallbackNode.ts +20 -0
  576. package/src/breakpoint/generator/FragmentNode.ts +14 -0
  577. package/src/breakpoint/generator/index.ts +107 -80
  578. package/src/breakpoint/shared/constants.ts +59 -53
  579. package/src/breakpoint/shared/operations.ts +6 -6
  580. package/src/breakpoint/shared/socket.ts +277 -223
  581. package/src/breakpoint/shared/utils.ts +166 -146
  582. package/src/breakpoint/store/core.ts +326 -297
  583. package/src/breakpoint/store/dock.ts +103 -103
  584. package/src/breakpoint/types/index.d.ts +11 -11
  585. package/src/common/BaseNode.ts +1103 -1020
  586. package/src/common/Command.ts +46 -16
  587. package/src/common/ComponentAPI.ts +72 -72
  588. package/src/common/EventEmitter.ts +80 -76
  589. package/src/common/Messager.ts +223 -224
  590. package/src/common/asyncFuncMap.ts +12 -12
  591. package/src/concepts/Abort__.ts +53 -60
  592. package/src/concepts/Anchor__.ts +158 -149
  593. package/src/concepts/AnonymousFunction__.ts +584 -551
  594. package/src/concepts/App__.ts +4278 -3669
  595. package/src/concepts/Argument__.ts +234 -210
  596. package/src/concepts/Assignee__.ts +680 -656
  597. package/src/concepts/AssignmentLine__.ts +80 -84
  598. package/src/concepts/Assignment__.ts +276 -264
  599. package/src/concepts/Attribute__.ts +183 -184
  600. package/src/concepts/AuthInterface__.ts +61 -63
  601. package/src/concepts/AuthLogicForCallInterface__.ts +540 -511
  602. package/src/concepts/AuthLogic__.ts +210 -194
  603. package/src/concepts/BackendVariable__.ts +414 -415
  604. package/src/concepts/Backend__.ts +317 -303
  605. package/src/concepts/BatchAssignment__.ts +987 -939
  606. package/src/concepts/BinaryExpression__.ts +370 -341
  607. package/src/concepts/BindAttribute__.ts +1056 -1011
  608. package/src/concepts/BindDirective__.ts +540 -542
  609. package/src/concepts/BindEvent__.ts +992 -866
  610. package/src/concepts/BindStyle__.ts +442 -451
  611. package/src/concepts/BooleanLiteral__.ts +89 -90
  612. package/src/concepts/CallAuthInterface__.ts +458 -433
  613. package/src/concepts/CallConnector__.ts +209 -164
  614. package/src/concepts/CallFunction__.ts +600 -600
  615. package/src/concepts/CallInterface__.ts +752 -725
  616. package/src/concepts/CallLogic__.ts +1328 -1236
  617. package/src/concepts/CallQueryComponent__.ts +1580 -1501
  618. package/src/concepts/Comment__.ts +69 -68
  619. package/src/concepts/CompletionProperty__.ts +250 -250
  620. package/src/concepts/ConfigGroup__.ts +312 -296
  621. package/src/concepts/ConfigPropertyValue__.ts +81 -82
  622. package/src/concepts/ConfigProperty__.ts +374 -357
  623. package/src/concepts/Configuration__.ts +288 -276
  624. package/src/concepts/Connection__.ts +426 -0
  625. package/src/concepts/ConnectorTrigger__.ts +146 -142
  626. package/src/concepts/Connector__.ts +1090 -1048
  627. package/src/concepts/Constant__.ts +226 -219
  628. package/src/concepts/DataElement__.ts +108 -115
  629. package/src/concepts/DataSource__.ts +508 -472
  630. package/src/concepts/DatabaseTypeAnnotation__.ts +53 -59
  631. package/src/concepts/Destination__.ts +808 -746
  632. package/src/concepts/End__.ts +85 -89
  633. package/src/concepts/EntityIndex__.ts +206 -202
  634. package/src/concepts/EntityProperty__.ts +825 -791
  635. package/src/concepts/Entity__.ts +921 -864
  636. package/src/concepts/EnumItem__.ts +133 -125
  637. package/src/concepts/Enum__.ts +347 -337
  638. package/src/concepts/Event__.ts +305 -292
  639. package/src/concepts/ExternalDestination__.ts +269 -280
  640. package/src/concepts/ForEachStatement__.ts +583 -531
  641. package/src/concepts/FrontendLibrary__.ts +507 -485
  642. package/src/concepts/FrontendVariable__.ts +44 -49
  643. package/src/concepts/Frontend__.ts +1239 -1187
  644. package/src/concepts/Function__.ts +1110 -1045
  645. package/src/concepts/Identifier__.ts +276 -272
  646. package/src/concepts/IfStatement__.ts +467 -436
  647. package/src/concepts/Integration__.ts +136 -137
  648. package/src/concepts/InterfaceParam__.ts +239 -238
  649. package/src/concepts/Interface__.ts +969 -948
  650. package/src/concepts/JSBlock__.ts +83 -83
  651. package/src/concepts/JavaLogic__.ts +101 -106
  652. package/src/concepts/LogicItem__.ts +307 -237
  653. package/src/concepts/Logic__.ts +2301 -2088
  654. package/src/concepts/MatchCase__.ts +886 -779
  655. package/src/concepts/Match__.ts +728 -659
  656. package/src/concepts/MemberExpression__.ts +330 -311
  657. package/src/concepts/MicroApp__.ts +91 -97
  658. package/src/concepts/Module__.ts +2590 -2275
  659. package/src/concepts/MsgTriggerEvent__.ts +297 -281
  660. package/src/concepts/MsgTriggerLauncher__.ts +286 -256
  661. package/src/concepts/Namespace__.ts +2579 -2466
  662. package/src/concepts/NewComposite__.ts +1487 -1350
  663. package/src/concepts/NewList__.ts +464 -450
  664. package/src/concepts/NewMap__.ts +691 -674
  665. package/src/concepts/New__.ts +42 -49
  666. package/src/concepts/NullLiteral__.ts +66 -72
  667. package/src/concepts/NumericLiteral__.ts +169 -169
  668. package/src/concepts/OqlQueryComponent__.ts +282 -279
  669. package/src/concepts/OverriddenLogic__.ts +2142 -2097
  670. package/src/concepts/Param__.ts +500 -442
  671. package/src/concepts/Point__.ts +53 -59
  672. package/src/concepts/ProcessComponent__.ts +497 -475
  673. package/src/concepts/ProcessElement__.ts +1852 -1780
  674. package/src/concepts/ProcessOutcome__.ts +59 -64
  675. package/src/concepts/ProcessOutcomes__.ts +59 -64
  676. package/src/concepts/Process__.ts +1491 -1428
  677. package/src/concepts/QueryAggregateExpression__.ts +135 -142
  678. package/src/concepts/QueryFieldExpression__.ts +138 -142
  679. package/src/concepts/QueryFromExpression__.ts +246 -254
  680. package/src/concepts/QueryGroupByExpression__.ts +130 -136
  681. package/src/concepts/QueryJoinExpression__.ts +441 -438
  682. package/src/concepts/QueryLimitExpression__.ts +159 -166
  683. package/src/concepts/QueryOrderByExpression__.ts +173 -180
  684. package/src/concepts/QuerySelectExpression__.ts +464 -439
  685. package/src/concepts/Rect__.ts +73 -79
  686. package/src/concepts/Return__.ts +366 -345
  687. package/src/concepts/Role__.ts +146 -147
  688. package/src/concepts/SelectMembers__.ts +358 -350
  689. package/src/concepts/Slot__.ts +152 -153
  690. package/src/concepts/SqlQueryComponent__.ts +230 -228
  691. package/src/concepts/Start__.ts +45 -52
  692. package/src/concepts/StringInterpolation__.ts +323 -296
  693. package/src/concepts/StringLiteral__.ts +113 -115
  694. package/src/concepts/StructureProperty__.ts +306 -295
  695. package/src/concepts/Structure__.ts +615 -578
  696. package/src/concepts/SwitchCase__.ts +326 -290
  697. package/src/concepts/SwitchStatement__.ts +236 -229
  698. package/src/concepts/Theme__.ts +64 -68
  699. package/src/concepts/Transactional__.ts +159 -153
  700. package/src/concepts/TriggerEvent__.ts +285 -274
  701. package/src/concepts/TriggerLauncher__.ts +232 -196
  702. package/src/concepts/TypeAnnotation__.ts +1049 -1011
  703. package/src/concepts/TypeParam__.ts +48 -50
  704. package/src/concepts/UnaryExpression__.ts +163 -153
  705. package/src/concepts/Unparsed__.ts +81 -82
  706. package/src/concepts/UseComponent__.ts +53 -59
  707. package/src/concepts/ValidationRule__.ts +524 -544
  708. package/src/concepts/Variable__.ts +419 -397
  709. package/src/concepts/ViewBlock__.ts +58 -64
  710. package/src/concepts/ViewComponent__.ts +1323 -1261
  711. package/src/concepts/ViewElement__.ts +2537 -2351
  712. package/src/concepts/View__.ts +2461 -2245
  713. package/src/concepts/WhileStatement__.ts +293 -272
  714. package/src/concepts/basics/stdlib/index.ts +17 -1
  715. package/src/concepts/basics/stdlib/nasl.browser.ts +36 -0
  716. package/src/concepts/basics/stdlib/nasl.event.ts +18 -0
  717. package/src/concepts/basics/stdlib/nasl.ui.ts +45 -0
  718. package/src/concepts/basics/stdlib/nasl.util.ts +6 -22
  719. package/src/concepts/index__.ts +2 -1
  720. package/src/concepts/types__.ts +123 -121
  721. package/src/decorators/index.ts +75 -77
  722. package/src/decorators/promise.ts +28 -0
  723. package/src/enums/KEYWORDS.ts +1228 -1228
  724. package/src/enums/LEVEL_NAME_MAP.ts +24 -24
  725. package/src/generator/compileComponent.ts +10 -10
  726. package/src/generator/genBundleFiles.ts +300 -291
  727. package/src/generator/genHash.ts +2 -2
  728. package/src/generator/genMetaData.ts +280 -261
  729. package/src/generator/genReleaseBody.ts +312 -291
  730. package/src/generator/icestark.ts +1 -1
  731. package/src/generator/microApp.ts +17 -20
  732. package/src/generator/permission.ts +241 -232
  733. package/src/generator/qiankun.ts +1 -1
  734. package/src/generator/styleReplacer.ts +28 -31
  735. package/src/index.ts +0 -3
  736. package/src/manager/diagnostic.ts +84 -82
  737. package/src/manager/stepRecorder.ts +106 -94
  738. package/src/natural/RequirementAnalyzer.ts +208 -0
  739. package/src/natural/RequirementExecutor.ts +685 -0
  740. package/src/natural/componentData.ts +81 -0
  741. package/src/natural/genNaturalTS.ts +77 -0
  742. package/src/natural/index.ts +4 -0
  743. package/src/natural/knowledgeMap.ts +39 -0
  744. package/src/natural/naslStdlibMap.ts +24 -0
  745. package/src/natural/transformTSCode.ts +692 -0
  746. package/src/sentry/index.ts +109 -104
  747. package/src/server/createUiTs.ts +190 -184
  748. package/src/server/entity2LogicNamespace.ts +379 -359
  749. package/src/server/event.js +145 -121
  750. package/src/server/extendBaseNode.ts +461 -456
  751. package/src/server/formatTsUtils.ts +712 -713
  752. package/src/server/getConnector.ts +33 -33
  753. package/src/server/getExtensionModules.ts +23 -22
  754. package/src/server/getFunctions.ts +6 -6
  755. package/src/server/getInterfaces.ts +38 -37
  756. package/src/server/getLogging.ts +1 -1
  757. package/src/server/getLogics.ts +391 -312
  758. package/src/server/getMemberIdentifier.ts +286 -281
  759. package/src/server/getProcessComponents.ts +2 -2
  760. package/src/server/getProcesses.ts +548 -534
  761. package/src/server/getScope.ts +51 -51
  762. package/src/server/getValidates.ts +3 -3
  763. package/src/server/index.ts +29 -30
  764. package/src/server/naslServer.ts +4303 -4222
  765. package/src/server/naslStdlibMap.ts +43 -39
  766. package/src/server/process2LogicNamespace.ts +97 -97
  767. package/src/server/translator.ts +740 -746
  768. package/src/service/storage/init.ts +761 -728
  769. package/src/templator/genCallComponentLogic.ts +14 -15
  770. package/src/templator/genCreateBlock.ts +257 -229
  771. package/src/templator/genCurdEditMultipleKeyBlock.ts +333 -317
  772. package/src/templator/genCurdMultipleKeyBlock.ts +503 -475
  773. package/src/templator/genEditTableBlock.ts +194 -187
  774. package/src/templator/genEnumSelectBlock.ts +13 -7
  775. package/src/templator/genGetBlock.ts +57 -55
  776. package/src/templator/genGridViewBlock.ts +195 -211
  777. package/src/templator/genListViewBlock.ts +62 -72
  778. package/src/templator/genQueryComponent.ts +337 -287
  779. package/src/templator/genSelectBlock.ts +283 -297
  780. package/src/templator/genTableBlock.ts +160 -166
  781. package/src/templator/genUpdateBlock.ts +269 -255
  782. package/src/templator/index.ts +4 -4
  783. package/src/templator/utils.ts +491 -463
  784. package/src/translator/index.ts +84 -84
  785. package/src/translator/lsp.ts +22 -22
  786. package/src/translator/tsp.ts +6 -6
  787. package/src/utils/index.ts +115 -117
  788. package/src/utils/logger.ts +3 -4
  789. package/src/utils/sortTsString.ts +34 -32
  790. package/src/utils/string.ts +47 -48
  791. package/src/utils/time-slicing.ts +109 -0
  792. package/src/utils/traverse.ts +114 -126
  793. package/test/concepts/call-interface/__snapshots__/toEmbeddedTS.spec.ts.snap +71 -0
  794. package/test/concepts/call-interface/__snapshots__/toJS.spec.ts.snap +140 -0
  795. package/test/concepts/call-interface/constant.ts +5 -0
  796. package/test/concepts/call-interface/fixtures/only-interface.json +158 -0
  797. package/test/concepts/call-interface/fixtures/with-body-complex-argument.json +455 -0
  798. package/test/concepts/call-interface/fixtures/with-body-no-argument.json +187 -0
  799. package/test/concepts/call-interface/fixtures/with-body-simple-argument.json +225 -0
  800. package/test/concepts/call-interface/fixtures/with-headers-no-argument.json +213 -0
  801. package/test/concepts/call-interface/fixtures/with-headers.json +192 -0
  802. package/test/concepts/call-interface/fixtures/with-query-no-argument.json +213 -0
  803. package/test/concepts/call-interface/fixtures/with-query.json +192 -0
  804. package/test/concepts/call-interface/toEmbeddedTS.spec.ts +14 -0
  805. package/test/concepts/call-interface/toJS.spec.ts +14 -0
  806. package/test/concepts/call-logic/__snapshots__/toEmbeddedTS.spec.ts.snap +74 -0
  807. package/test/concepts/call-logic/__snapshots__/toJS.spec.ts.snap +141 -0
  808. package/test/concepts/call-logic/constant.ts +5 -0
  809. package/test/concepts/call-logic/fixtures/entries-get-with-arguments.json +223 -0
  810. package/test/concepts/call-logic/fixtures/entries-update-with-arguments.json +359 -0
  811. package/test/concepts/call-logic/fixtures/global-logic-argument-no-expression.json +209 -0
  812. package/test/concepts/call-logic/fixtures/global-logic-argument-some-expression.json +311 -0
  813. package/test/concepts/call-logic/fixtures/only-call-logic.json +10 -0
  814. package/test/concepts/call-logic/fixtures/view-buildin-logic-with-argument.json +128 -0
  815. package/test/concepts/call-logic/fixtures/view-component-logic-no-argument.json +126 -0
  816. package/test/concepts/call-logic/fixtures/view-component-with-validation.json +244 -0
  817. package/test/concepts/call-logic/toEmbeddedTS.spec.ts +14 -0
  818. package/test/concepts/call-logic/toJS.spec.ts +14 -0
  819. package/test/concepts/match/__snapshots__/toEmbeddedTS.spec.ts.snap +66 -0
  820. package/test/concepts/match/__snapshots__/toJS.spec.ts.snap +40 -0
  821. package/test/concepts/match/constant.ts +5 -0
  822. package/test/concepts/match/fixtures/isExpression.json +259 -0
  823. package/test/concepts/match/fixtures/lastBodyIf.json +268 -0
  824. package/test/concepts/match/fixtures/noExpression.json +176 -0
  825. package/test/concepts/match/toEmbeddedTS.spec.ts +14 -0
  826. package/test/concepts/match/toJS.spec.ts +14 -0
  827. package/test/concepts/utils.ts +76 -3
  828. package/test/concepts/validation-rule/__snapshots__/toEmbeddedTS.spec.ts.snap +3 -3
  829. package/test/concepts/validation-rule/__snapshots__/toJS.spec.ts.snap +16 -0
  830. package/test/concepts/validation-rule/constant.ts +5 -0
  831. package/test/concepts/validation-rule/toEmbeddedTS.spec.ts +10 -17
  832. package/test/concepts/validation-rule/toJS.spec.ts +14 -0
  833. package/test/concepts/view-element/__snapshots__/toEmbeddedTS.spec.ts.snap +68 -0
  834. package/test/concepts/view-element/__snapshots__/toVue.spec.ts.snap +44 -0
  835. package/test/concepts/view-element/constant.ts +5 -0
  836. package/test/concepts/view-element/fixtures/default-not-found.json +322 -0
  837. package/test/concepts/view-element/toEmbeddedTS.spec.ts +14 -0
  838. package/test/concepts/view-element/toVue.spec.ts +14 -0
  839. package/test/setup.ts +7 -0
  840. package/ts-worker/src/index.js +0 -2
  841. package/tsconfig.json +21 -21
  842. package/bin/naslc +0 -3
@@ -1,17 +1,17 @@
1
+ import { v4 as uuidv4 } from 'uuid';
1
2
  import { TranslatorState, shiftState, withSourceMap } from '../translator';
2
3
  import { ElementToVueOptions } from './ViewElement__';
3
4
  import MemberExpression from './MemberExpression__';
4
5
  import Assignment from './Assignment__';
5
6
  import Logic from './Logic__';
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 SelectMembers from './SelectMembers__';
@@ -23,975 +23,1023 @@ import LogicItem from './LogicItem__';
23
23
  */
24
24
  @concept('批量赋值语句')
25
25
  export class BatchAssignment extends LogicItem {
26
- /**
27
- * 产品概念
28
- */
29
- @property()
30
- concept: 'BatchAssignment' = 'BatchAssignment';
31
-
32
- /**
33
- * 批量赋值语句标题
34
- */
35
- @property()
36
- label: string = '批量赋值';
37
-
38
- /**
39
- * 左边项
40
- */
41
- @property('SelectMembers')
42
- left: SelectMembers = undefined;
43
-
44
- /**
45
- * 右边项
46
- */
47
- @property('SelectMembers')
48
- rights: Array<SelectMembers> = [];
49
-
50
- /**
51
- * 赋值
52
- */
53
- @property('AssignmentLine')
54
- assignmentLines: Array<AssignmentLine> = [];
55
-
56
- /**
57
- * 自动连线
58
- */
59
- @property()
60
- autoConnection: boolean = true;
61
-
62
-
63
-
64
- /**
65
- * @param source 需要合并的部分参数
66
- */
67
- constructor(source?: Partial<BatchAssignment>) {
68
- source = Object.assign({}, BatchAssignment.getDefaultOptions(), source);
69
- super(source);
70
- super.subConstructor(source);
26
+ /**
27
+ * 产品概念
28
+ */
29
+ @property()
30
+ concept: 'BatchAssignment' = 'BatchAssignment';
31
+
32
+ /**
33
+ * 批量赋值语句标题
34
+ */
35
+ @property()
36
+ label: string = '批量赋值';
37
+
38
+ /**
39
+ * 左边项
40
+ */
41
+ @property('SelectMembers')
42
+ left: SelectMembers = undefined;
43
+
44
+ /**
45
+ * 右边项
46
+ */
47
+ @property('SelectMembers')
48
+ rights: Array<SelectMembers> = [];
49
+
50
+ /**
51
+ * 赋值
52
+ */
53
+ @property('AssignmentLine')
54
+ assignmentLines: Array<AssignmentLine> = [];
55
+
56
+ /**
57
+ * 自动连线
58
+ */
59
+ @property()
60
+ autoConnection: boolean = true;
61
+
62
+ /**
63
+ * @param source 需要合并的部分参数
64
+ */
65
+ constructor(source?: Partial<BatchAssignment>) {
66
+ // @ts-ignore
67
+ source = { ...BatchAssignment.getDefaultOptions(), ...source };
68
+ super(source);
69
+ super.subConstructor(source);
70
+ }
71
+
72
+ getClassName() {
73
+ return 'BatchAssignment';
74
+ }
75
+
76
+ static from(source: any, parentNode?: any, parentKey?: string): BatchAssignment {
77
+ return super.from(source, parentNode, parentKey) as BatchAssignment;
78
+ }
79
+
80
+ /**
81
+ * 设置左边项
82
+ */
83
+ setLeft(left: SelectMembers) {
84
+ left._delete();
85
+ const relationOptions = { parentNode: this, parentKey: 'left' };
86
+ Object.assign(left, relationOptions);
87
+ const object = {
88
+ left,
89
+ };
90
+ this.update({
91
+ ...object,
92
+ });
93
+ }
94
+
95
+ /**
96
+ * 设置右边项
97
+ */
98
+ setRights(rights: Array<SelectMembers>) {
99
+ const object = {
100
+ rights,
101
+ };
102
+ this.update({
103
+ ...object,
104
+ });
105
+ }
106
+
107
+ /**
108
+ * 设置赋值
109
+ */
110
+ setAssignmentLines(assignmentLines: Array<AssignmentLine>) {
111
+ const object = {
112
+ assignmentLines,
113
+ };
114
+ this.update({
115
+ ...object,
116
+ });
117
+ }
118
+
119
+ /**
120
+ * 设置自动连线
121
+ */
122
+ setAutoConnection(autoConnection: boolean) {
123
+ const object = {
124
+ autoConnection,
125
+ };
126
+ this.update({
127
+ ...object,
128
+ });
129
+ }
130
+
131
+ getSelectMembersExistingNames(excludedList: Array<SelectMembers> = []) {
132
+ const excludedSet = new Set(excludedList);
133
+ return ((this.rights as SelectMembers[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
134
+ }
135
+
136
+ getSelectMembersUniqueName(name = 'selectMembers1') {
137
+ return utils.unique(name, this.getSelectMembersExistingNames(), undefined, false);
138
+ }
139
+
140
+ /**
141
+ * 插入选择成员
142
+ * @internal
143
+ * @param name 选择成员名称,如果不填会自动生成一个唯一名称
144
+ */
145
+ _insertSelectMembersAt(name: string, index: number): SelectMembers;
146
+
147
+ /**
148
+ * 插入选择成员
149
+ * @internal
150
+ * @param selectMembersOptions 选择成员参数
151
+ */
152
+ _insertSelectMembersAt(selectMembersOptions: Partial<SelectMembers>, index: number): SelectMembers;
153
+
154
+ /**
155
+ * 插入选择成员
156
+ * @internal
157
+ * @param selectMembers 已有的选择成员实例
158
+ */
159
+ _insertSelectMembersAt(selectMembers: SelectMembers, index: number): SelectMembers;
160
+
161
+ _insertSelectMembersAt(options: string | Partial<SelectMembers> | SelectMembers, index: number) {
162
+ const selectMembersOptions: any = {};
163
+ const relationOptions = { parentNode: this, parentKey: 'rights' };
164
+ let selectMembers: SelectMembers;
165
+ if (!options) {
166
+ selectMembers = SelectMembers.from(
167
+ {
168
+ ...selectMembersOptions,
169
+ name: this.getSelectMembersUniqueName(),
170
+ },
171
+ this,
172
+ 'rights'
173
+ );
174
+ } else if (typeof options === 'string') {
175
+ selectMembers = SelectMembers.from(
176
+ {
177
+ ...selectMembersOptions,
178
+ name: options,
179
+ },
180
+ this,
181
+ 'rights'
182
+ );
183
+ } else if (options instanceof SelectMembers) {
184
+ options.ensureDelete(); // 同一实例不支持多处存在
185
+ selectMembers = options;
186
+ Object.assign(selectMembers, relationOptions);
187
+ } else {
188
+ selectMembers = SelectMembers.from(
189
+ {
190
+ ...selectMembersOptions,
191
+ ...options,
192
+ },
193
+ this,
194
+ 'rights'
195
+ );
71
196
  }
72
- getClassName() {
73
- return 'BatchAssignment';
197
+ this.rights.splice(index, 0, selectMembers);
198
+ return selectMembers;
199
+ }
200
+
201
+ /**
202
+ * 插入选择成员
203
+ * @param name 选择成员名称,如果不填会自动生成一个唯一名称
204
+ */
205
+ insertSelectMembersAt(name: string, index: number): SelectMembers;
206
+
207
+ /**
208
+ * 插入选择成员
209
+ * @param selectMembersOptions 选择成员参数
210
+ */
211
+ insertSelectMembersAt(selectMembersOptions: Partial<SelectMembers>, index: number): SelectMembers;
212
+
213
+ /**
214
+ * 插入选择成员
215
+ * @param selectMembers 已有的选择成员实例
216
+ */
217
+ insertSelectMembersAt(selectMembers: SelectMembers, index: number): SelectMembers;
218
+
219
+ insertSelectMembersAt(options: string | Partial<SelectMembers> | SelectMembers, index: number) {
220
+ const node = this._insertSelectMembersAt(options as any, index);
221
+ node.create({
222
+ index,
223
+ parentNode: this,
224
+ parentKey: 'rights',
225
+ });
226
+ return node;
227
+ }
228
+
229
+ /**
230
+ * 添加选择成员
231
+ * @internal
232
+ * @param name 选择成员名称,如果不填会自动生成一个唯一名称
233
+ */
234
+ _addSelectMembers(name?: string): SelectMembers;
235
+
236
+ /**
237
+ * 添加选择成员
238
+ * @internal
239
+ * @param selectMembersOptions 选择成员参数
240
+ */
241
+ _addSelectMembers(selectMembersOptions: Partial<SelectMembers>): SelectMembers;
242
+
243
+ /**
244
+ * 添加选择成员
245
+ * @internal
246
+ * @param selectMembers 已有的选择成员实例
247
+ */
248
+ _addSelectMembers(selectMembers: SelectMembers): SelectMembers;
249
+
250
+ _addSelectMembers(options?: string | Partial<SelectMembers> | SelectMembers) {
251
+ const index = this.rights.length;
252
+ return this._insertSelectMembersAt(options as any, index);
253
+ }
254
+
255
+ /**
256
+ * 添加选择成员
257
+ * @internal
258
+ * @param name 选择成员名称,如果不填会自动生成一个唯一名称
259
+ */
260
+ addSelectMembers(name?: string): SelectMembers;
261
+
262
+ /**
263
+ * 添加选择成员
264
+ * @param selectMembersOptions 选择成员参数
265
+ */
266
+ addSelectMembers(selectMembersOptions: Partial<SelectMembers>): SelectMembers;
267
+
268
+ /**
269
+ * 添加选择成员
270
+ * @param selectMembers 已有的选择成员实例
271
+ */
272
+ addSelectMembers(selectMembers: SelectMembers): SelectMembers;
273
+
274
+ addSelectMembers(options?: string | Partial<SelectMembers> | SelectMembers) {
275
+ const node = this._addSelectMembers(options as any);
276
+ const index = this.rights.indexOf(node);
277
+ node.create({
278
+ index,
279
+ parentNode: this,
280
+ parentKey: 'rights',
281
+ });
282
+ return node;
283
+ }
284
+
285
+ getAssignmentLineExistingNames(excludedList: Array<AssignmentLine> = []) {
286
+ const excludedSet = new Set(excludedList);
287
+ return ((this.assignmentLines as AssignmentLine[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
288
+ }
289
+
290
+ getAssignmentLineUniqueName(name = 'assignmentLine1') {
291
+ return utils.unique(name, this.getAssignmentLineExistingNames(), undefined, false);
292
+ }
293
+
294
+ /**
295
+ * 插入赋值连线
296
+ * @internal
297
+ * @param name 赋值连线名称,如果不填会自动生成一个唯一名称
298
+ */
299
+ _insertAssignmentLineAt(name: string, index: number): AssignmentLine;
300
+
301
+ /**
302
+ * 插入赋值连线
303
+ * @internal
304
+ * @param assignmentLineOptions 赋值连线参数
305
+ */
306
+ _insertAssignmentLineAt(assignmentLineOptions: Partial<AssignmentLine>, index: number): AssignmentLine;
307
+
308
+ /**
309
+ * 插入赋值连线
310
+ * @internal
311
+ * @param assignmentLine 已有的赋值连线实例
312
+ */
313
+ _insertAssignmentLineAt(assignmentLine: AssignmentLine, index: number): AssignmentLine;
314
+
315
+ _insertAssignmentLineAt(options: string | Partial<AssignmentLine> | AssignmentLine, index: number) {
316
+ const assignmentLineOptions: any = {};
317
+ const relationOptions = { parentNode: this, parentKey: 'assignmentLines' };
318
+ let assignmentLine: AssignmentLine;
319
+ if (!options) {
320
+ assignmentLine = AssignmentLine.from(
321
+ {
322
+ ...assignmentLineOptions,
323
+ name: this.getAssignmentLineUniqueName(),
324
+ },
325
+ this,
326
+ 'assignmentLines'
327
+ );
328
+ } else if (typeof options === 'string') {
329
+ assignmentLine = AssignmentLine.from(
330
+ {
331
+ ...assignmentLineOptions,
332
+ name: options,
333
+ },
334
+ this,
335
+ 'assignmentLines'
336
+ );
337
+ } else if (options instanceof AssignmentLine) {
338
+ options.ensureDelete(); // 同一实例不支持多处存在
339
+ assignmentLine = options;
340
+ Object.assign(assignmentLine, relationOptions);
341
+ } else {
342
+ assignmentLine = AssignmentLine.from(
343
+ {
344
+ ...assignmentLineOptions,
345
+ ...options,
346
+ },
347
+ this,
348
+ 'assignmentLines'
349
+ );
74
350
  }
75
-
76
- static from(source: any, parentNode?: any, parentKey?: string): BatchAssignment {
77
- return super.from(source, parentNode, parentKey) as BatchAssignment;
78
- }
79
-
80
-
81
- /**
82
- * 设置左边项
83
- */
84
- setLeft(left: SelectMembers) {
85
- left._delete();
86
- const relationOptions = { parentNode: this, parentKey: 'left' };
87
- Object.assign(left, relationOptions);
88
- const object = {
89
- left,
90
- };
91
- this.update({
92
- ...object,
93
- });
94
- }
95
-
96
- /**
97
- * 设置右边项
98
- */
99
- setRights(rights: Array<SelectMembers>) {
100
- const object = {
101
- rights,
102
- };
103
- this.update({
104
- ...object,
105
- });
351
+ this.assignmentLines.splice(index, 0, assignmentLine);
352
+ return assignmentLine;
353
+ }
354
+
355
+ /**
356
+ * 插入赋值连线
357
+ * @param name 赋值连线名称,如果不填会自动生成一个唯一名称
358
+ */
359
+ insertAssignmentLineAt(name: string, index: number): AssignmentLine;
360
+
361
+ /**
362
+ * 插入赋值连线
363
+ * @param assignmentLineOptions 赋值连线参数
364
+ */
365
+ insertAssignmentLineAt(assignmentLineOptions: Partial<AssignmentLine>, index: number): AssignmentLine;
366
+
367
+ /**
368
+ * 插入赋值连线
369
+ * @param assignmentLine 已有的赋值连线实例
370
+ */
371
+ insertAssignmentLineAt(assignmentLine: AssignmentLine, index: number): AssignmentLine;
372
+
373
+ insertAssignmentLineAt(options: string | Partial<AssignmentLine> | AssignmentLine, index: number) {
374
+ const node = this._insertAssignmentLineAt(options as any, index);
375
+ node.create({
376
+ index,
377
+ parentNode: this,
378
+ parentKey: 'assignmentLines',
379
+ });
380
+ return node;
381
+ }
382
+
383
+ /**
384
+ * 添加赋值连线
385
+ * @internal
386
+ * @param name 赋值连线名称,如果不填会自动生成一个唯一名称
387
+ */
388
+ _addAssignmentLine(name?: string): AssignmentLine;
389
+
390
+ /**
391
+ * 添加赋值连线
392
+ * @internal
393
+ * @param assignmentLineOptions 赋值连线参数
394
+ */
395
+ _addAssignmentLine(assignmentLineOptions: Partial<AssignmentLine>): AssignmentLine;
396
+
397
+ /**
398
+ * 添加赋值连线
399
+ * @internal
400
+ * @param assignmentLine 已有的赋值连线实例
401
+ */
402
+ _addAssignmentLine(assignmentLine: AssignmentLine): AssignmentLine;
403
+
404
+ _addAssignmentLine(options?: string | Partial<AssignmentLine> | AssignmentLine) {
405
+ const index = this.assignmentLines.length;
406
+ return this._insertAssignmentLineAt(options as any, index);
407
+ }
408
+
409
+ /**
410
+ * 添加赋值连线
411
+ * @internal
412
+ * @param name 赋值连线名称,如果不填会自动生成一个唯一名称
413
+ */
414
+ addAssignmentLine(name?: string): AssignmentLine;
415
+
416
+ /**
417
+ * 添加赋值连线
418
+ * @param assignmentLineOptions 赋值连线参数
419
+ */
420
+ addAssignmentLine(assignmentLineOptions: Partial<AssignmentLine>): AssignmentLine;
421
+
422
+ /**
423
+ * 添加赋值连线
424
+ * @param assignmentLine 已有的赋值连线实例
425
+ */
426
+ addAssignmentLine(assignmentLine: AssignmentLine): AssignmentLine;
427
+
428
+ addAssignmentLine(options?: string | Partial<AssignmentLine> | AssignmentLine) {
429
+ const node = this._addAssignmentLine(options as any);
430
+ const index = this.assignmentLines.indexOf(node);
431
+ node.create({
432
+ index,
433
+ parentNode: this,
434
+ parentKey: 'assignmentLines',
435
+ });
436
+ return node;
437
+ }
438
+
439
+ /**
440
+ * 删除选择成员
441
+ * @param name 选择成员名称
442
+ */
443
+ removeLeft(name: string): void;
444
+
445
+ /**
446
+ * 删除选择成员
447
+ * @param left 已有的选择成员实例
448
+ */
449
+ removeLeft(left: SelectMembers): void;
450
+
451
+ removeLeft(options: string | SelectMembers) {
452
+ let left: SelectMembers;
453
+ if (typeof options === 'string') {
454
+ left = this.left;
455
+ if (!left) {
456
+ throw new Error(`找不到选择成员 ${options}`);
457
+ }
458
+ } else {
459
+ left = options;
106
460
  }
107
-
108
- /**
109
- * 设置赋值
110
- */
111
- setAssignmentLines(assignmentLines: Array<AssignmentLine>) {
112
- const object = {
113
- assignmentLines,
114
- };
115
- this.update({
116
- ...object,
117
- });
461
+ return left.delete();
462
+ }
463
+
464
+ /**
465
+ * 删除选择成员
466
+ * @param name 选择成员名称
467
+ */
468
+ removeSelectMembersInRights(name: string): void;
469
+
470
+ /**
471
+ * 删除选择成员
472
+ * @param selectMembers 已有的选择成员实例
473
+ */
474
+ removeSelectMembersInRights(selectMembers: SelectMembers): void;
475
+
476
+ removeSelectMembersInRights(options: string | SelectMembers) {
477
+ let selectMembers: SelectMembers;
478
+ if (typeof options === 'string') {
479
+ selectMembers = (this.rights as SelectMembers[]).find((item) => item.name === options);
480
+ if (!selectMembers) {
481
+ throw new Error(`找不到选择成员 ${options}`);
482
+ }
483
+ } else {
484
+ selectMembers = options;
118
485
  }
119
-
120
- /**
121
- * 设置自动连线
122
- */
123
- setAutoConnection(autoConnection: boolean) {
124
- const object = {
125
- autoConnection,
126
- };
127
- this.update({
128
- ...object,
129
- });
486
+ return selectMembers.delete();
487
+ }
488
+
489
+ __removeSelectMembers(selectMembers: SelectMembers) {
490
+ const { parentKey } = selectMembers;
491
+ const params: Params = {
492
+ parentNode: this,
493
+ parentKey,
494
+ index: -1,
495
+ object: null,
496
+ oldObject: selectMembers,
497
+ };
498
+ if (parentKey) {
499
+ params.parentKey = parentKey;
500
+ if (Array.isArray((this as any)[parentKey])) {
501
+ const index = (this as any)[parentKey].indexOf(selectMembers);
502
+ ~index && (this as any)[parentKey].splice(index, 1);
503
+ params.index = index;
504
+ } else if ((this as any)[parentKey] === selectMembers) {
505
+ params.index = 0;
506
+ (this as any)[parentKey] = undefined;
507
+ }
130
508
  }
131
-
132
- getSelectMembersExistingNames(excludedList: Array<SelectMembers> = []) {
133
- const excludedSet = new Set(excludedList);
134
- return ((this.rights as SelectMembers[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
509
+ return params;
510
+ }
511
+
512
+ /**
513
+ * 删除赋值连线
514
+ * @param name 赋值连线名称
515
+ */
516
+ removeAssignmentLine(name: string): void;
517
+
518
+ /**
519
+ * 删除赋值连线
520
+ * @param assignmentLine 已有的赋值连线实例
521
+ */
522
+ removeAssignmentLine(assignmentLine: AssignmentLine): void;
523
+
524
+ removeAssignmentLine(options: string | AssignmentLine) {
525
+ let assignmentLine: AssignmentLine;
526
+ if (typeof options === 'string') {
527
+ assignmentLine = (this.assignmentLines as AssignmentLine[]).find((item) => item.name === options);
528
+ if (!assignmentLine) {
529
+ throw new Error(`找不到赋值连线 ${options}`);
530
+ }
531
+ } else {
532
+ assignmentLine = options;
135
533
  }
136
- getSelectMembersUniqueName(name = 'selectMembers1') {
137
- return utils.unique(name, this.getSelectMembersExistingNames(), undefined, false);
534
+ return assignmentLine.delete();
535
+ }
536
+
537
+ __removeAssignmentLine(assignmentLine: AssignmentLine) {
538
+ const { parentKey } = assignmentLine;
539
+ const params: Params = {
540
+ parentNode: this,
541
+ parentKey,
542
+ index: -1,
543
+ object: null,
544
+ oldObject: assignmentLine,
545
+ };
546
+ if (parentKey) {
547
+ params.parentKey = parentKey;
548
+ if (Array.isArray((this as any)[parentKey])) {
549
+ const index = (this as any)[parentKey].indexOf(assignmentLine);
550
+ ~index && (this as any)[parentKey].splice(index, 1);
551
+ params.index = index;
552
+ } else if ((this as any)[parentKey] === assignmentLine) {
553
+ params.index = 0;
554
+ (this as any)[parentKey] = undefined;
555
+ }
138
556
  }
139
-
140
- /**
141
- * 插入选择成员
142
- * @internal
143
- * @param name 选择成员名称,如果不填会自动生成一个唯一名称
144
- */
145
- _insertSelectMembersAt(name: string, index: number): SelectMembers;
146
-
147
- /**
148
- * 插入选择成员
149
- * @internal
150
- * @param selectMembersOptions 选择成员参数
151
- */
152
- _insertSelectMembersAt(selectMembersOptions: Partial<SelectMembers>, index: number): SelectMembers;
153
-
154
- /**
155
- * 插入选择成员
156
- * @internal
157
- * @param selectMembers 已有的选择成员实例
158
- */
159
- _insertSelectMembersAt(selectMembers: SelectMembers, index: number): SelectMembers;
160
-
161
- _insertSelectMembersAt(options: string | Partial<SelectMembers> | SelectMembers, index: number) {
162
- const selectMembersOptions: any = {};
163
- const relationOptions = { parentNode: this, parentKey: 'rights' };
164
- let selectMembers: SelectMembers;
165
- if (!options) {
166
- selectMembers = SelectMembers.from({
167
- ...selectMembersOptions,
168
- name: this.getSelectMembersUniqueName(),
169
- }, this, 'rights');
170
- } else if (typeof options === 'string') {
171
- selectMembers = SelectMembers.from({
172
- ...selectMembersOptions,
173
- name: options,
174
- }, this, 'rights');
175
- } else if (options instanceof SelectMembers) {
176
- options.ensureDelete(); // 同一实例不支持多处存在
177
- selectMembers = options;
178
- Object.assign(selectMembers, relationOptions);
179
- } else {
180
- selectMembers = SelectMembers.from({
181
- ...selectMembersOptions,
182
- ...options,
183
- }, this, 'rights');
184
- }
185
- this.rights.splice(index, 0, selectMembers);
186
- return selectMembers;
557
+ return params;
558
+ }
559
+
560
+ //= ===============================================================================
561
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
562
+ // 自动生成的代码已结束。下面可以手动编写。
563
+ //= ===============================================================================
564
+
565
+ public static getDefaultOptions() {
566
+ return {
567
+ left: {
568
+ concept: 'SelectMembers',
569
+ expression: {
570
+ concept: 'Identifier',
571
+ name: '',
572
+ },
573
+ },
574
+ };
575
+ }
576
+
577
+ // 自动连线算法---addRightIndex : 指右边选择变量后对该selectmember进行自动连线。
578
+ async batchAutoConnection(addRightIndex?: number) {
579
+ const leftLineSet = new Set();
580
+ const lineArr: Array<AssignmentLine> = [];
581
+ // 系统属性不可自动连线
582
+ ['id', 'createdTime', 'updatedTime', 'createdBy', 'updatedBy'].forEach((name) => leftLineSet.add(name));
583
+ // 左边已连线的下标
584
+ this.assignmentLines.forEach((line) => {
585
+ if (line.leftIndex.length > 1) leftLineSet.add(Number(line.leftIndex[1]));
586
+ });
587
+ // 父节点不允许自动连线
588
+ for (let i = 0; i < this.left.members.length - 1; i++) {
589
+ const { completeName } = this.left.members[i];
590
+ const preCompleteName = this.left.members[i + 1].completeName;
591
+ if (preCompleteName.includes(completeName) && completeName.split('.').length !== preCompleteName.split('.').length) leftLineSet.add(i);
187
592
  }
188
-
189
- /**
190
- * 插入选择成员
191
- * @param name 选择成员名称,如果不填会自动生成一个唯一名称
192
- */
193
- insertSelectMembersAt(name: string, index: number): SelectMembers;
194
-
195
- /**
196
- * 插入选择成员
197
- * @param selectMembersOptions 选择成员参数
198
- */
199
- insertSelectMembersAt(selectMembersOptions: Partial<SelectMembers>, index: number): SelectMembers;
200
-
201
- /**
202
- * 插入选择成员
203
- * @param selectMembers 已有的选择成员实例
204
- */
205
- insertSelectMembersAt(selectMembers: SelectMembers, index: number): SelectMembers;
206
-
207
- insertSelectMembersAt(options: string | Partial<SelectMembers> | SelectMembers, index: number) {
208
- const node = this._insertSelectMembersAt(options as any, index);
209
- node.create({
210
- index,
211
- parentNode: this,
212
- parentKey: 'rights',
213
- });
214
- return node;
215
- }
216
-
217
- /**
218
- * 添加选择成员
219
- * @internal
220
- * @param name 选择成员名称,如果不填会自动生成一个唯一名称
221
- */
222
- _addSelectMembers(name?: string): SelectMembers;
223
-
224
- /**
225
- * 添加选择成员
226
- * @internal
227
- * @param selectMembersOptions 选择成员参数
228
- */
229
- _addSelectMembers(selectMembersOptions: Partial<SelectMembers>): SelectMembers;
230
-
231
- /**
232
- * 添加选择成员
233
- * @internal
234
- * @param selectMembers 已有的选择成员实例
235
- */
236
- _addSelectMembers(selectMembers: SelectMembers): SelectMembers;
237
-
238
- _addSelectMembers(options?: string | Partial<SelectMembers> | SelectMembers) {
239
- const index = this.rights.length;
240
- return this._insertSelectMembersAt(options as any, index);
241
- }
242
-
243
- /**
244
- * 添加选择成员
245
- * @internal
246
- * @param name 选择成员名称,如果不填会自动生成一个唯一名称
247
- */
248
- addSelectMembers(name?: string): SelectMembers;
249
-
250
- /**
251
- * 添加选择成员
252
- * @param selectMembersOptions 选择成员参数
253
- */
254
- addSelectMembers(selectMembersOptions: Partial<SelectMembers>): SelectMembers;
255
-
256
- /**
257
- * 添加选择成员
258
- * @param selectMembers 已有的选择成员实例
259
- */
260
- addSelectMembers(selectMembers: SelectMembers): SelectMembers;
261
-
262
- addSelectMembers(options?: string | Partial<SelectMembers> | SelectMembers) {
263
- const node = this._addSelectMembers(options as any);
264
- const index = this.rights.indexOf(node);
265
- node.create({
266
- index,
267
- parentNode: this,
268
- parentKey: 'rights',
269
- });
270
- return node;
271
- }
272
-
273
-
274
- getAssignmentLineExistingNames(excludedList: Array<AssignmentLine> = []) {
275
- const excludedSet = new Set(excludedList);
276
- return ((this.assignmentLines as AssignmentLine[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
277
- }
278
- getAssignmentLineUniqueName(name = 'assignmentLine1') {
279
- return utils.unique(name, this.getAssignmentLineExistingNames(), undefined, false);
280
- }
281
-
282
- /**
283
- * 插入赋值连线
284
- * @internal
285
- * @param name 赋值连线名称,如果不填会自动生成一个唯一名称
286
- */
287
- _insertAssignmentLineAt(name: string, index: number): AssignmentLine;
288
-
289
- /**
290
- * 插入赋值连线
291
- * @internal
292
- * @param assignmentLineOptions 赋值连线参数
293
- */
294
- _insertAssignmentLineAt(assignmentLineOptions: Partial<AssignmentLine>, index: number): AssignmentLine;
295
-
296
- /**
297
- * 插入赋值连线
298
- * @internal
299
- * @param assignmentLine 已有的赋值连线实例
300
- */
301
- _insertAssignmentLineAt(assignmentLine: AssignmentLine, index: number): AssignmentLine;
302
-
303
- _insertAssignmentLineAt(options: string | Partial<AssignmentLine> | AssignmentLine, index: number) {
304
- const assignmentLineOptions: any = {};
305
- const relationOptions = { parentNode: this, parentKey: 'assignmentLines' };
306
- let assignmentLine: AssignmentLine;
307
- if (!options) {
308
- assignmentLine = AssignmentLine.from({
309
- ...assignmentLineOptions,
310
- name: this.getAssignmentLineUniqueName(),
311
- }, this, 'assignmentLines');
312
- } else if (typeof options === 'string') {
313
- assignmentLine = AssignmentLine.from({
314
- ...assignmentLineOptions,
315
- name: options,
316
- }, this, 'assignmentLines');
317
- } else if (options instanceof AssignmentLine) {
318
- options.ensureDelete(); // 同一实例不支持多处存在
319
- assignmentLine = options;
320
- Object.assign(assignmentLine, relationOptions);
321
- } else {
322
- assignmentLine = AssignmentLine.from({
323
- ...assignmentLineOptions,
324
- ...options,
325
- }, this, 'assignmentLines');
326
- }
327
- this.assignmentLines.splice(index, 0, assignmentLine);
328
- return assignmentLine;
329
- }
330
-
331
- /**
332
- * 插入赋值连线
333
- * @param name 赋值连线名称,如果不填会自动生成一个唯一名称
334
- */
335
- insertAssignmentLineAt(name: string, index: number): AssignmentLine;
336
-
337
- /**
338
- * 插入赋值连线
339
- * @param assignmentLineOptions 赋值连线参数
340
- */
341
- insertAssignmentLineAt(assignmentLineOptions: Partial<AssignmentLine>, index: number): AssignmentLine;
342
-
343
- /**
344
- * 插入赋值连线
345
- * @param assignmentLine 已有的赋值连线实例
346
- */
347
- insertAssignmentLineAt(assignmentLine: AssignmentLine, index: number): AssignmentLine;
348
-
349
- insertAssignmentLineAt(options: string | Partial<AssignmentLine> | AssignmentLine, index: number) {
350
- const node = this._insertAssignmentLineAt(options as any, index);
351
- node.create({
352
- index,
353
- parentNode: this,
354
- parentKey: 'assignmentLines',
355
- });
356
- return node;
357
- }
358
-
359
- /**
360
- * 添加赋值连线
361
- * @internal
362
- * @param name 赋值连线名称,如果不填会自动生成一个唯一名称
363
- */
364
- _addAssignmentLine(name?: string): AssignmentLine;
365
-
366
- /**
367
- * 添加赋值连线
368
- * @internal
369
- * @param assignmentLineOptions 赋值连线参数
370
- */
371
- _addAssignmentLine(assignmentLineOptions: Partial<AssignmentLine>): AssignmentLine;
372
-
373
- /**
374
- * 添加赋值连线
375
- * @internal
376
- * @param assignmentLine 已有的赋值连线实例
377
- */
378
- _addAssignmentLine(assignmentLine: AssignmentLine): AssignmentLine;
379
-
380
- _addAssignmentLine(options?: string | Partial<AssignmentLine> | AssignmentLine) {
381
- const index = this.assignmentLines.length;
382
- return this._insertAssignmentLineAt(options as any, index);
383
- }
384
-
385
- /**
386
- * 添加赋值连线
387
- * @internal
388
- * @param name 赋值连线名称,如果不填会自动生成一个唯一名称
389
- */
390
- addAssignmentLine(name?: string): AssignmentLine;
391
-
392
- /**
393
- * 添加赋值连线
394
- * @param assignmentLineOptions 赋值连线参数
395
- */
396
- addAssignmentLine(assignmentLineOptions: Partial<AssignmentLine>): AssignmentLine;
397
-
398
- /**
399
- * 添加赋值连线
400
- * @param assignmentLine 已有的赋值连线实例
401
- */
402
- addAssignmentLine(assignmentLine: AssignmentLine): AssignmentLine;
403
-
404
- addAssignmentLine(options?: string | Partial<AssignmentLine> | AssignmentLine) {
405
- const node = this._addAssignmentLine(options as any);
406
- const index = this.assignmentLines.indexOf(node);
407
- node.create({
408
- index,
409
- parentNode: this,
410
- parentKey: 'assignmentLines',
411
- });
412
- return node;
413
- }
414
-
415
-
416
-
417
-
418
- /**
419
- * 删除选择成员
420
- * @param name 选择成员名称
421
- */
422
- removeLeft(name: string): void;
423
-
424
- /**
425
- * 删除选择成员
426
- * @param left 已有的选择成员实例
427
- */
428
- removeLeft(left: SelectMembers): void;
429
-
430
- removeLeft(options: string | SelectMembers) {
431
- let left: SelectMembers;
432
- if (typeof options === 'string') {
433
- left = this.left;
434
- if (!left) {
435
- throw new Error('找不到选择成员 ' + options);
436
- }
437
- } else {
438
- left = options;
439
- }
440
- return left.delete();
441
- }
442
-
443
-
444
-
445
- /**
446
- * 删除选择成员
447
- * @param name 选择成员名称
448
- */
449
- removeSelectMembersInRights(name: string): void;
450
-
451
- /**
452
- * 删除选择成员
453
- * @param selectMembers 已有的选择成员实例
454
- */
455
- removeSelectMembersInRights(selectMembers: SelectMembers): void;
456
-
457
- removeSelectMembersInRights(options: string | SelectMembers) {
458
- let selectMembers: SelectMembers;
459
- if (typeof options === 'string') {
460
- selectMembers = (this.rights as SelectMembers[]).find((item) => item.name === options);
461
- if (!selectMembers) {
462
- throw new Error('找不到选择成员 ' + options);
463
- }
464
- } else {
465
- selectMembers = options;
466
- }
467
- return selectMembers.delete();
468
- }
469
-
470
- __removeSelectMembers(selectMembers: SelectMembers) {
471
- const parentKey = selectMembers.parentKey;
472
- const params: Params = {
473
- parentNode: this,
474
- parentKey,
475
- index: -1,
476
- object: null,
477
- oldObject: selectMembers,
478
- };
479
- if (parentKey) {
480
- params.parentKey = parentKey;
481
- if (Array.isArray((this as any)[parentKey])) {
482
- const index = (this as any)[parentKey].indexOf(selectMembers);
483
- ~index && (this as any)[parentKey].splice(index, 1);
484
- params.index = index;
485
- } else if ((this as any)[parentKey] === selectMembers) {
486
- params.index = 0;
487
- (this as any)[parentKey] = undefined;
488
- }
489
- }
490
- return params;
491
- }
492
-
493
-
494
-
495
- /**
496
- * 删除赋值连线
497
- * @param name 赋值连线名称
498
- */
499
- removeAssignmentLine(name: string): void;
500
-
501
- /**
502
- * 删除赋值连线
503
- * @param assignmentLine 已有的赋值连线实例
504
- */
505
- removeAssignmentLine(assignmentLine: AssignmentLine): void;
506
-
507
- removeAssignmentLine(options: string | AssignmentLine) {
508
- let assignmentLine: AssignmentLine;
509
- if (typeof options === 'string') {
510
- assignmentLine = (this.assignmentLines as AssignmentLine[]).find((item) => item.name === options);
511
- if (!assignmentLine) {
512
- throw new Error('找不到赋值连线 ' + options);
593
+ // await new Promise((resolve) => setTimeout(resolve, 400));
594
+ const autoConnection = () => {
595
+ this.app.emit('collect:start', {
596
+ actionMsg: '自动连线',
597
+ });
598
+ this.left.members.forEach((member: any, leftSecondIndex: number) => {
599
+ const leftValue = member.getValue();
600
+ const leftName = member.property?.name;
601
+ const leftTypeAnnotation = member.__TypeAnnotation;
602
+ if (leftLineSet.has(leftSecondIndex) || leftLineSet.has(leftName)) return;
603
+
604
+ this.rights.forEach((selectMember, rightFirstIndex) => {
605
+ const { members, expression } = selectMember;
606
+ if (leftLineSet.has(leftSecondIndex)) return;
607
+ if (addRightIndex !== -1 && addRightIndex !== rightFirstIndex) return;
608
+ // 右侧父节点也不允许自动连线
609
+ const rightLineSet = new Set();
610
+ for (let i = 0; i < members.length - 1; i++) {
611
+ const { completeName } = members[i];
612
+ const preCompleteName = members[i + 1].completeName;
613
+ if (preCompleteName.includes(completeName) && completeName.split('.').length !== preCompleteName.split('.').length) rightLineSet.add(i);
614
+ }
615
+
616
+ if (leftName === expression.name && expression.__TypeAnnotation?.typeKind === leftTypeAnnotation.typeKind) {
617
+ const Line: AssignmentLine = new AssignmentLine({
618
+ leftIndex: [0, leftSecondIndex],
619
+ rightIndex: [rightFirstIndex],
620
+ });
621
+ lineArr.push(Line);
622
+ leftLineSet.add(leftSecondIndex);
623
+ return;
624
+ }
625
+ members.forEach((rightMember: any, rightSecondIndex: number) => {
626
+ const rightValue = rightMember.getValue();
627
+ const rightName = rightMember.property?.name;
628
+ if (rightLineSet.has(rightSecondIndex)) return;
629
+
630
+ if (leftName === rightName && leftValue.split('.').length === rightValue.split('.').length) {
631
+ const rightTypeAnnotation = rightMember.__TypeAnnotation;
632
+ if (leftTypeAnnotation.typeKind !== rightTypeAnnotation.typeKind) return;
633
+ const leftIndex = [0, leftSecondIndex];
634
+ const rightIndex = [rightFirstIndex, rightSecondIndex];
635
+ const Line: AssignmentLine = new AssignmentLine({ leftIndex, rightIndex });
636
+ lineArr.push(Line);
637
+ leftLineSet.add(leftSecondIndex);
513
638
  }
514
- } else {
515
- assignmentLine = options;
639
+ });
640
+ });
641
+ });
642
+ lineArr.length && this.setAssignmentLines([...this.assignmentLines, ...lineArr]);
643
+ this.app.emit('collect:end');
644
+ };
645
+
646
+ let count = 0;
647
+ const typeAnnotationEnd = () => {
648
+ const l = this.left.members.every((item) => item.__isCorrectTypeAnnotation);
649
+ const r = this.rights.every(
650
+ (right) => right.members.every((item) => item.__isCorrectTypeAnnotation) && right.expression.__isCorrectTypeAnnotation
651
+ );
652
+ count++;
653
+ if (l && r) {
654
+ autoConnection();
655
+ } else if (count <= 10) {
656
+ setTimeout(() => {
657
+ typeAnnotationEnd();
658
+ }, 100);
659
+ }
660
+ };
661
+ typeAnnotationEnd();
662
+ }
663
+
664
+ connection(leftItem: LogicItem | SelectMembers, rightItem: LogicItem | SelectMembers, rightToLeft: boolean) {
665
+ let newLeftIndex = [0];
666
+ let newRightIndex = [];
667
+ let newLines: Array<AssignmentLine> = [];
668
+ let newMembers = this.left.members;
669
+ if (leftItem.concept !== 'SelectMembers' && leftItem.parentKey !== 'expression') {
670
+ const { members } = this.left;
671
+ const secondIndex = members.findIndex((exp: any) => exp === leftItem);
672
+ const completeNameSplitLength = members[secondIndex].completeName.split('.').length;
673
+ let filterLines: Array<AssignmentLine> = [];
674
+ // 连线左边的坐标。
675
+ newLeftIndex = [0, secondIndex];
676
+ // 父节点选中后删除此节点下的子节点
677
+ let sameLevelIndex = members.findIndex((exp: any, index: number) => {
678
+ if (index > secondIndex) {
679
+ return exp.completeName.split('.').length <= completeNameSplitLength;
516
680
  }
517
- return assignmentLine.delete();
518
- }
519
-
520
- __removeAssignmentLine(assignmentLine: AssignmentLine) {
521
- const parentKey = assignmentLine.parentKey;
522
- const params: Params = {
523
- parentNode: this,
524
- parentKey,
525
- index: -1,
526
- object: null,
527
- oldObject: assignmentLine,
528
- };
529
- if (parentKey) {
530
- params.parentKey = parentKey;
531
- if (Array.isArray((this as any)[parentKey])) {
532
- const index = (this as any)[parentKey].indexOf(assignmentLine);
533
- ~index && (this as any)[parentKey].splice(index, 1);
534
- params.index = index;
535
- } else if ((this as any)[parentKey] === assignmentLine) {
536
- params.index = 0;
537
- (this as any)[parentKey] = undefined;
538
- }
681
+ return false;
682
+ });
683
+ sameLevelIndex = sameLevelIndex === -1 ? members.length : sameLevelIndex;
684
+ newMembers = members.filter((member: any, index: number) => index <= secondIndex || index >= sameLevelIndex);
685
+ filterLines = this.assignmentLines.filter(({ leftIndex }) => leftIndex[1] <= secondIndex || leftIndex[1] >= sameLevelIndex);
686
+ // members成员减少,需要重新计算后续连线下标
687
+ filterLines.forEach((line) => {
688
+ const distance = sameLevelIndex - secondIndex - 1;
689
+ if (line.leftIndex[1] > secondIndex) {
690
+ const newLine = { ...line, leftIndex: [line.leftIndex[0], line.leftIndex[1] - distance] };
691
+ newLines.push(newLine as AssignmentLine);
692
+ return;
539
693
  }
540
- return params;
694
+ newLines.push(line);
695
+ });
696
+ } else {
697
+ newLines = [];
698
+ newMembers = [];
541
699
  }
542
-
543
- //================================================================================
544
- // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
545
- // 自动生成的代码已结束。下面可以手动编写。
546
- //================================================================================
547
-
548
- public static getDefaultOptions() {
549
- return {
550
- left: {
551
- concept: 'SelectMembers',
552
- expression: {
553
- concept: 'Identifier',
554
- name: '',
555
- },
556
- },
557
- };
700
+ if (rightItem.concept === 'SelectMembers') {
701
+ newRightIndex = [this.rights.findIndex((right) => right === rightItem)];
702
+ } else if (rightItem.concept !== 'MemberExpression') {
703
+ newRightIndex = [this.rights.findIndex((right) => right === rightItem.parentNode)];
704
+ } else {
705
+ const selectMember = rightItem.getAncestor('SelectMembers');
706
+ const firstIndex = this.rights.findIndex((right) => right === selectMember);
707
+ const secondIndex = this.rights[firstIndex].members.findIndex((exp: any) => exp === rightItem);
708
+ newRightIndex = [firstIndex, secondIndex];
558
709
  }
559
-
560
- // 自动连线算法---addRightIndex : 指右边选择变量后对该selectmember进行自动连线。
561
- async batchAutoConnection(addRightIndex?: number) {
562
- const leftLineSet = new Set();
563
- const lineArr: Array<AssignmentLine> = [];
564
- // 系统属性不可自动连线
565
- ['id', 'createdTime', 'updatedTime', 'createdBy', 'updatedBy'].forEach((name) => leftLineSet.add(name));
566
- // 左边已连线的下标
567
- this.assignmentLines.forEach((line) => {
568
- if (line.leftIndex.length > 1)
569
- leftLineSet.add(Number(line.leftIndex[1]));
570
- });
571
- // 父节点不允许自动连线
572
- for (let i = 0; i < this.left.members.length - 1; i++) {
573
- const completeName = this.left.members[i].completeName;
574
- const preCompleteName = this.left.members[i + 1].completeName;
575
- if (preCompleteName.includes(completeName) && completeName.split('.').length !== preCompleteName.split('.').length)
576
- leftLineSet.add(i);
577
- }
578
- // await new Promise((resolve) => setTimeout(resolve, 400));
579
- const autoConnection = () => {
580
- this.app.emit('collect:start', {
581
- actionMsg: '自动连线',
582
- });
583
- this.left.members.forEach((member: any, leftSecondIndex: number) => {
584
- const leftValue = member.getValue();
585
- const leftName = member.property?.name;
586
- const leftTypeAnnotation = member.__TypeAnnotation;
587
- if (leftLineSet.has(leftSecondIndex) || leftLineSet.has(leftName))
588
- return;
589
-
590
- this.rights.forEach((selectMember, rightFirstIndex) => {
591
- const { members, expression } = selectMember;
592
- if (leftLineSet.has(leftSecondIndex))
593
- return;
594
- if (addRightIndex !== -1 && addRightIndex !== rightFirstIndex)
595
- return;
596
- // 右侧父节点也不允许自动连线
597
- const rightLineSet = new Set();
598
- for (let i = 0; i < members.length - 1; i++) {
599
- const completeName = members[i].completeName;
600
- const preCompleteName = members[i + 1].completeName;
601
- if (preCompleteName.includes(completeName) && completeName.split('.').length !== preCompleteName.split('.').length)
602
- rightLineSet.add(i);
603
- }
604
-
605
- if (leftName === expression.name && expression.__TypeAnnotation?.typeKind === leftTypeAnnotation.typeKind) {
606
- const Line: AssignmentLine = new AssignmentLine({
607
- leftIndex: [0, leftSecondIndex],
608
- rightIndex: [rightFirstIndex],
609
- });
610
- lineArr.push(Line);
611
- leftLineSet.add(leftSecondIndex);
612
- return;
613
- }
614
- members.forEach((rightMember: any, rightSecondIndex: number) => {
615
- const rightValue = rightMember.getValue();
616
- const rightName = rightMember.property?.name;
617
- if (rightLineSet.has(rightSecondIndex))
618
- return;
619
-
620
- if (leftName === rightName && leftValue.split('.').length === rightValue.split('.').length) {
621
- const rightTypeAnnotation = rightMember.__TypeAnnotation;
622
- if (leftTypeAnnotation.typeKind !== rightTypeAnnotation.typeKind)
623
- return;
624
- const leftIndex = [0, leftSecondIndex];
625
- const rightIndex = [rightFirstIndex, rightSecondIndex];
626
- const Line: AssignmentLine = new AssignmentLine({ leftIndex, rightIndex });
627
- lineArr.push(Line);
628
- leftLineSet.add(leftSecondIndex);
629
- }
630
- });
631
- });
632
- });
633
- lineArr.length && this.setAssignmentLines([...this.assignmentLines, ...lineArr]);
634
- this.app.emit('collect:end');
635
- };
636
-
637
- let count = 0;
638
- const typeAnnotationEnd = () => {
639
- const l = this.left.members.every((item) => item.__isCorrectTypeAnnotation);
640
- const r = this.rights.every((right) => right.members.every((item) => item.__isCorrectTypeAnnotation) && right.expression.__isCorrectTypeAnnotation);
641
- count++;
642
- if (l && r) {
643
- autoConnection();
644
- } else if (count <= 10) {
645
- setTimeout(() => {
646
- typeAnnotationEnd();
647
- }, 100);
648
- }
649
- };
650
- typeAnnotationEnd();
710
+ // 左边同一个属性只能有一个连线
711
+ if (rightToLeft) {
712
+ newLines = newLines.filter(({ leftIndex: index }) => !(newLeftIndex[0] === index[0] && newLeftIndex[1] === index[1]));
651
713
  }
652
714
 
653
- connection(leftItem: LogicItem | SelectMembers, rightItem: LogicItem | SelectMembers, rightToLeft: boolean) {
654
- let newLeftIndex = [0];
655
- let newRightIndex = [];
656
- let newLines: Array<AssignmentLine> = [];
657
- let newMembers = this.left.members;
658
- if (leftItem.concept !== 'SelectMembers' && leftItem.parentKey !== 'expression') {
659
- const members = this.left.members;
660
- const secondIndex = members.findIndex((exp: any) => exp === leftItem);
661
- const completeNameSplitLength = members[secondIndex].completeName.split('.').length;
662
- let filterLines: Array<AssignmentLine> = [];
663
- // 连线左边的坐标。
664
- newLeftIndex = [0, secondIndex];
665
- // 父节点选中后删除此节点下的子节点
666
- let sameLevelIndex = members.findIndex((exp: any, index: number) => {
667
- if (index > secondIndex) {
668
- return exp.completeName.split('.').length <= completeNameSplitLength;
669
- }
670
- return false;
671
- });
672
- sameLevelIndex = sameLevelIndex === -1 ? members.length : sameLevelIndex;
673
- newMembers = members.filter((member: any, index: number) => index <= secondIndex || index >= sameLevelIndex);
674
- filterLines = this.assignmentLines.filter(({ leftIndex }) => leftIndex[1] <= secondIndex || leftIndex[1] >= sameLevelIndex);
675
- // members成员减少,需要重新计算后续连线下标
676
- filterLines.forEach((line) => {
677
- const distance = sameLevelIndex - secondIndex - 1;
678
- if (line.leftIndex[1] > secondIndex) {
679
- const newLine = Object.assign({}, line, { leftIndex: [line.leftIndex[0], line.leftIndex[1] - distance] });
680
- newLines.push(newLine);
681
- return;
682
- }
683
- newLines.push(line);
684
- });
715
+ this.update({
716
+ assignmentLines: newLines,
717
+ });
718
+ this.left.update({
719
+ members: newMembers,
720
+ });
721
+ const Line: AssignmentLine = new AssignmentLine({
722
+ leftIndex: newLeftIndex,
723
+ rightIndex: newRightIndex,
724
+ });
725
+ this.addAssignmentLine(Line);
726
+ }
727
+
728
+ swapLocation(location1: number, location2: number) {
729
+ if (location1 === location2) return;
730
+ const newRights = this.rights;
731
+ [newRights[location1], newRights[2]] = [newRights[location2], newRights[1]];
732
+ const newLines = this.assignmentLines.map((line) => {
733
+ if (line.rightIndex[0] === location1) {
734
+ line.rightIndex[0] = location2;
735
+ } else if (line.rightIndex[0] === location2) {
736
+ line.rightIndex[0] = location1;
737
+ }
738
+ return line;
739
+ });
740
+ this.update({
741
+ rigths: newRights,
742
+ assignmentLines: newLines,
743
+ });
744
+ }
745
+
746
+ deleteAssignmentLine(assignmentLine: AssignmentLine) {
747
+ const newLine = this.assignmentLines.filter((line) => line !== assignmentLine);
748
+ this.update({
749
+ assignmentLines: newLine,
750
+ });
751
+ }
752
+
753
+ changeLinesLocation(selectMember: SelectMembers) {
754
+ // 区分操作左边或者操作右边
755
+ if (selectMember === this.left) {
756
+ this.update({
757
+ left: null,
758
+ assignmentLines: [],
759
+ });
760
+ } else if (this.rights.findIndex((member) => selectMember === member) !== -1) {
761
+ const index = this.rights.findIndex((member) => selectMember === member);
762
+ const newRights = this.rights.filter((member) => selectMember !== member);
763
+ const filterLine = this.assignmentLines.filter((line) => line.rightIndex[0] !== index);
764
+ const newLines: Array<AssignmentLine> = [];
765
+ filterLine.forEach((line) => {
766
+ if (line.rightIndex[0] > index) {
767
+ if (line.rightIndex[1] === undefined) {
768
+ const newLine = { ...line, rightIndex: [line.rightIndex[0] - 1] };
769
+ newLines.push(newLine as AssignmentLine);
770
+ } else {
771
+ const newLine = { ...line, rightIndex: [line.rightIndex[0] - 1, line.rightIndex[1]] };
772
+ newLines.push(newLine as AssignmentLine);
773
+ }
685
774
  } else {
686
- newLines = [];
687
- newMembers = [];
688
- }
689
- if (rightItem.concept === 'SelectMembers') {
690
- newRightIndex = [this.rights.findIndex((right) => right === rightItem)];
691
- } else if (rightItem.concept !== 'MemberExpression') {
692
- newRightIndex = [this.rights.findIndex((right) => right === rightItem.parentNode)];
693
- } else {
694
- const selectMember = rightItem.getAncestor('SelectMembers');
695
- const firstIndex = this.rights.findIndex((right) => right === selectMember);
696
- const secondIndex = this.rights[firstIndex].members.findIndex((exp: any) => exp === rightItem);
697
- newRightIndex = [firstIndex, secondIndex];
698
- }
699
- // 左边同一个属性只能有一个连线
700
- if (rightToLeft) {
701
- newLines = newLines.filter(({ leftIndex: index }) => !(newLeftIndex[0] === index[0] && newLeftIndex[1] === index[1]));
775
+ newLines.push(line);
702
776
  }
703
-
704
- this.update({
705
- assignmentLines: newLines,
706
- });
707
- this.left.update({
708
- members: newMembers,
709
- });
710
- const Line: AssignmentLine = new AssignmentLine({
711
- leftIndex: newLeftIndex,
712
- rightIndex: newRightIndex,
713
- });
714
- this.addAssignmentLine(Line);
777
+ });
778
+ this.update({
779
+ rights: newRights,
780
+ assignmentLines: newLines,
781
+ });
715
782
  }
716
-
717
- swapLocation(location1: number, location2: number) {
718
- if (location1 === location2)
719
- return;
720
- const newRights = this.rights;
721
- [newRights[location1], newRights[2]] = [newRights[location2], newRights[1]];
722
- const newLines = this.assignmentLines.map((line) => {
723
- if (line.rightIndex[0] === location1) {
724
- line.rightIndex[0] = location2;
725
- } else if (line.rightIndex[0] === location2) {
726
- line.rightIndex[0] = location1;
727
- }
728
- return line;
729
- });
730
- this.update({
731
- rigths: newRights,
732
- assignmentLines: newLines,
733
- });
734
- }
735
-
736
- deleteAssignmentLine(assignmentLine: AssignmentLine) {
737
- const newLine = this.assignmentLines.filter((line) => line !== assignmentLine);
738
- this.update({
739
- assignmentLines: newLine,
740
- });
741
- }
742
-
743
- changeLinesLocation(selectMember: SelectMembers) {
744
- // 区分操作左边或者操作右边
745
- if (selectMember === this.left) {
746
- this.update({
747
- left: null,
748
- assignmentLines: [],
749
- });
750
- } else if (this.rights.findIndex((member) => selectMember === member) !== -1) {
751
- const index = this.rights.findIndex((member) => selectMember === member);
752
- const newRights = this.rights.filter((member) => selectMember !== member);
753
- const filterLine = this.assignmentLines.filter((line) => line.rightIndex[0] !== index);
754
- const newLines: Array<AssignmentLine> = [];
755
- filterLine.forEach((line) => {
756
- if (line.rightIndex[0] > index) {
757
- if (line.rightIndex[1] === undefined) {
758
- const newLine = Object.assign({}, line, { rightIndex: [line.rightIndex[0] - 1] });
759
- newLines.push(newLine);
760
- } else {
761
- const newLine = Object.assign({}, line, { rightIndex: [line.rightIndex[0] - 1, line.rightIndex[1]] });
762
- newLines.push(newLine);
763
- }
764
- } else {
765
- newLines.push(line);
766
- }
767
- });
768
- this.update({
769
- rights: newRights,
770
- assignmentLines: newLines,
771
- });
783
+ }
784
+
785
+ changeMembers(oldNode: any, members: MemberExpression[], keepMembers: any, expression: LogicItem) {
786
+ this.app.emit('collect:start', {
787
+ actionMsg: '批量赋值修改变量',
788
+ });
789
+ const selectMember = oldNode.parentNode;
790
+ const autoConnectionIndex = this.rights.findIndex((right) => right === selectMember);
791
+ const newSelectMember = { ...selectMember, expression, members };
792
+ let newLines: any = [];
793
+ // 修改连线
794
+ if (selectMember.parentKey === 'left') {
795
+ members.forEach((item: any, index: any) => {
796
+ if (keepMembers?.has(item.completeName)) {
797
+ const lines = this.findlines(item, selectMember);
798
+ lines.forEach((line) => {
799
+ const newLine = { ...line, leftIndex: [line.leftIndex[0], index] };
800
+ newLines.push(newLine);
801
+ });
772
802
  }
773
- }
774
-
775
- changeMembers(oldNode:any, members: MemberExpression[], keepMembers: any, expression: LogicItem) {
776
- this.app.emit('collect:start', {
777
- actionMsg: '批量赋值修改变量',
778
- });
779
- const selectMember = oldNode.parentNode;
780
- const autoConnectionIndex = this.rights.findIndex((right) => right === selectMember);
781
- const newSelectMember = Object.assign({}, selectMember, { expression, members });
782
- let newLines: any = [];
783
- // 修改连线
784
- if (selectMember.parentKey === 'left') {
785
- members.forEach((item: any, index: any) => {
786
- if (keepMembers?.has(item.completeName)) {
787
- const lines = this.findlines(item, selectMember);
788
- lines.forEach((line) => {
789
- const newLine = Object.assign({}, line, { leftIndex: [line.leftIndex[0], index] });
790
- newLines.push(newLine);
791
- });
792
- }
793
- });
794
- this.update({
795
- assignmentLines: newLines,
796
- left: newSelectMember,
797
- });
798
- } else {
799
- const splitIndex = this.rights.findIndex((right) => selectMember === right);
800
- newLines = this.assignmentLines.filter(({ rightIndex }) => rightIndex[0] !== splitIndex);
801
- members.forEach((item, index) => {
802
- if (keepMembers?.has(item.completeName)) {
803
- const lines = this.findlines(item, selectMember);
804
- lines.forEach((line) => {
805
- const newLine = Object.assign({}, line, { rightIndex: [line.rightIndex[0], index] });
806
- newLines.push(newLine);
807
- });
808
- }
809
- });
810
- this.update({
811
- assignmentLines: newLines,
812
- rights: [...this.rights.slice(0, splitIndex), newSelectMember, ...this.rights.slice(splitIndex + 1, this.rights.length)],
813
- });
803
+ });
804
+ this.update({
805
+ assignmentLines: newLines,
806
+ left: newSelectMember,
807
+ });
808
+ } else {
809
+ const splitIndex = this.rights.findIndex((right) => selectMember === right);
810
+ newLines = this.assignmentLines.filter(({ rightIndex }) => rightIndex[0] !== splitIndex);
811
+ members.forEach((item, index) => {
812
+ if (keepMembers?.has(item.completeName)) {
813
+ const lines = this.findlines(item, selectMember);
814
+ lines.forEach((line) => {
815
+ const newLine = { ...line, rightIndex: [line.rightIndex[0], index] };
816
+ newLines.push(newLine);
817
+ });
814
818
  }
815
- this.autoConnection && this.batchAutoConnection(autoConnectionIndex);
816
- this.app.emit('collect:end');
819
+ });
820
+ this.update({
821
+ assignmentLines: newLines,
822
+ rights: [...this.rights.slice(0, splitIndex), newSelectMember, ...this.rights.slice(splitIndex + 1, this.rights.length)],
823
+ });
817
824
  }
818
-
819
- findMember(arrIndex: Array<number>, place: string) {
820
- const [firstIndex, secondIndex] = [arrIndex[0], arrIndex[1]];
821
- if (place === 'left') {
822
- if (secondIndex === undefined) {
823
- return this.left.expression;
824
- }
825
- return this.left.members[secondIndex];
826
- } else {
827
- if (secondIndex === undefined) {
828
- return this.rights[firstIndex].expression;
829
- }
830
- return this.rights[firstIndex].members[secondIndex];
831
- }
825
+ this.autoConnection && this.batchAutoConnection(autoConnectionIndex);
826
+ this.app.emit('collect:end');
827
+ }
828
+
829
+ findMember(arrIndex: Array<number>, place: string) {
830
+ const [firstIndex, secondIndex] = [arrIndex[0], arrIndex[1]];
831
+ if (place === 'left') {
832
+ if (secondIndex === undefined) {
833
+ return this.left.expression;
834
+ }
835
+ return this.left.members[secondIndex];
832
836
  }
833
-
834
- findlines(member: any, selectMember: any) {
835
- const lines: Array<AssignmentLine> = [];
836
- // 根节点的情况
837
- if (selectMember === this) {
838
- if (member === this.left)
839
- return this.assignmentLines;
840
- else {
841
- const firstIndex = this.rights.findIndex((right) => right === member);
842
- return this.assignmentLines.filter(({ rightIndex }) => rightIndex[1] === undefined && rightIndex[0] === firstIndex);
843
- }
844
- }
845
-
846
- if (this.left === selectMember) {
847
- const index2 = selectMember.members.findIndex((item: MemberExpression) => item.completeName === member.completeName);
848
- this.assignmentLines.forEach((line) => {
849
- if (line.leftIndex[1] === index2)
850
- lines.push(line);
851
- });
852
- } else {
853
- const index1 = this.rights.findIndex((right) => right === selectMember);
854
- const index2 = selectMember.members.findIndex((item: MemberExpression) => item.completeName === member.completeName);
855
- this.assignmentLines.forEach((line) => {
856
- if (line.rightIndex[0] === index1 && line.rightIndex[1] === index2)
857
- lines.push(line);
858
- });
859
- }
860
- return lines;
837
+ if (secondIndex === undefined) {
838
+ return this.rights[firstIndex].expression;
861
839
  }
840
+ return this.rights[firstIndex].members[secondIndex];
841
+ }
862
842
 
863
- replaceAssignment() {
864
- if (this.assignmentLines.length > 1)
865
- return false;
866
- this.app.emit('collect:start', {
867
- actionMsg: '批量赋值切换普通赋值',
868
- });
869
- const { parentKey, parentNode, logic }: { parentKey: string, parentNode: any, logic: Logic } = this;
870
- let rightExpression;
871
- let leftExpression;
872
- let index;
873
- if (this.assignmentLines.length === 1) {
874
- const { leftIndex, rightIndex } = this.assignmentLines[0];
875
- leftExpression = Object.assign({}, this.findMember(leftIndex, 'left'));
876
- rightExpression = Object.assign({}, this.findMember(rightIndex, 'right'));
877
- } else {
878
- leftExpression = Object.assign({}, this.left.expression);
879
- }
880
- const assignment = new Assignment({
881
- left: leftExpression,
882
- right: rightExpression,
883
- offsetX: this.offsetX,
884
- offsetY: this.offsetY,
885
- });
886
- if (parentNode.concept === 'Logic') {
887
- if (parentKey === 'body') {
888
- index = logic.body.findIndex((item: any) => item === this);
889
- logic.insertItemInBodyAt(assignment, index);
890
- } else {
891
- index = logic.playground.findIndex((item: any) => item === this);
892
- logic.insertItemInPlaygroundAt(assignment, index);
893
- }
894
- } else {
895
- index = parentNode[parentKey].findIndex((item: any) => item === this);
896
- const firstUpperText = parentKey[0].toUpperCase() + parentKey.slice(1, parentKey.length);
897
- if (parentNode[`insertItemIn${firstUpperText}At`])
898
- parentNode[`insertItemIn${firstUpperText}At`](assignment, index);
899
- else
900
- parentNode.insertItemAt(assignment, index);
901
- }
902
- this.delete();
903
- this.app.emit('collect:end');
904
- return true;
905
- }
843
+ findlines(member: any, selectMember: any) {
844
+ const lines: Array<AssignmentLine> = [];
845
+ // 根节点的情况
846
+ if (selectMember === this) {
847
+ if (member === this.left) return this.assignmentLines;
906
848
 
907
- toVue(options?: ElementToVueOptions) {
908
- let code = '';
909
- this.assignmentLines.forEach(({ leftIndex, rightIndex }) => {
910
- const leftValue = leftIndex.length === 1 ? this.left.expression.toVue(options) : this.left.members[leftIndex[1]]?.toVue(options);
911
- code += `${leftValue}`;
912
- code += ' = ';
913
- const rightValue = rightIndex.length === 1 ? this.rights[rightIndex[0]]?.expression?.toVue(options) : this.rights[rightIndex[0]]?.members[rightIndex[1]]?.toVue(options);
914
- code += `${rightValue}`;
915
- code += ';';
916
- code += '\n';
917
- });
918
- return code;
849
+ const firstIndex = this.rights.findIndex((right) => right === member);
850
+ return this.assignmentLines.filter(({ rightIndex }) => rightIndex[1] === undefined && rightIndex[0] === firstIndex);
919
851
  }
920
852
 
921
- toUI(state?: TranslatorState): string {
922
- let code = '';
923
- this.assignmentLines.forEach(({ leftIndex, rightIndex }) => {
924
- const leftValue = leftIndex.length === 1 ? this.left.expression.toUI(shiftState(state, code, { inline: true })) : this.left.members[leftIndex[1]]?.toUI(shiftState(state, code, { inline: true }));
925
- code += `${leftValue}`;
926
- code += ' = ';
927
- const rightValue = rightIndex.length === 1 ? this.rights[rightIndex[0]]?.expression?.toUI(shiftState(state, code, { inline: true })) : this.rights[rightIndex[0]]?.members[rightIndex[1]]?.toUI(shiftState(state, code, { inline: true }));
928
- code += `${rightValue}`;
929
- code += ';';
930
- code += '\n';
931
- });
932
- return code;
853
+ if (this.left === selectMember) {
854
+ const index2 = selectMember.members.findIndex((item: MemberExpression) => item.completeName === member.completeName);
855
+ this.assignmentLines.forEach((line) => {
856
+ if (line.leftIndex[1] === index2) lines.push(line);
857
+ });
858
+ } else {
859
+ const index1 = this.rights.findIndex((right) => right === selectMember);
860
+ const index2 = selectMember.members.findIndex((item: MemberExpression) => item.completeName === member.completeName);
861
+ this.assignmentLines.forEach((line) => {
862
+ if (line.rightIndex[0] === index1 && line.rightIndex[1] === index2) lines.push(line);
863
+ });
933
864
  }
934
-
935
- toJS(state?: TranslatorState): string {
936
- let code = '';
937
- this.assignmentLines.forEach(({ leftIndex, rightIndex }) => {
938
- const leftValue = leftIndex.length === 1 ? this.left.expression.toJS(shiftState(state, code, { inline: true })) : this.left.members[leftIndex[1]]?.toJS(shiftState(state, code, { inline: true }));
939
- code += `${leftValue}`;
940
- code += ' = ';
941
- const rightValue = rightIndex.length === 1 ? this.rights[rightIndex[0]]?.expression?.toJS(shiftState(state, code, { inline: true })) : this.rights[rightIndex[0]]?.members[rightIndex[1]]?.toJS(shiftState(state, code, { inline: true }));
942
- code += `${rightValue}`;
943
- code += ';';
944
- code += '\n';
945
- });
946
- return code;
865
+ return lines;
866
+ }
867
+
868
+ replaceAssignment() {
869
+ if (this.assignmentLines.length > 1) return false;
870
+ this.app.emit('collect:start', {
871
+ actionMsg: '批量赋值切换普通赋值',
872
+ });
873
+ const { parentKey, parentNode, logic }: { parentKey: string; parentNode: any; logic: Logic } = this;
874
+ let rightExpression;
875
+ let leftExpression;
876
+ let index;
877
+ if (this.assignmentLines.length === 1) {
878
+ const { leftIndex, rightIndex } = this.assignmentLines[0];
879
+ leftExpression = { ...this.findMember(leftIndex, 'left') };
880
+ rightExpression = { ...this.findMember(rightIndex, 'right') };
881
+ } else {
882
+ leftExpression = { ...this.left.expression };
947
883
  }
948
-
949
- @withSourceMap()
950
- toEmbeddedTS(state?: TranslatorState): string {
951
- let code = '// 以下是批量赋值的翻译代码\n';
952
- // 提供sourcemap,获取类型标注和上下文可选变量
953
- code += this.left.expression ? `${this.left.expression.toEmbeddedTS(shiftState(state, code, { inline: true }))}` : '';
954
- code += ';\n';
955
- this.left.members.forEach((member) => {
956
- code += member.toEmbeddedTS(shiftState(state, code, { inline: true }));
957
- code += '; ';
958
- });
959
- code += '\n';
960
- this.rights.forEach((right) => {
961
- code += `${right.expression.toEmbeddedTS(shiftState(state, code, { inline: true }))}`;
962
- code += ';\n';
963
- right.members.forEach((member) => {
964
- code += member.toEmbeddedTS(shiftState(state, code, { inline: true }));
965
- code += '; ';
966
- });
967
- code += right.members.length ? '\n' : '';
968
- });
969
- // 根据连线状态,拆分成多个单赋值
970
- this.assignmentLines.forEach(({ leftIndex, rightIndex }) => {
971
- code += 'nasl.core.assign(';
972
- const leftValue = leftIndex.length === 1 ? this.left.expression.toEmbeddedTS(shiftState(state, code, { inline: true })) : this.left.members[leftIndex[1]]?.toEmbeddedTS(shiftState(state, code, { inline: true }));
973
- code += `${leftValue}`;
974
- code += ', ';
975
- const rightValue = rightIndex.length === 1 ? this.rights[rightIndex[0]]?.expression?.toEmbeddedTS(shiftState(state, code, { inline: true })) : this.rights[rightIndex[0]]?.members[rightIndex[1]]?.toEmbeddedTS(shiftState(state, code, { inline: true }));
976
- code += `${rightValue}`;
977
- code += ')';
978
- code += ';';
979
- code += '\n';
980
- });
981
- if (!this.assignmentLines.length)
982
- code += `__assignmentLineEmpty__\n`;
983
- code += '// 批量赋值的翻译代码结束---------\n';
984
- return code;
884
+ const assignment = new Assignment({
885
+ left: leftExpression as any,
886
+ right: rightExpression as any,
887
+ offsetX: this.offsetX,
888
+ offsetY: this.offsetY,
889
+ });
890
+ if (parentNode.concept === 'Logic') {
891
+ if (parentKey === 'body') {
892
+ index = logic.body.findIndex((item: any) => item === this);
893
+ logic.insertItemInBodyAt(assignment, index);
894
+ } else {
895
+ index = logic.playground.findIndex((item: any) => item === this);
896
+ logic.insertItemInPlaygroundAt(assignment, index);
897
+ }
898
+ } else {
899
+ index = parentNode[parentKey].findIndex((item: any) => item === this);
900
+ const firstUpperText = parentKey[0].toUpperCase() + parentKey.slice(1, parentKey.length);
901
+ if (parentNode[`insertItemIn${firstUpperText}At`]) parentNode[`insertItemIn${firstUpperText}At`](assignment, index);
902
+ else parentNode.insertItemAt(assignment, index);
985
903
  }
986
- //================================================================================
987
- // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
988
- // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
989
- //================================================================================
904
+ this.delete();
905
+ this.app.emit('collect:end');
906
+ return true;
907
+ }
908
+
909
+ toVue(options?: ElementToVueOptions) {
910
+ let code = '';
911
+ this.assignmentLines.forEach(({ leftIndex, rightIndex }) => {
912
+ const leftValue = leftIndex.length === 1 ? this.left.expression.toVue(options) : this.left.members[leftIndex[1]]?.toVue(options);
913
+ code += `${leftValue}`;
914
+ code += ' = ';
915
+ const rightValue =
916
+ rightIndex.length === 1
917
+ ? this.rights[rightIndex[0]]?.expression?.toVue(options)
918
+ : this.rights[rightIndex[0]]?.members[rightIndex[1]]?.toVue(options);
919
+ code += `${rightValue}`;
920
+ code += ';';
921
+ code += '\n';
922
+ });
923
+ return code;
924
+ }
925
+
926
+ toUI(state?: TranslatorState): string {
927
+ let code = '';
928
+ this.assignmentLines.forEach(({ leftIndex, rightIndex }) => {
929
+ const leftValue =
930
+ leftIndex.length === 1
931
+ ? this.left.expression.toUI(shiftState(state, code, { inline: true }))
932
+ : this.left.members[leftIndex[1]]?.toUI(shiftState(state, code, { inline: true }));
933
+ code += `${leftValue}`;
934
+ code += ' = ';
935
+ const rightValue =
936
+ rightIndex.length === 1
937
+ ? this.rights[rightIndex[0]]?.expression?.toUI(shiftState(state, code, { inline: true }))
938
+ : this.rights[rightIndex[0]]?.members[rightIndex[1]]?.toUI(shiftState(state, code, { inline: true }));
939
+ code += `${rightValue}`;
940
+ code += ';';
941
+ code += '\n';
942
+ });
943
+ return code;
944
+ }
945
+
946
+ toJS(state?: TranslatorState): string {
947
+ let code = '';
948
+ const rightMap = new Map();
949
+ this.assignmentLines.forEach(({ leftIndex, rightIndex }) => {
950
+ const rightIndexJson = JSON.stringify(rightIndex);
951
+ if (rightMap.has(rightIndexJson)) {
952
+ rightMap.set(rightIndexJson, [...rightMap.get(rightIndexJson), leftIndex])
953
+ } else {
954
+ rightMap.set(rightIndexJson, [leftIndex]);
955
+ }
956
+ });
957
+ rightMap.forEach((leftIndexs, rightIndexJson) => {
958
+ const rightIndex = JSON.parse(rightIndexJson) || [];
959
+ const leftItems = leftIndexs.map((leftIndex: Array<number>) => {
960
+ const leftItem = leftIndex.length !== 1 ? this.left.members[leftIndex[1]] : this.left.expression;
961
+ return leftItem;
962
+ });
963
+ const [rightFirst, rightSecond] = [rightIndex[0], rightIndex[1]];
964
+ const rightItem = rightSecond !== undefined ? this.rights[rightFirst].members[rightSecond] : this.rights[rightFirst].expression;
965
+ leftItems.forEach((leftItem: LogicItem) => {
966
+ code += `${leftItem.toJS(shiftState(state, code, { inline: true }))}`;
967
+ code += ` = `;
968
+ })
969
+ code += `${rightItem.toJS(shiftState(state, code, { inline: true }))}`;
970
+ code += ';\n';
971
+ });
972
+ return code;
973
+ }
974
+
975
+ @withSourceMap()
976
+ toEmbeddedTS(state?: TranslatorState): string {
977
+ let code = '// 以下是批量赋值的翻译代码\n';
978
+ // 提供sourcemap,获取类型标注和上下文可选变量
979
+ code += this.left.expression ? `${this.left.expression.toEmbeddedTS(shiftState(state, code, { inline: true }))}` : '';
980
+ code += ';\n';
981
+ this.left.members.forEach((member) => {
982
+ code += member.toEmbeddedTS(shiftState(state, code, { inline: true }));
983
+ code += '; ';
984
+ });
985
+ code += '\n';
986
+ this.rights.forEach((right) => {
987
+ code += `${right.expression.toEmbeddedTS(shiftState(state, code, { inline: true }))}`;
988
+ code += ';\n';
989
+ right.members.forEach((member) => {
990
+ code += member.toEmbeddedTS(shiftState(state, code, { inline: true }));
991
+ code += '; ';
992
+ });
993
+ code += right.members.length ? '\n' : '';
994
+ });
995
+ // 根据连线状态,拆分成多个单赋值
996
+ this.assignmentLines.forEach(({ leftIndex, rightIndex }) => {
997
+ code += 'nasl.core.assign(';
998
+ const leftValue =
999
+ leftIndex.length === 1
1000
+ ? this.left.expression.toEmbeddedTS(shiftState(state, code, { inline: true }))
1001
+ : this.left.members[leftIndex[1]]?.toEmbeddedTS(shiftState(state, code, { inline: true }));
1002
+ code += `${leftValue}`;
1003
+ code += ', ';
1004
+ const rightValue =
1005
+ rightIndex.length === 1
1006
+ ? this.rights[rightIndex[0]]?.expression?.toEmbeddedTS(shiftState(state, code, { inline: true }))
1007
+ : this.rights[rightIndex[0]]?.members[rightIndex[1]]?.toEmbeddedTS(shiftState(state, code, { inline: true }));
1008
+ code += `${rightValue}`;
1009
+ code += ')';
1010
+ code += ';';
1011
+ code += '\n';
1012
+ });
1013
+ if (!this.assignmentLines.length) code += `__assignmentLineEmpty__\n`;
1014
+ code += '// 批量赋值的翻译代码结束---------\n';
1015
+ return code;
1016
+ }
1017
+
1018
+ @withSourceMap()
1019
+ toNaturalTS(state?: TranslatorState): string {
1020
+ let code = '';
1021
+ // 根据连线状态,拆分成多个单赋值
1022
+ this.assignmentLines.forEach(({ leftIndex, rightIndex }) => {
1023
+ const leftValue = leftIndex.length === 1 ? this.left.expression.toNaturalTS(shiftState(state, code, { inline: true })) : this.left.members[leftIndex[1]]?.toNaturalTS(shiftState(state, code, { inline: true }));
1024
+ code += `${leftValue}`;
1025
+ code += ' = ';
1026
+ const rightValue = rightIndex.length === 1 ? this.rights[rightIndex[0]]?.expression?.toNaturalTS(shiftState(state, code, { inline: true })) : this.rights[rightIndex[0]]?.members[rightIndex[1]]?.toNaturalTS(shiftState(state, code, { inline: true }));
1027
+ code += `${rightValue}`;
1028
+ code += ';';
1029
+ code += '\n';
1030
+ });
1031
+ return code;
1032
+ }
1033
+
1034
+ //= ===============================================================================
1035
+ // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
1036
+ // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
1037
+ //= ===============================================================================
990
1038
  }
991
1039
 
992
1040
  classMap.BatchAssignment = BatchAssignment;
993
1041
  export default BatchAssignment;
994
- //================================================================================
1042
+ //= ===============================================================================
995
1043
  // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
996
1044
  // 自动生成的代码已结束。下面可以手动编写。
997
- //================================================================================
1045
+ //= ===============================================================================