@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,4 @@
1
+ import { v4 as uuidv4 } from 'uuid';
1
2
  import { TranslatorState, shiftState, withSourceMap, indent } from '../translator';
2
3
  import TypeAnnotation, { isUnion } from './TypeAnnotation__';
3
4
  import BooleanLiteral from './BooleanLiteral__';
@@ -6,15 +7,14 @@ import { formatEnums } from '../server/getMemberIdentifier';
6
7
  import Identifier from './Identifier__';
7
8
  import ViewElement, { ElementToVueOptions } from './ViewElement__';
8
9
 
9
- //================================================================================
10
+ //= ===============================================================================
10
11
  // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
11
12
  // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
12
- //================================================================================
13
+ //= ===============================================================================
13
14
  import { EventPayload, Params } from '../common/EventEmitter';
14
15
  import { concept, excludedInJSON, property } from '../decorators';
15
16
 
16
17
  import * as utils from '../utils';
17
- import { v4 as uuidv4 } from 'uuid';
18
18
  import BaseNode from '../common/BaseNode';
19
19
  import classMap from '../common/classMap';
20
20
  import LogicItem from './LogicItem__';
@@ -25,698 +25,767 @@ import MatchCase from './MatchCase__';
25
25
  */
26
26
  @concept('匹配')
