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

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