@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,19 +1,19 @@
1
1
  // @ts-nocheck
2
+ import { v4 as uuidv4 } from 'uuid';
2
3
  import { TranslatorState, shiftState, withSourceMap, indent } from '../translator';
3
4
  import Match from './Match__';
4
5
  import MemberExpression from './MemberExpression__';
5
6
  import BooleanLiteral from './BooleanLiteral__';
6
7
  import { ElementToVueOptions } from './ViewElement__';
7
8
 
8
- //================================================================================
9
+ //= ===============================================================================
9
10
  // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
10
11
  // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
11
- //================================================================================
12
+ //= ===============================================================================
12
13
  import { EventPayload, Params } from '../common/EventEmitter';
13
14
  import { concept, excludedInJSON, property } from '../decorators';
14
15
 
15
16
  import * as utils from '../utils';
16
- import { v4 as uuidv4 } from 'uuid';
17
17
  import BaseNode from '../common/BaseNode';
18
18
  import classMap from '../common/classMap';
19
19
  import LogicItem from './LogicItem__';
@@ -24,812 +24,919 @@ import TypeAnnotation from './TypeAnnotation__';
24
24
  */
25
25
  @concept('匹配分支')
26
26
  export class MatchCase extends LogicItem {
27
- /**
28
- * 产品概念
29
- */
30
- @property()
31
- concept: 'MatchCase' = 'MatchCase';
32
-
33
- /**
34
- * 条件表达式
35
- */
36
- @property('LogicItem | TypeAnnotation')
37
- patterns: Array<LogicItem | TypeAnnotation> = [];
38
-
39
- /**
40
- * then
41
- */
42
- @property('LogicItem')
43
- body: Array<LogicItem> = [];
44
-
45
- /**
46
- * 是否可枚举
47
- */
48
- @property()
49
- isMatchedTypeEnumable: boolean = false;
50
-
51
-
52
-
53
- /**
54
- * @param source 需要合并的部分参数
55
- */
56
- constructor(source?: Partial<MatchCase>) {
57
- source = Object.assign({}, MatchCase.getDefaultOptions(), source);
58
- super(source);
59
- super.subConstructor(source);
60
- }
61
- getClassName() {
62
- return 'MatchCase';
63
- }
64
-
65
- static from(source: any, parentNode?: any, parentKey?: string): MatchCase {
66
- return super.from(source, parentNode, parentKey) as MatchCase;
67
- }
68
-
69
-
70
- /**
71
- * 设置条件表达式
72
- */
73
- setPatterns(patterns: Array<LogicItem | TypeAnnotation>) {
74
- const object = {
75
- patterns,
76
- };
77
- this.update({
78
- ...object,
79
- });
80
- }
81
-
82
- /**
83
- * 设置是否可枚举
84
- */
85
- setIsMatchedTypeEnumable(isMatchedTypeEnumable: boolean) {
86
- const object = {
87
- isMatchedTypeEnumable,
88
- };
89
- this.update({
90
- ...object,
91
- });
92
- }
93
-
94
- getLogicItemExistingNames(excludedList: Array<LogicItem> = []) {
95
- const excludedSet = new Set(excludedList);
96
- return ((this.patterns as LogicItem[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
97
- }
98
- getLogicItemUniqueName(name = 'logicItem1') {
99
- return utils.unique(name, this.getLogicItemExistingNames(), undefined, false);
100
- }
101
-
102
- /**
103
- * 插入逻辑项
104
- * @internal
105
- * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
106
- */
107
- _insertLogicItemInPatternsAt(name: string, index: number): LogicItem;
108
-
109
- /**
110
- * 插入逻辑项
111
- * @internal
112
- * @param logicItemOptions 逻辑项参数
113
- */
114
- _insertLogicItemInPatternsAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
115
-
116
- /**
117
- * 插入逻辑项
118
- * @internal
119
- * @param logicItem 已有的逻辑项实例
120
- */
121
- _insertLogicItemInPatternsAt(logicItem: LogicItem, index: number): LogicItem;
122
-
123
- _insertLogicItemInPatternsAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
124
- const logicItemOptions: any = {};
125
- const relationOptions = { parentNode: this, parentKey: 'patterns' };
126
- let logicItem: LogicItem;
127
- if (!options) {
128
- logicItem = LogicItem.from({
129
- ...logicItemOptions,
130
- name: this.getLogicItemUniqueName(),
131
- }, this, 'patterns');
132
- } else if (typeof options === 'string') {
133
- logicItem = LogicItem.from({
134
- ...logicItemOptions,
135
- name: options,
136
- }, this, 'patterns');
137
- } else if (options instanceof LogicItem) {
138
- options.ensureDelete(); // 同一实例不支持多处存在
139
- logicItem = options;
140
- Object.assign(logicItem, relationOptions);
141
- } else {
142
- logicItem = LogicItem.from({
143
- ...logicItemOptions,
144
- ...options,
145
- }, this, 'patterns');
27
+ /**
28
+ * 产品概念
29
+ */
30
+ @property()
31
+ concept: 'MatchCase' = 'MatchCase';
32
+
33
+ /**
34
+ * 条件表达式
35
+ */
36
+ @property('LogicItem | TypeAnnotation')
37
+ patterns: Array<LogicItem | TypeAnnotation> = [];
38
+
39
+ /**
40
+ * then
41
+ */
42
+ @property('LogicItem')
43
+ body: Array<LogicItem> = [];
44
+
45
+ /**
46
+ * 是否可枚举
47
+ */
48
+ @property()
49
+ isMatchedTypeEnumable: boolean = false;
50
+
51
+ /**
52
+ * @param source 需要合并的部分参数
53
+ */
54
+ constructor(source?: Partial<MatchCase>) {
55
+ // @ts-ignore
56
+ source = { ...MatchCase.getDefaultOptions(), ...source };
57
+ super(source);
58
+ super.subConstructor(source);
59
+ }
60
+
61
+ getClassName() {
62
+ return 'MatchCase';
63
+ }
64
+
65
+ static from(source: any, parentNode?: any, parentKey?: string): MatchCase {
66
+ return super.from(source, parentNode, parentKey) as MatchCase;
67
+ }
68
+
69
+ /**
70
+ * 设置条件表达式
71
+ */
72
+ setPatterns(patterns: Array<LogicItem | TypeAnnotation>) {
73
+ const object = {
74
+ patterns,
75
+ };
76
+ this.update({
77
+ ...object,
78
+ });
79
+ }
80
+
81
+ /**
82
+ * 设置是否可枚举
83
+ */
84
+ setIsMatchedTypeEnumable(isMatchedTypeEnumable: boolean) {
85
+ const object = {
86
+ isMatchedTypeEnumable,
87
+ };
88
+ this.update({
89
+ ...object,
90
+ });
91
+ }
92
+
93
+ getLogicItemExistingNames(excludedList: Array<LogicItem> = []) {
94
+ const excludedSet = new Set(excludedList);
95
+ return ((this.patterns as LogicItem[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
96
+ }
97
+
98
+ getLogicItemUniqueName(name = 'logicItem1') {
99
+ return utils.unique(name, this.getLogicItemExistingNames(), undefined, false);
100
+ }
101
+
102
+ /**
103
+ * 插入逻辑项
104
+ * @internal
105
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
106
+ */
107
+ _insertLogicItemInPatternsAt(name: string, index: number): LogicItem;
108
+
109
+ /**
110
+ * 插入逻辑项
111
+ * @internal
112
+ * @param logicItemOptions 逻辑项参数
113
+ */
114
+ _insertLogicItemInPatternsAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
115
+
116
+ /**
117
+ * 插入逻辑项
118
+ * @internal
119
+ * @param logicItem 已有的逻辑项实例
120
+ */
121
+ _insertLogicItemInPatternsAt(logicItem: LogicItem, index: number): LogicItem;
122
+
123
+ _insertLogicItemInPatternsAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
124
+ const logicItemOptions: any = {};
125
+ const relationOptions = { parentNode: this, parentKey: 'patterns' };
126
+ let logicItem: LogicItem;
127
+ if (!options) {
128
+ logicItem = LogicItem.from(
129
+ {
130
+ ...logicItemOptions,
131
+ name: this.getLogicItemUniqueName(),
132
+ },
133
+ this,
134
+ 'patterns'
135
+ );
136
+ } else if (typeof options === 'string') {
137
+ logicItem = LogicItem.from(
138
+ {
139
+ ...logicItemOptions,
140
+ name: options,
141
+ },
142
+ this,
143
+ 'patterns'
144
+ );
145
+ } else if (options instanceof LogicItem) {
146
+ options.ensureDelete(); // 同一实例不支持多处存在
147
+ logicItem = options;
148
+ Object.assign(logicItem, relationOptions);
149
+ } else {
150
+ logicItem = LogicItem.from(
151
+ {
152
+ ...logicItemOptions,
153
+ ...options,
154
+ },
155
+ this,
156
+ 'patterns'
157
+ );
158
+ }
159
+ this.patterns.splice(index, 0, logicItem);
160
+ return logicItem;
161
+ }
162
+
163
+ /**
164
+ * 插入逻辑项
165
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
166
+ */
167
+ insertLogicItemInPatternsAt(name: string, index: number): LogicItem;
168
+
169
+ /**
170
+ * 插入逻辑项
171
+ * @param logicItemOptions 逻辑项参数
172
+ */
173
+ insertLogicItemInPatternsAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
174
+
175
+ /**
176
+ * 插入逻辑项
177
+ * @param logicItem 已有的逻辑项实例
178
+ */
179
+ insertLogicItemInPatternsAt(logicItem: LogicItem, index: number): LogicItem;
180
+
181
+ insertLogicItemInPatternsAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
182
+ const node = this._insertLogicItemInPatternsAt(options as any, index);
183
+ node.create({
184
+ index,
185
+ parentNode: this,
186
+ parentKey: 'patterns',
187
+ });
188
+ return node;
189
+ }
190
+
191
+ /**
192
+ * 添加逻辑项
193
+ * @internal
194
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
195
+ */
196
+ _addLogicItemInPatterns(name?: string): LogicItem;
197
+
198
+ /**
199
+ * 添加逻辑项
200
+ * @internal
201
+ * @param logicItemOptions 逻辑项参数
202
+ */
203
+ _addLogicItemInPatterns(logicItemOptions: Partial<LogicItem>): LogicItem;
204
+
205
+ /**
206
+ * 添加逻辑项
207
+ * @internal
208
+ * @param logicItem 已有的逻辑项实例
209
+ */
210
+ _addLogicItemInPatterns(logicItem: LogicItem): LogicItem;
211
+
212
+ _addLogicItemInPatterns(options?: string | Partial<LogicItem> | LogicItem) {
213
+ const index = this.patterns.length;
214
+ return this._insertLogicItemInPatternsAt(options as any, index);
215
+ }
216
+
217
+ /**
218
+ * 添加逻辑项
219
+ * @internal
220
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
221
+ */
222
+ addLogicItemInPatterns(name?: string): LogicItem;
223
+
224
+ /**
225
+ * 添加逻辑项
226
+ * @param logicItemOptions 逻辑项参数
227
+ */
228
+ addLogicItemInPatterns(logicItemOptions: Partial<LogicItem>): LogicItem;
229
+
230
+ /**
231
+ * 添加逻辑项
232
+ * @param logicItem 已有的逻辑项实例
233
+ */
234
+ addLogicItemInPatterns(logicItem: LogicItem): LogicItem;
235
+
236
+ addLogicItemInPatterns(options?: string | Partial<LogicItem> | LogicItem) {
237
+ const node = this._addLogicItemInPatterns(options as any);
238
+ const index = this.patterns.indexOf(node);
239
+ node.create({
240
+ index,
241
+ parentNode: this,
242
+ parentKey: 'patterns',
243
+ });
244
+ return node;
245
+ }
246
+
247
+ /**
248
+ * 插入逻辑项
249
+ * @internal
250
+ * @param logicItemOptions 逻辑项参数
251
+ */
252
+ _insertItemInBodyAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
253
+
254
+ /**
255
+ * 插入逻辑项
256
+ * @internal
257
+ * @param logicItem 已有的逻辑项实例
258
+ */
259
+ _insertItemInBodyAt(logicItem: LogicItem, index: number): LogicItem;
260
+
261
+ _insertItemInBodyAt(options: Partial<LogicItem> | LogicItem, index: number) {
262
+ const logicItemOptions: any = {};
263
+ const relationOptions = { parentNode: this, parentKey: 'body' };
264
+ let logicItem: LogicItem;
265
+ if (options instanceof LogicItem) {
266
+ options.ensureDelete(); // 同一实例不支持多处存在
267
+ logicItem = options;
268
+ Object.assign(logicItem, relationOptions);
269
+ } else {
270
+ logicItem = LogicItem.from(
271
+ {
272
+ ...logicItemOptions,
273
+ ...options,
274
+ },
275
+ this,
276
+ 'body'
277
+ );
278
+ }
279
+ this.body.splice(index, 0, logicItem);
280
+ return logicItem;
281
+ }
282
+
283
+ /**
284
+ * 插入逻辑项
285
+ * @param logicItemOptions 逻辑项参数
286
+ */
287
+ insertItemInBodyAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
288
+
289
+ /**
290
+ * 插入逻辑项
291
+ * @param logicItem 已有的逻辑项实例
292
+ */
293
+ insertItemInBodyAt(logicItem: LogicItem, index: number): LogicItem;
294
+
295
+ insertItemInBodyAt(options: Partial<LogicItem> | LogicItem, index: number) {
296
+ const node = this._insertItemInBodyAt(options as any, index);
297
+ node.create({
298
+ index,
299
+ parentNode: this,
300
+ parentKey: 'body',
301
+ });
302
+ return node;
303
+ }
304
+
305
+ /**
306
+ * 添加逻辑项
307
+ * @internal
308
+ * @param logicItemOptions 逻辑项参数
309
+ */
310
+ _addItemInBody(logicItemOptions: Partial<LogicItem>): LogicItem;
311
+
312
+ /**
313
+ * 添加逻辑项
314
+ * @internal
315
+ * @param logicItem 已有的逻辑项实例
316
+ */
317
+ _addItemInBody(logicItem: LogicItem): LogicItem;
318
+
319
+ _addItemInBody(options?: Partial<LogicItem> | LogicItem) {
320
+ const index = this.body.length;
321
+ return this._insertItemInBodyAt(options as any, index);
322
+ }
323
+
324
+ /**
325
+ * 添加逻辑项
326
+ * @param logicItemOptions 逻辑项参数
327
+ */
328
+ addItemInBody(logicItemOptions: Partial<LogicItem>): LogicItem;
329
+
330
+ /**
331
+ * 添加逻辑项
332
+ * @param logicItem 已有的逻辑项实例
333
+ */
334
+ addItemInBody(logicItem: LogicItem): LogicItem;
335
+
336
+ addItemInBody(options?: Partial<LogicItem> | LogicItem) {
337
+ const node = this._addItemInBody(options as any);
338
+ const index = this.body.indexOf(node);
339
+ node.create({
340
+ index,
341
+ parentNode: this,
342
+ parentKey: 'body',
343
+ });
344
+ return node;
345
+ }
346
+
347
+ getTypeAnnotationExistingNames(excludedList: Array<TypeAnnotation> = []) {
348
+ const excludedSet = new Set(excludedList);
349
+ return ((this.patterns as TypeAnnotation[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
350
+ }
351
+
352
+ getTypeAnnotationUniqueName(name = 'typeAnnotation1') {
353
+ return utils.unique(name, this.getTypeAnnotationExistingNames(), undefined, false);
354
+ }
355
+
356
+ /**
357
+ * 插入类型标注
358
+ * @internal
359
+ * @param name 类型标注名称,如果不填会自动生成一个唯一名称
360
+ */
361
+ _insertTypeAnnotationAt(name: string, index: number): TypeAnnotation;
362
+
363
+ /**
364
+ * 插入类型标注
365
+ * @internal
366
+ * @param typeAnnotationOptions 类型标注参数
367
+ */
368
+ _insertTypeAnnotationAt(typeAnnotationOptions: Partial<TypeAnnotation>, index: number): TypeAnnotation;
369
+
370
+ /**
371
+ * 插入类型标注
372
+ * @internal
373
+ * @param typeAnnotation 已有的类型标注实例
374
+ */
375
+ _insertTypeAnnotationAt(typeAnnotation: TypeAnnotation, index: number): TypeAnnotation;
376
+
377
+ _insertTypeAnnotationAt(options: string | Partial<TypeAnnotation> | TypeAnnotation, index: number) {
378
+ const typeAnnotationOptions: any = {};
379
+ const relationOptions = { parentNode: this, parentKey: 'patterns' };
380
+ let typeAnnotation: TypeAnnotation;
381
+ if (!options) {
382
+ typeAnnotation = TypeAnnotation.from(
383
+ {
384
+ ...typeAnnotationOptions,
385
+ name: this.getTypeAnnotationUniqueName(),
386
+ },
387
+ this,
388
+ 'patterns'
389
+ );
390
+ } else if (typeof options === 'string') {
391
+ typeAnnotation = TypeAnnotation.from(
392
+ {
393
+ ...typeAnnotationOptions,
394
+ name: options,
395
+ },
396
+ this,
397
+ 'patterns'
398
+ );
399
+ } else if (options instanceof TypeAnnotation) {
400
+ options.ensureDelete(); // 同一实例不支持多处存在
401
+ typeAnnotation = options;
402
+ Object.assign(typeAnnotation, relationOptions);
403
+ } else {
404
+ typeAnnotation = TypeAnnotation.from(
405
+ {
406
+ ...typeAnnotationOptions,
407
+ ...options,
408
+ },
409
+ this,
410
+ 'patterns'
411
+ );
412
+ }
413
+ this.patterns.splice(index, 0, typeAnnotation);
414
+ return typeAnnotation;
415
+ }
416
+
417
+ /**
418
+ * 插入类型标注
419
+ * @param name 类型标注名称,如果不填会自动生成一个唯一名称
420
+ */
421
+ insertTypeAnnotationAt(name: string, index: number): TypeAnnotation;
422
+
423
+ /**
424
+ * 插入类型标注
425
+ * @param typeAnnotationOptions 类型标注参数
426
+ */
427
+ insertTypeAnnotationAt(typeAnnotationOptions: Partial<TypeAnnotation>, index: number): TypeAnnotation;
428
+
429
+ /**
430
+ * 插入类型标注
431
+ * @param typeAnnotation 已有的类型标注实例
432
+ */
433
+ insertTypeAnnotationAt(typeAnnotation: TypeAnnotation, index: number): TypeAnnotation;
434
+
435
+ insertTypeAnnotationAt(options: string | Partial<TypeAnnotation> | TypeAnnotation, index: number) {
436
+ const node = this._insertTypeAnnotationAt(options as any, index);
437
+ node.create({
438
+ index,
439
+ parentNode: this,
440
+ parentKey: 'patterns',
441
+ });
442
+ return node;
443
+ }
444
+
445
+ /**
446
+ * 添加类型标注
447
+ * @internal
448
+ * @param name 类型标注名称,如果不填会自动生成一个唯一名称
449
+ */
450
+ _addTypeAnnotation(name?: string): TypeAnnotation;
451
+
452
+ /**
453
+ * 添加类型标注
454
+ * @internal
455
+ * @param typeAnnotationOptions 类型标注参数
456
+ */
457
+ _addTypeAnnotation(typeAnnotationOptions: Partial<TypeAnnotation>): TypeAnnotation;
458
+
459
+ /**
460
+ * 添加类型标注
461
+ * @internal
462
+ * @param typeAnnotation 已有的类型标注实例
463
+ */
464
+ _addTypeAnnotation(typeAnnotation: TypeAnnotation): TypeAnnotation;
465
+
466
+ _addTypeAnnotation(options?: string | Partial<TypeAnnotation> | TypeAnnotation) {
467
+ const index = this.patterns.length;
468
+ return this._insertTypeAnnotationAt(options as any, index);
469
+ }
470
+
471
+ /**
472
+ * 添加类型标注
473
+ * @internal
474
+ * @param name 类型标注名称,如果不填会自动生成一个唯一名称
475
+ */
476
+ addTypeAnnotation(name?: string): TypeAnnotation;
477
+
478
+ /**
479
+ * 添加类型标注
480
+ * @param typeAnnotationOptions 类型标注参数
481
+ */
482
+ addTypeAnnotation(typeAnnotationOptions: Partial<TypeAnnotation>): TypeAnnotation;
483
+
484
+ /**
485
+ * 添加类型标注
486
+ * @param typeAnnotation 已有的类型标注实例
487
+ */
488
+ addTypeAnnotation(typeAnnotation: TypeAnnotation): TypeAnnotation;
489
+
490
+ addTypeAnnotation(options?: string | Partial<TypeAnnotation> | TypeAnnotation) {
491
+ const node = this._addTypeAnnotation(options as any);
492
+ const index = this.patterns.indexOf(node);
493
+ node.create({
494
+ index,
495
+ parentNode: this,
496
+ parentKey: 'patterns',
497
+ });
498
+ return node;
499
+ }
500
+
501
+ /**
502
+ * 删除逻辑项
503
+ * @param name 逻辑项名称
504
+ */
505
+ removeLogicItemInPatterns(name: string): void;
506
+
507
+ /**
508
+ * 删除逻辑项
509
+ * @param logicItem 已有的逻辑项实例
510
+ */
511
+ removeLogicItemInPatterns(logicItem: LogicItem): void;
512
+
513
+ removeLogicItemInPatterns(options: string | LogicItem) {
514
+ let logicItem: LogicItem;
515
+ if (typeof options === 'string') {
516
+ logicItem = (this.patterns as LogicItem[]).find((item) => item.name === options);
517
+ if (!logicItem) {
518
+ throw new Error(`找不到逻辑项 ${options}`);
519
+ }
520
+ } else {
521
+ logicItem = options;
522
+ }
523
+ return logicItem.delete();
524
+ }
525
+
526
+ /**
527
+ * 删除逻辑项
528
+ * @param logicItem 已有的逻辑项实例
529
+ */
530
+ removeItemInBody(logicItem: LogicItem): void;
531
+
532
+ removeItemInBody(options: LogicItem) {
533
+ const logicItem: LogicItem = options;
534
+ return logicItem.delete();
535
+ }
536
+
537
+ __removeLogicItem(logicItem: LogicItem) {
538
+ const { parentKey } = logicItem;
539
+ const params: Params = {
540
+ parentNode: this,
541
+ parentKey,
542
+ index: -1,
543
+ object: null,
544
+ oldObject: logicItem,
545
+ };
546
+ if (parentKey) {
547
+ params.parentKey = parentKey;
548
+ if (Array.isArray((this as any)[parentKey])) {
549
+ const index = (this as any)[parentKey].indexOf(logicItem);
550
+ ~index && (this as any)[parentKey].splice(index, 1);
551
+ params.index = index;
552
+ } else if ((this as any)[parentKey] === logicItem) {
553
+ params.index = 0;
554
+ (this as any)[parentKey] = undefined;
555
+ }
556
+ }
557
+ return params;
558
+ }
559
+
560
+ /**
561
+ * 删除类型标注
562
+ * @param name 类型标注名称
563
+ */
564
+ removeTypeAnnotation(name: string): void;
565
+
566
+ /**
567
+ * 删除类型标注
568
+ * @param typeAnnotation 已有的类型标注实例
569
+ */
570
+ removeTypeAnnotation(typeAnnotation: TypeAnnotation): void;
571
+
572
+ removeTypeAnnotation(options: string | TypeAnnotation) {
573
+ let typeAnnotation: TypeAnnotation;
574
+ if (typeof options === 'string') {
575
+ typeAnnotation = (this.patterns as TypeAnnotation[]).find((item) => item.name === options);
576
+ if (!typeAnnotation) {
577
+ throw new Error(`找不到类型标注 ${options}`);
578
+ }
579
+ } else {
580
+ typeAnnotation = options;
581
+ }
582
+ return typeAnnotation.delete();
583
+ }
584
+
585
+ __removeTypeAnnotation(typeAnnotation: TypeAnnotation) {
586
+ const { parentKey } = typeAnnotation;
587
+ const params: Params = {
588
+ parentNode: this,
589
+ parentKey,
590
+ index: -1,
591
+ object: null,
592
+ oldObject: typeAnnotation,
593
+ };
594
+ if (parentKey) {
595
+ params.parentKey = parentKey;
596
+ if (Array.isArray((this as any)[parentKey])) {
597
+ const index = (this as any)[parentKey].indexOf(typeAnnotation);
598
+ ~index && (this as any)[parentKey].splice(index, 1);
599
+ params.index = index;
600
+ } else if ((this as any)[parentKey] === typeAnnotation) {
601
+ params.index = 0;
602
+ (this as any)[parentKey] = undefined;
603
+ }
604
+ }
605
+ return params;
606
+ }
607
+
608
+ //= ===============================================================================
609
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
610
+ // 自动生成的代码已结束。下面可以手动编写。
611
+ //= ===============================================================================
612
+
613
+ // 是否处于禁用状态
614
+ get isDisabled() {
615
+ const matchExpression = this.parentNode as Match;
616
+ const cases = matchExpression?.cases;
617
+ if (Array.isArray(cases) && cases.length > 1) {
618
+ const index = cases.indexOf(this);
619
+ // 是最后一项
620
+ if (index === cases.length - 1) {
621
+ const enumerableItems = matchExpression?.enumerableItems;
622
+ if (Array.isArray(enumerableItems)) {
623
+ const map: any = {};
624
+ cases.forEach((caseItem) => {
625
+ const { patterns } = caseItem || {};
626
+ if (Array.isArray(patterns)) {
627
+ patterns.forEach((pattern) => {
628
+ if (pattern instanceof TypeAnnotation) {
629
+ const patternTypeKey = pattern.typeKey;
630
+ map[patternTypeKey] = true;
631
+ } else if (pattern instanceof MemberExpression || pattern instanceof BooleanLiteral) {
632
+ const patternValue = pattern.getValue();
633
+ map[patternValue] = true;
634
+ }
635
+ });
636
+ }
637
+ });
638
+ const enumerableKeys = Object.keys(map);
639
+ if (enumerableKeys.length === enumerableItems.length) {
640
+ return true;
641
+ }
146
642
  }
147
- this.patterns.splice(index, 0, logicItem);
148
- return logicItem;
149
- }
150
-
151
- /**
152
- * 插入逻辑项
153
- * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
154
- */
155
- insertLogicItemInPatternsAt(name: string, index: number): LogicItem;
156
-
157
- /**
158
- * 插入逻辑项
159
- * @param logicItemOptions 逻辑项参数
160
- */
161
- insertLogicItemInPatternsAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
162
-
163
- /**
164
- * 插入逻辑项
165
- * @param logicItem 已有的逻辑项实例
166
- */
167
- insertLogicItemInPatternsAt(logicItem: LogicItem, index: number): LogicItem;
168
-
169
- insertLogicItemInPatternsAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
170
- const node = this._insertLogicItemInPatternsAt(options as any, index);
171
- node.create({
172
- index,
173
- parentNode: this,
174
- parentKey: 'patterns',
643
+ }
644
+ }
645
+ return false;
646
+ }
647
+
648
+ // 槽位类型是否错误
649
+ get isSlotTypeError() {
650
+ const match: any = this.parentNode;
651
+ const expression = match?.expression;
652
+ const isMatchedTypeEnumable = match?.isEnumerable;
653
+ if (expression && isMatchedTypeEnumable !== this.isMatchedTypeEnumable) {
654
+ return true;
655
+ }
656
+ return false;
657
+ }
658
+
659
+ isTypeMatching() {
660
+ return (this.parentNode as Match).isTypeMatching();
661
+ }
662
+
663
+ toVue(options?: ElementToVueOptions): string {
664
+ if (options?.finalCode === false) {
665
+ let code = '';
666
+ if (Array.isArray(this.patterns)) {
667
+ this.patterns.forEach((pattern, index) => {
668
+ code += pattern?.toVue?.();
669
+ if (index !== this.patterns.length - 1) {
670
+ code += '';
671
+ }
175
672
  });
176
- return node;
177
- }
178
-
179
- /**
180
- * 添加逻辑项
181
- * @internal
182
- * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
183
- */
184
- _addLogicItemInPatterns(name?: string): LogicItem;
185
-
186
- /**
187
- * 添加逻辑项
188
- * @internal
189
- * @param logicItemOptions 逻辑项参数
190
- */
191
- _addLogicItemInPatterns(logicItemOptions: Partial<LogicItem>): LogicItem;
192
-
193
- /**
194
- * 添加逻辑项
195
- * @internal
196
- * @param logicItem 已有的逻辑项实例
197
- */
198
- _addLogicItemInPatterns(logicItem: LogicItem): LogicItem;
199
-
200
- _addLogicItemInPatterns(options?: string | Partial<LogicItem> | LogicItem) {
201
- const index = this.patterns.length;
202
- return this._insertLogicItemInPatternsAt(options as any, index);
203
- }
204
-
205
- /**
206
- * 添加逻辑项
207
- * @internal
208
- * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
209
- */
210
- addLogicItemInPatterns(name?: string): LogicItem;
211
-
212
- /**
213
- * 添加逻辑项
214
- * @param logicItemOptions 逻辑项参数
215
- */
216
- addLogicItemInPatterns(logicItemOptions: Partial<LogicItem>): LogicItem;
217
-
218
- /**
219
- * 添加逻辑项
220
- * @param logicItem 已有的逻辑项实例
221
- */
222
- addLogicItemInPatterns(logicItem: LogicItem): LogicItem;
223
-
224
- addLogicItemInPatterns(options?: string | Partial<LogicItem> | LogicItem) {
225
- const node = this._addLogicItemInPatterns(options as any);
226
- const index = this.patterns.indexOf(node);
227
- node.create({
228
- index,
229
- parentNode: this,
230
- parentKey: 'patterns',
673
+ }
674
+ if (Array.isArray(this.body)) {
675
+ code += ` => `;
676
+ this.body.forEach((logicItem, bodyIndex) => {
677
+ if (bodyIndex === this.body.length - 1 && logicItem.concept !== 'Assignment') {
678
+ code += ` ${logicItem?.toVue?.()} `;
679
+ }
231
680
  });
232
- return node;
233
- }
234
-
235
-
236
-
237
- /**
238
- * 插入逻辑项
239
- * @internal
240
- * @param logicItemOptions 逻辑项参数
241
- */
242
- _insertItemInBodyAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
243
-
244
- /**
245
- * 插入逻辑项
246
- * @internal
247
- * @param logicItem 已有的逻辑项实例
248
- */
249
- _insertItemInBodyAt(logicItem: LogicItem, index: number): LogicItem;
250
-
251
- _insertItemInBodyAt(options: Partial<LogicItem> | LogicItem, index: number) {
252
- const logicItemOptions: any = {};
253
- const relationOptions = { parentNode: this, parentKey: 'body' };
254
- let logicItem: LogicItem;
255
- if (options instanceof LogicItem) {
256
- options.ensureDelete(); // 同一实例不支持多处存在
257
- logicItem = options;
258
- Object.assign(logicItem, relationOptions);
259
- } else {
260
- logicItem = LogicItem.from({
261
- ...logicItemOptions,
262
- ...options,
263
- }, this, 'body');
681
+ code += `; `;
682
+ }
683
+ return code;
684
+ }
685
+ }
686
+
687
+ toUI(state?: TranslatorState): string {
688
+ let code = '';
689
+ if (Array.isArray(this.patterns)) {
690
+ this.patterns.forEach((pattern, index) => {
691
+ code += pattern.toUI?.();
692
+ if (index !== this.patterns.length - 1) {
693
+ code += ' 或 ';
264
694
  }
265
- this.body.splice(index, 0, logicItem);
266
- return logicItem;
267
- }
268
-
269
-
270
-
271
- /**
272
- * 插入逻辑项
273
- * @param logicItemOptions 逻辑项参数
274
- */
275
- insertItemInBodyAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
276
-
277
- /**
278
- * 插入逻辑项
279
- * @param logicItem 已有的逻辑项实例
280
- */
281
- insertItemInBodyAt(logicItem: LogicItem, index: number): LogicItem;
282
-
283
- insertItemInBodyAt(options: Partial<LogicItem> | LogicItem, index: number) {
284
- const node = this._insertItemInBodyAt(options as any, index);
285
- node.create({
286
- index,
287
- parentNode: this,
288
- parentKey: 'body',
289
- });
290
- return node;
695
+ });
291
696
  }
292
-
293
-
294
-
295
- /**
296
- * 添加逻辑项
297
- * @internal
298
- * @param logicItemOptions 逻辑项参数
299
- */
300
- _addItemInBody(logicItemOptions: Partial<LogicItem>): LogicItem;
301
-
302
- /**
303
- * 添加逻辑项
304
- * @internal
305
- * @param logicItem 已有的逻辑项实例
306
- */
307
- _addItemInBody(logicItem: LogicItem): LogicItem;
308
-
309
- _addItemInBody(options?: Partial<LogicItem> | LogicItem) {
310
- const index = this.body.length;
311
- return this._insertItemInBodyAt(options as any, index);
312
- }
313
-
314
-
315
-
316
- /**
317
- * 添加逻辑项
318
- * @param logicItemOptions 逻辑项参数
319
- */
320
- addItemInBody(logicItemOptions: Partial<LogicItem>): LogicItem;
321
-
322
- /**
323
- * 添加逻辑项
324
- * @param logicItem 已有的逻辑项实例
325
- */
326
- addItemInBody(logicItem: LogicItem): LogicItem;
327
-
328
- addItemInBody(options?: Partial<LogicItem> | LogicItem) {
329
- const node = this._addItemInBody(options as any);
330
- const index = this.body.indexOf(node);
331
- node.create({
332
- index,
333
- parentNode: this,
334
- parentKey: 'body',
335
- });
336
- return node;
337
- }
338
-
339
-
340
- getTypeAnnotationExistingNames(excludedList: Array<TypeAnnotation> = []) {
341
- const excludedSet = new Set(excludedList);
342
- return ((this.patterns as TypeAnnotation[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
343
- }
344
- getTypeAnnotationUniqueName(name = 'typeAnnotation1') {
345
- return utils.unique(name, this.getTypeAnnotationExistingNames(), undefined, false);
346
- }
347
-
348
- /**
349
- * 插入类型标注
350
- * @internal
351
- * @param name 类型标注名称,如果不填会自动生成一个唯一名称
352
- */
353
- _insertTypeAnnotationAt(name: string, index: number): TypeAnnotation;
354
-
355
- /**
356
- * 插入类型标注
357
- * @internal
358
- * @param typeAnnotationOptions 类型标注参数
359
- */
360
- _insertTypeAnnotationAt(typeAnnotationOptions: Partial<TypeAnnotation>, index: number): TypeAnnotation;
361
-
362
- /**
363
- * 插入类型标注
364
- * @internal
365
- * @param typeAnnotation 已有的类型标注实例
366
- */
367
- _insertTypeAnnotationAt(typeAnnotation: TypeAnnotation, index: number): TypeAnnotation;
368
-
369
- _insertTypeAnnotationAt(options: string | Partial<TypeAnnotation> | TypeAnnotation, index: number) {
370
- const typeAnnotationOptions: any = {};
371
- const relationOptions = { parentNode: this, parentKey: 'patterns' };
372
- let typeAnnotation: TypeAnnotation;
373
- if (!options) {
374
- typeAnnotation = TypeAnnotation.from({
375
- ...typeAnnotationOptions,
376
- name: this.getTypeAnnotationUniqueName(),
377
- }, this, 'patterns');
378
- } else if (typeof options === 'string') {
379
- typeAnnotation = TypeAnnotation.from({
380
- ...typeAnnotationOptions,
381
- name: options,
382
- }, this, 'patterns');
383
- } else if (options instanceof TypeAnnotation) {
384
- options.ensureDelete(); // 同一实例不支持多处存在
385
- typeAnnotation = options;
386
- Object.assign(typeAnnotation, relationOptions);
387
- } else {
388
- typeAnnotation = TypeAnnotation.from({
389
- ...typeAnnotationOptions,
390
- ...options,
391
- }, this, 'patterns');
697
+ if (Array.isArray(this.body)) {
698
+ code += ` => `;
699
+ this.body.forEach((logicItem, bodyIndex) => {
700
+ if (bodyIndex === this.body.length - 1 && logicItem.concept !== 'Assignment') {
701
+ code += ` ${logicItem.toUI?.()} `;
392
702
  }
393
- this.patterns.splice(index, 0, typeAnnotation);
394
- return typeAnnotation;
395
- }
396
-
397
- /**
398
- * 插入类型标注
399
- * @param name 类型标注名称,如果不填会自动生成一个唯一名称
400
- */
401
- insertTypeAnnotationAt(name: string, index: number): TypeAnnotation;
402
-
403
- /**
404
- * 插入类型标注
405
- * @param typeAnnotationOptions 类型标注参数
406
- */
407
- insertTypeAnnotationAt(typeAnnotationOptions: Partial<TypeAnnotation>, index: number): TypeAnnotation;
408
-
409
- /**
410
- * 插入类型标注
411
- * @param typeAnnotation 已有的类型标注实例
412
- */
413
- insertTypeAnnotationAt(typeAnnotation: TypeAnnotation, index: number): TypeAnnotation;
414
-
415
- insertTypeAnnotationAt(options: string | Partial<TypeAnnotation> | TypeAnnotation, index: number) {
416
- const node = this._insertTypeAnnotationAt(options as any, index);
417
- node.create({
418
- index,
419
- parentNode: this,
420
- parentKey: 'patterns',
421
- });
422
- return node;
423
- }
424
-
425
- /**
426
- * 添加类型标注
427
- * @internal
428
- * @param name 类型标注名称,如果不填会自动生成一个唯一名称
429
- */
430
- _addTypeAnnotation(name?: string): TypeAnnotation;
431
-
432
- /**
433
- * 添加类型标注
434
- * @internal
435
- * @param typeAnnotationOptions 类型标注参数
436
- */
437
- _addTypeAnnotation(typeAnnotationOptions: Partial<TypeAnnotation>): TypeAnnotation;
438
-
439
- /**
440
- * 添加类型标注
441
- * @internal
442
- * @param typeAnnotation 已有的类型标注实例
443
- */
444
- _addTypeAnnotation(typeAnnotation: TypeAnnotation): TypeAnnotation;
445
-
446
- _addTypeAnnotation(options?: string | Partial<TypeAnnotation> | TypeAnnotation) {
447
- const index = this.patterns.length;
448
- return this._insertTypeAnnotationAt(options as any, index);
449
- }
450
-
451
- /**
452
- * 添加类型标注
453
- * @internal
454
- * @param name 类型标注名称,如果不填会自动生成一个唯一名称
455
- */
456
- addTypeAnnotation(name?: string): TypeAnnotation;
457
-
458
- /**
459
- * 添加类型标注
460
- * @param typeAnnotationOptions 类型标注参数
461
- */
462
- addTypeAnnotation(typeAnnotationOptions: Partial<TypeAnnotation>): TypeAnnotation;
463
-
464
- /**
465
- * 添加类型标注
466
- * @param typeAnnotation 已有的类型标注实例
467
- */
468
- addTypeAnnotation(typeAnnotation: TypeAnnotation): TypeAnnotation;
469
-
470
- addTypeAnnotation(options?: string | Partial<TypeAnnotation> | TypeAnnotation) {
471
- const node = this._addTypeAnnotation(options as any);
472
- const index = this.patterns.indexOf(node);
473
- node.create({
474
- index,
475
- parentNode: this,
476
- parentKey: 'patterns',
477
- });
478
- return node;
479
- }
480
-
481
-
482
-
483
-
484
- /**
485
- * 删除逻辑项
486
- * @param name 逻辑项名称
487
- */
488
- removeLogicItemInPatterns(name: string): void;
489
-
490
- /**
491
- * 删除逻辑项
492
- * @param logicItem 已有的逻辑项实例
493
- */
494
- removeLogicItemInPatterns(logicItem: LogicItem): void;
495
-
496
- removeLogicItemInPatterns(options: string | LogicItem) {
497
- let logicItem: LogicItem;
498
- if (typeof options === 'string') {
499
- logicItem = (this.patterns as LogicItem[]).find((item) => item.name === options);
500
- if (!logicItem) {
501
- throw new Error('找不到逻辑项 ' + options);
502
- }
703
+ });
704
+ code += `; `;
705
+ }
706
+ return code;
707
+ }
708
+
709
+ toJS(expression: LogicItem, index?: number, length?: number): string {
710
+ let code = '';
711
+ if (Array.isArray(this.patterns)) {
712
+ const patternStrArr = this.patterns.map((pattern) => {
713
+ let patternStr = '';
714
+ if (pattern instanceof TypeAnnotation) {
715
+ patternStr += `this.$isInstanceOf(${expression.toJS?.()}, '${pattern.sortedTypeKey}')`;
503
716
  } else {
504
- logicItem = options;
717
+ patternStr += `this.$global.isEqual(${expression.toJS?.()}, ${pattern.toJS?.()})`;
505
718
  }
506
- return logicItem.delete();
507
- }
508
-
509
-
510
-
511
- /**
512
- * 删除逻辑项
513
- * @param logicItem 已有的逻辑项实例
514
- */
515
- removeItemInBody(logicItem: LogicItem): void;
516
-
517
- removeItemInBody(options: LogicItem) {
518
- let logicItem: LogicItem = options;
519
- return logicItem.delete();
520
- }
521
-
522
- __removeLogicItem(logicItem: LogicItem) {
523
- const parentKey = logicItem.parentKey;
524
- const params: Params = {
525
- parentNode: this,
526
- parentKey,
527
- index: -1,
528
- object: null,
529
- oldObject: logicItem,
530
- };
531
- if (parentKey) {
532
- params.parentKey = parentKey;
533
- if (Array.isArray((this as any)[parentKey])) {
534
- const index = (this as any)[parentKey].indexOf(logicItem);
535
- ~index && (this as any)[parentKey].splice(index, 1);
536
- params.index = index;
537
- } else if ((this as any)[parentKey] === logicItem) {
538
- params.index = 0;
539
- (this as any)[parentKey] = undefined;
540
- }
719
+ return patternStr;
720
+ });
721
+ const patternStr = patternStrArr.join(' || ');
722
+ if (length > 1) {
723
+ if (index === 0) {
724
+ code = `if (${patternStr}) {\n`;
725
+ } else if (index !== length - 1) {
726
+ code = `else if (${patternStr}) {\n`;
727
+ } else {
728
+ code += 'else {\n';
541
729
  }
542
- return params;
543
- }
544
-
545
-
546
-
547
- /**
548
- * 删除类型标注
549
- * @param name 类型标注名称
550
- */
551
- removeTypeAnnotation(name: string): void;
552
-
553
- /**
554
- * 删除类型标注
555
- * @param typeAnnotation 已有的类型标注实例
556
- */
557
- removeTypeAnnotation(typeAnnotation: TypeAnnotation): void;
558
-
559
- removeTypeAnnotation(options: string | TypeAnnotation) {
560
- let typeAnnotation: TypeAnnotation;
561
- if (typeof options === 'string') {
562
- typeAnnotation = (this.patterns as TypeAnnotation[]).find((item) => item.name === options);
563
- if (!typeAnnotation) {
564
- throw new Error('找不到类型标注 ' + options);
730
+ }
731
+ if (Array.isArray(this.body)) {
732
+ this.body.forEach((logicItem, bodyIndex) => {
733
+ if (this.parentNode.isExpression && bodyIndex === this.body.length - 1 && logicItem.concept !== 'Abort') {
734
+ code += `return `;
735
+ }
736
+ code += `${logicItem.toJS()}\n`;
737
+ });
738
+ }
739
+ if (length > 1) {
740
+ code += '}\n';
741
+ }
742
+ }
743
+ return code;
744
+ }
745
+
746
+ @withSourceMap()
747
+ toEmbeddedTS(state?: TranslatorState, index?: number, parentCode?: string): string {
748
+ let code = '\n';
749
+
750
+ const parentNode = this.parentNode as Match;
751
+ const { length } = parentNode.cases;
752
+
753
+ if (length > 1) {
754
+ if (index !== length - 1) {
755
+ code += indent(state?.tabSize || 0);
756
+ code += 'if (';
757
+ if (Array.isArray(this.patterns) && this.patterns.length) {
758
+ this.patterns.forEach((pattern, index) => {
759
+ // nasl.code.isUnionType<typeof ccc, List<Integer> | List<Boolean>>
760
+ if (pattern instanceof TypeAnnotation) {
761
+ if (index === 0) {
762
+ code += `nasl.core.isUnionType<typeof `;
763
+ code += `${parentCode},`;
764
+ code += pattern.toEmbeddedTS(shiftState(state, code));
765
+ } else {
766
+ code += '|';
767
+ code += pattern.toEmbeddedTS(shiftState(state, code));
768
+ }
769
+ if (index === this.patterns.length - 1) {
770
+ code += '>';
771
+ code += `(${parentCode})`;
772
+ }
773
+ } else {
774
+ if (index !== 0) {
775
+ code += ' || ';
776
+ }
777
+ code += parentCode;
778
+ code += ' === ';
779
+ code += pattern.toEmbeddedTS(
780
+ shiftState(state, code, {
781
+ tabSize: state?.tabSize || 0,
782
+ })
783
+ );
565
784
  }
785
+ });
566
786
  } else {
567
- typeAnnotation = options;
787
+ code += '__IDENTIFIER__';
568
788
  }
569
- return typeAnnotation.delete();
570
- }
789
+ code += ') {\n';
571
790
 
572
- __removeTypeAnnotation(typeAnnotation: TypeAnnotation) {
573
- const parentKey = typeAnnotation.parentKey;
574
- const params: Params = {
575
- parentNode: this,
576
- parentKey,
577
- index: -1,
578
- object: null,
579
- oldObject: typeAnnotation,
580
- };
581
- if (parentKey) {
582
- params.parentKey = parentKey;
583
- if (Array.isArray((this as any)[parentKey])) {
584
- const index = (this as any)[parentKey].indexOf(typeAnnotation);
585
- ~index && (this as any)[parentKey].splice(index, 1);
586
- params.index = index;
587
- } else if ((this as any)[parentKey] === typeAnnotation) {
588
- params.index = 0;
589
- (this as any)[parentKey] = undefined;
791
+ if (Array.isArray(this.body)) {
792
+ this.body.forEach((logicItem, bodyIndex) => {
793
+ if (parentNode.isExpression && bodyIndex === this.body.length - 1 && logicItem.concept !== 'Assignment') {
794
+ code += indent(state?.tabSize || 0);
795
+ code += `return `;
590
796
  }
797
+ code += `${logicItem.toEmbeddedTS(
798
+ shiftState(state, code, {
799
+ tabSize: state?.tabSize || 0,
800
+ })
801
+ )}\n`;
802
+ });
591
803
  }
592
- return params;
593
- }
594
-
595
- //================================================================================
596
- // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
597
- // 自动生成的代码已结束。下面可以手动编写。
598
- //================================================================================
599
-
600
- // 是否处于禁用状态
601
- get isDisabled() {
602
- const matchExpression = (this.parentNode as Match);
603
- const cases = matchExpression?.cases;
604
- if (Array.isArray(cases) && cases.length > 1) {
605
- const index = cases.indexOf(this);
606
- // 是最后一项
607
- if (index === cases.length - 1) {
608
- const enumerableItems = matchExpression?.enumerableItems;
609
- if (Array.isArray(enumerableItems)) {
610
- const map: any = {};
611
- cases.forEach((caseItem) => {
612
- const { patterns } = caseItem || {};
613
- if (Array.isArray(patterns)) {
614
- patterns.forEach((pattern) => {
615
- if (pattern instanceof TypeAnnotation) {
616
- const patternTypeKey = pattern.typeKey;
617
- map[patternTypeKey] = true;
618
- } else if (pattern instanceof MemberExpression || pattern instanceof BooleanLiteral) {
619
- const patternValue = pattern.getValue();
620
- map[patternValue] = true;
621
- }
622
- });
623
- }
624
- });
625
- const enumerableKeys = Object.keys(map);
626
- if (enumerableKeys.length === enumerableItems.length) {
627
- return true;
628
- }
629
- }
804
+ code += `${indent(state?.tabSize || 0)}}\n`;
805
+ } else {
806
+ code += indent(state?.tabSize || 0);
807
+ code += 'else {\n';
808
+ if (Array.isArray(this.body)) {
809
+ this.body.forEach((logicItem, bodyIndex) => {
810
+ if (parentNode.isExpression && bodyIndex === this.body.length - 1 && logicItem.concept !== 'Assignment') {
811
+ code += indent(state?.tabSize || 0);
812
+ code += `return `;
630
813
  }
814
+ code += `${logicItem.toEmbeddedTS(
815
+ shiftState(state, code, {
816
+ tabSize: state?.tabSize || 0,
817
+ })
818
+ )}\n`;
819
+ });
631
820
  }
632
- return false;
633
- }
634
-
635
- // 槽位类型是否错误
636
- get isSlotTypeError() {
637
- const match: any = this.parentNode;
638
- const expression = match?.expression;
639
- const isMatchedTypeEnumable = match?.isEnumerable;
640
- if (expression && isMatchedTypeEnumable !== this.isMatchedTypeEnumable) {
641
- return true;
642
- }
643
- return false;
644
- }
645
- isTypeMatching() {
646
- return (this.parentNode as Match).isTypeMatching();
647
- }
648
-
649
- toVue(options?: ElementToVueOptions): string {
650
- if (options?.finalCode === false) {
651
- let code = '';
652
- if (Array.isArray(this.patterns)) {
653
- this.patterns.forEach((pattern, index) => {
654
- code += pattern?.toVue?.();
655
- if (index !== this.patterns.length - 1) {
656
- code += ' ';
657
- }
658
- });
659
- }
660
- if (Array.isArray(this.body)) {
661
- code += ` => `;
662
- this.body.forEach((logicItem, bodyIndex) => {
663
- if (bodyIndex === this.body.length - 1 && logicItem.concept !== 'Assignment') {
664
- code += ' ' + logicItem?.toVue?.() + ' ';
665
- }
666
- });
667
- code += `; `;
821
+ code += `${indent(state?.tabSize || 0)}}\n`;
822
+ }
823
+ } else {
824
+ if (Array.isArray(this.body)) {
825
+ this.body.forEach((logicItem, bodyIndex) => {
826
+ if (parentNode.isExpression && bodyIndex === this.body.length - 1 && logicItem.concept !== 'Assignment') {
827
+ code += indent(state?.tabSize || 0);
828
+ code += `return `;
829
+ }
830
+ code += `${logicItem.toEmbeddedTS(
831
+ shiftState(state, code, {
832
+ tabSize: state?.tabSize || 0,
833
+ })
834
+ )}\n`;
835
+ });
836
+ }
837
+ code += '\n';
838
+ }
839
+
840
+ return code;
841
+ }
842
+
843
+
844
+ @withSourceMap()
845
+ toNaturalTS(state?: TranslatorState, index?: number, parentCode?: string): string {
846
+ let code = '\n';
847
+
848
+ const parentNode = (this.parentNode as Match);
849
+ const length = parentNode?.cases?.length;
850
+
851
+ if (length > 1) {
852
+ if (index !== length - 1) {
853
+ code += indent(state.tabSize);
854
+ code += index === 0 ? '' : 'else ';
855
+ code += 'if (';
856
+ if (Array.isArray(this.patterns) && this.patterns.length) {
857
+ this.patterns.forEach((pattern, index) => {
858
+ // nasl.code.isUnionType<typeof ccc, List<Integer> | List<Boolean>>
859
+ if (pattern instanceof TypeAnnotation) {
860
+ if (index === 0) {
861
+ code += `nasl.core.isUnionType<typeof `;
862
+ code += `${parentCode},`;
863
+ code += pattern.toNaturalTS(shiftState(state, code, { inline: true }));
864
+ } else {
865
+ code += '|';
866
+ code += pattern.toNaturalTS(shiftState(state, code, { inline: true }));
867
+ }
868
+ if (index === this.patterns.length - 1) {
869
+ code += '>';
870
+ code += `(${parentCode})`;
871
+ }
872
+ } else {
873
+ if (index !== 0) {
874
+ code += ' || ';
875
+ }
876
+ code += parentCode;
877
+ code += ' === ';
878
+ code += pattern.toNaturalTS(shiftState(state, code, { inline: true }));
668
879
  }
669
- return code;
880
+ });
881
+ } else {
882
+ code += '__IDENTIFIER__';
670
883
  }
671
- }
884
+ code += ') {\n';
672
885
 
673
- toUI(state?: TranslatorState): string {
674
- let code = '';
675
- if (Array.isArray(this.patterns)) {
676
- this.patterns.forEach((pattern, index) => {
677
- code += pattern.toUI?.();
678
- if (index !== this.patterns.length - 1) {
679
- code += ' 或 ';
680
- }
681
- });
682
- }
683
886
  if (Array.isArray(this.body)) {
684
- code += ` => `;
685
- this.body.forEach((logicItem, bodyIndex) => {
686
- if (bodyIndex === this.body.length - 1 && logicItem.concept !== 'Assignment') {
687
- code += ' ' + logicItem.toUI?.() + ' ';
688
- }
689
- });
690
- code += `; `;
691
- }
692
- return code;
693
- }
694
-
695
- toJS(expression: LogicItem, index?: number, length?: number): string {
696
- let code = '';
697
- if (Array.isArray(this.patterns)) {
698
- const patternStrArr = this.patterns.map((pattern) => {
699
- let patternStr = '';
700
- if (pattern instanceof TypeAnnotation) {
701
- patternStr += `this.$isInstanceOf(${expression.toJS?.()}, '${pattern.sortedTypeKey}')`;
702
- } else {
703
- patternStr += `this.$global.isEqual(${expression.toJS?.()}, ${pattern.toJS?.()})`;
704
- }
705
- return patternStr;
706
- });
707
- const patternStr = patternStrArr.join(' || ');
708
- if (length > 1) {
709
- if (index === 0) {
710
- code = `if (${patternStr}) {\n`;
711
- } else if (index !== length - 1) {
712
- code = `else if (${patternStr}) {\n`;
713
- } else {
714
- code += 'else {\n';
715
- }
716
- }
717
- if (Array.isArray(this.body)) {
718
- this.body.forEach((logicItem, bodyIndex) => {
719
- if (this.parentNode.isExpression && bodyIndex === this.body.length - 1 && logicItem.concept !== 'Abort') {
720
- code += `return `;
721
- }
722
- code += logicItem.toJS() + '\n';
723
- });
724
- }
725
- if (length > 1) {
726
- code += '}\n';
887
+ this.body.forEach((logicItem, bodyIndex) => {
888
+ if (bodyIndex === this.body.length - 1 && logicItem.concept !== 'Assignment') {
889
+ code += indent(state.tabSize);
890
+ code += `return `;
727
891
  }
892
+ code
893
+ += `${logicItem.toNaturalTS(shiftState(state, code, {
894
+ tabSize: state.tabSize + 1,
895
+ }))}\n`;
896
+ });
728
897
  }
729
- return code;
898
+ code += `${indent(state.tabSize) }}`;
899
+ } else {
900
+ code += indent(state.tabSize);
901
+ code += 'else {\n';
902
+ this.body.forEach((logicItem, bodyIndex) => {
903
+ if (bodyIndex === this.body.length - 1 && logicItem.concept !== 'Assignment') {
904
+ code += indent(state.tabSize);
905
+ code += `return `;
906
+ }
907
+ code += `${logicItem.toNaturalTS(shiftState(state, code, {
908
+ tabSize: state.tabSize + 1,
909
+ }))}\n`;
910
+ });
911
+ code += `${indent(state.tabSize) }}\n`;
912
+ }
913
+ } else {
914
+ this.body.forEach((logicItem, bodyIndex) => {
915
+ if (bodyIndex === this.body.length - 1 && logicItem.concept !== 'Assignment') {
916
+ code += indent(state.tabSize);
917
+ code += `return `;
918
+ }
919
+ code
920
+ += `${logicItem.toNaturalTS(shiftState(state, code, {
921
+ tabSize: state.tabSize,
922
+ }))}\n`;
923
+ });
924
+ code += '\n';
730
925
  }
731
926
 
732
- @withSourceMap()
733
- toEmbeddedTS(state?: TranslatorState, index?: number, parentCode?: string): string {
734
- let code = '\n';
735
-
736
- const parentNode = (this.parentNode as Match);
737
- const length = parentNode.cases.length;
738
-
739
- if (length > 1) {
740
- if (index !== length - 1) {
741
- code += indent((state?.tabSize || 0));
742
- code += 'if (';
743
- if (Array.isArray(this.patterns) && this.patterns.length) {
744
- this.patterns.forEach((pattern, index) => {
745
- // nasl.code.isUnionType<typeof ccc, List<Integer> | List<Boolean>>
746
- if (pattern instanceof TypeAnnotation) {
747
- if (index === 0) {
748
- code += `nasl.core.isUnionType<typeof `;
749
- code += `${parentCode},`;
750
- code += pattern.toEmbeddedTS(shiftState(state, code));
751
- } else {
752
- code += '|';
753
- code += pattern.toEmbeddedTS(shiftState(state, code));
754
- }
755
- if (index === this.patterns.length - 1) {
756
- code += '>';
757
- code += `(${parentCode})`;
758
- }
759
- } else {
760
- if (index !== 0) {
761
- code += ' || ';
762
- }
763
- code += parentCode;
764
- code += ' === ';
765
- code += pattern.toEmbeddedTS(shiftState(state, code, {
766
- tabSize: (state?.tabSize || 0),
767
- }));
768
- }
769
- });
770
- } else {
771
- code += '__IDENTIFIER__';
772
- }
773
- code += ') {\n';
774
-
775
- if (Array.isArray(this.body)) {
776
- this.body.forEach((logicItem, bodyIndex) => {
777
- if (bodyIndex === this.body.length - 1 && logicItem.concept !== 'Assignment') {
778
- code += indent((state?.tabSize || 0));
779
- code += `return `;
780
- }
781
- code
782
- += logicItem.toEmbeddedTS(shiftState(state, code, {
783
- tabSize: (state?.tabSize || 0),
784
- })) + '\n';
785
- });
786
- }
787
- code += indent((state?.tabSize || 0)) + '}\n';
788
- } else {
789
- code += indent((state?.tabSize || 0));
790
- code += 'else {\n';
791
- if (Array.isArray(this.body)) {
792
- this.body.forEach((logicItem, bodyIndex) => {
793
- if (bodyIndex === this.body.length - 1 && logicItem.concept !== 'Assignment') {
794
- code += indent((state?.tabSize || 0));
795
- code += `return `;
796
- }
797
- code
798
- += logicItem.toEmbeddedTS(shiftState(state, code, {
799
- tabSize: (state?.tabSize || 0),
800
- })) + '\n';
801
- });
802
- }
803
- code += indent((state?.tabSize || 0)) + '}\n';
804
- }
805
- } else {
806
- if (Array.isArray(this.body)) {
807
- this.body.forEach((logicItem, bodyIndex) => {
808
- if (bodyIndex === this.body.length - 1 && logicItem.concept !== 'Assignment') {
809
- code += indent((state?.tabSize || 0));
810
- code += `return `;
811
- }
812
- code
813
- += logicItem.toEmbeddedTS(shiftState(state, code, {
814
- tabSize: (state?.tabSize || 0),
815
- })) + '\n';
816
- });
817
- }
818
- code += '\n';
819
- }
927
+ return code;
928
+ }
820
929
 
821
- return code;
822
- }
823
- //================================================================================
824
- // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
825
- // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
826
- //================================================================================
930
+ //= ===============================================================================
931
+ // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
932
+ // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
933
+ //= ===============================================================================
827
934
  }
828
935
 
829
936
  classMap.MatchCase = MatchCase;
830
937
  export default MatchCase;
831
- //================================================================================
938
+ //= ===============================================================================
832
939
  // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
833
940
  // 自动生成的代码已结束。下面可以手动编写。
834
- //================================================================================
941
+ //= ===============================================================================
835
942
  // @ts-check