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

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