@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,3 +1,5 @@
1
+ import * as JSON5 from 'json5';
2
+ import { v4 as uuidv4 } from 'uuid';
1
3
  import { TranslatorState, shiftState, withSourceMap } from '../translator';
2
4
  import Logic from './Logic__';
3
5
  import Param from './Param__';
@@ -5,19 +7,18 @@ import View from './View__';
5
7
  import { ElementToVueOptions } from './ViewElement__';
6
8
  import { getNodeByNodeCallee, getNaslNodeByNodeCallee } from '../automate/engine/utils';
7
9
  import { findConceptKeyWordIndexFromNamespace } from '../utils';
8
- import * as JSON5 from 'json5';
9
10
  import { config } from '../config';
10
11
  import Identifier from './Identifier__';
12
+ import type { TSPPosition } from '../translator/tsp';
11
13
 
12
- //================================================================================
14
+ //= ===============================================================================
13
15
  // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
14
16
  // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
15
- //================================================================================
17
+ //= ===============================================================================
16
18
  import { EventPayload, Params } from '../common/EventEmitter';
17
19
  import { concept, excludedInJSON, property } from '../decorators';
18
20
 
19
21
  import * as utils from '../utils';
20
- import { v4 as uuidv4 } from 'uuid';
21
22
  import BaseNode from '../common/BaseNode';
22
23
  import classMap from '../common/classMap';
23
24
  import TypeAnnotation from './TypeAnnotation__';
@@ -30,1316 +31,1407 @@ import LogicItem from './LogicItem__';
30
31
  */
31
32
  @concept('调用逻辑')
