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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (774) hide show
  1. package/out/automate/upgrader/2.20.js +1 -1
  2. package/out/automate/upgrader/2.20.js.map +1 -1
  3. package/out/bak/translator.js +11 -15
  4. package/out/bak/translator.js.map +1 -1
  5. package/out/breakpoint/generator/AfterStartNode.js +3 -1
  6. package/out/breakpoint/generator/AfterStartNode.js.map +1 -1
  7. package/out/breakpoint/generator/BeforeEndNode.js.map +1 -1
  8. package/out/breakpoint/generator/BreakpointNode.d.ts +1 -0
  9. package/out/breakpoint/generator/BreakpointNode.js +48 -15
  10. package/out/breakpoint/generator/BreakpointNode.js.map +1 -1
  11. package/out/breakpoint/generator/CallbackNode.d.ts +4 -0
  12. package/out/breakpoint/generator/CallbackNode.js +22 -0
  13. package/out/breakpoint/generator/CallbackNode.js.map +1 -0
  14. package/out/breakpoint/generator/FragmentNode.d.ts +4 -0
  15. package/out/breakpoint/generator/FragmentNode.js +18 -0
  16. package/out/breakpoint/generator/FragmentNode.js.map +1 -0
  17. package/out/breakpoint/generator/index.js +25 -4
  18. package/out/breakpoint/generator/index.js.map +1 -1
  19. package/out/breakpoint/shared/constants.d.ts +3 -0
  20. package/out/breakpoint/shared/constants.js +6 -1
  21. package/out/breakpoint/shared/constants.js.map +1 -1
  22. package/out/breakpoint/shared/operations.js.map +1 -1
  23. package/out/breakpoint/shared/socket.d.ts +1 -1
  24. package/out/breakpoint/shared/socket.js +36 -7
  25. package/out/breakpoint/shared/socket.js.map +1 -1
  26. package/out/breakpoint/shared/utils.d.ts +2 -0
  27. package/out/breakpoint/shared/utils.js +15 -2
  28. package/out/breakpoint/shared/utils.js.map +1 -1
  29. package/out/breakpoint/store/core.d.ts +48 -2
  30. package/out/breakpoint/store/core.js +58 -32
  31. package/out/breakpoint/store/core.js.map +1 -1
  32. package/out/breakpoint/store/dock.js +1 -1
  33. package/out/breakpoint/store/dock.js.map +1 -1
  34. package/out/common/BaseNode.d.ts +1 -1
  35. package/out/common/BaseNode.js +105 -51
  36. package/out/common/BaseNode.js.map +1 -1
  37. package/out/common/Command.d.ts +13 -2
  38. package/out/common/Command.js +37 -9
  39. package/out/common/Command.js.map +1 -1
  40. package/out/common/EventEmitter.js.map +1 -1
  41. package/out/common/Messager.d.ts +3 -3
  42. package/out/common/Messager.js +6 -7
  43. package/out/common/Messager.js.map +1 -1
  44. package/out/common/asyncFuncMap.js.map +1 -1
  45. package/out/concepts/Abort__.js +6 -5
  46. package/out/concepts/Abort__.js.map +1 -1
  47. package/out/concepts/Anchor__.d.ts +4 -3
  48. package/out/concepts/Anchor__.js +24 -7
  49. package/out/concepts/Anchor__.js.map +1 -1
  50. package/out/concepts/AnonymousFunction__.d.ts +22 -21
  51. package/out/concepts/AnonymousFunction__.js +48 -22
  52. package/out/concepts/AnonymousFunction__.js.map +1 -1
  53. package/out/concepts/App__.d.ts +421 -247
  54. package/out/concepts/App__.js +286 -54
  55. package/out/concepts/App__.js.map +1 -1
  56. package/out/concepts/Argument__.d.ts +4 -3
  57. package/out/concepts/Argument__.js +42 -11
  58. package/out/concepts/Argument__.js.map +1 -1
  59. package/out/concepts/Assignee__.d.ts +45 -45
  60. package/out/concepts/Assignee__.js +15 -15
  61. package/out/concepts/Assignee__.js.map +1 -1
  62. package/out/concepts/AssignmentLine__.js +6 -5
  63. package/out/concepts/AssignmentLine__.js.map +1 -1
  64. package/out/concepts/Assignment__.d.ts +7 -6
  65. package/out/concepts/Assignment__.js +40 -22
  66. package/out/concepts/Assignment__.js.map +1 -1
  67. package/out/concepts/Attribute__.d.ts +3 -3
  68. package/out/concepts/Attribute__.js +8 -7
  69. package/out/concepts/Attribute__.js.map +1 -1
  70. package/out/concepts/AuthInterface__.js +4 -3
  71. package/out/concepts/AuthInterface__.js.map +1 -1
  72. package/out/concepts/AuthLogicForCallInterface__.d.ts +15 -15
  73. package/out/concepts/AuthLogicForCallInterface__.js +46 -27
  74. package/out/concepts/AuthLogicForCallInterface__.js.map +1 -1
  75. package/out/concepts/AuthLogic__.js +27 -13
  76. package/out/concepts/AuthLogic__.js.map +1 -1
  77. package/out/concepts/BackendVariable__.d.ts +5 -5
  78. package/out/concepts/BackendVariable__.js +23 -26
  79. package/out/concepts/BackendVariable__.js.map +1 -1
  80. package/out/concepts/Backend__.d.ts +18 -18
  81. package/out/concepts/Backend__.js +13 -13
  82. package/out/concepts/Backend__.js.map +1 -1
  83. package/out/concepts/BatchAssignment__.d.ts +34 -33
  84. package/out/concepts/BatchAssignment__.js +83 -43
  85. package/out/concepts/BatchAssignment__.js.map +1 -1
  86. package/out/concepts/BinaryExpression__.d.ts +7 -6
  87. package/out/concepts/BinaryExpression__.js +60 -24
  88. package/out/concepts/BinaryExpression__.js.map +1 -1
  89. package/out/concepts/BindAttribute__.d.ts +37 -37
  90. package/out/concepts/BindAttribute__.js +101 -48
  91. package/out/concepts/BindAttribute__.js.map +1 -1
  92. package/out/concepts/BindDirective__.d.ts +13 -13
  93. package/out/concepts/BindDirective__.js +23 -21
  94. package/out/concepts/BindDirective__.js.map +1 -1
  95. package/out/concepts/BindEvent__.d.ts +28 -28
  96. package/out/concepts/BindEvent__.js +99 -48
  97. package/out/concepts/BindEvent__.js.map +1 -1
  98. package/out/concepts/BindStyle__.d.ts +14 -15
  99. package/out/concepts/BindStyle__.js +16 -16
  100. package/out/concepts/BindStyle__.js.map +1 -1
  101. package/out/concepts/BooleanLiteral__.d.ts +1 -0
  102. package/out/concepts/BooleanLiteral__.js +12 -5
  103. package/out/concepts/BooleanLiteral__.js.map +1 -1
  104. package/out/concepts/CallAuthInterface__.d.ts +15 -15
  105. package/out/concepts/CallAuthInterface__.js +23 -22
  106. package/out/concepts/CallAuthInterface__.js.map +1 -1
  107. package/out/concepts/CallConnector__.d.ts +11 -9
  108. package/out/concepts/CallConnector__.js +79 -36
  109. package/out/concepts/CallConnector__.js.map +1 -1
  110. package/out/concepts/CallFunction__.d.ts +17 -16
  111. package/out/concepts/CallFunction__.js +95 -63
  112. package/out/concepts/CallFunction__.js.map +1 -1
  113. package/out/concepts/CallInterface__.d.ts +9 -8
  114. package/out/concepts/CallInterface__.js +71 -30
  115. package/out/concepts/CallInterface__.js.map +1 -1
  116. package/out/concepts/CallLogic__.d.ts +20 -19
  117. package/out/concepts/CallLogic__.js +155 -52
  118. package/out/concepts/CallLogic__.js.map +1 -1
  119. package/out/concepts/CallQueryComponent__.d.ts +51 -51
  120. package/out/concepts/CallQueryComponent__.js +66 -63
  121. package/out/concepts/CallQueryComponent__.js.map +1 -1
  122. package/out/concepts/Comment__.d.ts +1 -0
  123. package/out/concepts/Comment__.js +13 -6
  124. package/out/concepts/Comment__.js.map +1 -1
  125. package/out/concepts/CompletionProperty__.d.ts +3 -3
  126. package/out/concepts/CompletionProperty__.js +8 -7
  127. package/out/concepts/CompletionProperty__.js.map +1 -1
  128. package/out/concepts/ConfigGroup__.d.ts +15 -15
  129. package/out/concepts/ConfigGroup__.js +9 -9
  130. package/out/concepts/ConfigGroup__.js.map +1 -1
  131. package/out/concepts/ConfigPropertyValue__.js +4 -3
  132. package/out/concepts/ConfigPropertyValue__.js.map +1 -1
  133. package/out/concepts/ConfigProperty__.d.ts +15 -15
  134. package/out/concepts/ConfigProperty__.js +10 -10
  135. package/out/concepts/ConfigProperty__.js.map +1 -1
  136. package/out/concepts/Configuration__.d.ts +15 -15
  137. package/out/concepts/Configuration__.js +9 -9
  138. package/out/concepts/Configuration__.js.map +1 -1
  139. package/out/concepts/Connection__.d.ts +166 -0
  140. package/out/concepts/Connection__.js +332 -0
  141. package/out/concepts/Connection__.js.map +1 -0
  142. package/out/concepts/ConnectorTrigger__.js +4 -3
  143. package/out/concepts/ConnectorTrigger__.js.map +1 -1
  144. package/out/concepts/Connector__.d.ts +66 -66
  145. package/out/concepts/Connector__.js +16 -15
  146. package/out/concepts/Connector__.js.map +1 -1
  147. package/out/concepts/Constant__.d.ts +3 -3
  148. package/out/concepts/Constant__.js +8 -7
  149. package/out/concepts/Constant__.js.map +1 -1
  150. package/out/concepts/DataElement__.d.ts +3 -3
  151. package/out/concepts/DataElement__.js +6 -5
  152. package/out/concepts/DataElement__.js.map +1 -1
  153. package/out/concepts/DataSource__.d.ts +15 -15
  154. package/out/concepts/DataSource__.js +55 -39
  155. package/out/concepts/DataSource__.js.map +1 -1
  156. package/out/concepts/DatabaseTypeAnnotation__.js +4 -3
  157. package/out/concepts/DatabaseTypeAnnotation__.js.map +1 -1
  158. package/out/concepts/Destination__.d.ts +12 -11
  159. package/out/concepts/Destination__.js +93 -36
  160. package/out/concepts/Destination__.js.map +1 -1
  161. package/out/concepts/End__.js +15 -13
  162. package/out/concepts/End__.js.map +1 -1
  163. package/out/concepts/EntityIndex__.d.ts +1 -1
  164. package/out/concepts/EntityIndex__.js +6 -5
  165. package/out/concepts/EntityIndex__.js.map +1 -1
  166. package/out/concepts/EntityProperty__.d.ts +8 -7
  167. package/out/concepts/EntityProperty__.js +39 -24
  168. package/out/concepts/EntityProperty__.js.map +1 -1
  169. package/out/concepts/Entity__.d.ts +31 -30
  170. package/out/concepts/Entity__.js +40 -16
  171. package/out/concepts/Entity__.js.map +1 -1
  172. package/out/concepts/EnumItem__.d.ts +1 -0
  173. package/out/concepts/EnumItem__.js +12 -5
  174. package/out/concepts/EnumItem__.js.map +1 -1
  175. package/out/concepts/Enum__.d.ts +9 -8
  176. package/out/concepts/Enum__.js +24 -11
  177. package/out/concepts/Enum__.js.map +1 -1
  178. package/out/concepts/Event__.d.ts +15 -15
  179. package/out/concepts/Event__.js +6 -5
  180. package/out/concepts/Event__.js.map +1 -1
  181. package/out/concepts/ExternalDestination__.d.ts +6 -6
  182. package/out/concepts/ExternalDestination__.js +12 -11
  183. package/out/concepts/ExternalDestination__.js.map +1 -1
  184. package/out/concepts/ForEachStatement__.d.ts +25 -24
  185. package/out/concepts/ForEachStatement__.js +101 -36
  186. package/out/concepts/ForEachStatement__.js.map +1 -1
  187. package/out/concepts/FrontendLibrary__.d.ts +30 -30
  188. package/out/concepts/FrontendLibrary__.js +12 -13
  189. package/out/concepts/FrontendLibrary__.js.map +1 -1
  190. package/out/concepts/FrontendVariable__.js +4 -3
  191. package/out/concepts/FrontendVariable__.js.map +1 -1
  192. package/out/concepts/Frontend__.d.ts +64 -65
  193. package/out/concepts/Frontend__.js +23 -27
  194. package/out/concepts/Frontend__.js.map +1 -1
  195. package/out/concepts/Function__.d.ts +64 -63
  196. package/out/concepts/Function__.js +49 -21
  197. package/out/concepts/Function__.js.map +1 -1
  198. package/out/concepts/Identifier__.js +37 -31
  199. package/out/concepts/Identifier__.js.map +1 -1
  200. package/out/concepts/IfStatement__.d.ts +20 -19
  201. package/out/concepts/IfStatement__.js +64 -34
  202. package/out/concepts/IfStatement__.js.map +1 -1
  203. package/out/concepts/Integration__.d.ts +3 -3
  204. package/out/concepts/Integration__.js +8 -7
  205. package/out/concepts/Integration__.js.map +1 -1
  206. package/out/concepts/InterfaceParam__.d.ts +3 -3
  207. package/out/concepts/InterfaceParam__.js +7 -6
  208. package/out/concepts/InterfaceParam__.js.map +1 -1
  209. package/out/concepts/Interface__.d.ts +33 -33
  210. package/out/concepts/Interface__.js +19 -20
  211. package/out/concepts/Interface__.js.map +1 -1
  212. package/out/concepts/JSBlock__.d.ts +1 -0
  213. package/out/concepts/JSBlock__.js +12 -5
  214. package/out/concepts/JSBlock__.js.map +1 -1
  215. package/out/concepts/JavaLogic__.js +10 -9
  216. package/out/concepts/JavaLogic__.js.map +1 -1
  217. package/out/concepts/LogicItem__.d.ts +6 -0
  218. package/out/concepts/LogicItem__.js +14 -5
  219. package/out/concepts/LogicItem__.js.map +1 -1
  220. package/out/concepts/Logic__.d.ts +80 -79
  221. package/out/concepts/Logic__.js +204 -58
  222. package/out/concepts/Logic__.js.map +1 -1
  223. package/out/concepts/MatchCase__.d.ts +39 -38
  224. package/out/concepts/MatchCase__.js +122 -37
  225. package/out/concepts/MatchCase__.js.map +1 -1
  226. package/out/concepts/Match__.d.ts +13 -11
  227. package/out/concepts/Match__.js +128 -60
  228. package/out/concepts/Match__.js.map +1 -1
  229. package/out/concepts/MemberExpression__.d.ts +7 -6
  230. package/out/concepts/MemberExpression__.js +52 -22
  231. package/out/concepts/MemberExpression__.js.map +1 -1
  232. package/out/concepts/MicroApp__.js +4 -3
  233. package/out/concepts/MicroApp__.js.map +1 -1
  234. package/out/concepts/Module__.d.ts +239 -155
  235. package/out/concepts/Module__.js +139 -33
  236. package/out/concepts/Module__.js.map +1 -1
  237. package/out/concepts/MsgTriggerEvent__.d.ts +15 -15
  238. package/out/concepts/MsgTriggerEvent__.js +6 -5
  239. package/out/concepts/MsgTriggerEvent__.js.map +1 -1
  240. package/out/concepts/MsgTriggerLauncher__.d.ts +23 -15
  241. package/out/concepts/MsgTriggerLauncher__.js +24 -5
  242. package/out/concepts/MsgTriggerLauncher__.js.map +1 -1
  243. package/out/concepts/Namespace__.d.ts +180 -180
  244. package/out/concepts/Namespace__.js +33 -34
  245. package/out/concepts/Namespace__.js.map +1 -1
  246. package/out/concepts/NewComposite__.d.ts +49 -48
  247. package/out/concepts/NewComposite__.js +164 -49
  248. package/out/concepts/NewComposite__.js.map +1 -1
  249. package/out/concepts/NewList__.d.ts +19 -18
  250. package/out/concepts/NewList__.js +29 -12
  251. package/out/concepts/NewList__.js.map +1 -1
  252. package/out/concepts/NewMap__.d.ts +34 -33
  253. package/out/concepts/NewMap__.js +81 -72
  254. package/out/concepts/NewMap__.js.map +1 -1
  255. package/out/concepts/New__.js +6 -5
  256. package/out/concepts/New__.js.map +1 -1
  257. package/out/concepts/NullLiteral__.js +6 -5
  258. package/out/concepts/NullLiteral__.js.map +1 -1
  259. package/out/concepts/NumericLiteral__.d.ts +4 -3
  260. package/out/concepts/NumericLiteral__.js +15 -8
  261. package/out/concepts/NumericLiteral__.js.map +1 -1
  262. package/out/concepts/OqlQueryComponent__.d.ts +4 -3
  263. package/out/concepts/OqlQueryComponent__.js +25 -16
  264. package/out/concepts/OqlQueryComponent__.js.map +1 -1
  265. package/out/concepts/OverriddenLogic__.d.ts +79 -79
  266. package/out/concepts/OverriddenLogic__.js +79 -58
  267. package/out/concepts/OverriddenLogic__.js.map +1 -1
  268. package/out/concepts/Param__.d.ts +6 -5
  269. package/out/concepts/Param__.js +66 -29
  270. package/out/concepts/Param__.js.map +1 -1
  271. package/out/concepts/Point__.js +4 -3
  272. package/out/concepts/Point__.js.map +1 -1
  273. package/out/concepts/ProcessComponent__.d.ts +30 -30
  274. package/out/concepts/ProcessComponent__.js +8 -7
  275. package/out/concepts/ProcessComponent__.js.map +1 -1
  276. package/out/concepts/ProcessElement__.d.ts +96 -96
  277. package/out/concepts/ProcessElement__.js +34 -34
  278. package/out/concepts/ProcessElement__.js.map +1 -1
  279. package/out/concepts/ProcessOutcome__.js +6 -5
  280. package/out/concepts/ProcessOutcome__.js.map +1 -1
  281. package/out/concepts/ProcessOutcomes__.js +6 -5
  282. package/out/concepts/ProcessOutcomes__.js.map +1 -1
  283. package/out/concepts/Process__.d.ts +75 -75
  284. package/out/concepts/Process__.js +33 -30
  285. package/out/concepts/Process__.js.map +1 -1
  286. package/out/concepts/QueryAggregateExpression__.d.ts +3 -3
  287. package/out/concepts/QueryAggregateExpression__.js +8 -7
  288. package/out/concepts/QueryAggregateExpression__.js.map +1 -1
  289. package/out/concepts/QueryFieldExpression__.js +7 -6
  290. package/out/concepts/QueryFieldExpression__.js.map +1 -1
  291. package/out/concepts/QueryFromExpression__.d.ts +8 -8
  292. package/out/concepts/QueryFromExpression__.js +8 -7
  293. package/out/concepts/QueryFromExpression__.js.map +1 -1
  294. package/out/concepts/QueryGroupByExpression__.d.ts +3 -3
  295. package/out/concepts/QueryGroupByExpression__.js +9 -10
  296. package/out/concepts/QueryGroupByExpression__.js.map +1 -1
  297. package/out/concepts/QueryJoinExpression__.d.ts +23 -23
  298. package/out/concepts/QueryJoinExpression__.js +11 -10
  299. package/out/concepts/QueryJoinExpression__.js.map +1 -1
  300. package/out/concepts/QueryLimitExpression__.d.ts +6 -6
  301. package/out/concepts/QueryLimitExpression__.js +9 -8
  302. package/out/concepts/QueryLimitExpression__.js.map +1 -1
  303. package/out/concepts/QueryOrderByExpression__.d.ts +6 -6
  304. package/out/concepts/QueryOrderByExpression__.js +9 -8
  305. package/out/concepts/QueryOrderByExpression__.js.map +1 -1
  306. package/out/concepts/QuerySelectExpression__.d.ts +30 -30
  307. package/out/concepts/QuerySelectExpression__.js +9 -8
  308. package/out/concepts/QuerySelectExpression__.js.map +1 -1
  309. package/out/concepts/Rect__.js +4 -3
  310. package/out/concepts/Rect__.js.map +1 -1
  311. package/out/concepts/Return__.d.ts +4 -3
  312. package/out/concepts/Return__.js +37 -18
  313. package/out/concepts/Return__.js.map +1 -1
  314. package/out/concepts/Role__.js +9 -9
  315. package/out/concepts/Role__.js.map +1 -1
  316. package/out/concepts/SelectMembers__.d.ts +18 -18
  317. package/out/concepts/SelectMembers__.js +10 -9
  318. package/out/concepts/SelectMembers__.js.map +1 -1
  319. package/out/concepts/Slot__.d.ts +3 -3
  320. package/out/concepts/Slot__.js +6 -5
  321. package/out/concepts/Slot__.js.map +1 -1
  322. package/out/concepts/SqlQueryComponent__.d.ts +4 -3
  323. package/out/concepts/SqlQueryComponent__.js +21 -12
  324. package/out/concepts/SqlQueryComponent__.js.map +1 -1
  325. package/out/concepts/Start__.js +6 -5
  326. package/out/concepts/Start__.js.map +1 -1
  327. package/out/concepts/StringInterpolation__.d.ts +16 -15
  328. package/out/concepts/StringInterpolation__.js +37 -14
  329. package/out/concepts/StringInterpolation__.js.map +1 -1
  330. package/out/concepts/StringLiteral__.d.ts +1 -0
  331. package/out/concepts/StringLiteral__.js +13 -8
  332. package/out/concepts/StringLiteral__.js.map +1 -1
  333. package/out/concepts/StructureProperty__.d.ts +4 -3
  334. package/out/concepts/StructureProperty__.js +22 -9
  335. package/out/concepts/StructureProperty__.js.map +1 -1
  336. package/out/concepts/Structure__.d.ts +31 -30
  337. package/out/concepts/Structure__.js +27 -15
  338. package/out/concepts/Structure__.js.map +1 -1
  339. package/out/concepts/SwitchCase__.d.ts +12 -11
  340. package/out/concepts/SwitchCase__.js +69 -31
  341. package/out/concepts/SwitchCase__.js.map +1 -1
  342. package/out/concepts/SwitchStatement__.d.ts +9 -8
  343. package/out/concepts/SwitchStatement__.js +27 -7
  344. package/out/concepts/SwitchStatement__.js.map +1 -1
  345. package/out/concepts/Theme__.js +4 -3
  346. package/out/concepts/Theme__.js.map +1 -1
  347. package/out/concepts/Transactional__.js +4 -3
  348. package/out/concepts/Transactional__.js.map +1 -1
  349. package/out/concepts/TriggerEvent__.d.ts +15 -15
  350. package/out/concepts/TriggerEvent__.js +6 -5
  351. package/out/concepts/TriggerEvent__.js.map +1 -1
  352. package/out/concepts/TriggerLauncher__.d.ts +15 -10
  353. package/out/concepts/TriggerLauncher__.js +54 -32
  354. package/out/concepts/TriggerLauncher__.js.map +1 -1
  355. package/out/concepts/TypeAnnotation__.d.ts +28 -27
  356. package/out/concepts/TypeAnnotation__.js +144 -124
  357. package/out/concepts/TypeAnnotation__.js.map +1 -1
  358. package/out/concepts/TypeParam__.d.ts +1 -0
  359. package/out/concepts/TypeParam__.js +12 -5
  360. package/out/concepts/TypeParam__.js.map +1 -1
  361. package/out/concepts/UnaryExpression__.d.ts +4 -3
  362. package/out/concepts/UnaryExpression__.js +31 -20
  363. package/out/concepts/UnaryExpression__.js.map +1 -1
  364. package/out/concepts/Unparsed__.d.ts +1 -0
  365. package/out/concepts/Unparsed__.js +12 -5
  366. package/out/concepts/Unparsed__.js.map +1 -1
  367. package/out/concepts/UseComponent__.js +4 -3
  368. package/out/concepts/UseComponent__.js.map +1 -1
  369. package/out/concepts/ValidationRule__.d.ts +14 -14
  370. package/out/concepts/ValidationRule__.js +19 -17
  371. package/out/concepts/ValidationRule__.js.map +1 -1
  372. package/out/concepts/Variable__.d.ts +4 -3
  373. package/out/concepts/Variable__.js +39 -23
  374. package/out/concepts/Variable__.js.map +1 -1
  375. package/out/concepts/ViewBlock__.js +4 -3
  376. package/out/concepts/ViewBlock__.js.map +1 -1
  377. package/out/concepts/ViewComponent__.d.ts +90 -90
  378. package/out/concepts/ViewComponent__.js +16 -15
  379. package/out/concepts/ViewComponent__.js.map +1 -1
  380. package/out/concepts/ViewElement__.d.ts +91 -86
  381. package/out/concepts/ViewElement__.js +218 -146
  382. package/out/concepts/ViewElement__.js.map +1 -1
  383. package/out/concepts/View__.d.ts +92 -92
  384. package/out/concepts/View__.js +135 -60
  385. package/out/concepts/View__.js.map +1 -1
  386. package/out/concepts/WhileStatement__.d.ts +12 -11
  387. package/out/concepts/WhileStatement__.js +46 -23
  388. package/out/concepts/WhileStatement__.js.map +1 -1
  389. package/out/concepts/index__.d.ts +2 -1
  390. package/out/concepts/index__.js +2 -1
  391. package/out/concepts/index__.js.map +1 -1
  392. package/out/concepts/types__.d.ts +2 -1
  393. package/out/decorators/index.d.ts +1 -1
  394. package/out/decorators/index.js +20 -7
  395. package/out/decorators/index.js.map +1 -1
  396. package/out/decorators/promise.d.ts +7 -0
  397. package/out/decorators/promise.js +28 -0
  398. package/out/decorators/promise.js.map +1 -0
  399. package/out/enums/KEYWORDS.js.map +1 -1
  400. package/out/enums/LEVEL_NAME_MAP.js.map +1 -1
  401. package/out/generator/compileComponent.js.map +1 -1
  402. package/out/generator/genBundleFiles.d.ts +4 -1
  403. package/out/generator/genBundleFiles.js +15 -11
  404. package/out/generator/genBundleFiles.js.map +1 -1
  405. package/out/generator/genHash.js.map +1 -1
  406. package/out/generator/genMetaData.js +12 -8
  407. package/out/generator/genMetaData.js.map +1 -1
  408. package/out/generator/genReleaseBody.js +33 -35
  409. package/out/generator/genReleaseBody.js.map +1 -1
  410. package/out/generator/microApp.js +2 -1
  411. package/out/generator/microApp.js.map +1 -1
  412. package/out/generator/permission.js +16 -14
  413. package/out/generator/permission.js.map +1 -1
  414. package/out/generator/styleReplacer.js +4 -7
  415. package/out/generator/styleReplacer.js.map +1 -1
  416. package/out/index.d.ts +0 -2
  417. package/out/index.js +0 -3
  418. package/out/index.js.map +1 -1
  419. package/out/manager/diagnostic.d.ts +1 -1
  420. package/out/manager/diagnostic.js.map +1 -1
  421. package/out/manager/stepRecorder.js +13 -9
  422. package/out/manager/stepRecorder.js.map +1 -1
  423. package/out/natural/RequirementAnalyzer.d.ts +22 -0
  424. package/out/natural/RequirementAnalyzer.js +196 -0
  425. package/out/natural/RequirementAnalyzer.js.map +1 -0
  426. package/out/natural/RequirementExecutor.d.ts +51 -0
  427. package/out/natural/RequirementExecutor.js +692 -0
  428. package/out/natural/RequirementExecutor.js.map +1 -0
  429. package/out/natural/componentData.d.ts +31 -0
  430. package/out/natural/componentData.js +85 -0
  431. package/out/natural/componentData.js.map +1 -0
  432. package/out/natural/genNaturalTS.d.ts +3 -0
  433. package/out/natural/genNaturalTS.js +76 -0
  434. package/out/natural/genNaturalTS.js.map +1 -0
  435. package/out/natural/index.d.ts +4 -0
  436. package/out/natural/index.js +21 -0
  437. package/out/natural/index.js.map +1 -0
  438. package/out/natural/knowledgeMap.d.ts +4 -0
  439. package/out/natural/knowledgeMap.js +40 -0
  440. package/out/natural/knowledgeMap.js.map +1 -0
  441. package/out/natural/naslStdlibMap.d.ts +2 -0
  442. package/out/natural/naslStdlibMap.js +26 -0
  443. package/out/natural/naslStdlibMap.js.map +1 -0
  444. package/out/natural/transformTSCode.d.ts +7 -0
  445. package/out/natural/transformTSCode.js +760 -0
  446. package/out/natural/transformTSCode.js.map +1 -0
  447. package/out/sentry/index.d.ts +2 -1
  448. package/out/sentry/index.js.map +1 -1
  449. package/out/server/createUiTs.js +28 -16
  450. package/out/server/createUiTs.js.map +1 -1
  451. package/out/server/entity2LogicNamespace.js +24 -22
  452. package/out/server/entity2LogicNamespace.js.map +1 -1
  453. package/out/server/event.js.map +1 -1
  454. package/out/server/extendBaseNode.js +55 -70
  455. package/out/server/extendBaseNode.js.map +1 -1
  456. package/out/server/formatTsUtils.js +46 -50
  457. package/out/server/formatTsUtils.js.map +1 -1
  458. package/out/server/getConnector.d.ts +3 -3
  459. package/out/server/getConnector.js +7 -8
  460. package/out/server/getConnector.js.map +1 -1
  461. package/out/server/getExtensionModules.js +2 -2
  462. package/out/server/getExtensionModules.js.map +1 -1
  463. package/out/server/getFunctions.js.map +1 -1
  464. package/out/server/getInterfaces.js.map +1 -1
  465. package/out/server/getLogging.js.map +1 -1
  466. package/out/server/getLogics.d.ts +1 -1
  467. package/out/server/getLogics.js +34 -16
  468. package/out/server/getLogics.js.map +1 -1
  469. package/out/server/getMemberIdentifier.js +13 -10
  470. package/out/server/getMemberIdentifier.js.map +1 -1
  471. package/out/server/getProcessComponents.js.map +1 -1
  472. package/out/server/getProcesses.js +21 -29
  473. package/out/server/getProcesses.js.map +1 -1
  474. package/out/server/getScope.js.map +1 -1
  475. package/out/server/getValidates.js.map +1 -1
  476. package/out/server/index.js +0 -1
  477. package/out/server/index.js.map +1 -1
  478. package/out/server/naslServer.d.ts +99 -94
  479. package/out/server/naslServer.js +485 -465
  480. package/out/server/naslServer.js.map +1 -1
  481. package/out/server/naslStdlibMap.js +4 -2
  482. package/out/server/naslStdlibMap.js.map +1 -1
  483. package/out/server/process2LogicNamespace.js.map +1 -1
  484. package/out/server/translator.d.ts +1 -1
  485. package/out/server/translator.js +52 -47
  486. package/out/server/translator.js.map +1 -1
  487. package/out/service/storage/init.d.ts +15 -1
  488. package/out/service/storage/init.js +65 -56
  489. package/out/service/storage/init.js.map +1 -1
  490. package/out/templator/genCallComponentLogic.js +1 -2
  491. package/out/templator/genCallComponentLogic.js.map +1 -1
  492. package/out/templator/genCreateBlock.js +13 -8
  493. package/out/templator/genCreateBlock.js.map +1 -1
  494. package/out/templator/genCurdEditMultipleKeyBlock.js +19 -10
  495. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  496. package/out/templator/genCurdMultipleKeyBlock.js +22 -26
  497. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  498. package/out/templator/genEditTableBlock.js +11 -12
  499. package/out/templator/genEditTableBlock.js.map +1 -1
  500. package/out/templator/genEnumSelectBlock.js +1 -1
  501. package/out/templator/genEnumSelectBlock.js.map +1 -1
  502. package/out/templator/genGetBlock.js +2 -2
  503. package/out/templator/genGetBlock.js.map +1 -1
  504. package/out/templator/genGridViewBlock.js +10 -14
  505. package/out/templator/genGridViewBlock.js.map +1 -1
  506. package/out/templator/genListViewBlock.js +4 -7
  507. package/out/templator/genListViewBlock.js.map +1 -1
  508. package/out/templator/genQueryComponent.js +22 -15
  509. package/out/templator/genQueryComponent.js.map +1 -1
  510. package/out/templator/genSelectBlock.js +12 -33
  511. package/out/templator/genSelectBlock.js.map +1 -1
  512. package/out/templator/genTableBlock.js +8 -10
  513. package/out/templator/genTableBlock.js.map +1 -1
  514. package/out/templator/genUpdateBlock.js +12 -7
  515. package/out/templator/genUpdateBlock.js.map +1 -1
  516. package/out/templator/index.d.ts +4 -2
  517. package/out/templator/index.js +2 -2
  518. package/out/templator/index.js.map +1 -1
  519. package/out/templator/utils.d.ts +2 -2
  520. package/out/templator/utils.js +21 -22
  521. package/out/templator/utils.js.map +1 -1
  522. package/out/translator/index.js +27 -28
  523. package/out/translator/index.js.map +1 -1
  524. package/out/utils/index.d.ts +2 -1
  525. package/out/utils/index.js +8 -14
  526. package/out/utils/index.js.map +1 -1
  527. package/out/utils/logger.js.map +1 -1
  528. package/out/utils/sortTsString.js +3 -1
  529. package/out/utils/sortTsString.js.map +1 -1
  530. package/out/utils/string.js +8 -11
  531. package/out/utils/string.js.map +1 -1
  532. package/out/utils/time-slicing.d.ts +41 -0
  533. package/out/utils/time-slicing.js +81 -0
  534. package/out/utils/time-slicing.js.map +1 -0
  535. package/out/utils/traverse.js +4 -6
  536. package/out/utils/traverse.js.map +1 -1
  537. package/package.json +11 -7
  538. package/sandbox/stdlib/nasl.auth.ts +49 -46
  539. package/sandbox/stdlib/nasl.http.ts +29 -31
  540. package/sandbox/stdlib/nasl.ui.definition.ts +13 -1
  541. package/sandbox-natural/stdlib/nasl.core.ts +36 -0
  542. package/sandbox-natural/stdlib/nasl.oql.ts +8 -0
  543. package/sandbox-natural/stdlib/nasl.ui.ts +56 -0
  544. package/sandbox-natural/stdlib/nasl.util.ts +26 -0
  545. package/sandbox-natural/tsconfig.json +12 -0
  546. package/src/automate/upgrader/2.20.js +1 -1
  547. package/src/bak/translator.js +92 -99
  548. package/src/breakpoint/generator/AfterStartNode.ts +19 -17
  549. package/src/breakpoint/generator/BeforeEndNode.ts +17 -17
  550. package/src/breakpoint/generator/BreakpointNode.ts +243 -195
  551. package/src/breakpoint/generator/CallbackNode.ts +20 -0
  552. package/src/breakpoint/generator/FragmentNode.ts +14 -0
  553. package/src/breakpoint/generator/index.ts +107 -80
  554. package/src/breakpoint/shared/constants.ts +59 -53
  555. package/src/breakpoint/shared/operations.ts +6 -6
  556. package/src/breakpoint/shared/socket.ts +277 -223
  557. package/src/breakpoint/shared/utils.ts +166 -146
  558. package/src/breakpoint/store/core.ts +326 -297
  559. package/src/breakpoint/store/dock.ts +103 -103
  560. package/src/breakpoint/types/index.d.ts +11 -11
  561. package/src/common/BaseNode.ts +1102 -1024
  562. package/src/common/Command.ts +46 -16
  563. package/src/common/ComponentAPI.ts +72 -72
  564. package/src/common/EventEmitter.ts +80 -76
  565. package/src/common/Messager.ts +223 -224
  566. package/src/common/asyncFuncMap.ts +12 -12
  567. package/src/concepts/Abort__.ts +53 -60
  568. package/src/concepts/Anchor__.ts +158 -149
  569. package/src/concepts/AnonymousFunction__.ts +584 -551
  570. package/src/concepts/App__.ts +4278 -3671
  571. package/src/concepts/Argument__.ts +234 -210
  572. package/src/concepts/Assignee__.ts +680 -656
  573. package/src/concepts/AssignmentLine__.ts +80 -84
  574. package/src/concepts/Assignment__.ts +275 -264
  575. package/src/concepts/Attribute__.ts +183 -184
  576. package/src/concepts/AuthInterface__.ts +61 -63
  577. package/src/concepts/AuthLogicForCallInterface__.ts +540 -511
  578. package/src/concepts/AuthLogic__.ts +210 -194
  579. package/src/concepts/BackendVariable__.ts +414 -415
  580. package/src/concepts/Backend__.ts +317 -303
  581. package/src/concepts/BatchAssignment__.ts +987 -939
  582. package/src/concepts/BinaryExpression__.ts +370 -341
  583. package/src/concepts/BindAttribute__.ts +1057 -1007
  584. package/src/concepts/BindDirective__.ts +540 -542
  585. package/src/concepts/BindEvent__.ts +992 -911
  586. package/src/concepts/BindStyle__.ts +442 -451
  587. package/src/concepts/BooleanLiteral__.ts +89 -90
  588. package/src/concepts/CallAuthInterface__.ts +458 -433
  589. package/src/concepts/CallConnector__.ts +209 -164
  590. package/src/concepts/CallFunction__.ts +600 -600
  591. package/src/concepts/CallInterface__.ts +752 -721
  592. package/src/concepts/CallLogic__.ts +1324 -1200
  593. package/src/concepts/CallQueryComponent__.ts +1580 -1501
  594. package/src/concepts/Comment__.ts +69 -68
  595. package/src/concepts/CompletionProperty__.ts +250 -255
  596. package/src/concepts/ConfigGroup__.ts +312 -296
  597. package/src/concepts/ConfigPropertyValue__.ts +92 -93
  598. package/src/concepts/ConfigProperty__.ts +374 -357
  599. package/src/concepts/Configuration__.ts +288 -276
  600. package/src/concepts/Connection__.ts +426 -0
  601. package/src/concepts/ConnectorTrigger__.ts +146 -142
  602. package/src/concepts/Connector__.ts +1090 -1048
  603. package/src/concepts/Constant__.ts +226 -219
  604. package/src/concepts/DataElement__.ts +108 -115
  605. package/src/concepts/DataSource__.ts +508 -472
  606. package/src/concepts/DatabaseTypeAnnotation__.ts +53 -59
  607. package/src/concepts/Destination__.ts +808 -746
  608. package/src/concepts/End__.ts +85 -89
  609. package/src/concepts/EntityIndex__.ts +206 -202
  610. package/src/concepts/EntityProperty__.ts +825 -791
  611. package/src/concepts/Entity__.ts +921 -864
  612. package/src/concepts/EnumItem__.ts +133 -125
  613. package/src/concepts/Enum__.ts +347 -337
  614. package/src/concepts/Event__.ts +305 -292
  615. package/src/concepts/ExternalDestination__.ts +269 -280
  616. package/src/concepts/ForEachStatement__.ts +583 -531
  617. package/src/concepts/FrontendLibrary__.ts +507 -485
  618. package/src/concepts/FrontendVariable__.ts +44 -49
  619. package/src/concepts/Frontend__.ts +1239 -1187
  620. package/src/concepts/Function__.ts +1110 -1045
  621. package/src/concepts/Identifier__.ts +276 -272
  622. package/src/concepts/IfStatement__.ts +467 -436
  623. package/src/concepts/Integration__.ts +136 -137
  624. package/src/concepts/InterfaceParam__.ts +239 -238
  625. package/src/concepts/Interface__.ts +969 -948
  626. package/src/concepts/JSBlock__.ts +83 -83
  627. package/src/concepts/JavaLogic__.ts +101 -106
  628. package/src/concepts/LogicItem__.ts +307 -237
  629. package/src/concepts/Logic__.ts +2301 -2088
  630. package/src/concepts/MatchCase__.ts +886 -779
  631. package/src/concepts/Match__.ts +728 -659
  632. package/src/concepts/MemberExpression__.ts +330 -311
  633. package/src/concepts/MicroApp__.ts +91 -97
  634. package/src/concepts/Module__.ts +2590 -2278
  635. package/src/concepts/MsgTriggerEvent__.ts +297 -281
  636. package/src/concepts/MsgTriggerLauncher__.ts +286 -256
  637. package/src/concepts/Namespace__.ts +2579 -2466
  638. package/src/concepts/NewComposite__.ts +1487 -1350
  639. package/src/concepts/NewList__.ts +464 -450
  640. package/src/concepts/NewMap__.ts +691 -674
  641. package/src/concepts/New__.ts +42 -49
  642. package/src/concepts/NullLiteral__.ts +66 -72
  643. package/src/concepts/NumericLiteral__.ts +169 -169
  644. package/src/concepts/OqlQueryComponent__.ts +282 -279
  645. package/src/concepts/OverriddenLogic__.ts +2142 -2097
  646. package/src/concepts/Param__.ts +500 -442
  647. package/src/concepts/Point__.ts +53 -59
  648. package/src/concepts/ProcessComponent__.ts +497 -475
  649. package/src/concepts/ProcessElement__.ts +1852 -1780
  650. package/src/concepts/ProcessOutcome__.ts +59 -64
  651. package/src/concepts/ProcessOutcomes__.ts +59 -64
  652. package/src/concepts/Process__.ts +1491 -1428
  653. package/src/concepts/QueryAggregateExpression__.ts +135 -142
  654. package/src/concepts/QueryFieldExpression__.ts +138 -142
  655. package/src/concepts/QueryFromExpression__.ts +246 -254
  656. package/src/concepts/QueryGroupByExpression__.ts +130 -136
  657. package/src/concepts/QueryJoinExpression__.ts +441 -438
  658. package/src/concepts/QueryLimitExpression__.ts +159 -166
  659. package/src/concepts/QueryOrderByExpression__.ts +173 -180
  660. package/src/concepts/QuerySelectExpression__.ts +464 -439
  661. package/src/concepts/Rect__.ts +73 -79
  662. package/src/concepts/Return__.ts +366 -345
  663. package/src/concepts/Role__.ts +146 -147
  664. package/src/concepts/SelectMembers__.ts +358 -350
  665. package/src/concepts/Slot__.ts +152 -153
  666. package/src/concepts/SqlQueryComponent__.ts +230 -228
  667. package/src/concepts/Start__.ts +45 -52
  668. package/src/concepts/StringInterpolation__.ts +323 -296
  669. package/src/concepts/StringLiteral__.ts +113 -115
  670. package/src/concepts/StructureProperty__.ts +306 -295
  671. package/src/concepts/Structure__.ts +615 -578
  672. package/src/concepts/SwitchCase__.ts +326 -290
  673. package/src/concepts/SwitchStatement__.ts +236 -229
  674. package/src/concepts/Theme__.ts +64 -68
  675. package/src/concepts/Transactional__.ts +159 -153
  676. package/src/concepts/TriggerEvent__.ts +285 -274
  677. package/src/concepts/TriggerLauncher__.ts +232 -196
  678. package/src/concepts/TypeAnnotation__.ts +1049 -1011
  679. package/src/concepts/TypeParam__.ts +48 -50
  680. package/src/concepts/UnaryExpression__.ts +163 -153
  681. package/src/concepts/Unparsed__.ts +81 -82
  682. package/src/concepts/UseComponent__.ts +53 -59
  683. package/src/concepts/ValidationRule__.ts +524 -544
  684. package/src/concepts/Variable__.ts +419 -397
  685. package/src/concepts/ViewBlock__.ts +58 -64
  686. package/src/concepts/ViewComponent__.ts +1323 -1261
  687. package/src/concepts/ViewElement__.ts +2538 -2350
  688. package/src/concepts/View__.ts +2447 -2268
  689. package/src/concepts/WhileStatement__.ts +293 -272
  690. package/src/concepts/index__.ts +2 -1
  691. package/src/concepts/types__.ts +123 -121
  692. package/src/decorators/index.ts +75 -77
  693. package/src/decorators/promise.ts +28 -0
  694. package/src/enums/KEYWORDS.ts +1228 -1228
  695. package/src/enums/LEVEL_NAME_MAP.ts +24 -24
  696. package/src/generator/compileComponent.ts +10 -10
  697. package/src/generator/genBundleFiles.ts +300 -291
  698. package/src/generator/genHash.ts +2 -2
  699. package/src/generator/genMetaData.ts +280 -261
  700. package/src/generator/genReleaseBody.ts +312 -291
  701. package/src/generator/icestark.ts +1 -1
  702. package/src/generator/microApp.ts +17 -20
  703. package/src/generator/permission.ts +227 -218
  704. package/src/generator/qiankun.ts +1 -1
  705. package/src/generator/styleReplacer.ts +28 -31
  706. package/src/index.ts +0 -3
  707. package/src/manager/diagnostic.ts +84 -82
  708. package/src/manager/stepRecorder.ts +106 -94
  709. package/src/natural/RequirementAnalyzer.ts +208 -0
  710. package/src/natural/RequirementExecutor.ts +685 -0
  711. package/src/natural/componentData.ts +81 -0
  712. package/src/natural/genNaturalTS.ts +77 -0
  713. package/src/natural/index.ts +4 -0
  714. package/src/natural/knowledgeMap.ts +39 -0
  715. package/src/natural/naslStdlibMap.ts +24 -0
  716. package/src/natural/transformTSCode.ts +692 -0
  717. package/src/sentry/index.ts +109 -104
  718. package/src/server/createUiTs.ts +190 -184
  719. package/src/server/entity2LogicNamespace.ts +379 -359
  720. package/src/server/event.js +145 -145
  721. package/src/server/extendBaseNode.ts +461 -456
  722. package/src/server/formatTsUtils.ts +712 -713
  723. package/src/server/getConnector.ts +33 -33
  724. package/src/server/getExtensionModules.ts +23 -22
  725. package/src/server/getFunctions.ts +6 -6
  726. package/src/server/getInterfaces.ts +38 -37
  727. package/src/server/getLogging.ts +1 -1
  728. package/src/server/getLogics.ts +390 -344
  729. package/src/server/getMemberIdentifier.ts +286 -281
  730. package/src/server/getProcessComponents.ts +2 -2
  731. package/src/server/getProcesses.ts +548 -534
  732. package/src/server/getScope.ts +51 -51
  733. package/src/server/getValidates.ts +3 -3
  734. package/src/server/index.ts +29 -30
  735. package/src/server/naslServer.ts +4302 -4225
  736. package/src/server/naslStdlibMap.ts +43 -41
  737. package/src/server/process2LogicNamespace.ts +97 -97
  738. package/src/server/translator.ts +740 -746
  739. package/src/service/storage/init.ts +761 -728
  740. package/src/templator/genCallComponentLogic.ts +14 -15
  741. package/src/templator/genCreateBlock.ts +257 -229
  742. package/src/templator/genCurdEditMultipleKeyBlock.ts +332 -316
  743. package/src/templator/genCurdMultipleKeyBlock.ts +501 -473
  744. package/src/templator/genEditTableBlock.ts +192 -182
  745. package/src/templator/genEnumSelectBlock.ts +13 -7
  746. package/src/templator/genGetBlock.ts +57 -55
  747. package/src/templator/genGridViewBlock.ts +191 -201
  748. package/src/templator/genListViewBlock.ts +59 -64
  749. package/src/templator/genQueryComponent.ts +337 -287
  750. package/src/templator/genSelectBlock.ts +276 -285
  751. package/src/templator/genTableBlock.ts +157 -160
  752. package/src/templator/genUpdateBlock.ts +269 -255
  753. package/src/templator/index.ts +4 -4
  754. package/src/templator/utils.ts +490 -464
  755. package/src/translator/index.ts +84 -84
  756. package/src/translator/lsp.ts +22 -22
  757. package/src/translator/tsp.ts +6 -6
  758. package/src/utils/index.ts +115 -117
  759. package/src/utils/logger.ts +3 -4
  760. package/src/utils/sortTsString.ts +34 -32
  761. package/src/utils/string.ts +47 -48
  762. package/src/utils/time-slicing.ts +109 -0
  763. package/src/utils/traverse.ts +114 -126
  764. package/test/concepts/match/__snapshots__/toEmbeddedTS.spec.ts.snap +66 -0
  765. package/test/concepts/match/__snapshots__/toJS.spec.ts.snap +40 -0
  766. package/test/concepts/match/constant.ts +5 -0
  767. package/test/concepts/match/fixtures/isExpression.json +259 -0
  768. package/test/concepts/match/fixtures/lastBodyIf.json +268 -0
  769. package/test/concepts/match/fixtures/noExpression.json +176 -0
  770. package/test/concepts/match/toEmbeddedTS.spec.ts +14 -0
  771. package/test/concepts/match/toJS.spec.ts +14 -0
  772. package/test/setup.ts +2 -1
  773. package/ts-worker/src/index.js +0 -2
  774. package/tsconfig.json +21 -21
@@ -1,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