27
27
  export class Match extends LogicItem {
28
- /**
29
- * 产品概念
30
- */
31
- @property()
32
- concept: 'Match' = 'Match';
33
-
34
- /**
35
- * 逻辑项
36
- */
37
- @property('LogicItem')
38
- expression: LogicItem = undefined;
39
-
40
- /**
41
- * 是否表达式形态
42
- */
43
- @property()
44
- isExpression: boolean = false;
45
-
46
- /**
47
- * 匹配分支列表
48
- */
49
- @property('MatchCase')
50
- cases: Array<MatchCase> = [];
51
-
52
-
53
-
54
- /**
55
- * @param source 需要合并的部分参数
56
- */
57
- constructor(source?: Partial<Match>) {
58
- source = Object.assign({}, Match.getDefaultOptions(), source);
59
- super(source);
60
- super.subConstructor(source);
61
- }
62
- getClassName() {
63
- return 'Match';
64
- }
65
-
66
- static from(source: any, parentNode?: any, parentKey?: string): Match {
67
- return super.from(source, parentNode, parentKey) as Match;
68
- }
69
-
70
-
71
-
72
-
73
-
74
-
75
-
76
-
77
- /**
78
- * 插入匹配分支
79
- * @internal
80
- * @param matchCaseOptions 匹配分支参数
81
- */
82
- _insertMatchCaseAt(matchCaseOptions: Partial<MatchCase>, index: number): MatchCase;
83
-
84
- /**
85
- * 插入匹配分支
86
- * @internal
87
- * @param matchCase 已有的匹配分支实例
88
- */
89
- _insertMatchCaseAt(matchCase: MatchCase, index: number): MatchCase;
90
-
91
- _insertMatchCaseAt(options: Partial<MatchCase> | MatchCase, index: number) {
92
- const matchCaseOptions: any = {};
93
- const relationOptions = { parentNode: this, parentKey: 'cases' };
94
- let matchCase: MatchCase;
95
- if (options instanceof MatchCase) {
96
- options.ensureDelete(); // 同一实例不支持多处存在
97
- matchCase = options;
98
- Object.assign(matchCase, relationOptions);
99
- } else {
100
- matchCase = MatchCase.from({
101
- ...matchCaseOptions,
102
- ...options,
103
- }, this, 'cases');
104
- }
105
- this.cases.splice(index, 0, matchCase);
106
- return matchCase;
107
- }
108
-
109
-
110
-
111
- /**
112
- * 插入匹配分支
113
- * @param matchCaseOptions 匹配分支参数
114
- */
115
- insertMatchCaseAt(matchCaseOptions: Partial<MatchCase>, index: number): MatchCase;
116
-
117
- /**
118
- * 插入匹配分支
119
- * @param matchCase 已有的匹配分支实例
120
- */
121
- insertMatchCaseAt(matchCase: MatchCase, index: number): MatchCase;
122
-
123
- insertMatchCaseAt(options: Partial<MatchCase> | MatchCase, index: number) {
124
- const node = this._insertMatchCaseAt(options as any, index);
125
- node.create({
126
- index,
127
- parentNode: this,
128
- parentKey: 'cases',
129
- });
130
- return node;
131
- }
132
-
133
-
134
-
135
- /**
136
- * 添加匹配分支
137
- * @internal
138
- * @param matchCaseOptions 匹配分支参数
139
- */
140
- _addMatchCase(matchCaseOptions: Partial<MatchCase>): MatchCase;
141
-
142
- /**
143
- * 添加匹配分支
144
- * @internal
145
- * @param matchCase 已有的匹配分支实例
146
- */
147
- _addMatchCase(matchCase: MatchCase): MatchCase;
148
-
149
- _addMatchCase(options?: Partial<MatchCase> | MatchCase) {
150
- const index = this.cases.length;
151
- return this._insertMatchCaseAt(options as any, index);
152
- }
153
-
154
-
155
-
156
- /**
157
- * 添加匹配分支
158
- * @param matchCaseOptions 匹配分支参数
159
- */
160
- addMatchCase(matchCaseOptions: Partial<MatchCase>): MatchCase;
161
-
162
- /**
163
- * 添加匹配分支
164
- * @param matchCase 已有的匹配分支实例
165
- */
166
- addMatchCase(matchCase: MatchCase): MatchCase;
167
-
168
- addMatchCase(options?: Partial<MatchCase> | MatchCase) {
169
- const node = this._addMatchCase(options as any);
170
- const index = this.cases.indexOf(node);
171
- node.create({
172
- index,
173
- parentNode: this,
174
- parentKey: 'cases',
175
- });
176
- return node;
28
+ /**
29
+ * 产品概念
30
+ */
31
+ @property()
32
+ concept: 'Match' = 'Match';
33
+
34
+ /**
35
+ * 逻辑项
36
+ */
37
+ @property('LogicItem')
38
+ expression: LogicItem = undefined;
39
+
40
+ /**
41
+ * 是否表达式形态
42
+ */
43
+ @property()
44
+ isExpression: boolean = false;
45
+
46
+ /**
47
+ * 匹配分支列表
48
+ */
49
+ @property('MatchCase')
50
+ cases: Array<MatchCase> = [];
51
+
52
+ /**
53
+ * @param source 需要合并的部分参数
54
+ */
55
+ constructor(source?: Partial<Match>) {
56
+ // @ts-ignore
57
+ source = { ...Match.getDefaultOptions(), ...source };
58
+ super(source);
59
+ super.subConstructor(source);
60
+ }
61
+
62
+ getClassName() {
63
+ return 'Match';
64
+ }
65
+
66
+ static from(source: any, parentNode?: any, parentKey?: string): Match {
67
+ return super.from(source, parentNode, parentKey) as Match;
68
+ }
69
+
70
+ /**
71
+ * 插入匹配分支
72
+ * @internal
73
+ * @param matchCaseOptions 匹配分支参数
74
+ */
75
+ _insertMatchCaseAt(matchCaseOptions: Partial<MatchCase>, index: number): MatchCase;
76
+
77
+ /**
78
+ * 插入匹配分支
79
+ * @internal
80
+ * @param matchCase 已有的匹配分支实例
81
+ */
82
+ _insertMatchCaseAt(matchCase: MatchCase, index: number): MatchCase;
83
+
84
+ _insertMatchCaseAt(options: Partial<MatchCase> | MatchCase, index: number) {
85
+ const matchCaseOptions: any = {};
86
+ const relationOptions = { parentNode: this, parentKey: 'cases' };
87
+ let matchCase: MatchCase;
88
+ if (options instanceof MatchCase) {
89
+ options.ensureDelete(); // 同一实例不支持多处存在
90
+ matchCase = options;
91
+ Object.assign(matchCase, relationOptions);
92
+ } else {
93
+ matchCase = MatchCase.from(
94
+ {
95
+ ...matchCaseOptions,
96
+ ...options,
97
+ },
98
+ this,
99
+ 'cases'
100
+ );
177
101
  }
178
-
179
-
180
-
181
-
182
- /**
183
- * 删除逻辑项
184
- * @param name 逻辑项名称
185
- */
186
- removeExpression(name: string): void;
187
-
188
- /**
189
- * 删除逻辑项
190
- * @param expression 已有的逻辑项实例
191
- */
192
- removeExpression(expression: LogicItem): void;
193
-
194
- removeExpression(options: string | LogicItem) {
195
- let expression: LogicItem;
196
- if (typeof options === 'string') {
197
- expression = this.expression;
198
- if (!expression) {
199
- throw new Error('找不到逻辑项 ' + options);
200
- }
201
- } else {
202
- expression = options;
203
- }
204
- return expression.delete();
205
- }
206
-
207
-
208
-
209
- /**
210
- * 删除匹配分支
211
- * @param matchCase 已有的匹配分支实例
212
- */
213
- removeMatchCaseInCases(matchCase: MatchCase): void;
214
-
215
- removeMatchCaseInCases(options: MatchCase) {
216
- let matchCase: MatchCase = options;
217
- return matchCase.delete();
218
- }
219
-
220
- __removeLogicItem(logicItem: LogicItem) {
221
- const parentKey = logicItem.parentKey;
222
- const params: Params = {
223
- parentNode: this,
224
- parentKey,
225
- index: -1,
226
- object: null,
227
- oldObject: logicItem,
228
- };
229
- if (parentKey) {
230
- params.parentKey = parentKey;
231
- if (Array.isArray((this as any)[parentKey])) {
232
- const index = (this as any)[parentKey].indexOf(logicItem);
233
- ~index && (this as any)[parentKey].splice(index, 1);
234
- params.index = index;
235
- } else if ((this as any)[parentKey] === logicItem) {
236
- params.index = 0;
237
- (this as any)[parentKey] = undefined;
238
- }
239
- }
240
- return params;
241
- }
242
-
243
- //================================================================================
244
- // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
245
- // 自动生成的代码已结束。下面可以手动编写。
246
- //================================================================================
247
- enumerableItems: Array<LogicItem | TypeAnnotation>
248
-
249
- get isEnumerable() {
250
- return !!this.enumerableItems?.length;
251
- }
252
-
253
- async cacheStatus() {
254
- this.enumerableItems = await this.getEnumerableItems();
255
- }
256
-
257
- /**
258
- * 是否允许新建case
259
- */
260
- get canAddCase() {
261
- const cases = this?.cases;
262
- if (Array.isArray(cases) && cases.length > 1) {
263
- const enumerableItems = this.enumerableItems;
264
- if (Array.isArray(enumerableItems)) {
265
- const map: any = {};
266
- cases.forEach((caseItem) => {
267
- const { patterns } = caseItem || {};
268
- if (Array.isArray(patterns)) {
269
- patterns.forEach((pattern) => {
270
- if (pattern instanceof TypeAnnotation) {
271
- const patternTypeKey = pattern.typeKey;
272
- map[patternTypeKey] = true;
273
- } else if (pattern instanceof MemberExpression || pattern instanceof BooleanLiteral) {
274
- const patternValue = pattern.getValue();
275
- map[patternValue] = true;
276
- }
277
- });
278
- }
279
- });
280
- const enumerableKeys = Object.keys(map);
281
- if (enumerableKeys.length === enumerableItems.length) {
282
- return false;
283
- }
284
- }
285
- }
286
- return true;
102
+ this.cases.splice(index, 0, matchCase);
103
+ return matchCase;
104
+ }
105
+
106
+ /**
107
+ * 插入匹配分支
108
+ * @param matchCaseOptions 匹配分支参数
109
+ */
110
+ insertMatchCaseAt(matchCaseOptions: Partial<MatchCase>, index: number): MatchCase;
111
+
112
+ /**
113
+ * 插入匹配分支
114
+ * @param matchCase 已有的匹配分支实例
115
+ */
116
+ insertMatchCaseAt(matchCase: MatchCase, index: number): MatchCase;
117
+
118
+ insertMatchCaseAt(options: Partial<MatchCase> | MatchCase, index: number) {
119
+ const node = this._insertMatchCaseAt(options as any, index);
120
+ node.create({
121
+ index,
122
+ parentNode: this,
123
+ parentKey: 'cases',
124
+ });
125
+ return node;
126
+ }
127
+
128
+ /**
129
+ * 添加匹配分支
130
+ * @internal
131
+ * @param matchCaseOptions 匹配分支参数
132
+ */
133
+ _addMatchCase(matchCaseOptions: Partial<MatchCase>): MatchCase;
134
+
135
+ /**
136
+ * 添加匹配分支
137
+ * @internal
138
+ * @param matchCase 已有的匹配分支实例
139
+ */
140
+ _addMatchCase(matchCase: MatchCase): MatchCase;
141
+
142
+ _addMatchCase(options?: Partial<MatchCase> | MatchCase) {
143
+ const index = this.cases.length;
144
+ return this._insertMatchCaseAt(options as any, index);
145
+ }
146
+
147
+ /**
148
+ * 添加匹配分支
149
+ * @param matchCaseOptions 匹配分支参数
150
+ */
151
+ addMatchCase(matchCaseOptions: Partial<MatchCase>): MatchCase;
152
+
153
+ /**
154
+ * 添加匹配分支
155
+ * @param matchCase 已有的匹配分支实例
156
+ */
157
+ addMatchCase(matchCase: MatchCase): MatchCase;
158
+
159
+ addMatchCase(options?: Partial<MatchCase> | MatchCase) {
160
+ const node = this._addMatchCase(options as any);
161
+ const index = this.cases.indexOf(node);
162
+ node.create({
163
+ index,
164
+ parentNode: this,
165
+ parentKey: 'cases',
166
+ });
167
+ return node;
168
+ }
169
+
170
+ /**
171
+ * 删除逻辑项
172
+ * @param name 逻辑项名称
173
+ */
174
+ removeExpression(name: string): void;
175
+
176
+ /**
177
+ * 删除逻辑项
178
+ * @param expression 已有的逻辑项实例
179
+ */
180
+ removeExpression(expression: LogicItem): void;
181
+
182
+ removeExpression(options: string | LogicItem) {
183
+ let expression: LogicItem;
184
+ if (typeof options === 'string') {
185
+ expression = this.expression;
186
+ if (!expression) {
187
+ throw new Error(`找不到逻辑项 ${options}`);
188
+ }
189
+ } else {
190
+ expression = options;
287
191
  }
288
-
289
- // 获取可枚举项
290
- async getEnumerableItems(typeAnnotation?: TypeAnnotation) {
291
- const expression = this.expression;
292
- let currTypeAnnotation = typeAnnotation;
293
- if (!currTypeAnnotation) {
294
- currTypeAnnotation = await expression?.getCurrentTypeAnnotation();
295
- }
296
- const { typeKind, typeNamespace, typeName, typeArguments } = currTypeAnnotation || {};
297
- if (typeKind === 'union' && Array.isArray(typeArguments)) {
298
- return typeArguments.map((typeArg) => {
299
- let typeArgJson: any = typeArg;
300
- if (typeArg instanceof TypeAnnotation) {
301
- typeArgJson = typeArg.toJSON();
302
- }
303
- return new TypeAnnotation(typeArgJson);
192
+ return expression.delete();
193
+ }
194
+
195
+ /**
196
+ * 删除匹配分支
197
+ * @param matchCase 已有的匹配分支实例
198
+ */
199
+ removeMatchCaseInCases(matchCase: MatchCase): void;
200
+
201
+ removeMatchCaseInCases(options: MatchCase) {
202
+ const matchCase: MatchCase = options;
203
+ return matchCase.delete();
204
+ }
205
+
206
+ __removeLogicItem(logicItem: LogicItem) {
207
+ const { parentKey } = logicItem;
208
+ const params: Params = {
209
+ parentNode: this,
210
+ parentKey,
211
+ index: -1,
212
+ object: null,
213
+ oldObject: logicItem,
214
+ };
215
+ if (parentKey) {
216
+ params.parentKey = parentKey;
217
+ if (Array.isArray((this as any)[parentKey])) {
218
+ const index = (this as any)[parentKey].indexOf(logicItem);
219
+ ~index && (this as any)[parentKey].splice(index, 1);
220
+ params.index = index;
221
+ } else if ((this as any)[parentKey] === logicItem) {
222
+ params.index = 0;
223
+ (this as any)[parentKey] = undefined;
224
+ }
225
+ }
226
+ return params;
227
+ }
228
+
229
+ //= ===============================================================================
230
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
231
+ // 自动生成的代码已结束。下面可以手动编写。
232
+ //= ===============================================================================
233
+ enumerableItems: Array<LogicItem | TypeAnnotation>;
234
+
235
+ get isEnumerable() {
236
+ return !!this.enumerableItems?.length;
237
+ }
238
+
239
+ async cacheStatus() {
240
+ this.enumerableItems = await this.getEnumerableItems();
241
+ }
242
+
243
+ /**
244
+ * 是否允许新建case
245
+ */
246
+ get canAddCase() {
247
+ const cases = this?.cases;
248
+ if (Array.isArray(cases) && cases.length > 1) {
249
+ const { enumerableItems } = this;
250
+ if (Array.isArray(enumerableItems)) {
251
+ const map: any = {};
252
+ cases.forEach((caseItem) => {
253
+ const { patterns } = caseItem || {};
254
+ if (Array.isArray(patterns)) {
255
+ patterns.forEach((pattern) => {
256
+ if (pattern instanceof TypeAnnotation) {
257
+ const patternTypeKey = pattern.typeKey;
258
+ map[patternTypeKey] = true;
259
+ } else if (pattern instanceof MemberExpression || pattern instanceof BooleanLiteral) {
260
+ const patternValue = pattern.getValue();
261
+ map[patternValue] = true;
262
+ }
304
263
  });
305
- } else if (typeKind === 'reference') {
306
- const nameArr = [typeName];
307
- if (typeNamespace) {
308
- nameArr.unshift(typeNamespace);
309
- }
310
- const typeNode = this.app.findNodeByCompleteName(nameArr.join('.')) || {};
311
- if (typeNode.concept === 'Enum') {
312
- const enums = formatEnums([typeNode]);
313
- const { children } = enums?.[0] || {};
314
- if (Array.isArray(children)) {
315
- return children.map((child) => child?.expression);
316
- }
317
- }
318
- } else if (typeKind === 'primitive' && typeNamespace === 'nasl.core' && typeName === 'Boolean') {
319
- return [
320
- new BooleanLiteral({
321
- value: 'true',
322
- }),
323
- new BooleanLiteral({
324
- value: 'false',
325
- }),
326
- ];
264
+ }
265
+ });
266
+ const enumerableKeys = Object.keys(map);
267
+ if (enumerableKeys.length === enumerableItems.length) {
268
+ return false;
327
269
  }
270
+ }
328
271
  }
329
-
330
- setIsExpression(isExpression: boolean) {
331
- const object = {
332
- isExpression,
333
- };
334
- this.update({
335
- ...object,
336
- });
272
+ return true;
273
+ }
274
+
275
+ // 获取可枚举项
276
+ async getEnumerableItems(typeAnnotation?: TypeAnnotation) {
277
+ const { expression } = this;
278
+ let currTypeAnnotation = typeAnnotation;
279
+ if (!currTypeAnnotation) {
280
+ currTypeAnnotation = await expression?.getCurrentTypeAnnotation();
337
281
  }
338
-
339
- /**
340
- * 设置逻辑项
341
- */
342
- setExpression(expression: LogicItem) {
343
- if (expression) {
344
- expression._delete();
345
- const relationOptions = { parentNode: this, parentKey: 'expression' };
346
- Object.assign(expression, relationOptions);
282
+ const { typeKind, typeNamespace, typeName, typeArguments } = currTypeAnnotation || {};
283
+ if (typeKind === 'union' && Array.isArray(typeArguments)) {
284
+ return typeArguments.map((typeArg) => {
285
+ let typeArgJson: any = typeArg;
286
+ if (typeArg instanceof TypeAnnotation) {
287
+ typeArgJson = typeArg.toJSON();
347
288
  }
348
- const object: any = {
349
- expression,
350
- };
351
- this.update({
352
- ...object,
353
- });
289
+ return new TypeAnnotation(typeArgJson);
290
+ });
354
291
  }
355
-
356
- // 设置 expression ,如果 expression 是可枚举类型,加上默认匹配条件
357
- async setExpressionWitchCase(expression: LogicItem) {
358
- const oldExpression = this.expression;
359
- this.app.emit('collect:start', {
360
- actionMsg: `修改${this?.name || this?.label || (this?.constructor as any)?.nodeTitle}`,
361
- });
362
- this.setExpression(expression);
363
- // expression切换并且自动生成分支
364
- await this.autoGenCases(oldExpression);
365
- this.app.emit('collect:end');
366
- }
367
-
368
- // 自动生成分支
369
- async autoGenCases(oldExpression: LogicItem) {
370
- const expression = this.expression;
371
- // 没有新的expression要保留分支不去更新
372
- if (!expression) {
373
- return;
292
+ if (typeKind === 'reference') {
293
+ const nameArr = [typeName];
294
+ if (typeNamespace) {
295
+ nameArr.unshift(typeNamespace);
296
+ }
297
+ const typeNode = this.app.findNodeByCompleteName(nameArr.join('.')) || {};
298
+ if (typeNode.concept === 'Enum') {
299
+ const enums = formatEnums([typeNode]);
300
+ const { children } = enums?.[0] || {};
301
+ if (Array.isArray(children)) {
302
+ return children.map((child) => child?.expression);
374
303
  }
375
- // 如果没有旧的oldExpression, 但是已有就分支了,就不去更新了
376
- if (!oldExpression && this.cases.length) {
377
- // 而且case的 patterns 有长度,就说明里面是有值的,就不去更新了,其余就去更新
378
- if (this.cases.some((item) => item.patterns.length)) {
379
- return;
380
- }
381
- }
382
- // 如果新旧nasl一样,就算类型变了也不重新计算
383
- if (JSON.stringify(oldExpression?.toJSON()) === JSON.stringify(expression?.toJSON())) {
384
- return;
385
- }
386
- const oldTypeAnnotation = oldExpression?.__TypeAnnotation;
387
- const currTypeAnnotation = await expression?.getCurrentTypeAnnotation();
304
+ }
305
+ } else if (typeKind === 'primitive' && typeNamespace === 'nasl.core' && typeName === 'Boolean') {
306
+ return [
307
+ new BooleanLiteral({
308
+ value: 'true',
309
+ }),
310
+ new BooleanLiteral({
311
+ value: 'false',
312
+ }),
313
+ ];
314
+ }
315
+ }
316
+
317
+ setIsExpression(isExpression: boolean) {
318
+ const object = {
319
+ isExpression,
320
+ };
321
+ this.update({
322
+ ...object,
323
+ });
324
+ }
325
+
326
+ /**
327
+ * 设置逻辑项
328
+ */
329
+ setExpression(expression: LogicItem) {
330
+ if (expression) {
331
+ expression._delete();
332
+ const relationOptions = { parentNode: this, parentKey: 'expression' };
333
+ Object.assign(expression, relationOptions);
334
+ }
335
+ const object: any = {
336
+ expression,
337
+ };
338
+ this.update({
339
+ ...object,
340
+ });
341
+ }
342
+
343
+ // 设置 expression ,如果 expression 是可枚举类型,加上默认匹配条件
344
+ async setExpressionWitchCase(expression: LogicItem) {
345
+ const oldExpression = this.expression;
346
+ this.app.emit('collect:start', {
347
+ actionMsg: `修改${this?.name || this?.label || (this?.constructor as any)?.nodeTitle}`,
348
+ });
349
+ this.setExpression(expression);
350
+ // expression切换并且自动生成分支
351
+ await this.autoGenCases(oldExpression);
352
+ this.app.emit('collect:end');
353
+ }
354
+
355
+ // 自动生成分支
356
+ async autoGenCases(oldExpression: LogicItem) {
357
+ const { expression } = this;
358
+ // 没有新的expression要保留分支不去更新
359
+ if (!expression) {
360
+ return;
361
+ }
362
+ // 如果没有旧的oldExpression, 但是已有就分支了,就不去更新了
363
+ if (!oldExpression && this.cases.length) {
364
+ // 而且case的 patterns 有长度,就说明里面是有值的,就不去更新了,其余就去更新
365
+ if (this.cases.some((item) => item.patterns.length)) {
366
+ return;
367
+ }
368
+ }
369
+ // 如果新旧nasl一样,就算类型变了也不重新计算
370
+ if (JSON.stringify(oldExpression?.toJSON()) === JSON.stringify(expression?.toJSON())) {
371
+ return;
372
+ }
373
+ const oldTypeAnnotation = oldExpression?.__TypeAnnotation;
374
+ const currTypeAnnotation = await expression?.getCurrentTypeAnnotation();
388
375
 
389
- // 如果nasl变了,但是新旧类型都是union就return
390
- if (currTypeAnnotation?.typeKind === 'union' && oldTypeAnnotation?.typeKind === 'union') {
391
- return;
392
- }
376
+ // 如果nasl变了,但是新旧类型都是union就return
377
+ if (currTypeAnnotation?.typeKind === 'union' && oldTypeAnnotation?.typeKind === 'union') {
378
+ return;
379
+ }
393
380
 
394
- // 如果不可枚举 变 不可枚举,都会保留分支
395
- // 原来不是 布尔类型 也不是枚举类型, 现在 也不是布尔类型 也不是枚举类型
396
- // 就满足了
397
- if (expression && oldExpression && currTypeAnnotation && oldTypeAnnotation) {
398
- const { typeName: oldTypeName, typeNamespace: oldTypeNamespace, typeKind: oldTypeKind } = oldTypeAnnotation;
399
- const { typeName, typeNamespace, typeKind } = currTypeAnnotation;
400
- // 类型的 name 和 namespace都有值,而且都不是 可枚举
401
- if (oldTypeName && oldTypeNamespace && typeName && typeNamespace && oldTypeName !== 'Boolean' && !oldTypeNamespace.endsWith('enums') && oldTypeKind !== 'union' && typeName !== 'Boolean' && !typeNamespace.endsWith('enums') && typeKind !== 'union') {
402
- return;
403
- } else if (oldTypeName && oldTypeNamespace && oldTypeName !== 'Boolean' && !oldTypeNamespace.endsWith('enums') && oldTypeKind !== 'union' && typeKind === 'anonymousStructure') {
404
- /**
405
- * 新旧都是匿名数据结构
406
- * 匿名到 可枚举
407
- * 可枚举到匿名 动
408
- * 匿名到 不可枚举 不动
409
- * 不可枚举到匿名 不动
410
- * 匿名到匿名 不动
411
- * 因为不能在match上不能直接 匿名数据结构替换匿名数据结构
412
- * 而且 匿名数据结构不能 直接换别的分支,所以下面的直留 不可枚举到匿名数据结构的情况
413
- * */
414
- // 不可枚举到匿名 不动
415
- return;
416
- } else if ((typeKind === 'anonymousStructure' && oldTypeKind === typeKind)) {
417
- // 匿名到匿名 不动
418
- return;
419
- }
420
- // else if (currTypeName && typeNamespace && currTypeName !== 'Boolean' && !typeNamespace.endsWith('enums') && oldTypeKind === 'anonymousStructure') {
421
- // // 匿名到 不可枚举 不动
422
- // return;
423
- // }
424
- }
381
+ // 如果不可枚举 变 不可枚举,都会保留分支
382
+ // 原来不是 布尔类型 也不是枚举类型, 现在 也不是布尔类型 也不是枚举类型
383
+ // 就满足了
384
+ if (expression && oldExpression && currTypeAnnotation && oldTypeAnnotation) {
385
+ const { typeName: oldTypeName, typeNamespace: oldTypeNamespace, typeKind: oldTypeKind } = oldTypeAnnotation;
386
+ const { typeName, typeNamespace, typeKind } = currTypeAnnotation;
387
+ // 类型的 name 和 namespace都有值,而且都不是 可枚举
388
+ if (
389
+ oldTypeName &&
390
+ oldTypeNamespace &&
391
+ typeName &&
392
+ typeNamespace &&
393
+ oldTypeName !== 'Boolean' &&
394
+ !oldTypeNamespace.endsWith('enums') &&
395
+ oldTypeKind !== 'union' &&
396
+ typeName !== 'Boolean' &&
397
+ !typeNamespace.endsWith('enums') &&
398
+ typeKind !== 'union'
399
+ ) {
400
+ return;
401
+ }
402
+ if (
403
+ oldTypeName &&
404
+ oldTypeNamespace &&
405
+ oldTypeName !== 'Boolean' &&
406
+ !oldTypeNamespace.endsWith('enums') &&
407
+ oldTypeKind !== 'union' &&
408
+ typeKind === 'anonymousStructure'
409
+ ) {
410
+ /**
411
+ * 新旧都是匿名数据结构
412
+ * 匿名到 可枚举 动
413
+ * 可枚举到匿名 动
414
+ * 匿名到 不可枚举 不动
415
+ * 不可枚举到匿名 不动
416
+ * 匿名到匿名 不动
417
+ * 因为不能在match上不能直接 匿名数据结构替换匿名数据结构
418
+ * 而且 匿名数据结构不能 直接换别的分支,所以下面的直留 不可枚举到匿名数据结构的情况
419
+ * */
420
+ // 不可枚举到匿名 不动
421
+ return;
422
+ }
423
+ if (typeKind === 'anonymousStructure' && oldTypeKind === typeKind) {
424
+ // 匿名到匿名 不动
425
+ return;
426
+ }
427
+ // else if (currTypeName && typeNamespace && currTypeName !== 'Boolean' && !typeNamespace.endsWith('enums') && oldTypeKind === 'anonymousStructure') {
428
+ // // 匿名到 不可枚举 不动
429
+ // return;
430
+ // }
431
+ }
425
432
 
426
- // 修改分支
427
- await this.changeGenCases();
433
+ // 修改分支
434
+ await this.changeGenCases();
435
+ }
436
+
437
+ // jflow缓存模式下的传过来参数
438
+ async autoGenCasesAST({ oldAst, cacheType }: any) {
439
+ let obj;
440
+ try {
441
+ obj = JSON.parse(oldAst);
442
+ } catch (err) {}
443
+ const oldExpression = LogicItem.from(obj);
444
+ oldExpression.__TypeAnnotation = cacheType;
445
+ await this.autoGenCases(oldExpression);
446
+ }
447
+
448
+ async changeGenCases() {
449
+ const { expression } = this;
450
+ const currTypeAnnotation = await expression?.getCurrentTypeAnnotation();
451
+ let cases: MatchCase[] = [];
452
+ let isMatchedTypeEnumable = false;
453
+ if (currTypeAnnotation) {
454
+ cases = [new MatchCase()];
455
+ const enumerableItems = await this.getEnumerableItems();
456
+ if (Array.isArray(enumerableItems) && enumerableItems.length) {
457
+ isMatchedTypeEnumable = true;
458
+ cases = enumerableItems.map(
459
+ (enumerableItem) =>
460
+ new MatchCase({
461
+ patterns: [enumerableItem],
462
+ isMatchedTypeEnumable,
463
+ })
464
+ );
465
+ }
428
466
  }
429
- // jflow缓存模式下的传过来参数
430
- async autoGenCasesAST({ oldAst, cacheType }: any) {
431
- let obj;
432
- try {
433
- obj = JSON.parse(oldAst);
434
- } catch (err) {
435
- }
436
- const oldExpression = LogicItem.from(obj);
437
- oldExpression.__TypeAnnotation = cacheType;
438
- await this.autoGenCases(oldExpression);
439
- }
440
- async changeGenCases() {
441
- const expression = this.expression;
442
- const currTypeAnnotation = await expression?.getCurrentTypeAnnotation();
443
- let cases: MatchCase[] = [];
444
- let isMatchedTypeEnumable = false;
445
- if (currTypeAnnotation) {
446
- cases = [new MatchCase()];
447
- const enumerableItems = await this.getEnumerableItems();
448
- if (Array.isArray(enumerableItems) && enumerableItems.length) {
449
- isMatchedTypeEnumable = true;
450
- cases = enumerableItems.map((enumerableItem) => new MatchCase({
451
- patterns: [enumerableItem],
452
- isMatchedTypeEnumable,
453
- }));
454
- }
455
- }
456
- // body的暂存数组
457
- const bodys: any[] = [];
458
- // 最后一项的body
459
- let lastCaseBody;
460
- if (Array.isArray(this.cases) && this.cases.length) {
461
- // 将原分支body中存在的内容拿出来
462
- this.cases.forEach((caseItem, index) => {
463
- const { body } = caseItem || {};
464
- if (Array.isArray(body) && body.length) {
465
- // “其他”分支单独处理
466
- if (index < this.cases.length - 1) {
467
- bodys.push({
468
- body,
469
- isMatchedTypeEnumable: currTypeAnnotation ? isMatchedTypeEnumable : true,
470
- });
471
- } else {
472
- lastCaseBody = body;
473
- }
474
- }
475
- });
476
- // 将原分支body中存在的内容拿出来赋到新的分支中去
477
- bodys.forEach(({ body, isMatchedTypeEnumable }, index) => {
478
- let caseItem = cases[index];
479
- if (!caseItem) {
480
- caseItem = new MatchCase({
481
- isMatchedTypeEnumable,
482
- });
483
- cases.push(caseItem);
484
- }
485
- caseItem.update({
486
- body,
487
- });
467
+ // body的暂存数组
468
+ const bodys: any[] = [];
469
+ // 最后一项的body
470
+ let lastCaseBody;
471
+ if (Array.isArray(this.cases) && this.cases.length) {
472
+ // 将原分支body中存在的内容拿出来
473
+ this.cases.forEach((caseItem, index) => {
474
+ const { body } = caseItem || {};
475
+ if (Array.isArray(body) && body.length) {
476
+ // “其他”分支单独处理
477
+ if (index < this.cases.length - 1) {
478
+ bodys.push({
479
+ body,
480
+ isMatchedTypeEnumable: currTypeAnnotation ? isMatchedTypeEnumable : true,
488
481
  });
482
+ } else {
483
+ lastCaseBody = body;
484
+ }
489
485
  }
490
- // 如果分支项存在时,加上“其他”项
491
- if (cases.length) {
492
- const otherCase = new MatchCase();
493
- // “其他”项body存在内容时,给新的分支上加上内容
494
- if (lastCaseBody) {
495
- otherCase.update({
496
- body: lastCaseBody,
497
- });
498
- }
499
- cases.push(otherCase);
486
+ });
487
+ // 将原分支body中存在的内容拿出来赋到新的分支中去
488
+ bodys.forEach(({ body, isMatchedTypeEnumable }, index) => {
489
+ let caseItem = cases[index];
490
+ if (!caseItem) {
491
+ caseItem = new MatchCase({
492
+ isMatchedTypeEnumable,
493
+ });
494
+ cases.push(caseItem);
500
495
  }
501
- this.update({
502
- cases,
496
+ caseItem.update({
497
+ body,
503
498
  });
499
+ });
504
500
  }
505
-
506
- public static getDefaultOptions() {
507
- return {
508
- label: '匹配',
509
- };
501
+ // 如果分支项存在时,加上“其他”项
502
+ if (cases.length) {
503
+ const otherCase = new MatchCase();
504
+ // “其他”项body存在内容时,给新的分支上加上内容
505
+ if (lastCaseBody) {
506
+ otherCase.update({
507
+ body: lastCaseBody,
508
+ });
509
+ }
510
+ cases.push(otherCase);
510
511
  }
511
-
512
- async isTypeMatching() {
513
- if (this.expression) {
514
- const typeAnnotation = await this.expression.getCurrentTypeAnnotation();
515
- const { typeKind, typeArguments } = typeAnnotation || {};
516
- if (typeKind === 'union' && Array.isArray(typeArguments)) {
517
- return true;
518
- }
519
- }
520
- return false;
512
+ this.update({
513
+ cases,
514
+ });
515
+ }
516
+
517
+ public static getDefaultOptions() {
518
+ return {
519
+ label: '匹配',
520
+ };
521
+ }
522
+
523
+ async isTypeMatching() {
524
+ if (this.expression) {
525
+ const typeAnnotation = await this.expression.getCurrentTypeAnnotation();
526
+ const { typeKind, typeArguments } = typeAnnotation || {};
527
+ if (typeKind === 'union' && Array.isArray(typeArguments)) {
528
+ return true;
529
+ }
521
530
  }
522
-
523
- onChange($event?: EventPayload): void {
524
- const { action, object, eventList } = $event || {};
525
- // expression修改时,通知tsserver,让tsserver重新生成ts文件,为了后续能获取expression的类型
526
- if (action === 'update' && object.hasOwnProperty('expression')) {
527
- (this.app as any)?.naslServer?.embeddedTSEmitter.emit('change', {
528
- value: eventList,
529
- });
530
- }
531
- this.emit('change', $event);
532
- }
533
-
534
-
535
- // 获取在页面中的名字
536
- get expressionNameInView() {
537
- const nameList: string[] = [];
538
- let node: BaseNode = this;
539
- while (node) {
540
- if (node === this) {
541
- nameList.unshift('viewMatchExpression');
542
- } else {
543
- nameList.unshift(node.name);
544
- }
545
- if (node.concept === 'ViewElement') {
546
- node = null;
547
- } else {
548
- nameList.unshift(node.parentKey);
549
- node = node.parentNode;
550
- }
551
- }
552
- return nameList.join('_').replace(/-/g, '_');
531
+ return false;
532
+ }
533
+
534
+ onChange($event?: EventPayload): void {
535
+ const { action, object, eventList } = $event || {};
536
+ // expression修改时,通知tsserver,让tsserver重新生成ts文件,为了后续能获取expression的类型
537
+ if (action === 'update' && object.hasOwnProperty('expression')) {
538
+ (this.app as any)?.naslServer?.embeddedTSEmitter.emit('change', {
539
+ value: eventList,
540
+ });
541
+ }
542
+ this.emit('change', $event);
543
+ }
544
+
545
+ // 获取在页面中的名字
546
+ get expressionNameInView() {
547
+ const nameList: string[] = [];
548
+ let node: BaseNode = this;
549
+ while (node) {
550
+ if (node === this) {
551
+ nameList.unshift('viewMatchExpression');
552
+ } else {
553
+ nameList.unshift(node.name);
554
+ }
555
+ if (node.concept === 'ViewElement') {
556
+ node = null;
557
+ } else {
558
+ nameList.unshift(node.parentKey);
559
+ node = node.parentNode;
560
+ }
561
+ }
562
+ return nameList.join('_').replace(/-/g, '_');
563
+ }
564
+
565
+ getViewMatchExpressionBuilder() {
566
+ return `gen${this.expressionNameInView}`;
567
+ }
568
+
569
+ getInViewMethod(state?: TranslatorState) {
570
+ const viewElement = this?.getAncestor('ViewElement');
571
+ const argsList = [];
572
+ let parent = viewElement?.parentNode;
573
+ let index = 0;
574
+ while (parent && parent.concept !== 'View') {
575
+ if ((parent as ViewElement).slotScope) {
576
+ argsList.unshift(index === 0 ? 'current' : `current${index}`);
577
+ index++;
578
+ }
579
+ parent = parent.parentNode;
553
580
  }
554
581
 
555
- getViewMatchExpressionBuilder() {
556
- return `gen${this.expressionNameInView}`;
582
+ let code = '';
583
+ code += `${this.getViewMatchExpressionBuilder()} (${argsList.join(', ')}) {\n`;
584
+ code += `return ${this.toJS()}`;
585
+ code += `;\n`;
586
+ code += '}';
587
+ return code;
588
+ }
589
+
590
+ setIsExpressionCustom(isExpression: boolean) {
591
+ if (isExpression === this.isExpression) {
592
+ return;
593
+ }
594
+ this.update({
595
+ isExpression,
596
+ });
597
+ this.cases.forEach((c) => {
598
+ c.update({
599
+ body: [],
600
+ });
601
+ });
602
+ }
603
+
604
+ toVue(state?: TranslatorState): string {
605
+ if (state?.finalCode === false) {
606
+ return this.toUI();
607
+ }
608
+ const viewElement = this?.getAncestor('ViewElement');
609
+ const argsList = [];
610
+ let parent = viewElement?.parentNode;
611
+ let index = 0;
612
+ while (parent && parent.concept !== 'View') {
613
+ if ((parent as ViewElement).slotScope) {
614
+ argsList.unshift(index === 0 ? 'current' : `current${index}`);
615
+ index++;
616
+ }
617
+ parent = parent.parentNode;
618
+ }
619
+ return `${this.getViewMatchExpressionBuilder()}(${argsList.join(', ')})`;
620
+
621
+ // let code = 'await (async () => {\n';
622
+ // if (this.expression && Array.isArray(this.cases)) {
623
+ // this.cases.forEach((item, index) => {
624
+ // code += item?.toJS?.(this.expression, index, this.cases.length);
625
+ // });
626
+ // }
627
+ // code += `})()`;
628
+ // return code;
629
+ }
630
+
631
+ toUI(state?: TranslatorState): string {
632
+ let code = '匹配 ';
633
+ if (this.expression) {
634
+ code += this.expression.toUI?.();
635
+ }
636
+ if (Array.isArray(this.cases)) {
637
+ code += ' { ';
638
+ this.cases.forEach((item, index) => {
639
+ code += item?.toUI?.();
640
+ });
641
+ code += '}';
642
+ }
643
+ return code;
644
+ }
645
+
646
+ toJS(state?: TranslatorState): string {
647
+ // let code = 'await (async () => {\n';
648
+ // if (this.expression && Array.isArray(this.cases)) {
649
+ // this.cases.forEach((item, index) => {
650
+ // code += item?.toJS?.(this.expression, index, this.cases.length);
651
+ // });
652
+ // }
653
+ // code += `})()`;
654
+ // return code;
655
+
656
+ let code = '';
657
+ // 祖先逻辑
658
+ const ancestorLogic = this.getAncestor('Logic');
659
+ if (this.isExpression || !ancestorLogic) {
660
+ if (ancestorLogic) {
661
+ code += 'await (async () => {\n';
662
+ } else {
663
+ code += '(() => {\n';
664
+ }
665
+ }
666
+ if (this.expression && Array.isArray(this.cases)) {
667
+ this.cases.forEach((item, index) => {
668
+ code += item?.toJS?.(this.expression, index, this.cases.length);
669
+ });
557
670
  }
671
+ if (this.isExpression || !ancestorLogic) {
672
+ code += '})()';
673
+ }
674
+ return code;
675
+ }
558
676
 
559
- getInViewMethod(state?: TranslatorState) {
560
- const viewElement = this?.getAncestor('ViewElement');
561
- const argsList = [];
562
- let parent = viewElement?.parentNode;
563
- let index = 0;
564
- while (parent && parent.concept !== 'View') {
565
- if ((parent as ViewElement).slotScope) {
566
- argsList.unshift(index === 0 ? 'current' : 'current' + index);
567
- index++;
568
- }
569
- parent = parent.parentNode;
570
- }
677
+ @withSourceMap()
678
+ toEmbeddedTS(state?: TranslatorState): string {
679
+ let code = '';
571
680
 
572
- let code = '';
573
- code += `${this.getViewMatchExpressionBuilder()} (${argsList.join(', ')}) {\n`;
574
- code += `return ${this.toJS()}`;
575
- code += `;\n`;
576
- code += '}';
577
- return code;
578
- }
579
-
580
- toVue(state?: TranslatorState): string {
581
- if (state?.finalCode === false) {
582
- return this.toUI();
583
- } else {
584
- const viewElement = this?.getAncestor('ViewElement');
585
- const argsList = [];
586
- let parent = viewElement?.parentNode;
587
- let index = 0;
588
- while (parent && parent.concept !== 'View') {
589
- if ((parent as ViewElement).slotScope) {
590
- argsList.unshift(index === 0 ? 'current' : 'current' + index);
591
- index++;
592
- }
593
- parent = parent.parentNode;
594
- }
595
- return `${this.getViewMatchExpressionBuilder()}(${argsList.join(', ')})`;
596
-
597
- // let code = 'await (async () => {\n';
598
- // if (this.expression && Array.isArray(this.cases)) {
599
- // this.cases.forEach((item, index) => {
600
- // code += item?.toJS?.(this.expression, index, this.cases.length);
601
- // });
602
- // }
603
- // code += `})()`;
604
- // return code;
605
- }
681
+ if (this.parentNode.concept === 'Logic') {
682
+ code += '\n';
606
683
  }
607
-
608
- toUI(state?: TranslatorState): string {
609
- let code = '匹配 ';
610
- if (this.expression) {
611
- code += this.expression.toUI?.();
612
- }
613
- if (Array.isArray(this.cases)) {
614
- code += ' { ';
615
- this.cases.forEach((item, index) => {
616
- code += item?.toUI?.();
617
- });
618
- code += '}';
619
- }
620
- return code;
621
- }
622
-
623
- toJS(state?: TranslatorState): string {
624
- //let code = 'await (async () => {\n';
625
- //if (this.expression && Array.isArray(this.cases)) {
626
- // this.cases.forEach((item, index) => {
627
- // code += item?.toJS?.(this.expression, index, this.cases.length);
628
- // });
629
- //}
630
- //code += `})()`;
631
- //return code;
632
-
633
- let code = '';
634
- // 祖先逻辑
635
- const ancestorLogic = this.getAncestor('Logic');
636
- if (this.isExpression || !ancestorLogic) {
637
- if (ancestorLogic) {
638
- code += 'await (async () => {\n';
639
- } else {
640
- code += '(() => {\n';
641
- }
642
- }
643
- if (this.expression && Array.isArray(this.cases)) {
644
- this.cases.forEach((item, index) => {
645
- code += item?.toJS?.(this.expression, index, this.cases.length);
646
- });
647
- }
648
- if (this.isExpression || !ancestorLogic) {
649
- code += '})()';
650
- }
651
- return code;
684
+ code += indent(state?.tabSize || 0);
685
+ code += '(() => { \n';
686
+ let parentCode: string;
687
+ if (this.expression) {
688
+ code += indent(state?.tabSize || 0);
689
+ // Identifier会使用自己本身的类型,来推导,因为右侧放的内容关系关系到内部类型推断
690
+ if (this.expression instanceof Identifier || this.expression instanceof MemberExpression) {
691
+ code += parentCode = this.expression.toEmbeddedTS(shiftState(state, code));
692
+ } else {
693
+ parentCode = '__matchExpression';
694
+ code += `let ${parentCode} = `;
695
+ code += this.expression.toEmbeddedTS(shiftState(state, code));
696
+ }
697
+ code += ';\n';
698
+ } else {
699
+ code += '__IDENTIFIER__;\n';
700
+ }
701
+ code += indent(state?.tabSize + 1 || 0);
702
+ code += ' function __MatchExpressionFuntion() {\n';
703
+
704
+ // 最后一项是else
705
+ this.cases.forEach((item, index) => {
706
+ // 如果是最后一项
707
+ code += item.toEmbeddedTS(shiftState(state, code, { tabSize: state?.tabSize || 0 }), index, parentCode);
708
+ });
709
+ code += indent(state?.tabSize || 0);
710
+ code += '};\n';
711
+ code += indent(state?.tabSize || 0);
712
+ code += 'return __MatchExpressionFuntion();\n';
713
+ code += indent(state?.tabSize || 0);
714
+ code += '})()';
715
+
716
+ if (
717
+ this.parentNode.concept !== 'Argument' &&
718
+ this.parentKey !== 'test' &&
719
+ this.parentKey !== 'patterns' &&
720
+ this.parentNode.concept !== 'Assignment' &&
721
+ this.parentNode.concept !== 'ForEachStatement' &&
722
+ this.parentNode.concept !== 'SelectMembers' &&
723
+ this.parentNode.concept !== 'UnaryExpression' &&
724
+ this.parentNode.concept !== 'BinaryExpression' &&
725
+ this.parentNode.concept !== 'StringInterpolation' &&
726
+ this.parentNode.concept !== 'MemberExpression' &&
727
+ !['NewMap', 'NewList'].includes(this.parentNode.concept) &&
728
+ this.parentKey !== 'returnExpression'
729
+ ) {
730
+ code += ';\n';
652
731
  }
732
+ return code;
733
+ }
653
734
 
654
- @withSourceMap()
655
- toEmbeddedTS(state?: TranslatorState): string {
656
- let code = '';
735
+ @withSourceMap()
736
+ toNaturalTS(state?: TranslatorState): string {
737
+ let code = '';
657
738
 
658
- if (this.parentNode.concept === 'Logic') {
659
- code += '\n';
660
- }
661
- code += indent((state?.tabSize || 0));
662
- code += '(() => { \n';
663
- let parentCode: string;
664
- if (this.expression) {
665
- code += indent((state?.tabSize || 0));
666
- // Identifier会使用自己本身的类型,来推导,因为右侧放的内容关系关系到内部类型推断
667
- if ((this.expression instanceof Identifier) || (this.expression instanceof MemberExpression)) {
668
- code += parentCode = this.expression.toEmbeddedTS(shiftState(state, code));
669
- } else {
670
- parentCode = '__matchExpression';
671
- code += `let ${parentCode} = `;
672
- code += this.expression.toEmbeddedTS(shiftState(state, code));
673
- }
674
- code += ';\n';
675
- } else {
676
- code += '__IDENTIFIER__;\n';
677
- }
678
- code += indent((state?.tabSize + 1 || 0));
679
- code += ' function __MatchExpressionFuntion() {\n';
739
+ if (this.parentNode?.concept === 'Logic') {
740
+ code += '\n';
741
+ }
742
+ code += indent(state.tabSize);
743
+ code += '(function match(_value) { \n';
744
+ let parentCode: string;
745
+ if (this.expression) {
746
+ code += indent(state.tabSize + 1);
747
+ // Identifier会使用自己本身的类型,来推导,因为右侧放的内容关系关系到内部类型推断
748
+ if ((this.expression instanceof Identifier) || (this.expression instanceof MemberExpression)) {
749
+ parentCode = this.expression.toNaturalTS(shiftState(state, code, { inline: true }));
750
+ } else {
751
+ parentCode = '_value';
752
+ }
753
+ }
680
754
 
681
- // 最后一项是else
682
- this.cases.forEach((item, index) => {
683
- // 如果是最后一项
684
- code += item.toEmbeddedTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) }), index, parentCode);
685
- });
686
- code += indent((state?.tabSize || 0));
687
- code += '};\n';
688
- code += indent((state?.tabSize || 0));
689
- code += 'return __MatchExpressionFuntion();\n';
690
- code += indent((state?.tabSize || 0));
691
- code += '})()';
692
-
693
- if (this.parentNode.concept !== 'Argument'
694
- && this.parentKey !== 'test'
695
- && this.parentKey !== 'patterns'
696
- && this.parentNode.concept !== 'Assignment'
697
- && this.parentNode.concept !== 'ForEachStatement'
698
- && this.parentNode.concept !== 'SelectMembers'
699
- && this.parentNode.concept !== 'UnaryExpression'
700
- && this.parentNode.concept !== 'BinaryExpression'
701
- && this.parentNode.concept !== 'StringInterpolation'
702
- && this.parentNode.concept !== 'MemberExpression'
703
- && !['NewMap', 'NewList'].includes(this.parentNode.concept)
704
- && this.parentKey !== 'returnExpression') {
705
- code += ';\n';
706
- }
707
- return code;
755
+ // 最后一项是else
756
+ this.cases.forEach((item, index) => {
757
+ // 如果是最后一项
758
+ code += item.toNaturalTS(shiftState(state, code, { tabSize: state.tabSize + 1 }), index, parentCode);
759
+ });
760
+ code += indent(state.tabSize);
761
+ code += `})(${this.expression.toNaturalTS(shiftState(state, code, { inline: true }))})`;
762
+
763
+ if (this.parentNode?.concept !== 'Argument'
764
+ && this.parentKey !== 'test'
765
+ && this.parentKey !== 'patterns'
766
+ && this.parentNode?.concept !== 'Assignment'
767
+ && this.parentNode?.concept !== 'ForEachStatement'
768
+ && this.parentNode?.concept !== 'SelectMembers'
769
+ && this.parentNode?.concept !== 'BinaryExpression'
770
+ && this.parentNode?.concept !== 'StringInterpolation'
771
+ && this.parentNode?.concept !== 'MemberExpression'
772
+ && !['NewMap', 'NewList'].includes(this.parentNode.concept)
773
+ && this.parentKey !== 'returnExpression') {
774
+ code += ';\n';
708
775
  }
776
+ return code;
777
+ }
709
778
 
710
- //================================================================================
711
- // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
712
- // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
713
- //================================================================================
779
+ //= ===============================================================================
780
+ // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
781
+ // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
782
+ //= ===============================================================================
714
783
  }
715
784
 
716
785
  classMap.Match = Match;
717
786
  export default Match;
718
- //================================================================================
787
+ //= ===============================================================================
719
788
  // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
720
789
  // 自动生成的代码已结束。下面可以手动编写。
721
- //================================================================================
790
+ //= ===============================================================================
722
791
  // @ts-check