32
33
  export class CallLogic extends LogicItem {
33
- /**
34
- * uuid
35
- */
36
- @property()
37
- uuid: string = uuidv4().replace(/-/g, '');
38
-
39
- /**
40
- * 产品概念
41
- */
42
- @property()
43
- concept: 'CallLogic' | 'CallConnector' = 'CallLogic';
44
-
45
- /**
46
- * 调用逻辑标题
47
- */
48
- @property()
49
- label: string = '调用逻辑';
50
-
51
- /**
52
- * calleeNamespace
53
- */
54
- @property()
55
- calleeNamespace: string = undefined;
56
-
57
- /**
58
- * calleeName
59
- */
60
- @property()
61
- calleeName: string = undefined;
62
-
63
- /**
64
- * shortcut
65
- */
66
- @property()
67
- shortcut: boolean = undefined;
68
-
69
- /**
70
- * handleError
71
- */
72
- @property()
73
- handleError: boolean = undefined;
74
-
75
- /**
76
- * 类型参数
77
- */
78
- @property('TypeAnnotation')
79
- typeArguments?: Array<TypeAnnotation> = null;
80
-
81
- /**
82
- * 实际参数
83
- */
84
- @property('Argument')
85
- arguments: Array<Argument> = [];
86
-
87
- /**
88
- * 验证规则
89
- */
90
- @property('BindAttribute')
91
- validation: BindAttribute = undefined;
92
-
93
- /**
94
- * 是否被折叠
95
- */
96
- @property()
97
- isAdvancedSettingFolded: boolean = undefined;
98
-
99
- /**
100
- * @param source 需要合并的部分参数
101
- */
102
- constructor(source?: Partial<CallLogic>) {
103
- source = Object.assign({}, CallLogic.getDefaultOptions(), source);
104
- super(source);
105
- super.subConstructor(source);
106
- }
107
- getClassName() {
108
- return 'CallLogic';
34
+ /**
35
+ * uuid
36
+ */
37
+ @property()
38
+ uuid: string = uuidv4().replace(/-/g, '');
39
+
40
+ /**
41
+ * 产品概念
42
+ */
43
+ @property()
44
+ concept: 'CallLogic' | 'CallConnector' = 'CallLogic';
45
+
46
+ /**
47
+ * 调用逻辑标题
48
+ */
49
+ @property()
50
+ label: string = '调用逻辑';
51
+
52
+ /**
53
+ * calleeNamespace
54
+ */
55
+ @property()
56
+ calleeNamespace: string = undefined;
57
+
58
+ /**
59
+ * calleeName
60
+ */
61
+ @property()
62
+ calleeName: string = undefined;
63
+
64
+ /**
65
+ * shortcut
66
+ */
67
+ @property()
68
+ shortcut: boolean = undefined;
69
+
70
+ /**
71
+ * handleError
72
+ */
73
+ @property()
74
+ handleError: boolean = undefined;
75
+
76
+ /**
77
+ * 类型参数
78
+ */
79
+ @property('TypeAnnotation')
80
+ typeArguments?: Array<TypeAnnotation> = null;
81
+
82
+ /**
83
+ * 实际参数
84
+ */
85
+ @property('Argument')
86
+ arguments: Array<Argument> = [];
87
+
88
+ /**
89
+ * 验证规则
90
+ */
91
+ @property('BindAttribute')
92
+ validation: BindAttribute = undefined;
93
+
94
+ /**
95
+ * 是否被折叠
96
+ */
97
+ @property()
98
+ isAdvancedSettingFolded: boolean = undefined;
99
+
100
+ /**
101
+ * @param source 需要合并的部分参数
102
+ */
103
+ constructor(source?: Partial<CallLogic>) {
104
+ // @ts-ignore
105
+ source = { ...CallLogic.getDefaultOptions(), ...source };
106
+ super(source);
107
+ super.subConstructor(source);
108
+ }
109
+
110
+ getClassName() {
111
+ return 'CallLogic';
112
+ }
113
+
114
+ static from(source: any, parentNode?: any, parentKey?: string): CallLogic {
115
+ return super.from(source, parentNode, parentKey) as CallLogic;
116
+ }
117
+
118
+ /**
119
+ * 设置验证规则
120
+ */
121
+ setValidation(validation: BindAttribute) {
122
+ validation._delete();
123
+ const relationOptions = { parentNode: this, parentKey: 'validation' };
124
+ Object.assign(validation, relationOptions);
125
+ const object = {
126
+ validation,
127
+ };
128
+ this.update({
129
+ ...object,
130
+ });
131
+ }
132
+
133
+ /**
134
+ * 设置是否被折叠
135
+ */
136
+ setIsAdvancedSettingFolded(isAdvancedSettingFolded: boolean) {
137
+ const object = {
138
+ isAdvancedSettingFolded,
139
+ };
140
+ this.update({
141
+ ...object,
142
+ });
143
+ }
144
+
145
+ /**
146
+ * 插入类型标注
147
+ * @internal
148
+ * @param typeAnnotationOptions 类型标注参数
149
+ */
150
+ _insertTypeAnnotationAt(typeAnnotationOptions: Partial<TypeAnnotation>, index: number): TypeAnnotation;
151
+
152
+ /**
153
+ * 插入类型标注
154
+ * @internal
155
+ * @param typeAnnotation 已有的类型标注实例
156
+ */
157
+ _insertTypeAnnotationAt(typeAnnotation: TypeAnnotation, index: number): TypeAnnotation;
158
+
159
+ _insertTypeAnnotationAt(options: Partial<TypeAnnotation> | TypeAnnotation, index: number) {
160
+ const typeAnnotationOptions: any = {};
161
+ const relationOptions = { parentNode: this, parentKey: 'typeArguments' };
162
+ let typeAnnotation: TypeAnnotation;
163
+ if (options instanceof TypeAnnotation) {
164
+ options.ensureDelete(); // 同一实例不支持多处存在
165
+ typeAnnotation = options;
166
+ Object.assign(typeAnnotation, relationOptions);
167
+ } else {
168
+ typeAnnotation = TypeAnnotation.from(
169
+ {
170
+ ...typeAnnotationOptions,
171
+ ...options,
172
+ },
173
+ this,
174
+ 'typeArguments'
175
+ );
109
176
  }
110
-
111
- static from(source: any, parentNode?: any, parentKey?: string): CallLogic {
112
- return super.from(source, parentNode, parentKey) as CallLogic;
177
+ this.typeArguments.splice(index, 0, typeAnnotation);
178
+ return typeAnnotation;
179
+ }
180
+
181
+ /**
182
+ * 插入类型标注
183
+ * @param typeAnnotationOptions 类型标注参数
184
+ */
185
+ insertTypeAnnotationAt(typeAnnotationOptions: Partial<TypeAnnotation>, index: number): TypeAnnotation;
186
+
187
+ /**
188
+ * 插入类型标注
189
+ * @param typeAnnotation 已有的类型标注实例
190
+ */
191
+ insertTypeAnnotationAt(typeAnnotation: TypeAnnotation, index: number): TypeAnnotation;
192
+
193
+ insertTypeAnnotationAt(options: Partial<TypeAnnotation> | TypeAnnotation, index: number) {
194
+ const node = this._insertTypeAnnotationAt(options as any, index);
195
+ node.create({
196
+ index,
197
+ parentNode: this,
198
+ parentKey: 'typeArguments',
199
+ });
200
+ return node;
201
+ }
202
+
203
+ /**
204
+ * 添加类型标注
205
+ * @internal
206
+ * @param typeAnnotationOptions 类型标注参数
207
+ */
208
+ _addTypeAnnotation(typeAnnotationOptions: Partial<TypeAnnotation>): TypeAnnotation;
209
+
210
+ /**
211
+ * 添加类型标注
212
+ * @internal
213
+ * @param typeAnnotation 已有的类型标注实例
214
+ */
215
+ _addTypeAnnotation(typeAnnotation: TypeAnnotation): TypeAnnotation;
216
+
217
+ _addTypeAnnotation(options?: Partial<TypeAnnotation> | TypeAnnotation) {
218
+ const index = this.typeArguments.length;
219
+ return this._insertTypeAnnotationAt(options as any, index);
220
+ }
221
+
222
+ /**
223
+ * 添加类型标注
224
+ * @param typeAnnotationOptions 类型标注参数
225
+ */
226
+ addTypeAnnotation(typeAnnotationOptions: Partial<TypeAnnotation>): TypeAnnotation;
227
+
228
+ /**
229
+ * 添加类型标注
230
+ * @param typeAnnotation 已有的类型标注实例
231
+ */
232
+ addTypeAnnotation(typeAnnotation: TypeAnnotation): TypeAnnotation;
233
+
234
+ addTypeAnnotation(options?: Partial<TypeAnnotation> | TypeAnnotation) {
235
+ const node = this._addTypeAnnotation(options as any);
236
+ const index = this.typeArguments.indexOf(node);
237
+ node.create({
238
+ index,
239
+ parentNode: this,
240
+ parentKey: 'typeArguments',
241
+ });
242
+ return node;
243
+ }
244
+
245
+ /**
246
+ * 插入实际参数
247
+ * @internal
248
+ * @param argumentOptions 实际参数参数
249
+ */
250
+ _insertArgumentAt(argumentOptions: Partial<Argument>, index: number): Argument;
251
+
252
+ /**
253
+ * 插入实际参数
254
+ * @internal
255
+ * @param argument 已有的实际参数实例
256
+ */
257
+ _insertArgumentAt(argument: Argument, index: number): Argument;
258
+
259
+ _insertArgumentAt(options: Partial<Argument> | Argument, index: number) {
260
+ const argumentOptions: any = {};
261
+ const relationOptions = { parentNode: this, parentKey: 'arguments' };
262
+ let argument: Argument;
263
+ if (options instanceof Argument) {
264
+ options.ensureDelete(); // 同一实例不支持多处存在
265
+ argument = options;
266
+ Object.assign(argument, relationOptions);
267
+ } else {
268
+ argument = Argument.from(
269
+ {
270
+ ...argumentOptions,
271
+ ...options,
272
+ },
273
+ this,
274
+ 'arguments'
275
+ );
113
276
  }
114
-
115
- /**
116
- * 设置验证规则
117
- */
118
- setValidation(validation: BindAttribute) {
119
- validation._delete();
120
- const relationOptions = { parentNode: this, parentKey: 'validation' };
121
- Object.assign(validation, relationOptions);
122
- const object = {
123
- validation,
124
- };
125
- this.update({
126
- ...object,
127
- });
277
+ this.arguments.splice(index, 0, argument);
278
+ return argument;
279
+ }
280
+
281
+ /**
282
+ * 插入实际参数
283
+ * @param argumentOptions 实际参数参数
284
+ */
285
+ insertArgumentAt(argumentOptions: Partial<Argument>, index: number): Argument;
286
+
287
+ /**
288
+ * 插入实际参数
289
+ * @param argument 已有的实际参数实例
290
+ */
291
+ insertArgumentAt(argument: Argument, index: number): Argument;
292
+
293
+ insertArgumentAt(options: Partial<Argument> | Argument, index: number) {
294
+ const node = this._insertArgumentAt(options as any, index);
295
+ node.create({
296
+ index,
297
+ parentNode: this,
298
+ parentKey: 'arguments',
299
+ });
300
+ return node;
301
+ }
302
+
303
+ /**
304
+ * 添加实际参数
305
+ * @internal
306
+ * @param argumentOptions 实际参数参数
307
+ */
308
+ _addArgument(argumentOptions: Partial<Argument>): Argument;
309
+
310
+ /**
311
+ * 添加实际参数
312
+ * @internal
313
+ * @param argument 已有的实际参数实例
314
+ */
315
+ _addArgument(argument: Argument): Argument;
316
+
317
+ _addArgument(options?: Partial<Argument> | Argument) {
318
+ const index = this.arguments.length;
319
+ return this._insertArgumentAt(options as any, index);
320
+ }
321
+
322
+ /**
323
+ * 添加实际参数
324
+ * @param argumentOptions 实际参数参数
325
+ */
326
+ addArgument(argumentOptions: Partial<Argument>): Argument;
327
+
328
+ /**
329
+ * 添加实际参数
330
+ * @param argument 已有的实际参数实例
331
+ */
332
+ addArgument(argument: Argument): Argument;
333
+
334
+ addArgument(options?: Partial<Argument> | Argument) {
335
+ const node = this._addArgument(options as any);
336
+ const index = this.arguments.indexOf(node);
337
+ node.create({
338
+ index,
339
+ parentNode: this,
340
+ parentKey: 'arguments',
341
+ });
342
+ return node;
343
+ }
344
+
345
+ /**
346
+ * 删除类型标注
347
+ * @param typeAnnotation 已有的类型标注实例
348
+ */
349
+ removeTypeAnnotation(typeAnnotation: TypeAnnotation): void;
350
+
351
+ removeTypeAnnotation(options: TypeAnnotation) {
352
+ const typeAnnotation: TypeAnnotation = options;
353
+ return typeAnnotation.delete();
354
+ }
355
+
356
+ __removeTypeAnnotation(typeAnnotation: TypeAnnotation) {
357
+ const { parentKey } = typeAnnotation;
358
+ const params: Params = {
359
+ parentNode: this,
360
+ parentKey,
361
+ index: -1,
362
+ object: null,
363
+ oldObject: typeAnnotation,
364
+ };
365
+ if (parentKey) {
366
+ params.parentKey = parentKey;
367
+ if (Array.isArray((this as any)[parentKey])) {
368
+ const index = (this as any)[parentKey].indexOf(typeAnnotation);
369
+ ~index && (this as any)[parentKey].splice(index, 1);
370
+ params.index = index;
371
+ } else if ((this as any)[parentKey] === typeAnnotation) {
372
+ params.index = 0;
373
+ (this as any)[parentKey] = undefined;
374
+ }
128
375
  }
129
-
130
- /**
131
- * 设置是否被折叠
132
- */
133
- setIsAdvancedSettingFolded(isAdvancedSettingFolded: boolean) {
134
- const object = {
135
- isAdvancedSettingFolded,
136
- };
137
- this.update({
138
- ...object,
139
- });
376
+ return params;
377
+ }
378
+
379
+ /**
380
+ * 删除实际参数
381
+ * @param argument 已有的实际参数实例
382
+ */
383
+ removeArgument(argument: Argument): void;
384
+
385
+ removeArgument(options: Argument) {
386
+ const argument: Argument = options;
387
+ return argument.delete();
388
+ }
389
+
390
+ __removeLogicItem(logicItem: LogicItem) {
391
+ const { parentKey } = logicItem;
392
+ const params: Params = {
393
+ parentNode: this,
394
+ parentKey,
395
+ index: -1,
396
+ object: null,
397
+ oldObject: logicItem,
398
+ };
399
+ if (parentKey) {
400
+ params.parentKey = parentKey;
401
+ if (Array.isArray((this as any)[parentKey])) {
402
+ const index = (this as any)[parentKey].indexOf(logicItem);
403
+ ~index && (this as any)[parentKey].splice(index, 1);
404
+ params.index = index;
405
+ } else if ((this as any)[parentKey] === logicItem) {
406
+ params.index = 0;
407
+ (this as any)[parentKey] = undefined;
408
+ }
140
409
  }
141
-
142
- /**
143
- * 插入类型标注
144
- * @internal
145
- * @param typeAnnotationOptions 类型标注参数
146
- */
147
- _insertTypeAnnotationAt(typeAnnotationOptions: Partial<TypeAnnotation>, index: number): TypeAnnotation;
148
-
149
- /**
150
- * 插入类型标注
151
- * @internal
152
- * @param typeAnnotation 已有的类型标注实例
153
- */
154
- _insertTypeAnnotationAt(typeAnnotation: TypeAnnotation, index: number): TypeAnnotation;
155
-
156
- _insertTypeAnnotationAt(options: Partial<TypeAnnotation> | TypeAnnotation, index: number) {
157
- const typeAnnotationOptions: any = {};
158
- const relationOptions = { parentNode: this, parentKey: 'typeArguments' };
159
- let typeAnnotation: TypeAnnotation;
160
- if (options instanceof TypeAnnotation) {
161
- options.ensureDelete(); // 同一实例不支持多处存在
162
- typeAnnotation = options;
163
- Object.assign(typeAnnotation, relationOptions);
164
- } else {
165
- typeAnnotation = TypeAnnotation.from({
166
- ...typeAnnotationOptions,
167
- ...options,
168
- }, this, 'typeArguments');
169
- }
170
- this.typeArguments.splice(index, 0, typeAnnotation);
171
- return typeAnnotation;
410
+ return params;
411
+ }
412
+
413
+ /**
414
+ * 删除元素绑定属性
415
+ * @param name 元素绑定属性名称
416
+ */
417
+ removeValidation(name: string): void;
418
+
419
+ /**
420
+ * 删除元素绑定属性
421
+ * @param validation 已有的元素绑定属性实例
422
+ */
423
+ removeValidation(validation: BindAttribute): void;
424
+
425
+ removeValidation(options: string | BindAttribute) {
426
+ let validation: BindAttribute;
427
+ if (typeof options === 'string') {
428
+ validation = this.validation;
429
+ if (!validation) {
430
+ throw new Error(`找不到元素绑定属性 ${options}`);
431
+ }
432
+ } else {
433
+ validation = options;
172
434
  }
173
-
174
- /**
175
- * 插入类型标注
176
- * @param typeAnnotationOptions 类型标注参数
177
- */
178
- insertTypeAnnotationAt(typeAnnotationOptions: Partial<TypeAnnotation>, index: number): TypeAnnotation;
179
-
180
- /**
181
- * 插入类型标注
182
- * @param typeAnnotation 已有的类型标注实例
183
- */
184
- insertTypeAnnotationAt(typeAnnotation: TypeAnnotation, index: number): TypeAnnotation;
185
-
186
- insertTypeAnnotationAt(options: Partial<TypeAnnotation> | TypeAnnotation, index: number) {
187
- const node = this._insertTypeAnnotationAt(options as any, index);
188
- node.create({
189
- index,
190
- parentNode: this,
191
- parentKey: 'typeArguments',
192
- });
193
- return node;
435
+ return validation.delete();
436
+ }
437
+
438
+ __removeBindAttribute(bindAttribute: BindAttribute) {
439
+ const { parentKey } = bindAttribute;
440
+ const params: Params = {
441
+ parentNode: this,
442
+ parentKey,
443
+ index: -1,
444
+ object: null,
445
+ oldObject: bindAttribute,
446
+ };
447
+ if (parentKey) {
448
+ params.parentKey = parentKey;
449
+ if (Array.isArray((this as any)[parentKey])) {
450
+ const index = (this as any)[parentKey].indexOf(bindAttribute);
451
+ ~index && (this as any)[parentKey].splice(index, 1);
452
+ params.index = index;
453
+ } else if ((this as any)[parentKey] === bindAttribute) {
454
+ params.index = 0;
455
+ (this as any)[parentKey] = undefined;
456
+ }
194
457
  }
195
-
196
- /**
197
- * 添加类型标注
198
- * @internal
199
- * @param typeAnnotationOptions 类型标注参数
200
- */
201
- _addTypeAnnotation(typeAnnotationOptions: Partial<TypeAnnotation>): TypeAnnotation;
202
-
203
- /**
204
- * 添加类型标注
205
- * @internal
206
- * @param typeAnnotation 已有的类型标注实例
207
- */
208
- _addTypeAnnotation(typeAnnotation: TypeAnnotation): TypeAnnotation;
209
-
210
- _addTypeAnnotation(options?: Partial<TypeAnnotation> | TypeAnnotation) {
211
- const index = this.typeArguments.length;
212
- return this._insertTypeAnnotationAt(options as any, index);
458
+ return params;
459
+ }
460
+
461
+ //= ===============================================================================
462
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
463
+ // 自动生成的代码已结束。下面可以手动编写。
464
+ //= ===============================================================================
465
+
466
+ get tsCalleeNamespace() {
467
+ if (this.calleeNamespace) {
468
+ let tsCalleeNamespace = this.calleeNamespace;
469
+ tsCalleeNamespace = tsCalleeNamespace.replace(/\.[0-9]/g, (m) => m.replace('.', '.$'));
470
+ tsCalleeNamespace = tsCalleeNamespace.replace(/-/g, '_');
471
+ return tsCalleeNamespace;
213
472
  }
214
-
215
- /**
216
- * 添加类型标注
217
- * @param typeAnnotationOptions 类型标注参数
218
- */
219
- addTypeAnnotation(typeAnnotationOptions: Partial<TypeAnnotation>): TypeAnnotation;
220
-
221
- /**
222
- * 添加类型标注
223
- * @param typeAnnotation 已有的类型标注实例
224
- */
225
- addTypeAnnotation(typeAnnotation: TypeAnnotation): TypeAnnotation;
226
-
227
- addTypeAnnotation(options?: Partial<TypeAnnotation> | TypeAnnotation) {
228
- const node = this._addTypeAnnotation(options as any);
229
- const index = this.typeArguments.indexOf(node);
230
- node.create({
231
- index,
232
- parentNode: this,
233
- parentKey: 'typeArguments',
234
- });
235
- return node;
473
+ return '';
474
+ }
475
+
476
+ // 用于logic回填
477
+ get calleewholeKey(): string {
478
+ if (!this.calleeNamespace && this.calleeName && this.view) {
479
+ // 页面逻辑单独处理
480
+ return `${this.view.getNamespace()}.${this.view.name}.logics.${this.calleeName}`;
236
481
  }
237
-
238
- /**
239
- * 插入实际参数
240
- * @internal
241
- * @param argumentOptions 实际参数参数
242
- */
243
- _insertArgumentAt(argumentOptions: Partial<Argument>, index: number): Argument;
244
-
245
- /**
246
- * 插入实际参数
247
- * @internal
248
- * @param argument 已有的实际参数实例
249
- */
250
- _insertArgumentAt(argument: Argument, index: number): Argument;
251
-
252
- _insertArgumentAt(options: Partial<Argument> | Argument, index: number) {
253
- const argumentOptions: any = {};
254
- const relationOptions = { parentNode: this, parentKey: 'arguments' };
255
- let argument: Argument;
256
- if (options instanceof Argument) {
257
- options.ensureDelete(); // 同一实例不支持多处存在
258
- argument = options;
259
- Object.assign(argument, relationOptions);
260
- } else {
261
- argument = Argument.from({
262
- ...argumentOptions,
263
- ...options,
264
- }, this, 'arguments');
265
- }
266
- this.arguments.splice(index, 0, argument);
267
- return argument;
482
+ // "app.logics"
483
+ return `${this.calleeNamespace}.${this.calleeName}`;
484
+ }
485
+
486
+ get calleeKey(): string {
487
+ const { tsCalleeNamespace } = this;
488
+ const { calleeName } = this;
489
+ if (!tsCalleeNamespace) {
490
+ return calleeName ? `${calleeName}` : '__IDENTIFIER__';
268
491
  }
269
-
270
- /**
271
- * 插入实际参数
272
- * @param argumentOptions 实际参数参数
273
- */
274
- insertArgumentAt(argumentOptions: Partial<Argument>, index: number): Argument;
275
-
276
- /**
277
- * 插入实际参数
278
- * @param argument 已有的实际参数实例
279
- */
280
- insertArgumentAt(argument: Argument, index: number): Argument;
281
-
282
- insertArgumentAt(options: Partial<Argument> | Argument, index: number) {
283
- const node = this._insertArgumentAt(options as any, index);
284
- node.create({
285
- index,
286
- parentNode: this,
287
- parentKey: 'arguments',
288
- });
289
- return node;
492
+ // elements单独处理相对路径,和后缀的问题
493
+ if (tsCalleeNamespace.startsWith('elements') && tsCalleeNamespace.endsWith('logics')) {
494
+ const methodName = tsCalleeNamespace.substring(0, tsCalleeNamespace.length - '.logics'.length);
495
+ return `__${methodName}.${calleeName}`;
290
496
  }
291
-
292
- /**
293
- * 添加实际参数
294
- * @internal
295
- * @param argumentOptions 实际参数参数
296
- */
297
- _addArgument(argumentOptions: Partial<Argument>): Argument;
298
-
299
- /**
300
- * 添加实际参数
301
- * @internal
302
- * @param argument 已有的实际参数实例
303
- */
304
- _addArgument(argument: Argument): Argument;
305
-
306
- _addArgument(options?: Partial<Argument> | Argument) {
307
- const index = this.arguments.length;
308
- return this._insertArgumentAt(options as any, index);
497
+ return calleeName ? `${tsCalleeNamespace}.${calleeName}` : '__IDENTIFIER__';
498
+ }
499
+
500
+ /**
501
+ * 设置argment 触发别的地方的更新
502
+ */
503
+ setArgumentName({ argument }: { argument: Argument[] }) {
504
+ // argument.setKeyword(newKeyword);
505
+ // this.arguments = argument;
506
+ }
507
+
508
+ /**
509
+ * 设置setCalleeName
510
+ */
511
+ setCalleeName(calleeName: string) {
512
+ const object = {
513
+ calleeName,
514
+ };
515
+ this.update({
516
+ ...object,
517
+ });
518
+ }
519
+
520
+ /**
521
+ * 设置calleeNamespace
522
+ */
523
+ setCalleeNamespace(calleeNamespace: string) {
524
+ const object = {
525
+ calleeNamespace,
526
+ };
527
+ this.update({
528
+ ...object,
529
+ });
530
+ }
531
+
532
+ /**
533
+ * 设置 handleError
534
+ */
535
+ setHandleError(handleError: boolean) {
536
+ const object = {
537
+ handleError,
538
+ };
539
+ this.update({
540
+ ...object,
541
+ });
542
+ }
543
+
544
+ _setCallee(logic: Logic) {
545
+ this.calleeNamespace = logic.getNamespace();
546
+ if (logic.parentNode instanceof View) {
547
+ this.calleeNamespace = '';
309
548
  }
310
-
311
- /**
312
- * 添加实际参数
313
- * @param argumentOptions 实际参数参数
314
- */
315
- addArgument(argumentOptions: Partial<Argument>): Argument;
316
-
317
- /**
318
- * 添加实际参数
319
- * @param argument 已有的实际参数实例
320
- */
321
- addArgument(argument: Argument): Argument;
322
-
323
- addArgument(options?: Partial<Argument> | Argument) {
324
- const node = this._addArgument(options as any);
325
- const index = this.arguments.indexOf(node);
326
- node.create({
327
- index,
328
- parentNode: this,
329
- parentKey: 'arguments',
330
- });
331
- return node;
549
+ this.calleeName = logic.name;
550
+ this.arguments = [];
551
+ logic.params.forEach((param: any) => {
552
+ const argument = this._addArgument({
553
+ keyword: param.name,
554
+ });
555
+ if (param.defaultExpression) {
556
+ const exp: any = BaseNode.from({ ...param.defaultExpression.toJSON() });
557
+ argument.setExpression(exp);
558
+ }
559
+ });
560
+ if (logic.typeParams) {
561
+ this.typeArguments = [];
562
+ logic.typeParams.forEach(() => {
563
+ this._addTypeAnnotation({});
564
+ });
332
565
  }
566
+ }
333
567
 
334
- /**
335
- * 删除类型标注
336
- * @param typeAnnotation 已有的类型标注实例
337
- */
338
- removeTypeAnnotation(typeAnnotation: TypeAnnotation): void;
339
-
340
- removeTypeAnnotation(options: TypeAnnotation) {
341
- const typeAnnotation: TypeAnnotation = options;
342
- return typeAnnotation.delete();
568
+ setCallee(logic: Logic) {
569
+ let calleeNamespace = logic?.getNamespace() || '';
570
+ if (logic.parentNode instanceof View) {
571
+ calleeNamespace = '';
343
572
  }
344
-
345
- __removeTypeAnnotation(typeAnnotation: TypeAnnotation) {
346
- const parentKey = typeAnnotation.parentKey;
347
- const params: Params = {
348
- parentNode: this,
349
- parentKey,
350
- index: -1,
351
- object: null,
352
- oldObject: typeAnnotation,
353
- };
354
- if (parentKey) {
355
- params.parentKey = parentKey;
356
- if (Array.isArray((this as any)[parentKey])) {
357
- const index = (this as any)[parentKey].indexOf(typeAnnotation);
358
- ~index && (this as any)[parentKey].splice(index, 1);
359
- params.index = index;
360
- } else if ((this as any)[parentKey] === typeAnnotation) {
361
- params.index = 0;
362
- (this as any)[parentKey] = undefined;
363
- }
364
- }
365
- return params;
573
+ const calleeName = logic.name;
574
+ const params = logic?.params?.map((param) => {
575
+ const relationOptions = { parentNode: this, parentKey: 'arguments' };
576
+ const argument = Argument.from(
577
+ {
578
+ keyword: param.name,
579
+ expression: param.isFunction ? new Identifier() : param.defaultExpression,
580
+ },
581
+ this
582
+ );
583
+ Object.assign(argument, relationOptions);
584
+ return argument;
585
+ });
586
+ let typeArguments = null;
587
+ if (logic.typeParams) {
588
+ typeArguments = logic.typeParams.map(() => {
589
+ const relationOptions = { parentNode: this, parentKey: 'typeArguments' };
590
+ const typeArgu = new TypeAnnotation();
591
+ Object.assign(typeArgu, relationOptions);
592
+ return typeArgu;
593
+ });
366
594
  }
367
595
 
368
- /**
369
- * 删除实际参数
370
- * @param argument 已有的实际参数实例
371
- */
372
- removeArgument(argument: Argument): void;
373
-
374
- removeArgument(options: Argument) {
375
- const argument: Argument = options;
376
- return argument.delete();
596
+ // 如果打开了处理error的开关 或者是 依赖库的逻辑引用,而且类型中携带了Error的
597
+ let handleError = false;
598
+ if (calleeNamespace?.startsWith('extensions') && Logic.checkLogicReturnTypeHasError(logic)) {
599
+ handleError = true;
377
600
  }
378
-
379
- __removeLogicItem(logicItem: LogicItem) {
380
- const parentKey = logicItem.parentKey;
381
- const params: Params = {
382
- parentNode: this,
383
- parentKey,
384
- index: -1,
385
- object: null,
386
- oldObject: logicItem,
387
- };
388
- if (parentKey) {
389
- params.parentKey = parentKey;
390
- if (Array.isArray((this as any)[parentKey])) {
391
- const index = (this as any)[parentKey].indexOf(logicItem);
392
- ~index && (this as any)[parentKey].splice(index, 1);
393
- params.index = index;
394
- } else if ((this as any)[parentKey] === logicItem) {
395
- params.index = 0;
396
- (this as any)[parentKey] = undefined;
397
- }
398
- }
399
- return params;
601
+ if (this.app) {
602
+ this.app.emit('collect:start', {
603
+ actionMsg: `切换调用逻辑`,
604
+ });
605
+ const { parentNode } = this;
606
+ this.update({
607
+ calleeNamespace,
608
+ calleeName,
609
+ arguments: params,
610
+ typeArguments,
611
+ folded: false,
612
+ handleError,
613
+ });
614
+ if (parentNode.concept === 'MemberExpression') {
615
+ const topNode = parentNode.firstMemberExpressionNode();
616
+ topNode.replaceNode(this);
617
+ }
618
+ this.app.emit('collect:end');
619
+ } else {
620
+ this.update({
621
+ calleeNamespace,
622
+ calleeName,
623
+ arguments: params,
624
+ typeArguments,
625
+ folded: false,
626
+ handleError,
627
+ });
400
628
  }
401
-
402
- /**
403
- * 删除元素绑定属性
404
- * @param name 元素绑定属性名称
405
- */
406
- removeValidation(name: string): void;
407
-
629
+ }
630
+
631
+ addCalleeArg(logic: Logic) {
632
+ const newArgs = this.arguments.map((argument) =>
633
+ Argument.from(
634
+ {
635
+ ...argument,
636
+ },
637
+ this
638
+ )
639
+ );
640
+ const relationOptions = { parentNode: this, parentKey: 'arguments' };
408
641
  /**
409
- * 删除元素绑定属性
410
- * @param validation 已有的元素绑定属性实例
642
+ * 当前两个参数对应上,添加的时候,logic会比参数位内容多,就添加一个 argment
411
643
  */
412
- removeValidation(validation: BindAttribute): void;
413
-
414
- removeValidation(options: string | BindAttribute) {
415
- let validation: BindAttribute;
416
- if (typeof options === 'string') {
417
- validation = this.validation;
418
- if (!validation) {
419
- throw new Error('找不到元素绑定属性 ' + options);
420
- }
644
+ if (logic.params.length >= newArgs.length) {
645
+ logic.params.forEach((param: Param, index: number) => {
646
+ const arg = newArgs[index];
647
+ if (!arg) {
648
+ const newParam = Argument.from(
649
+ {
650
+ keyword: param.name,
651
+ },
652
+ this
653
+ );
654
+ Object.assign(newParam, relationOptions);
655
+ newArgs.push(newParam);
421
656
  } else {
422
- validation = options;
423
- }
424
- return validation.delete();
425
- }
426
-
427
- __removeBindAttribute(bindAttribute: BindAttribute) {
428
- const parentKey = bindAttribute.parentKey;
429
- const params: Params = {
430
- parentNode: this,
431
- parentKey,
432
- index: -1,
433
- object: null,
434
- oldObject: bindAttribute,
435
- };
436
- if (parentKey) {
437
- params.parentKey = parentKey;
438
- if (Array.isArray((this as any)[parentKey])) {
439
- const index = (this as any)[parentKey].indexOf(bindAttribute);
440
- ~index && (this as any)[parentKey].splice(index, 1);
441
- params.index = index;
442
- } else if ((this as any)[parentKey] === bindAttribute) {
443
- params.index = 0;
444
- (this as any)[parentKey] = undefined;
445
- }
446
- }
447
- return params;
448
- }
449
-
450
- //================================================================================
451
- // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
452
- // 自动生成的代码已结束。下面可以手动编写。
453
- //================================================================================
454
-
455
- get tsCalleeNamespace() {
456
- if (this.calleeNamespace) {
457
- let tsCalleeNamespace = this.calleeNamespace;
458
- tsCalleeNamespace = tsCalleeNamespace.replace(/\.[0-9]/g, (m) => m.replace('.', '.$'));
459
- tsCalleeNamespace = tsCalleeNamespace.replace(/-/g, '_');
460
- return tsCalleeNamespace;
461
- }
462
- return '';
463
- }
464
-
465
- // 用于logic回填
466
- get calleewholeKey(): string {
467
- if (!this.calleeNamespace && this.calleeName && this.view) {
468
- // 页面逻辑单独处理
469
- return `${this.view.getNamespace()}.${this.view.name}.logics.${this.calleeName}`;
470
- }
471
- // "app.logics"
472
- return this.calleeNamespace + '.' + this.calleeName;
473
- }
474
- get calleeKey(): string {
475
- const tsCalleeNamespace = this.tsCalleeNamespace;
476
- const calleeName = this.calleeName;
477
- if (!tsCalleeNamespace) {
478
- return calleeName ? `${calleeName}` : '__IDENTIFIER__';
657
+ arg.keyword = param.name;
479
658
  }
480
- // elements单独处理相对路径,和后缀的问题
481
- if (tsCalleeNamespace.startsWith('elements') && tsCalleeNamespace.endsWith('logics')) {
482
- const methodName = tsCalleeNamespace.substring(0, tsCalleeNamespace.length - '.logics'.length);
483
- return '__' + methodName + `.${calleeName}`;
659
+ });
660
+ } else {
661
+ /**
662
+ * 当前calllogic上数量比logic参数还多,他就需要找一个arg使他变成可用的参数
663
+ */
664
+ newArgs.forEach((arg: Argument, index: number) => {
665
+ const param = logic.params[index];
666
+ if (param) {
667
+ arg.keyword = param.name;
484
668
  }
485
- return calleeName ? `${tsCalleeNamespace}.${calleeName}` : '__IDENTIFIER__';
669
+ });
486
670
  }
671
+ this.update({
672
+ arguments: newArgs,
673
+ });
674
+ }
487
675
 
676
+ deleteCalleeArg(argIndex: number) {
488
677
  /**
489
- * 设置argment 触发别的地方的更新
678
+ * 传递过下标来,然后直接移动到最后结束
679
+ * 如果原来就是最后一个位置就不移动了
490
680
  */
491
- setArgumentName({ argument }: { argument: Argument[] }) {
492
- // argument.setKeyword(newKeyword);
493
- // this.arguments = argument;
494
- }
495
-
496
- /**
497
- * 设置setCalleeName
498
- */
499
- setCalleeName(calleeName: string) {
500
- const object = {
501
- calleeName,
502
- };
503
- this.update({
504
- ...object,
505
- });
506
- }
507
-
508
- /**
509
- * 设置calleeNamespace
510
- */
511
- setCalleeNamespace(calleeNamespace: string) {
512
- const object = {
513
- calleeNamespace,
514
- };
515
- this.update({
516
- ...object,
517
- });
518
- }
519
- /**
520
- * 设置 handleError
521
- */
522
- setHandleError(handleError: boolean) {
523
- const object = {
524
- handleError,
525
- };
526
- this.update({
527
- ...object,
528
- });
529
- }
530
-
531
- _setCallee(logic: Logic) {
532
- console.trace();
533
- this.calleeNamespace = logic.getNamespace();
534
- if (logic.parentNode instanceof View) {
535
- this.calleeNamespace = '';
536
- }
537
- this.calleeName = logic.name;
538
- this.arguments = [];
539
- logic.params.forEach((param: any) => {
540
- const argument = this._addArgument({
541
- keyword: param.name,
542
- });
543
- if (param.defaultExpression) {
544
- const exp: any = BaseNode.from({ ...param.defaultExpression.toJSON() });
545
- argument.setExpression(exp);
546
- }
681
+ if (typeof argIndex === 'number') {
682
+ if (!this.arguments[argIndex]?.expression) {
683
+ // 如果本身没有值就直接删除
684
+ return this.arguments[argIndex]?.delete();
685
+ }
686
+ if (argIndex !== this.arguments.length - 1) {
687
+ this.arguments[argIndex]?.moveNode({
688
+ sourceNode: this.arguments[this.arguments.length - 1],
689
+ position: 'insertAfter',
547
690
  });
548
- if (logic.typeParams) {
549
- this.typeArguments = [];
550
- logic.typeParams.forEach(() => {
551
- this._addTypeAnnotation({});
552
- });
553
- }
691
+ }
554
692
  }
555
-
556
- setCallee(logic: Logic) {
557
- let calleeNamespace = logic?.getNamespace() || '';
558
- if (logic.parentNode instanceof View) {
559
- calleeNamespace = '';
560
- }
561
- const calleeName = logic.name;
562
- const params = logic?.params?.map((param) => {
563
- const relationOptions = { parentNode: this, parentKey: 'arguments' };
564
- const argument = Argument.from({
565
- keyword: param.name,
566
- expression: param.isFunction ? new Identifier() : param.defaultExpression,
567
- }, this);
568
- Object.assign(argument, relationOptions);
569
- return argument;
570
- });
571
- let typeArguments = null;
572
- if (logic.typeParams) {
573
- typeArguments = logic.typeParams.map(() => {
574
- const relationOptions = { parentNode: this, parentKey: 'typeArguments' };
575
- const typeArgu = new TypeAnnotation();
576
- Object.assign(typeArgu, relationOptions);
577
- return typeArgu;
578
- });
579
- }
580
-
581
- // 如果打开了处理error的开关 或者是 依赖库的逻辑引用,而且类型中携带了Error的
582
- let handleError = false;
583
- if (calleeNamespace?.startsWith('extensions') && Logic.checkLogicReturnTypeHasError(logic)) {
584
- handleError = true;
585
- }
586
- if (this.app) {
587
- this.app.emit('collect:start', {
588
- actionMsg: `切换调用逻辑`,
589
- });
590
- const parentNode: any = this.parentNode;
591
- this.update({
592
- calleeNamespace,
593
- calleeName,
594
- arguments: params,
595
- typeArguments,
596
- folded: false,
597
- handleError,
598
- });
599
- if (parentNode.concept === 'MemberExpression') {
600
- const topNode = parentNode.firstMemberExpressionNode();
601
- topNode.replaceNode(this);
602
- }
603
- this.app.emit('collect:end');
604
- } else {
605
- this.update({
606
- calleeNamespace,
607
- calleeName,
608
- arguments: params,
609
- typeArguments,
610
- folded: false,
611
- handleError,
612
- });
613
- }
693
+ }
694
+
695
+ toVue(options?: ElementToVueOptions): string {
696
+ let code = '';
697
+ if (
698
+ this.calleeNamespace === 'nasl.browser' ||
699
+ this.calleeNamespace === 'nasl.auth' ||
700
+ this.calleeNamespace === 'nasl.configuration' ||
701
+ this.calleeNamespace === 'nasl.process'
702
+ ) {
703
+ code += '$global.';
614
704
  }
615
-
616
- addCalleeArg(logic: Logic) {
617
- const newArgs = this.arguments.map((argument) =>
618
- Argument.from({
619
- ...argument,
620
- }, this));
621
- const relationOptions = { parentNode: this, parentKey: 'arguments' };
622
- /**
623
- * 当前两个参数对应上,添加的时候,logic会比参数位内容多,就添加一个 argment
624
- */
625
- if (logic.params.length >= newArgs.length) {
626
- logic.params.forEach((param: Param, index: number) => {
627
- const arg = newArgs[index];
628
- if (!arg) {
629
- const newParam = Argument.from({
630
- keyword: param.name,
631
- }, this);
632
- Object.assign(newParam, relationOptions);
633
- newArgs.push(newParam);
634
- } else {
635
- arg.keyword = param.name;
636
- }
637
- });
638
- } else {
639
- /**
640
- * 当前calllogic上数量比logic参数还多,他就需要找一个arg使他变成可用的参数
641
- */
642
- newArgs.forEach((arg: Argument, index: number) => {
643
- const param = logic.params[index];
644
- if (param) {
645
- arg.keyword = param.name;
646
- }
647
- });
648
- }
649
- this.update({
650
- arguments: newArgs,
651
- });
705
+ code += this.calleeName;
706
+ code += '(';
707
+ const { completeArguments } = this;
708
+ completeArguments.forEach((arg, index) => {
709
+ code += arg?.toVue(options);
710
+ if (index !== completeArguments.length - 1) code += ', ';
711
+ });
712
+ code += ')';
713
+ return code;
714
+ }
715
+
716
+ toUI(state?: TranslatorState): string {
717
+ let code = this.calleeName;
718
+ code += '(';
719
+
720
+ const node = this.getCallNode();
721
+ let logicParam: Param[] = [];
722
+ if (node?.params) {
723
+ logicParam = node.params;
652
724
  }
653
-
654
- deleteCalleeArg(argIndex: number) {
655
- /**
656
- * 传递过下标来,然后直接移动到最后结束
657
- * 如果原来就是最后一个位置就不移动了
658
- */
659
- if (typeof argIndex === 'number') {
660
- if (!this.arguments[argIndex]?.expression) {
661
- // 如果本身没有值就直接删除
662
- return this.arguments[argIndex]?.delete();
663
- }
664
- if (argIndex !== this.arguments.length - 1) {
665
- this.arguments[argIndex]?.moveNode({
666
- sourceNode: this.arguments[this.arguments.length - 1],
667
- position: 'insertAfter',
668
- });
669
- }
670
- }
671
- }
672
- toVue(options?: ElementToVueOptions): string {
673
- let code = '';
674
- if (this.calleeNamespace === 'nasl.browser' || this.calleeNamespace === 'nasl.auth' || this.calleeNamespace === 'nasl.configuration' || this.calleeNamespace === 'nasl.process') {
675
- code += '$global.';
676
- }
677
- const completeArguments = this.completeArguments;
678
- if (this.concept === 'CallLogic' && this.getAncestor('BindAttribute').name === 'data-source') {
679
- code += '(params) =>'
680
- code += `this.$logics['${this.calleeNamespace ? `${this.calleeNamespace}.${this.calleeName}` : this.calleeName}']`
681
- code += `({
682
- config: {
683
- download: false,
684
- },
685
- query: {},`;
686
- code += `
687
- headers: {
688
- "lcap-calllogic-uuid": "${this.uuid}",
689
- },
690
- `;
691
- code += `path: {},
692
- body: {`;
693
- const logic = getNodeByNodeCallee(this.app, this.calleewholeKey, (key: string, tempPoint: any) => {
694
- // 处理 NASL 中未定义的假的节点
695
- if (key === tempPoint.name) {
696
- return {
697
- tempPoint,
698
- state: 1,
699
- };
700
- }
701
- const t = tempPoint[key];
702
- return {
703
- tempPoint: t,
704
- state: Array.isArray(t) ? 2 : 1,
705
- };
706
- });
707
- const args = logic?.params || [];
708
- const argsStr = args
709
- .map((arg: any, index: number) => {
710
- const actualArg = completeArguments[index];
711
- return {
712
- keyword: arg?.name,
713
- arg: actualArg,
714
- };
715
- })
716
- .map((obj: any) => `\n${obj?.keyword}: ${obj?.arg?.toVue(options)}`)
717
- .join(', ');
718
- code += argsStr;
719
- if (Array.isArray(this.typeArguments) && this.typeArguments.length) {
720
- code += `,\n__typeArguments: ${JSON5.stringify(this.typeArguments)}`;
721
- }
722
- code += '\n}';
723
- code += '}';
725
+ if (this.arguments?.length) {
726
+ this.arguments.forEach((arg, index) => {
727
+ const param = logicParam[index] || ({} as any);
728
+ // 打开了必填,
729
+ // 或者遗留问题,没有required = undefined 而且没有defaultValue,就是之前的必填项
730
+ const paramRequired = Boolean(param.required || (param.required === undefined && !param.defaultValue));
731
+ // 取到是不是必填放入参数中
732
+ if (param && !arg.expression && !paramRequired) {
733
+ // 非必填时 才会有默认值
734
+ code += param.defaultValue;
724
735
  } else {
725
- code += this.calleeName;
726
- code += '(';
727
- completeArguments.forEach((arg, index) => {
728
- code += arg?.toVue(options);
729
- if (index !== completeArguments.length - 1)
730
- code += ', ';
731
- });
736
+ code += arg?.toUI();
732
737
  }
733
- code += ')';
734
- return code;
738
+ if (index !== this.arguments?.length - 1) code += ', ';
739
+ });
735
740
  }
736
-
737
- toUI(state?: TranslatorState): string {
738
- let code = this.calleeName;
739
- code += '(';
740
-
741
- const node = this.getCallNode();
742
- let logicParam: Param[] = [];
743
- if (node?.params) {
744
- logicParam = node.params;
745
- }
746
- if (this.arguments?.length) {
747
- this.arguments.forEach((arg, index) => {
748
- const param = logicParam[index] || ({} as any);
749
- // 打开了必填,
750
- // 或者遗留问题,没有required = undefined 而且没有defaultValue,就是之前的必填项
751
- const paramRequired = Boolean(param.required || (param.required === undefined && !param.defaultValue));
752
- // 取到是不是必填放入参数中
753
- if (param && !arg.expression && !paramRequired) {
754
- // 非必填时 才会有默认值
755
- code += param.defaultValue;
756
- } else {
757
- code += arg?.toUI();
758
- }
759
- if (index !== this.arguments?.length - 1)
760
- code += ', ';
761
- });
762
- }
763
- code += ')';
764
- if (this.concept === 'CallLogic' && this.getAncestor('BindAttribute').name === 'data-source') {
765
- return this.calleeName
741
+ code += ')';
742
+
743
+ return code;
744
+ }
745
+
746
+ // 是否属于页面逻辑
747
+ get isViewLogic() {
748
+ // 页面逻辑
749
+ let flag = true;
750
+ const { calleeNamespace } = this;
751
+ // calleeNamespace不存在,一定是页面逻辑
752
+ if (calleeNamespace) {
753
+ const namespaceArr = calleeNamespace.split('.');
754
+ const start = namespaceArr[0];
755
+ const isFrontendLibrary = ~calleeNamespace.indexOf('frontends');
756
+ if (start === 'app' || (start === 'extensions' && !isFrontendLibrary)) {
757
+ const keywordViewsIndex = findConceptKeyWordIndexFromNamespace(this.calleeNamespace, 'views');
758
+ if (keywordViewsIndex === -1) {
759
+ flag = false;
766
760
  }
767
- return code;
761
+ }
768
762
  }
769
-
770
- // 是否属于页面逻辑
771
- get isViewLogic() {
772
- // 页面逻辑
773
- let flag = true;
774
- const calleeNamespace = this.calleeNamespace;
775
- // calleeNamespace不存在,一定是页面逻辑
776
- if (calleeNamespace) {
777
- const namespaceArr = calleeNamespace.split('.');
778
- const start = namespaceArr[0];
779
- const isFrontendLibrary = ~calleeNamespace.indexOf('frontends');
780
- if (start === 'app' || (start === 'extensions' && !isFrontendLibrary)) {
781
- const keywordViewsIndex = findConceptKeyWordIndexFromNamespace(this.calleeNamespace, 'views');
782
- if (keywordViewsIndex === -1) {
783
- flag = false;
784
- }
785
- }
786
- }
787
- return flag;
763
+ return flag;
764
+ }
765
+
766
+ // 是否属于组件逻辑
767
+ get isComponentLogic() {
768
+ // 组件逻辑
769
+ let flag = false;
770
+ const { calleeNamespace } = this;
771
+ // calleeNamespace不存在,一定是页面逻辑
772
+ if (calleeNamespace) {
773
+ const namespaceArr = calleeNamespace.split('.');
774
+ const start = namespaceArr[0];
775
+ if (start === 'elements' && namespaceArr.length === 3 && namespaceArr[2] === 'logics') {
776
+ flag = true;
777
+ }
788
778
  }
789
-
790
- // 是否属于组件逻辑
791
- get isComponentLogic() {
792
- // 组件逻辑
793
- let flag = false;
794
- const calleeNamespace = this.calleeNamespace;
795
- // calleeNamespace不存在,一定是页面逻辑
796
- if (calleeNamespace) {
797
- const namespaceArr = calleeNamespace.split('.');
798
- const start = namespaceArr[0];
799
- if (start === 'elements' && namespaceArr.length === 3 && namespaceArr[2] === 'logics') {
800
- flag = true;
801
- }
802
- }
803
- return flag;
779
+ return flag;
780
+ }
781
+
782
+ toJS(state?: TranslatorState): string {
783
+ let code = '';
784
+ code += 'await (';
785
+ let refName = '';
786
+ let extensionName = '';
787
+
788
+ const { calleeName, calleeNamespace, isComponentLogic, completeArguments, isViewLogic, typeArguments } = this;
789
+
790
+ const isShowArgument = (arg?: Argument) => {
791
+ return arg.expression || (arg.paramDefaultValue && arg.paramTypeAnnotation);
792
+ };
793
+
794
+ const keywordProcessIndex = findConceptKeyWordIndexFromNamespace(calleeNamespace, 'processes');
795
+ const isProcessLogic = keywordProcessIndex !== -1;
796
+ const isFrontendLibrary = calleeNamespace.startsWith('extensions') && calleeNamespace.indexOf('frontends');
797
+ // calleeNamespace不存在,一定是页面逻辑
798
+ if (calleeNamespace) {
799
+ const namespaceArr = calleeNamespace.split('.');
800
+ if (isComponentLogic) {
801
+ const componentName = namespaceArr[1];
802
+ const viewElement = this.view?.findElementByName(componentName);
803
+ refName = viewElement?.refName ?? componentName;
804
+ }
805
+ if (isFrontendLibrary) {
806
+ extensionName = namespaceArr[1];
807
+ }
804
808
  }
805
-
806
- toJS(state?: TranslatorState): string {
807
- let code = '';
808
- code += 'await (';
809
- let refName = '';
810
- let extensionName = '';
811
- const calleeNamespace = this.calleeNamespace;
812
- const keywordProcessIndex = findConceptKeyWordIndexFromNamespace(this.calleeNamespace, 'processes');
813
- const isProcessLogic = keywordProcessIndex !== -1;
814
- const isFrontendLibrary = calleeNamespace.startsWith('extensions') && calleeNamespace.indexOf('frontends');
815
- // calleeNamespace不存在,一定是页面逻辑
816
- if (calleeNamespace) {
817
- const namespaceArr = calleeNamespace.split('.');
818
- if (this.isComponentLogic) {
819
- const componentName = namespaceArr[1];
820
- const viewElement = this.view?.findElementByName(componentName);
821
- refName = viewElement?.refName ?? componentName;
822
- console.log(componentName);
823
- console.log(refName);
824
- }
825
- if (isFrontendLibrary) {
826
- extensionName = namespaceArr[1];
827
- }
828
- }
829
- const completeArguments = this.completeArguments;
830
- // 服务端逻辑
831
- if (!this.isViewLogic) {
832
- const logic = getNodeByNodeCallee(this.app, this.calleewholeKey, (key: string, tempPoint: any) => {
833
- // 处理 NASL 中未定义的假的节点
834
- if (key === tempPoint.name) {
835
- return {
836
- tempPoint,
837
- state: 1,
838
- };
839
- }
840
- const t = tempPoint[key];
841
- return {
842
- tempPoint: t,
843
- state: Array.isArray(t) ? 2 : 1,
844
- };
845
- });
846
- const args = logic?.params || [];
847
- const keywordEntitiesIndex = findConceptKeyWordIndexFromNamespace(this.calleeNamespace, 'entities');
848
- code += `this.$logics['${this.calleeNamespace ? `${this.calleeNamespace}.${this.calleeName}` : this.calleeName}']`;
849
- code += `({
809
+ // 全局逻辑
810
+ if (!isViewLogic) {
811
+ const logic = this.getCallNode();
812
+ const args = logic?.params || [];
813
+ const keywordEntitiesIndex = findConceptKeyWordIndexFromNamespace(this.calleeNamespace, 'entities');
814
+ code += `this.$logics['${this.calleeNamespace ? `${this.calleeNamespace}.${this.calleeName}` : this.calleeName}']`;
815
+ code += `({
850
816
  config: {
851
817
  download: false,
852
818
  },
853
819
  query: {`;
854
- if (isProcessLogic) {
855
- const argsStr = args
856
- .map((arg: any, index: number) => {
857
- const actualArg = completeArguments[index];
858
- return {
859
- keyword: arg?.name,
860
- arg: actualArg,
861
- };
862
- })
863
- .map((obj: any) => `\n${obj?.keyword}: ${obj?.arg?.toJS(shiftState(state, code))}`)
864
- .join(', ');
865
- code += argsStr;
866
- }
867
- code += `},
820
+ if (isProcessLogic) {
821
+ const argsStr = args
822
+ .map((arg, index) => {
823
+ const actualArg = completeArguments[index];
824
+ return {
825
+ keyword: arg?.name,
826
+ arg: actualArg,
827
+ };
828
+ })
829
+ .filter((item) => isShowArgument(item.arg))
830
+ .map((obj: any) => `\n${obj?.keyword}: ${obj?.arg?.toJS(shiftState(state, code))}`)
831
+ .join(', ');
832
+ code += argsStr;
833
+ }
834
+ code += `},
868
835
  headers: {
869
836
  "lcap-calllogic-uuid": "${this.uuid}",
870
837
  },
871
838
  `;
872
839
 
873
- if (keywordEntitiesIndex !== -1) {
874
- let logicArgs = this.arguments;
875
- let breakBody = false;
876
- switch (this.calleeName) {
877
- case 'get':
878
- case 'delete': {
879
- logicArgs = [];
880
- code += `query: {`;
881
- const argsStr = args
882
- .map((arg: any, index: number) => {
883
- const actualArg = this.arguments?.[index];
884
- return {
885
- keyword: arg?.name,
886
- arg: actualArg,
887
- };
888
- })
889
- .map((obj: any) => `\n${obj?.keyword}: ${obj?.arg?.toJS(shiftState(state, code))}`)
890
- .join(', ');
891
- code += argsStr;
892
- code += `},\n`;
893
- break;
894
- }
895
- case 'update':
896
- case 'createOrUpdate':
897
- case 'batchUpdate': {
898
- code += `body: {\n`;
899
- const argsStr = logicArgs
900
- .filter((arg: any) => arg.expression)
901
- .map((arg: any) => {
902
- const name = arg.keyword === 'body' ? (this.calleeName === 'batchUpdate' ? 'entities' : 'entity') : arg.keyword;
903
- return `${name}: ${arg.expression.toJS(shiftState(state, code))}`;
904
- })
905
- .join(',\n');
906
- code += argsStr;
907
- code += `},\n`;
908
- logicArgs = [];
909
- breakBody = true;
910
- break;
911
- }
912
- case 'updateBy': {
913
- code += `body: {`;
914
- const argsStr = logicArgs
915
- .filter((arg: any) => arg.expression)
916
- .map((arg: any) => {
917
- const name = arg.keyword === 'body' ? 'entity' : arg.keyword;
918
- // filter回调函数
919
- if (arg.expression.returnExpression) {
920
- const argsStr = JSON.stringify(handleMember(arg.expression.returnExpression)).replace(/"__@@(.*?)@@__"/g, '$1');
921
- return `${name}: {
840
+ if (keywordEntitiesIndex !== -1) {
841
+ let logicArgs = this.arguments;
842
+ let breakBody = false;
843
+ switch (calleeName) {
844
+ case 'get':
845
+ case 'delete': {
846
+ logicArgs = [];
847
+ code += `query: {`;
848
+ const argsStr = args
849
+ .map((arg, index) => {
850
+ const actualArg = this.arguments?.[index];
851
+ return {
852
+ keyword: arg?.name,
853
+ arg: actualArg,
854
+ };
855
+ })
856
+ .map((obj: any) => `\n${obj?.keyword}: ${obj?.arg?.toJS(shiftState(state, code))}`)
857
+ .join(', ');
858
+ code += argsStr;
859
+ code += `},\n`;
860
+ break;
861
+ }
862
+ case 'update':
863
+ case 'createOrUpdate':
864
+ case 'batchUpdate': {
865
+ code += `body: {\n`;
866
+ const argsStr = logicArgs
867
+ .map((arg) => {
868
+ const name = arg.keyword === 'body' ? (this.calleeName === 'batchUpdate' ? 'entities' : 'entity') : arg.keyword;
869
+ return `${name}: ${arg.expression.toJS(shiftState(state, code))}`;
870
+ })
871
+ .join(',\n');
872
+ code += argsStr;
873
+ code += `},\n`;
874
+ logicArgs = [];
875
+ breakBody = true;
876
+ break;
877
+ }
878
+ case 'updateBy': {
879
+ code += `body: {`;
880
+ const argsStr = logicArgs
881
+ .map((arg: any) => {
882
+ const name = arg.keyword === 'body' ? 'entity' : arg.keyword;
883
+ // filter回调函数
884
+ if (arg.expression.returnExpression) {
885
+ const argsStr = JSON.stringify(handleMember(arg.expression.returnExpression)).replace(/"__@@(.*?)@@__"/g, '$1');
886
+ return `${name}: {
922
887
  concept: 'Function',
923
888
  name: 'filter',
924
889
  returnExpression: this.$resolveRequestData(${argsStr})
925
890
  }`;
926
- } else {
927
- return `${name}: ${arg.expression.toJS(shiftState(state, code))}`;
928
- }
929
- })
930
- .join(',');
931
- code += argsStr;
932
- code += `},\n`;
933
- logicArgs = [];
934
- breakBody = true;
935
- break;
936
- }
937
- case 'deleteBy': {
938
- code += `body: `;
939
- const argsStr = JSON.stringify(handleMember((logicArgs[0].expression as any).returnExpression)).replace(/"__@@(.*?)@@__"/g, '$1');
940
- code += `{
891
+ }
892
+ return `${name}: ${arg.expression.toJS(shiftState(state, code))}`;
893
+ })
894
+ .join(',');
895
+ code += argsStr;
896
+ code += `},\n`;
897
+ logicArgs = [];
898
+ breakBody = true;
899
+ break;
900
+ }
901
+ case 'deleteBy': {
902
+ code += `body: `;
903
+ const argsStr = JSON.stringify(handleMember((logicArgs[0].expression as any).returnExpression)).replace(/"__@@(.*?)@@__"/g, '$1');
904
+ code += `{
941
905
  concept: 'Function',
942
906
  name: 'filter',
943
907
  returnExpression: this.$resolveRequestData(${argsStr})
944
908
  }`;
945
- code += `,\n`;
946
- logicArgs = [];
947
- breakBody = true;
948
- break;
949
- }
950
- }
951
- const bodyArgument = logicArgs.find((arg) => arg.keyword === 'body');
952
- if (!breakBody) {
953
- if (bodyArgument) {
954
- code += `\n${bodyArgument?.keyword}: ${bodyArgument?.toJS(shiftState(state, code))}`;
955
- } else {
956
- code += `body: {}`;
957
- }
958
- }
959
- } else {
960
- code += `path: {},
909
+ code += `,\n`;
910
+ logicArgs = [];
911
+ breakBody = true;
912
+ break;
913
+ }
914
+ }
915
+ const bodyArgument = logicArgs.find((arg) => arg.keyword === 'body');
916
+ if (!breakBody) {
917
+ if (bodyArgument) {
918
+ code += `\n${bodyArgument?.keyword}: ${bodyArgument?.toJS(shiftState(state, code))}`;
919
+ } else {
920
+ code += `body: {}`;
921
+ }
922
+ }
923
+ } else {
924
+ code += `path: {},
961
925
  body: {`;
962
- if (!isProcessLogic) {
963
- const argsStr = args
964
- .map((arg: any, index: number) => {
965
- const actualArg = completeArguments[index];
966
- return {
967
- keyword: arg?.name,
968
- arg: actualArg,
969
- };
970
- })
971
- .map((obj: any) => `\n${obj?.keyword}: ${obj?.arg?.toJS(shiftState(state, code))}`)
972
- .join(', ');
973
- code += argsStr;
974
- if (Array.isArray(this.typeArguments) && this.typeArguments.length) {
975
- code += `,\n__typeArguments: ${JSON5.stringify(this.typeArguments)}`;
976
- }
977
- }
978
- code += '\n}';
979
- }
980
- code += '\n})';
981
- } else {
982
- if (this.isComponentLogic) {
983
- // 组件ref元素的对象没有qu dao的容错
984
- code += `this.$refs && this.$refs[\`${refName}\`] && this.$refs[\`${refName}\`].${this.calleeName} && this.$refs[\`${refName}\`].${this.calleeName}`;
985
- } else if (calleeNamespace === 'nasl.ui' || calleeNamespace === 'nasl.util') {
986
- switch (this.calleeName) {
987
- case 'showMessage':
988
- code += `this.$toast.show`;
989
- break;
990
- case 'consoleLog':
991
- code += `console.log`;
992
- break;
993
- case 'jsonSerialize':
994
- code += `JSON.stringify`;
995
- break;
996
- case 'jsonDeserialize':
997
- code += `JSON.parse`;
998
- break;
999
- }
1000
- } else if (calleeNamespace === 'nasl.browser' || calleeNamespace === 'nasl.auth' || calleeNamespace === 'nasl.configuration' || calleeNamespace === 'nasl.process' || calleeNamespace === 'nasl.io') {
1001
- code += `this.$global.${this.calleeName}`;
1002
- } else if (isFrontendLibrary) {
1003
- code += `this.$library['${extensionName}'].${this.calleeName}`;
1004
- } else {
1005
- code += `this.${this.calleeName}`;
1006
- }
1007
- if (calleeNamespace === 'nasl.process' || calleeNamespace === 'nasl.auth') {
1008
- code += '({';
1009
- this.arguments?.filter((arg) => arg?.expression)
1010
- .forEach((arg, index) => {
1011
- code += `${arg.keyword}: ${arg?.toJS(shiftState(state, code))}`;
1012
- if (index !== this.arguments?.length - 1)
1013
- code += ', ';
1014
- });
1015
- code += '})';
1016
- } else {
1017
- code += '(';
1018
- const needToString = ['showMessage', 'consoleLog'].includes(this.calleeName);
1019
- if (needToString) {
1020
- code += `this.$utils['ToString'](`;
1021
- }
1022
- if (Array.isArray(completeArguments) && completeArguments.length) {
1023
- completeArguments.forEach((arg, index) => {
1024
- code += arg?.toJS(shiftState(state, code));
1025
- if (index !== completeArguments?.length - 1)
1026
- code += ', ';
1027
- });
1028
- if (needToString) {
1029
- const arg = this.arguments[0];
1030
- const argTypeAnnotation = (arg as any).typeAnnotation || arg.__TypeAnnotation;
1031
- if (argTypeAnnotation) {
1032
- code += `, '${argTypeAnnotation?.sortedTypeKey}'`;
1033
- }
1034
- }
1035
- }
1036
- if (needToString) {
1037
- code += `)`;
1038
- }
1039
- code += ')';
1040
- }
926
+ if (!isProcessLogic) {
927
+ const argsStr = args
928
+ .map((arg, index) => {
929
+ const actualArg = completeArguments[index];
930
+ return {
931
+ keyword: arg?.name,
932
+ arg: actualArg,
933
+ };
934
+ })
935
+ .filter((item) => isShowArgument(item.arg))
936
+ .map((obj) => `\n${obj?.keyword}: ${obj?.arg?.toJS(shiftState(state, code))}`)
937
+ .join(', ');
938
+ code += argsStr;
939
+ if (Array.isArray(typeArguments) && typeArguments.length) {
940
+ code += `,\n__typeArguments: ${JSON5.stringify(this.typeArguments)}`;
941
+ }
1041
942
  }
1042
-
1043
- function handleMember(root: any): any {
1044
- if (!root)
1045
- return;
1046
- if (root.concept === 'Identifier') {
1047
- return {
1048
- concept: root.concept,
1049
- name: root.name,
1050
- value: `__@@${root.toJS()}@@__`,
1051
- expression: root.toJS(),
1052
- };
1053
- }
1054
- if (root.concept === 'MemberExpression') {
1055
- let concept = root.concept;
1056
- let value = root.value;
1057
- if (root?.object.name === '_') {
1058
- return {
1059
- concept,
1060
- name: root.name,
1061
- value,
1062
- object: root.object,
1063
- property: root.property,
1064
- };
1065
- }
1066
- let expression = root.toJS();
1067
- if (root.object?.namespace === 'app.enums') {
1068
- value = expression.replace(/^"(.+)"$/, '$1');
1069
- expression = undefined;
1070
- concept = 'StringLiteral';
1071
- } else {
1072
- value = `__@@${expression}@@__`;
1073
- }
1074
- return {
1075
- concept,
1076
- name: root.name,
1077
- value,
1078
- expression,
1079
- };
1080
- }
1081
-
1082
- let left;
1083
- if (root.concept === 'UnaryExpression') {
1084
- left = handleMember(root.argument);
1085
- } else {
1086
- left = handleMember(root.left);
943
+ code += '\n}';
944
+ }
945
+ code += '\n})';
946
+ } else {
947
+ if (isComponentLogic) {
948
+ // 组件ref元素的对象没有qu dao的容错
949
+ code += `this.$refs && this.$refs[\`${refName}\`] && this.$refs[\`${refName}\`].${this.calleeName} && this.$refs[\`${refName}\`].${this.calleeName}`;
950
+ } else if (calleeNamespace === 'nasl.ui' || calleeNamespace === 'nasl.util') {
951
+ switch (this.calleeName) {
952
+ case 'showMessage':
953
+ code += `this.$toast.show`;
954
+ break;
955
+ case 'consoleLog':
956
+ code += `console.log`;
957
+ break;
958
+ case 'jsonSerialize':
959
+ code += `JSON.stringify`;
960
+ break;
961
+ case 'jsonDeserialize':
962
+ code += `JSON.parse`;
963
+ break;
964
+ }
965
+ } else if (
966
+ calleeNamespace === 'nasl.browser' ||
967
+ calleeNamespace === 'nasl.auth' ||
968
+ calleeNamespace === 'nasl.configuration' ||
969
+ calleeNamespace === 'nasl.process' ||
970
+ calleeNamespace === 'nasl.io'
971
+ ) {
972
+ code += `this.$global.${this.calleeName}`;
973
+ } else if (calleeNamespace === 'nasl.event') {
974
+ code += `event && event.${this.calleeName} && event.${this.calleeName}`; // 防止万一event不存在
975
+ } else if (isFrontendLibrary) {
976
+ code += `this.$library['${extensionName}'].${this.calleeName}`;
977
+ } else {
978
+ code += `this.${this.calleeName}`;
979
+ }
980
+ if (calleeNamespace === 'nasl.process' || calleeNamespace === 'nasl.auth') {
981
+ code += '({';
982
+ this.arguments
983
+ ?.filter((arg) => arg?.expression)
984
+ .forEach((arg, index) => {
985
+ code += `${arg.keyword}: ${arg?.toJS(shiftState(state, code))}`;
986
+ if (index !== this.arguments?.length - 1) code += ', ';
987
+ });
988
+ code += '})';
989
+ } else {
990
+ code += '(';
991
+ const needToString = ['showMessage', 'consoleLog'].includes(this.calleeName);
992
+ if (needToString) {
993
+ code += `this.$utils['ToString'](`;
994
+ }
995
+ if (Array.isArray(completeArguments) && completeArguments.length) {
996
+ completeArguments.forEach((arg, index) => {
997
+ code += arg?.toJS(shiftState(state, code));
998
+ if (index !== completeArguments?.length - 1) code += ', ';
999
+ });
1000
+ if (needToString) {
1001
+ const arg = this.arguments[0];
1002
+ const argTypeAnnotation = (arg as any).typeAnnotation || arg.__TypeAnnotation;
1003
+ if (argTypeAnnotation) {
1004
+ code += `, '${argTypeAnnotation?.sortedTypeKey}'`;
1087
1005
  }
1088
- const right = handleMember(root.right);
1089
- return {
1090
- concept: root.concept,
1091
- name: root.name,
1092
- value: root.value,
1093
- expression: root.expression,
1094
- operator: root.operator,
1095
- left,
1096
- right,
1097
- };
1006
+ }
1098
1007
  }
1099
- const typeAnnotation = (this as any).typeAnnotation || this.__TypeAnnotation;
1100
- const needGenInitFromSchema = typeAnnotation && (
1101
- !['primitive', 'union'].includes(typeAnnotation.typeKind)
1102
- || typeAnnotation.typeName === 'DateTime'
1103
- );
1104
- if (needGenInitFromSchema) {
1105
- code = `this.$genInitFromSchema('${typeAnnotation?.sortedTypeKey}', ${code})`;
1008
+ if (needToString) {
1009
+ code += `)`;
1106
1010
  }
1107
1011
  code += ')';
1108
- return code;
1012
+ }
1109
1013
  }
1110
1014
 
1111
- toBrief(): string {
1112
- return this.arguments.map((a) => a.toBrief()).join('<br />');
1113
- }
1114
-
1115
- get useValidation() {
1116
- const {
1117
- validation,
1118
- rootNode,
1119
- } = this;
1120
-
1121
- return (
1122
- rootNode.preferenceMap.serverValidationRules === 'custom' &&
1123
- Boolean(validation)
1124
- );
1125
- }
1126
-
1127
- get useIife() {
1128
- return Boolean(this.handleError || this.useValidation);
1129
- }
1130
-
1131
- @withSourceMap()
1132
- toEmbeddedTS(state?: TranslatorState): string {
1133
- let code = '';
1134
-
1135
- const {
1136
- handleError,
1137
- calleeKey,
1138
- calleeName,
1139
- parentKey,
1140
- typeArguments,
1141
- tsCalleeNamespace,
1142
- completeArguments,
1143
- parentNode,
1144
- validation,
1145
- useIife,
1146
- useValidation,
1147
- arguments: logicArgs,
1148
- } = this;
1149
- /** 设置函数范型参数 */
1150
- const setTypeArguments = () => {
1151
- if (Array.isArray(typeArguments) && typeArguments.length) {
1152
- // 如果有内容
1153
- code += `<`;
1154
- typeArguments.forEach((arg, i, arr) => {
1155
- code += arg.toEmbeddedTS(shiftState(state, code, { tabSize: 0 }));
1156
- if (i !== arr.length - 1) {
1157
- code += ', ';
1158
- }
1159
- });
1160
- code += `>`;
1161
- }
1015
+ function handleMember(root: any): any {
1016
+ if (!root) return;
1017
+ if (root.concept === 'Identifier') {
1018
+ return {
1019
+ concept: root.concept,
1020
+ name: root.name,
1021
+ value: `__@@${root.toJS()}@@__`,
1022
+ expression: root.toJS(),
1162
1023
  };
1163
- /** 设置输入参数 */
1164
- const setInputParam = () => {
1165
- const paramRequired = ['showMessage', 'consoleLog'].includes(calleeName);
1166
- if ((tsCalleeNamespace.startsWith('elements') && tsCalleeNamespace.endsWith('logics')) || tsCalleeNamespace.startsWith('nasl.')) {
1167
- code += '(';
1168
- logicArgs.forEach((arg, index) => {
1169
- // 页面逻辑先都非必填
1170
- code += arg.toEmbeddedTS(shiftState(state, code), paramRequired);
1171
- if (index !== logicArgs.length - 1)
1172
- code += ', ';
1173
- });
1174
- code += ')';
1175
- } else {
1176
- if (['expression'].includes(parentKey) && this.getAncestor('BindAttribute').name === 'data-source' && (state as any)?.noNeedParams) {
1177
- return
1178
- }
1179
- if (completeArguments.length) {
1180
- code += '(';
1181
- completeArguments.forEach((arg, index) => {
1182
- // 取到是不是必填放入参数中
1183
- code += arg.toEmbeddedTS(shiftState(state, code), arg?.paramRequired);
1184
- if (index !== logicArgs.length - 1)
1185
- code += ', ';
1186
- });
1187
- code += ')';
1188
- } else {
1189
- code += '()';
1190
- }
1191
- }
1192
- };
1193
-
1194
- /** 设置表达式末尾分号 */
1195
- const setEndSemi = () => {
1196
- const { concept: parentConcept } = parentNode;
1197
- if (
1198
- !['test', 'patterns','returnExpression', 'expression'].includes(parentKey) &&
1199
- ![
1200
- 'Argument',
1201
- 'Assignment',
1202
- 'ForEachStatement',
1203
- 'SelectMembers',
1204
- 'UnaryExpression',
1205
- 'BinaryExpression',
1206
- 'StringInterpolation',
1207
- 'MemberExpression',
1208
- 'NewMap',
1209
- 'NewList',
1210
- ].includes(parentConcept)
1211
- ) {
1212
- code += ';';
1213
- }
1214
- };
1215
-
1216
- if (useIife) {
1217
- code += '(() =>{\nconst wrapper = ';
1218
-
1219
- if (handleError) {
1220
- code += 'nasl.util.autoHandleError(';
1221
- }
1222
-
1223
- if (useValidation) {
1224
- code += 'nasl.util.callLogicWithChecker(';
1225
- }
1226
-
1227
- code += calleeKey;
1228
- setTypeArguments();
1229
-
1230
- if (useValidation) {
1231
- code += ', (';
1232
- code += completeArguments.map((item) => item.keyword).join(', ');
1233
- code += ') => {\n';
1234
- code += validation.toEmbeddedTS(shiftState(state, code));
1235
- code += ';\n})';
1236
- }
1237
-
1238
- if (handleError) {
1239
- code += ')';
1240
- }
1241
-
1242
- code += ';\nreturn wrapper';
1243
- setInputParam();
1244
- code += ';\n})()';
1245
- } else {
1246
- code += calleeKey;
1247
- setTypeArguments();
1248
- setInputParam();
1024
+ }
1025
+ if (root.concept === 'MemberExpression') {
1026
+ let { concept } = root;
1027
+ let { value } = root;
1028
+ if (root?.object.name === '_') {
1029
+ return {
1030
+ concept,
1031
+ name: root.name,
1032
+ value,
1033
+ object: root.object,
1034
+ property: root.property,
1035
+ };
1249
1036
  }
1250
-
1251
- setEndSemi();
1252
-
1253
- return code;
1254
- }
1255
-
1256
- // 通过内容过去节点
1257
- getCallNode() {
1258
- let node;
1259
- // 如果是页面局部逻辑
1260
- if (!this.calleeNamespace && this.calleeName && this.view) {
1261
- node = this.view.logics.find((l) => l.name === this.calleeName);
1262
- } else if (this.calleeNamespace?.startsWith('nasl.')) {
1263
- // 如果是页面组件
1264
- node = getNaslNodeByNodeCallee(this.calleeNamespace, this.calleeName);
1037
+ let expression = root.toJS();
1038
+ if (root.object?.namespace === 'app.enums') {
1039
+ value = expression.replace(/^"(.+)"$/, '$1');
1040
+ expression = undefined;
1041
+ concept = 'StringLiteral';
1265
1042
  } else {
1266
- // 如果是其余app下自定义逻辑
1267
- try {
1268
- node = getNodeByNodeCallee(this.app, this.calleewholeKey, (key: any, tempPoint: any) => {
1269
- // 处理 NASL 中未定义的假的节点
1270
- if (key === tempPoint.name) {
1271
- return {
1272
- tempPoint,
1273
- state: 1,
1274
- };
1275
- }
1276
- const t = tempPoint[key];
1277
- return {
1278
- tempPoint: t,
1279
- state: Array.isArray(t) ? 2 : 1,
1280
- };
1281
- });
1282
- } catch (err) { }
1043
+ value = `__@@${expression}@@__`;
1283
1044
  }
1284
- return node;
1045
+ return {
1046
+ concept,
1047
+ name: root.name,
1048
+ value,
1049
+ expression,
1050
+ };
1051
+ }
1052
+
1053
+ let left;
1054
+ if (root.concept === 'UnaryExpression') {
1055
+ left = handleMember(root.argument);
1056
+ } else {
1057
+ left = handleMember(root.left);
1058
+ }
1059
+ const right = handleMember(root.right);
1060
+ return {
1061
+ concept: root.concept,
1062
+ name: root.name,
1063
+ value: root.value,
1064
+ expression: root.expression,
1065
+ operator: root.operator,
1066
+ left,
1067
+ right,
1068
+ };
1285
1069
  }
1286
-
1287
- /**
1288
- * 是否允许验证规则
1289
- * - 当前元素在前端,但是调用的函数在后端
1290
- */
1291
- enableValidation() {
1292
- const calledLogic = this.getCallNode();
1293
- return Boolean(this.view) && calledLogic && !calledLogic.view;
1070
+ const typeAnnotation = (this as any).typeAnnotation || this.__TypeAnnotation;
1071
+ const needGenInitFromSchema =
1072
+ typeAnnotation && (!['primitive', 'union'].includes(typeAnnotation.typeKind) || typeAnnotation.typeName === 'DateTime');
1073
+ if (needGenInitFromSchema) {
1074
+ code = `this.$genInitFromSchema('${typeAnnotation?.sortedTypeKey}', ${code})`;
1075
+ }
1076
+ code += ')';
1077
+ return code;
1078
+ }
1079
+
1080
+ toBrief(): string {
1081
+ return this.arguments.map((a) => a.toBrief()).join('<br />');
1082
+ }
1083
+
1084
+ get useValidation() {
1085
+ const { validation, rootNode } = this;
1086
+
1087
+ return rootNode?.preferenceMap.serverValidationRules === 'custom' && Boolean(validation);
1088
+ }
1089
+
1090
+ get useIife() {
1091
+ return Boolean(this.handleError || this.useValidation);
1092
+ }
1093
+
1094
+ @withSourceMap()
1095
+ toEmbeddedTS(state?: TranslatorState): string {
1096
+ let code = '';
1097
+
1098
+ const {
1099
+ handleError,
1100
+ calleeKey,
1101
+ calleeName,
1102
+ parentKey,
1103
+ typeArguments,
1104
+ tsCalleeNamespace,
1105
+ completeArguments,
1106
+ parentNode,
1107
+ validation,
1108
+ useIife,
1109
+ useValidation,
1110
+ arguments: logicArgs,
1111
+ } = this;
1112
+
1113
+ /** 设置函数范型参数 */
1114
+ const setTypeArguments = () => {
1115
+ if (Array.isArray(typeArguments) && typeArguments.length) {
1116
+ // 如果有内容
1117
+ code += `<`;
1118
+ typeArguments.forEach((arg, i, arr) => {
1119
+ code += arg.toEmbeddedTS(shiftState(state, code, { tabSize: 0 }));
1120
+ if (i !== arr.length - 1) {
1121
+ code += ', ';
1122
+ }
1123
+ });
1124
+ code += `>`;
1125
+ }
1126
+ };
1127
+ /** 设置输入参数 */
1128
+ const setInputParam = () => {
1129
+ const paramRequired = ['showMessage', 'consoleLog'].includes(calleeName);
1130
+ if ((tsCalleeNamespace.startsWith('elements') && tsCalleeNamespace.endsWith('logics')) || tsCalleeNamespace.startsWith('nasl.')) {
1131
+ code += '(';
1132
+ logicArgs.forEach((arg, index) => {
1133
+ // 页面逻辑先都非必填
1134
+ code += arg.toEmbeddedTS(shiftState(state, code), paramRequired);
1135
+ if (index !== logicArgs.length - 1) code += ', ';
1136
+ });
1137
+ code += ')';
1138
+ } else if (completeArguments.length) {
1139
+ code += '(';
1140
+ completeArguments.forEach((arg, index) => {
1141
+ // 取到是不是必填放入参数中
1142
+ code += arg.toEmbeddedTS(shiftState(state, code), arg?.paramRequired);
1143
+ if (index !== logicArgs.length - 1) code += ', ';
1144
+ });
1145
+ code += ')';
1146
+ } else {
1147
+ code += '()';
1148
+ }
1149
+ };
1150
+
1151
+ /** 设置表达式末尾分号 */
1152
+ const setEndSemi = () => {
1153
+ const { concept: parentConcept } = parentNode ?? {};
1154
+ if (
1155
+ !['test', 'patterns', 'returnExpression'].includes(parentKey) &&
1156
+ ![
1157
+ 'Argument',
1158
+ 'Assignment',
1159
+ 'ForEachStatement',
1160
+ 'SelectMembers',
1161
+ 'UnaryExpression',
1162
+ 'BinaryExpression',
1163
+ 'StringInterpolation',
1164
+ 'MemberExpression',
1165
+ 'NewMap',
1166
+ 'NewList',
1167
+ ].includes(parentConcept)
1168
+ ) {
1169
+ code += ';';
1170
+ }
1171
+ };
1172
+
1173
+ if (useIife) {
1174
+ code += '(() =>{\nconst wrapper = ';
1175
+
1176
+ if (handleError) {
1177
+ code += 'nasl.util.autoHandleError(';
1178
+ }
1179
+
1180
+ if (useValidation) {
1181
+ code += 'nasl.util.callLogicWithChecker(';
1182
+ }
1183
+
1184
+ code += calleeKey;
1185
+ setTypeArguments();
1186
+
1187
+ if (useValidation) {
1188
+ code += ', (';
1189
+ code += completeArguments.map((item) => item.keyword).join(', ');
1190
+ code += ') => {\n';
1191
+ code += validation.toEmbeddedTS(shiftState(state, code));
1192
+ code += ';\n})';
1193
+ }
1194
+
1195
+ if (handleError) {
1196
+ code += ')';
1197
+ }
1198
+
1199
+ code += ';\nreturn wrapper';
1200
+ setInputParam();
1201
+ code += ';\n})()';
1202
+ } else {
1203
+ code += calleeKey;
1204
+ setTypeArguments();
1205
+ setInputParam();
1294
1206
  }
1295
1207
 
1296
- // 可以设置默认值的节点
1297
- // 目前只开放了app下的,所以这些节点,查找引用吧默认值塞回来
1298
- get completeArguments() {
1299
- const node = this.getCallNode();
1300
- let logicParam: Param[] = [];
1301
- const Arguments: Argument[] = [];
1302
- if (node?.params) {
1303
- logicParam = node.params;
1304
- }
1305
- if (this.arguments?.length) {
1306
- this.arguments.forEach((arg, index) => {
1307
- const param = logicParam[index] || ({} as any);
1308
- // 打开了必填,
1309
- // 或者遗留问题,没有required = undefined 而且没有defaultValue,就是之前的必填项
1310
- arg.paramRequired = Boolean(param.required || (param.required === undefined && !param.defaultValue));
1311
- arg.paramTypeAnnotation = undefined;
1312
- arg.paramDefaultValue = undefined;
1313
- arg.keyword = param.name ?? arg.keyword;
1314
- // 取到是不是必填放入参数中
1315
- if (param && !arg.expression) {
1316
- // 非必填时 才会有默认值
1317
- arg.paramTypeAnnotation = param.typeAnnotation;
1318
- arg.paramDefaultValue = param.defaultValue;
1319
- }
1320
- Arguments.push(arg);
1321
- });
1322
- }
1323
- return Arguments;
1208
+ setEndSemi();
1209
+
1210
+ return code;
1211
+ }
1212
+
1213
+ @withSourceMap()
1214
+ toNaturalTS(state?: TranslatorState): string {
1215
+ const {
1216
+ handleError,
1217
+ calleeKey,
1218
+ calleeName,
1219
+ parentKey,
1220
+ typeArguments,
1221
+ tsCalleeNamespace,
1222
+ completeArguments,
1223
+ parentNode,
1224
+ validation,
1225
+ useIife,
1226
+ useValidation,
1227
+ arguments: logicArgs,
1228
+ } = this;
1229
+
1230
+ let code = calleeKey.replace('__elements', '$refs');
1231
+ if (/^app.+?\.entities\..+?logics/.test(code))
1232
+ code = code.replace(/^app.+?\.entities\.(.+?)\.logics/, '$1');
1233
+ /** 设置函数范型参数 */
1234
+ const setTypeArguments = () => {
1235
+ if (Array.isArray(typeArguments) && typeArguments.length) {
1236
+ // 如果有内容
1237
+ code += `<`;
1238
+ typeArguments.forEach((arg, i, arr) => {
1239
+ code += arg.toNaturalTS(shiftState(state, code, { tabSize: 0 }));
1240
+ if (i !== arr.length - 1) {
1241
+ code += ', ';
1242
+ }
1243
+ });
1244
+ code += `>`;
1245
+ }
1246
+ };
1247
+ /** 设置输入参数 */
1248
+ const setInputParam = () => {
1249
+ const paramRequired = ['showMessage', 'consoleLog'].includes(calleeName);
1250
+ if ((tsCalleeNamespace.startsWith('elements') && tsCalleeNamespace.endsWith('logics')) || tsCalleeNamespace.startsWith('nasl.')) {
1251
+ code += '(';
1252
+ logicArgs.forEach((arg, index) => {
1253
+ // 页面逻辑先都非必填
1254
+ code += arg.toNaturalTS(shiftState(state, code), paramRequired);
1255
+ if (index !== logicArgs.length - 1) code += ', ';
1256
+ });
1257
+ code += ')';
1258
+ } else if (completeArguments.length) {
1259
+ code += '(';
1260
+ completeArguments.forEach((arg, index) => {
1261
+ // 取到是不是必填放入参数中
1262
+ code += arg.toNaturalTS(shiftState(state, code), arg?.paramRequired);
1263
+ if (index !== logicArgs.length - 1) code += ', ';
1264
+ });
1265
+ code += ')';
1266
+ } else {
1267
+ code += '()';
1268
+ }
1269
+ };
1270
+
1271
+ /** 设置表达式末尾分号 */
1272
+ const setEndSemi = () => {
1273
+ const { concept: parentConcept } = parentNode ?? {};
1274
+ if (
1275
+ !['test', 'patterns', 'returnExpression'].includes(parentKey) &&
1276
+ ![
1277
+ 'Argument',
1278
+ 'Assignment',
1279
+ 'ForEachStatement',
1280
+ 'SelectMembers',
1281
+ 'UnaryExpression',
1282
+ 'BinaryExpression',
1283
+ 'StringInterpolation',
1284
+ 'MemberExpression',
1285
+ 'NewMap',
1286
+ 'NewList',
1287
+ ].includes(parentConcept)
1288
+ ) {
1289
+ code += ';';
1290
+ }
1291
+ };
1292
+
1293
+ if (useIife) {
1294
+ code += '(() =>{\nconst wrapper = ';
1295
+
1296
+ if (handleError) {
1297
+ code += 'nasl.util.autoHandleError(';
1298
+ }
1299
+
1300
+ if (useValidation) {
1301
+ code += 'nasl.util.callLogicWithChecker(';
1302
+ }
1303
+
1304
+ code += calleeKey;
1305
+ setTypeArguments();
1306
+
1307
+ if (useValidation) {
1308
+ code += ', (';
1309
+ code += completeArguments.map((item) => item.keyword).join(', ');
1310
+ code += ') => {\n';
1311
+ code += validation.toNaturalTS(shiftState(state, code));
1312
+ code += ';\n})';
1313
+ }
1314
+
1315
+ if (handleError) {
1316
+ code += ')';
1317
+ }
1318
+
1319
+ code += ';\nreturn wrapper';
1320
+ setInputParam();
1321
+ code += ';\n})()';
1322
+ } else {
1323
+ code += calleeKey;
1324
+ setTypeArguments();
1325
+ setInputParam();
1324
1326
  }
1325
1327
 
1326
- static isSystem(node: CallLogic) {
1327
- // 如此处需要更新,则需同时更新 menu-poppup 组件下的 includesSystemLogic 校验逻辑
1328
- return ['nasl.process', 'nasl.browser', 'nasl.auth', 'nasl.configuration', 'nasl.io'].includes(node?.calleeNamespace);
1328
+ setEndSemi();
1329
+
1330
+ return code;
1331
+ }
1332
+
1333
+ // 通过内容过去节点
1334
+ getCallNode(): Logic | undefined {
1335
+ let node;
1336
+ // 如果是页面局部逻辑
1337
+ if (!this.calleeNamespace && this.calleeName && this.view) {
1338
+ node = this.view.logics.find((l) => l.name === this.calleeName);
1339
+ } else if (this.calleeNamespace?.startsWith('nasl.')) {
1340
+ // 如果是页面组件
1341
+ node = getNaslNodeByNodeCallee(this.calleeNamespace, this.calleeName);
1342
+ } else {
1343
+ // 如果是其余app下自定义逻辑
1344
+ try {
1345
+ node = getNodeByNodeCallee(this.app, this.calleewholeKey, (key: any, tempPoint: any) => {
1346
+ // 处理 NASL 中未定义的假的节点
1347
+ if (key === tempPoint.name) {
1348
+ return {
1349
+ tempPoint,
1350
+ state: 1,
1351
+ };
1352
+ }
1353
+ const t = tempPoint[key];
1354
+ return {
1355
+ tempPoint: t,
1356
+ state: Array.isArray(t) ? 2 : 1,
1357
+ };
1358
+ });
1359
+ } catch (err) { }
1329
1360
  }
1361
+ return node;
1362
+ }
1330
1363
 
1331
- public static getDefaultOptions() {
1332
- return {};
1364
+ /** 获取类型标注时的偏移量 */
1365
+ getQuickInfoOffset(detail: TSPPosition, code: string): TSPPosition {
1366
+ if (!this.useIife) {
1367
+ return { ...detail };
1333
1368
  }
1334
- //================================================================================
1335
- // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
1336
- // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
1337
- //================================================================================
1369
+
1370
+ const characterOffset = 8;
1371
+ const lines = code.split('\n');
1372
+ // @ts-ignore
1373
+ const lineOffset = lines.findLastIndex((item) => item.startsWith('return wrapper'));
1374
+
1375
+ return {
1376
+ line: detail.line + lineOffset,
1377
+ offset: characterOffset,
1378
+ };
1379
+ }
1380
+
1381
+ /**
1382
+ * 是否允许验证规则
1383
+ * - 当前元素在前端,但是调用的函数在后端
1384
+ */
1385
+ enableValidation() {
1386
+ const calledLogic = this.getCallNode();
1387
+ return Boolean(this.view) && calledLogic && !calledLogic.view;
1388
+ }
1389
+
1390
+ // 可以设置默认值的节点
1391
+ // 目前只开放了app下的,所以这些节点,查找引用吧默认值塞回来
1392
+ get completeArguments() {
1393
+ const callArguments = (this.arguments ?? []).slice();
1394
+ // 没有参数时可以跳过查询原逻辑标签
1395
+ const node = callArguments.length > 0 ? this.getCallNode() : undefined;
1396
+ const logicParams = node?.params ?? [];
1397
+
1398
+ callArguments.forEach((arg, index) => {
1399
+ const param = logicParams[index] || ({} as Param);
1400
+ // 打开了必填,
1401
+ // 或者遗留问题,没有required = undefined 而且没有defaultValue,就是之前的必填项
1402
+ arg.paramRequired = Boolean(param.required || (param.required === undefined && !param.defaultValue));
1403
+ arg.paramTypeAnnotation = undefined;
1404
+ arg.paramDefaultValue = undefined;
1405
+ // 强制更新当前的 keyword
1406
+ arg.keyword = param?.name && param.name.length > 0 ? param.name : arg.keyword;
1407
+ // 取到是不是必填放入参数中
1408
+ if (param && !arg.expression) {
1409
+ // 非必填时 才会有默认值
1410
+ arg.paramTypeAnnotation = param.typeAnnotation;
1411
+ arg.paramDefaultValue = param.defaultValue;
1412
+ }
1413
+ });
1414
+
1415
+ return callArguments;
1416
+ }
1417
+
1418
+ static isSystem(node: CallLogic) {
1419
+ // 如此处需要更新,则需同时更新 menu-poppup 组件下的 includesSystemLogic 校验逻辑
1420
+ return ['nasl.process', 'nasl.browser', 'nasl.auth', 'nasl.configuration', 'nasl.io'].includes(node?.calleeNamespace);
1421
+ }
1422
+
1423
+ public static getDefaultOptions() {
1424
+ return {};
1425
+ }
1426
+ //= ===============================================================================
1427
+ // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
1428
+ // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
1429
+ //= ===============================================================================
1338
1430
  }
1339
1431
 
1340
1432
  classMap.CallLogic = CallLogic;
1341
1433
  export default CallLogic;
1342
- //================================================================================
1434
+ //= ===============================================================================
1343
1435
  // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
1344
1436
  // 自动生成的代码已结束。下面可以手动编写。
1345
- //================================================================================
1437
+ //= ===============================================================================