@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,14 +1,14 @@
1
+ import { v4 as uuidv4 } from 'uuid';
1
2
  import { TranslatorState, shiftState, withSourceMap, indent } from '../translator';
2
3
  import { ElementToVueOptions } from './ViewElement__';
3
- //================================================================================
4
+ //= ===============================================================================
4
5
  // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
5
6
  // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
6
- //================================================================================
7
+ //= ===============================================================================
7
8
  import { EventPayload, Params } from '../common/EventEmitter';
8
9
  import { concept, excludedInJSON, property } from '../decorators';
9
10
 
10
11
  import * as utils from '../utils';
11
- import { v4 as uuidv4 } from 'uuid';
12
12
  import BaseNode from '../common/BaseNode';
13
13
  import classMap from '../common/classMap';
14
14
  import TypeAnnotation from './TypeAnnotation__';
@@ -19,692 +19,709 @@ import LogicItem from './LogicItem__';
19
19
  */
20
20
  @concept('map构造器')
21
21
  export class NewMap extends LogicItem {
22
- /**
23
- * 产品概念
24
- */
25
- @property()
26
- concept: 'NewMap' = 'NewMap';
27
-
28
- /**
29
- * 类型
30
- */
31
- @property('TypeAnnotation')
32
- typeAnnotation: TypeAnnotation = undefined;
33
-
34
- /**
35
- * 键
36
- */
37
- @property('LogicItem')
38
- keys: Array<LogicItem> = [];
39
-
40
- /**
41
- * 键对应的值
42
- */
43
- @property('LogicItem')
44
- values: Array<LogicItem> = [];
45
-
46
-
47
-
48
- /**
49
- * @param source 需要合并的部分参数
50
- */
51
- constructor(source?: Partial<NewMap>) {
52
- source = Object.assign({}, NewMap.getDefaultOptions(), source);
53
- super(source);
54
- super.subConstructor(source);
55
- }
56
- getClassName() {
57
- return 'NewMap';
58
- }
59
-
60
- static from(source: any, parentNode?: any, parentKey?: string): NewMap {
61
- return super.from(source, parentNode, parentKey) as NewMap;
62
- }
63
-
64
-
65
- /**
66
- * 设置类型
67
- */
68
- setTypeAnnotation(typeAnnotation: TypeAnnotation) {
69
- typeAnnotation._delete();
70
- const relationOptions = { parentNode: this, parentKey: 'typeAnnotation' };
71
- Object.assign(typeAnnotation, relationOptions);
72
- const object = {
73
- typeAnnotation,
74
- };
75
- this.update({
76
- ...object,
77
- });
22
+ /**
23
+ * 产品概念
24
+ */
25
+ @property()
26
+ concept: 'NewMap' = 'NewMap';
27
+
28
+ /**
29
+ * 类型
30
+ */
31
+ @property('TypeAnnotation')
32
+ typeAnnotation: TypeAnnotation = undefined;
33
+
34
+ /**
35
+ * 键
36
+ */
37
+ @property('LogicItem')
38
+ keys: Array<LogicItem> = [];
39
+
40
+ /**
41
+ * 键对应的值
42
+ */
43
+ @property('LogicItem')
44
+ values: Array<LogicItem> = [];
45
+
46
+ /**
47
+ * @param source 需要合并的部分参数
48
+ */
49
+ constructor(source?: Partial<NewMap>) {
50
+ // @ts-ignore
51
+ source = { ...NewMap.getDefaultOptions(), ...source };
52
+ super(source);
53
+ super.subConstructor(source);
54
+ }
55
+
56
+ getClassName() {
57
+ return 'NewMap';
58
+ }
59
+
60
+ static from(source: any, parentNode?: any, parentKey?: string): NewMap {
61
+ return super.from(source, parentNode, parentKey) as NewMap;
62
+ }
63
+
64
+ /**
65
+ * 设置类型
66
+ */
67
+ setTypeAnnotation(typeAnnotation: TypeAnnotation) {
68
+ typeAnnotation._delete();
69
+ const relationOptions = { parentNode: this, parentKey: 'typeAnnotation' };
70
+ Object.assign(typeAnnotation, relationOptions);
71
+ const object = {
72
+ typeAnnotation,
73
+ };
74
+ this.update({
75
+ ...object,
76
+ });
77
+ }
78
+
79
+ /**
80
+ * 设置键
81
+ */
82
+ setKeys(keys: Array<LogicItem>) {
83
+ const object = {
84
+ keys,
85
+ };
86
+ this.update({
87
+ ...object,
88
+ });
89
+ }
90
+
91
+ /**
92
+ * 设置键对应的值
93
+ */
94
+ setValues(values: Array<LogicItem>) {
95
+ const object = {
96
+ values,
97
+ };
98
+ this.update({
99
+ ...object,
100
+ });
101
+ }
102
+
103
+ getItemExistingNames(excludedList: Array<LogicItem> = []) {
104
+ const excludedSet = new Set(excludedList);
105
+ return ((this.keys as LogicItem[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
106
+ }
107
+
108
+ getItemUniqueName(name = 'logicItem1') {
109
+ return utils.unique(name, this.getItemExistingNames(), undefined, false);
110
+ }
111
+
112
+ /**
113
+ * 插入逻辑项
114
+ * @internal
115
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
116
+ */
117
+ _insertItemInKeysAt(name: string, index: number): LogicItem;
118
+
119
+ /**
120
+ * 插入逻辑项
121
+ * @internal
122
+ * @param logicItemOptions 逻辑项参数
123
+ */
124
+ _insertItemInKeysAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
125
+
126
+ /**
127
+ * 插入逻辑项
128
+ * @internal
129
+ * @param logicItem 已有的逻辑项实例
130
+ */
131
+ _insertItemInKeysAt(logicItem: LogicItem, index: number): LogicItem;
132
+
133
+ _insertItemInKeysAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
134
+ const logicItemOptions: any = {};
135
+ const relationOptions = { parentNode: this, parentKey: 'keys' };
136
+ let logicItem: LogicItem;
137
+ if (!options) {
138
+ logicItem = LogicItem.from(
139
+ {
140
+ ...logicItemOptions,
141
+ name: this.getItemUniqueName(),
142
+ },
143
+ this,
144
+ 'keys'
145
+ );
146
+ } else if (typeof options === 'string') {
147
+ logicItem = LogicItem.from(
148
+ {
149
+ ...logicItemOptions,
150
+ name: options,
151
+ },
152
+ this,
153
+ 'keys'
154
+ );
155
+ } else if (options instanceof LogicItem) {
156
+ options.ensureDelete(); // 同一实例不支持多处存在
157
+ logicItem = options;
158
+ Object.assign(logicItem, relationOptions);
159
+ } else {
160
+ logicItem = LogicItem.from(
161
+ {
162
+ ...logicItemOptions,
163
+ ...options,
164
+ },
165
+ this,
166
+ 'keys'
167
+ );
78
168
  }
79
-
80
- /**
81
- * 设置键
82
- */
83
- setKeys(keys: Array<LogicItem>) {
84
- const object = {
85
- keys,
86
- };
87
- this.update({
88
- ...object,
89
- });
90
- }
91
-
92
- /**
93
- * 设置键对应的值
94
- */
95
- setValues(values: Array<LogicItem>) {
96
- const object = {
97
- values,
98
- };
99
- this.update({
100
- ...object,
101
- });
169
+ this.keys.splice(index, 0, logicItem);
170
+ return logicItem;
171
+ }
172
+
173
+ /**
174
+ * 插入逻辑项
175
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
176
+ */
177
+ insertItemInKeysAt(name: string, index: number): LogicItem;
178
+
179
+ /**
180
+ * 插入逻辑项
181
+ * @param logicItemOptions 逻辑项参数
182
+ */
183
+ insertItemInKeysAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
184
+
185
+ /**
186
+ * 插入逻辑项
187
+ * @param logicItem 已有的逻辑项实例
188
+ */
189
+ insertItemInKeysAt(logicItem: LogicItem, index: number): LogicItem;
190
+
191
+ insertItemInKeysAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
192
+ const node = this._insertItemInKeysAt(options as any, index);
193
+ node.create({
194
+ index,
195
+ parentNode: this,
196
+ parentKey: 'keys',
197
+ });
198
+ return node;
199
+ }
200
+
201
+ /**
202
+ * 添加逻辑项
203
+ * @internal
204
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
205
+ */
206
+ _addItemInKeys(name?: string): LogicItem;
207
+
208
+ /**
209
+ * 添加逻辑项
210
+ * @internal
211
+ * @param logicItemOptions 逻辑项参数
212
+ */
213
+ _addItemInKeys(logicItemOptions: Partial<LogicItem>): LogicItem;
214
+
215
+ /**
216
+ * 添加逻辑项
217
+ * @internal
218
+ * @param logicItem 已有的逻辑项实例
219
+ */
220
+ _addItemInKeys(logicItem: LogicItem): LogicItem;
221
+
222
+ _addItemInKeys(options?: string | Partial<LogicItem> | LogicItem) {
223
+ const index = this.keys.length;
224
+ return this._insertItemInKeysAt(options as any, index);
225
+ }
226
+
227
+ /**
228
+ * 添加逻辑项
229
+ * @internal
230
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
231
+ */
232
+ addItemInKeys(name?: string): LogicItem;
233
+
234
+ /**
235
+ * 添加逻辑项
236
+ * @param logicItemOptions 逻辑项参数
237
+ */
238
+ addItemInKeys(logicItemOptions: Partial<LogicItem>): LogicItem;
239
+
240
+ /**
241
+ * 添加逻辑项
242
+ * @param logicItem 已有的逻辑项实例
243
+ */
244
+ addItemInKeys(logicItem: LogicItem): LogicItem;
245
+
246
+ addItemInKeys(options?: string | Partial<LogicItem> | LogicItem) {
247
+ const node = this._addItemInKeys(options as any);
248
+ const index = this.keys.indexOf(node);
249
+ node.create({
250
+ index,
251
+ parentNode: this,
252
+ parentKey: 'keys',
253
+ });
254
+ return node;
255
+ }
256
+
257
+ /**
258
+ * 插入逻辑项
259
+ * @internal
260
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
261
+ */
262
+ _insertItemInValuesAt(name: string, index: number): LogicItem;
263
+
264
+ /**
265
+ * 插入逻辑项
266
+ * @internal
267
+ * @param logicItemOptions 逻辑项参数
268
+ */
269
+ _insertItemInValuesAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
270
+
271
+ /**
272
+ * 插入逻辑项
273
+ * @internal
274
+ * @param logicItem 已有的逻辑项实例
275
+ */
276
+ _insertItemInValuesAt(logicItem: LogicItem, index: number): LogicItem;
277
+
278
+ _insertItemInValuesAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
279
+ const logicItemOptions: any = {};
280
+ const relationOptions = { parentNode: this, parentKey: 'values' };
281
+ let logicItem: LogicItem;
282
+ if (!options) {
283
+ logicItem = LogicItem.from(
284
+ {
285
+ ...logicItemOptions,
286
+ name: this.getItemUniqueName(),
287
+ },
288
+ this,
289
+ 'values'
290
+ );
291
+ } else if (typeof options === 'string') {
292
+ logicItem = LogicItem.from(
293
+ {
294
+ ...logicItemOptions,
295
+ name: options,
296
+ },
297
+ this,
298
+ 'values'
299
+ );
300
+ } else if (options instanceof LogicItem) {
301
+ options.ensureDelete(); // 同一实例不支持多处存在
302
+ logicItem = options;
303
+ Object.assign(logicItem, relationOptions);
304
+ } else {
305
+ logicItem = LogicItem.from(
306
+ {
307
+ ...logicItemOptions,
308
+ ...options,
309
+ },
310
+ this,
311
+ 'values'
312
+ );
102
313
  }
103
-
104
- getItemExistingNames(excludedList: Array<LogicItem> = []) {
105
- const excludedSet = new Set(excludedList);
106
- return ((this.keys as LogicItem[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
314
+ this.values.splice(index, 0, logicItem);
315
+ return logicItem;
316
+ }
317
+
318
+ /**
319
+ * 插入逻辑项
320
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
321
+ */
322
+ insertItemInValuesAt(name: string, index: number): LogicItem;
323
+
324
+ /**
325
+ * 插入逻辑项
326
+ * @param logicItemOptions 逻辑项参数
327
+ */
328
+ insertItemInValuesAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
329
+
330
+ /**
331
+ * 插入逻辑项
332
+ * @param logicItem 已有的逻辑项实例
333
+ */
334
+ insertItemInValuesAt(logicItem: LogicItem, index: number): LogicItem;
335
+
336
+ insertItemInValuesAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
337
+ const node = this._insertItemInValuesAt(options as any, index);
338
+ node.create({
339
+ index,
340
+ parentNode: this,
341
+ parentKey: 'values',
342
+ });
343
+ return node;
344
+ }
345
+
346
+ /**
347
+ * 添加逻辑项
348
+ * @internal
349
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
350
+ */
351
+ _addItemInValues(name?: string): LogicItem;
352
+
353
+ /**
354
+ * 添加逻辑项
355
+ * @internal
356
+ * @param logicItemOptions 逻辑项参数
357
+ */
358
+ _addItemInValues(logicItemOptions: Partial<LogicItem>): LogicItem;
359
+
360
+ /**
361
+ * 添加逻辑项
362
+ * @internal
363
+ * @param logicItem 已有的逻辑项实例
364
+ */
365
+ _addItemInValues(logicItem: LogicItem): LogicItem;
366
+
367
+ _addItemInValues(options?: string | Partial<LogicItem> | LogicItem) {
368
+ const index = this.values.length;
369
+ return this._insertItemInValuesAt(options as any, index);
370
+ }
371
+
372
+ /**
373
+ * 添加逻辑项
374
+ * @internal
375
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
376
+ */
377
+ addItemInValues(name?: string): LogicItem;
378
+
379
+ /**
380
+ * 添加逻辑项
381
+ * @param logicItemOptions 逻辑项参数
382
+ */
383
+ addItemInValues(logicItemOptions: Partial<LogicItem>): LogicItem;
384
+
385
+ /**
386
+ * 添加逻辑项
387
+ * @param logicItem 已有的逻辑项实例
388
+ */
389
+ addItemInValues(logicItem: LogicItem): LogicItem;
390
+
391
+ addItemInValues(options?: string | Partial<LogicItem> | LogicItem) {
392
+ const node = this._addItemInValues(options as any);
393
+ const index = this.values.indexOf(node);
394
+ node.create({
395
+ index,
396
+ parentNode: this,
397
+ parentKey: 'values',
398
+ });
399
+ return node;
400
+ }
401
+
402
+ /**
403
+ * 删除类型标注
404
+ * @param name 类型标注名称
405
+ */
406
+ removeTypeAnnotation(name: string): void;
407
+
408
+ /**
409
+ * 删除类型标注
410
+ * @param typeAnnotation 已有的类型标注实例
411
+ */
412
+ removeTypeAnnotation(typeAnnotation: TypeAnnotation): void;
413
+
414
+ removeTypeAnnotation(options: string | TypeAnnotation) {
415
+ let typeAnnotation: TypeAnnotation;
416
+ if (typeof options === 'string') {
417
+ typeAnnotation = this.typeAnnotation;
418
+ if (!typeAnnotation) {
419
+ throw new Error(`找不到类型标注 ${options}`);
420
+ }
421
+ } else {
422
+ typeAnnotation = options;
107
423
  }
108
- getItemUniqueName(name = 'logicItem1') {
109
- return utils.unique(name, this.getItemExistingNames(), undefined, false);
110
- }
111
-
112
- /**
113
- * 插入逻辑项
114
- * @internal
115
- * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
116
- */
117
- _insertItemInKeysAt(name: string, index: number): LogicItem;
118
-
119
- /**
120
- * 插入逻辑项
121
- * @internal
122
- * @param logicItemOptions 逻辑项参数
123
- */
124
- _insertItemInKeysAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
125
-
126
- /**
127
- * 插入逻辑项
128
- * @internal
129
- * @param logicItem 已有的逻辑项实例
130
- */
131
- _insertItemInKeysAt(logicItem: LogicItem, index: number): LogicItem;
132
-
133
- _insertItemInKeysAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
134
- const logicItemOptions: any = {};
135
- const relationOptions = { parentNode: this, parentKey: 'keys' };
136
- let logicItem: LogicItem;
137
- if (!options) {
138
- logicItem = LogicItem.from({
139
- ...logicItemOptions,
140
- name: this.getItemUniqueName(),
141
- }, this, 'keys');
142
- } else if (typeof options === 'string') {
143
- logicItem = LogicItem.from({
144
- ...logicItemOptions,
145
- name: options,
146
- }, this, 'keys');
147
- } else if (options instanceof LogicItem) {
148
- options.ensureDelete(); // 同一实例不支持多处存在
149
- logicItem = options;
150
- Object.assign(logicItem, relationOptions);
151
- } else {
152
- logicItem = LogicItem.from({
153
- ...logicItemOptions,
154
- ...options,
155
- }, this, 'keys');
156
- }
157
- this.keys.splice(index, 0, logicItem);
158
- return logicItem;
424
+ return typeAnnotation.delete();
425
+ }
426
+
427
+ __removeTypeAnnotation(typeAnnotation: TypeAnnotation) {
428
+ const { parentKey } = typeAnnotation;
429
+ const params: Params = {
430
+ parentNode: this,
431
+ parentKey,
432
+ index: -1,
433
+ object: null,
434
+ oldObject: typeAnnotation,
435
+ };
436
+ if (parentKey) {
437
+ params.parentKey = parentKey;
438
+ if (Array.isArray((this as any)[parentKey])) {
439
+ const index = (this as any)[parentKey].indexOf(typeAnnotation);
440
+ ~index && (this as any)[parentKey].splice(index, 1);
441
+ params.index = index;
442
+ } else if ((this as any)[parentKey] === typeAnnotation) {
443
+ params.index = 0;
444
+ (this as any)[parentKey] = undefined;
445
+ }
159
446
  }
160
-
161
- /**
162
- * 插入逻辑项
163
- * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
164
- */
165
- insertItemInKeysAt(name: string, index: number): LogicItem;
166
-
167
- /**
168
- * 插入逻辑项
169
- * @param logicItemOptions 逻辑项参数
170
- */
171
- insertItemInKeysAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
172
-
173
- /**
174
- * 插入逻辑项
175
- * @param logicItem 已有的逻辑项实例
176
- */
177
- insertItemInKeysAt(logicItem: LogicItem, index: number): LogicItem;
178
-
179
- insertItemInKeysAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
180
- const node = this._insertItemInKeysAt(options as any, index);
181
- node.create({
182
- index,
183
- parentNode: this,
184
- parentKey: 'keys',
185
- });
186
- return node;
447
+ return params;
448
+ }
449
+
450
+ /**
451
+ * 删除逻辑项
452
+ * @param name 逻辑项名称
453
+ */
454
+ removeItemInKeys(name: string): void;
455
+
456
+ /**
457
+ * 删除逻辑项
458
+ * @param logicItem 已有的逻辑项实例
459
+ */
460
+ removeItemInKeys(logicItem: LogicItem): void;
461
+
462
+ removeItemInKeys(options: string | LogicItem) {
463
+ let logicItem: LogicItem;
464
+ if (typeof options === 'string') {
465
+ logicItem = (this.keys as LogicItem[]).find((item) => item.name === options);
466
+ if (!logicItem) {
467
+ throw new Error(`找不到逻辑项 ${options}`);
468
+ }
469
+ } else {
470
+ logicItem = options;
187
471
  }
188
-
189
- /**
190
- * 添加逻辑项
191
- * @internal
192
- * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
193
- */
194
- _addItemInKeys(name?: string): LogicItem;
195
-
196
- /**
197
- * 添加逻辑项
198
- * @internal
199
- * @param logicItemOptions 逻辑项参数
200
- */
201
- _addItemInKeys(logicItemOptions: Partial<LogicItem>): LogicItem;
202
-
203
- /**
204
- * 添加逻辑项
205
- * @internal
206
- * @param logicItem 已有的逻辑项实例
207
- */
208
- _addItemInKeys(logicItem: LogicItem): LogicItem;
209
-
210
- _addItemInKeys(options?: string | Partial<LogicItem> | LogicItem) {
211
- const index = this.keys.length;
212
- return this._insertItemInKeysAt(options as any, index);
472
+ return logicItem.delete();
473
+ }
474
+
475
+ /**
476
+ * 删除逻辑项
477
+ * @param name 逻辑项名称
478
+ */
479
+ removeItemInValues(name: string): void;
480
+
481
+ /**
482
+ * 删除逻辑项
483
+ * @param logicItem 已有的逻辑项实例
484
+ */
485
+ removeItemInValues(logicItem: LogicItem): void;
486
+
487
+ removeItemInValues(options: string | LogicItem) {
488
+ let logicItem: LogicItem;
489
+ if (typeof options === 'string') {
490
+ logicItem = (this.values as LogicItem[]).find((item) => item.name === options);
491
+ if (!logicItem) {
492
+ throw new Error(`找不到逻辑项 ${options}`);
493
+ }
494
+ } else {
495
+ logicItem = options;
213
496
  }
214
-
215
- /**
216
- * 添加逻辑项
217
- * @internal
218
- * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
219
- */
220
- addItemInKeys(name?: string): LogicItem;
221
-
222
- /**
223
- * 添加逻辑项
224
- * @param logicItemOptions 逻辑项参数
225
- */
226
- addItemInKeys(logicItemOptions: Partial<LogicItem>): LogicItem;
227
-
228
- /**
229
- * 添加逻辑项
230
- * @param logicItem 已有的逻辑项实例
231
- */
232
- addItemInKeys(logicItem: LogicItem): LogicItem;
233
-
234
- addItemInKeys(options?: string | Partial<LogicItem> | LogicItem) {
235
- const node = this._addItemInKeys(options as any);
236
- const index = this.keys.indexOf(node);
237
- node.create({
238
- index,
239
- parentNode: this,
240
- parentKey: 'keys',
241
- });
242
- return node;
497
+ return logicItem.delete();
498
+ }
499
+
500
+ __removeLogicItem(logicItem: LogicItem) {
501
+ const { parentKey } = logicItem;
502
+ const params: Params = {
503
+ parentNode: this,
504
+ parentKey,
505
+ index: -1,
506
+ object: null,
507
+ oldObject: logicItem,
508
+ };
509
+ if (parentKey) {
510
+ params.parentKey = parentKey;
511
+ if (Array.isArray((this as any)[parentKey])) {
512
+ const index = (this as any)[parentKey].indexOf(logicItem);
513
+ ~index && (this as any)[parentKey].splice(index, 1);
514
+ params.index = index;
515
+ } else if ((this as any)[parentKey] === logicItem) {
516
+ params.index = 0;
517
+ (this as any)[parentKey] = undefined;
518
+ }
243
519
  }
244
-
245
- /**
246
- * 插入逻辑项
247
- * @internal
248
- * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
249
- */
250
- _insertItemInValuesAt(name: string, index: number): LogicItem;
251
-
252
- /**
253
- * 插入逻辑项
254
- * @internal
255
- * @param logicItemOptions 逻辑项参数
256
- */
257
- _insertItemInValuesAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
258
-
259
- /**
260
- * 插入逻辑项
261
- * @internal
262
- * @param logicItem 已有的逻辑项实例
263
- */
264
- _insertItemInValuesAt(logicItem: LogicItem, index: number): LogicItem;
265
-
266
- _insertItemInValuesAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
267
- const logicItemOptions: any = {};
268
- const relationOptions = { parentNode: this, parentKey: 'values' };
269
- let logicItem: LogicItem;
270
- if (!options) {
271
- logicItem = LogicItem.from({
272
- ...logicItemOptions,
273
- name: this.getItemUniqueName(),
274
- }, this, 'values');
275
- } else if (typeof options === 'string') {
276
- logicItem = LogicItem.from({
277
- ...logicItemOptions,
278
- name: options,
279
- }, this, 'values');
280
- } else if (options instanceof LogicItem) {
281
- options.ensureDelete(); // 同一实例不支持多处存在
282
- logicItem = options;
283
- Object.assign(logicItem, relationOptions);
284
- } else {
285
- logicItem = LogicItem.from({
286
- ...logicItemOptions,
287
- ...options,
288
- }, this, 'values');
520
+ return params;
521
+ }
522
+
523
+ //= ===============================================================================
524
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
525
+ // 自动生成的代码已结束。下面可以手动编写。
526
+ //= ===============================================================================
527
+ getIterator() {
528
+ return this.keys.map((k, idx) => ({
529
+ key: k,
530
+ value: this.values[idx],
531
+ uid: uuidv4(),
532
+ }));
533
+ }
534
+
535
+ addPair() {
536
+ this.update({
537
+ keys: [...this.keys, undefined],
538
+ values: [...this.values, undefined],
539
+ });
540
+ }
541
+
542
+ removePair(idx: number) {
543
+ const k = this.keys.slice();
544
+ k.splice(idx, 1);
545
+ const v = this.values.slice();
546
+ v.splice(idx, 1);
547
+ this.update({
548
+ keys: k,
549
+ values: v,
550
+ });
551
+ }
552
+
553
+ toBrief(): string {
554
+ let code = '';
555
+ code += '[<br />';
556
+ this.keys.forEach((key, index) => {
557
+ if (index >= 10) return;
558
+ const value = this.values[index];
559
+ code += '&nbsp;&nbsp;&nbsp;&nbsp;';
560
+ code += `${key ? key.toBrief() : 'null'} -> ${value ? value.toBrief() : 'null'}`;
561
+ code += '<br />';
562
+ });
563
+ if (this.keys.length > 10) code += '&nbsp;&nbsp;&nbsp;&nbsp...<br />';
564
+ code += ']';
565
+ return code;
566
+ }
567
+
568
+ toJS(state?: TranslatorState): string {
569
+ let code = '';
570
+ code += 'await (async () => {\n';
571
+ code += 'const obj = {};\n';
572
+ code += 'let k;\n';
573
+ this.keys.forEach((item, index) => {
574
+ const key: any = item;
575
+ const value: any = this.values[index];
576
+ code += `k = `;
577
+ code += `${key ? key.toJS(shiftState(state, code, { inline: true })) : undefined};\n`;
578
+ code += 'obj[k] = ';
579
+ code += `${value ? value.toJS(shiftState(state, code, { inline: true })) : undefined};\n`;
580
+ });
581
+ code += `return obj;\n`;
582
+ code += '})()';
583
+ return code;
584
+ }
585
+
586
+ @withSourceMap()
587
+ toEmbeddedTS(state?: TranslatorState): string {
588
+ const indent0 = indent(state?.tabSize || 0);
589
+ const indent1 = indent((state?.tabSize || 0) + 1);
590
+ const indent2 = indent((state?.tabSize || 0) + 2);
591
+ let code = '';
592
+ if (this.typeAnnotation) {
593
+ const newConstructor = `nasl.util.New<${this.typeAnnotation.sortedTypeKey}>()`;
594
+ code += `${indent0}(() => { \n`;
595
+ // 方便ts报错检查
596
+ code += `${indent1}function __newComposite() {\n`;
597
+ this.keys.forEach((item, index) => {
598
+ const key = item;
599
+ code += `${indent2}nasl.util.MapPut(${newConstructor}, `;
600
+ code += `${key ? key.toEmbeddedTS(shiftState(state, code, { inline: true })) : null}`;
601
+ code += ', null)\n';
602
+ });
603
+ this.values.forEach((item, index) => {
604
+ const value = this.values[index];
605
+ code += `${indent2}nasl.util.MapPut(${newConstructor}, null, `;
606
+ code += `${value ? value.toEmbeddedTS(shiftState(state, code, { inline: true })) : null}`;
607
+ code += ')';
608
+ code += '\n';
609
+ });
610
+ code += `${indent2}return ${newConstructor};\n`;
611
+ code += `${indent1}};\n`;
612
+
613
+ code += `${indent1}return __newComposite();\n`;
614
+ code += `${indent0}})()`;
615
+ } else if (this.keys.some((key) => key) || this.values.some((value) => value)) {
616
+ code += `${indent0}(() => { \n`;
617
+ const valueTsArr: any = [];
618
+ let keyTs = 'null';
619
+ let valueTs = false;
620
+ let keyIndex = -1;
621
+ this.keys.forEach((key, index) => {
622
+ if (key) {
623
+ const ts = key.toEmbeddedTS(shiftState(state, code, { inline: true }));
624
+ if (keyIndex === -1 && !['__IDENTIFIER__', '__IDENTIFIER__()'].includes(ts)) {
625
+ keyIndex = index;
626
+ keyTs = ts;
627
+ }
289
628
  }
290
- this.values.splice(index, 0, logicItem);
291
- return logicItem;
292
- }
293
-
294
- /**
295
- * 插入逻辑项
296
- * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
297
- */
298
- insertItemInValuesAt(name: string, index: number): LogicItem;
299
-
300
- /**
301
- * 插入逻辑项
302
- * @param logicItemOptions 逻辑项参数
303
- */
304
- insertItemInValuesAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
305
-
306
- /**
307
- * 插入逻辑项
308
- * @param logicItem 已有的逻辑项实例
309
- */
310
- insertItemInValuesAt(logicItem: LogicItem, index: number): LogicItem;
311
-
312
- insertItemInValuesAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
313
- const node = this._insertItemInValuesAt(options as any, index);
314
- node.create({
315
- index,
316
- parentNode: this,
317
- parentKey: 'values',
318
- });
319
- return node;
320
- }
321
-
322
- /**
323
- * 添加逻辑项
324
- * @internal
325
- * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
326
- */
327
- _addItemInValues(name?: string): LogicItem;
328
-
329
- /**
330
- * 添加逻辑项
331
- * @internal
332
- * @param logicItemOptions 逻辑项参数
333
- */
334
- _addItemInValues(logicItemOptions: Partial<LogicItem>): LogicItem;
335
-
336
- /**
337
- * 添加逻辑项
338
- * @internal
339
- * @param logicItem 已有的逻辑项实例
340
- */
341
- _addItemInValues(logicItem: LogicItem): LogicItem;
342
-
343
- _addItemInValues(options?: string | Partial<LogicItem> | LogicItem) {
344
- const index = this.values.length;
345
- return this._insertItemInValuesAt(options as any, index);
629
+ });
630
+ this.values.length && (code += indent1);
631
+ this.values.forEach((item, index) => {
632
+ if (item) valueTs = true;
633
+ code += `nasl.core.ensureVoid(`;
634
+ const ts = item ? item.toEmbeddedTS(shiftState(state, code, { inline: true })) : null;
635
+ valueTsArr.push(ts);
636
+ code += valueTsArr[index];
637
+ code += '); ';
638
+ });
639
+ code += '\n';
640
+ if (keyTs === 'null' || !valueTs) {
641
+ code += `${indent1}__IDENTIFIER__;\n`;
642
+ }
643
+ // 方便ts报错检查
644
+ code += `${indent1}function __newComposite() {\n`;
645
+ this.keys.forEach((key: any) => {
646
+ if (!key) return;
647
+ code += `${indent2}nasl.core.compareNew(${keyTs}, `;
648
+ code += key.toEmbeddedTS(shiftState(state, code, { inline: true }));
649
+ code += ');\n';
650
+ });
651
+ if (keyIndex !== -1) {
652
+ code += `${indent2}nasl.util.ValidMapKey(`;
653
+ code += `${this.keys[keyIndex].toEmbeddedTS(shiftState(state, code, { inline: true }))});\n`;
654
+ }
655
+ code += `${indent2}return nasl.util.NewMap(`;
656
+ code += `${keyIndex === -1 ? 'null' : keyTs}, ...[`;
657
+ valueTsArr.forEach((ts: any, index: number) => {
658
+ code += ['__IDENTIFIER__', '__IDENTIFIER__()'].includes(ts) ? null : ts;
659
+ if (index + 1 < this.values.length) code += ', ';
660
+ });
661
+ code += ']);\n';
662
+
663
+ code += `${indent1}};\n`;
664
+
665
+ code += `${indent1}return __newComposite();\n`;
666
+ code += `${indent0}})()`;
667
+ } else {
668
+ code += `(() => {\n`;
669
+ code += `${indent1}__IDENTIFIER__;\n`;
670
+ code += `${indent1}function __newComposite() {\n`;
671
+ code += `${indent2}return nasl.util.NewMap(${null}, ${null});\n`;
672
+ code += `${indent1}};\n`;
673
+
674
+ code += `${indent1}return __newComposite();\n`;
675
+ code += `${indent0}})()`;
346
676
  }
347
-
348
- /**
349
- * 添加逻辑项
350
- * @internal
351
- * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
352
- */
353
- addItemInValues(name?: string): LogicItem;
354
-
355
- /**
356
- * 添加逻辑项
357
- * @param logicItemOptions 逻辑项参数
358
- */
359
- addItemInValues(logicItemOptions: Partial<LogicItem>): LogicItem;
360
-
361
- /**
362
- * 添加逻辑项
363
- * @param logicItem 已有的逻辑项实例
364
- */
365
- addItemInValues(logicItem: LogicItem): LogicItem;
366
-
367
- addItemInValues(options?: string | Partial<LogicItem> | LogicItem) {
368
- const node = this._addItemInValues(options as any);
369
- const index = this.values.indexOf(node);
370
- node.create({
371
- index,
372
- parentNode: this,
373
- parentKey: 'values',
374
- });
375
- return node;
677
+ return code;
678
+ }
679
+
680
+ @withSourceMap()
681
+ toNaturalTS(state?: TranslatorState): string {
682
+ let code = '';
683
+ if (this.typeAnnotation) {
684
+ code += `new ${this.typeAnnotation.sortedTypeKey}()`;
376
685
  }
377
-
378
-
379
-
380
-
381
- /**
382
- * 删除类型标注
383
- * @param name 类型标注名称
384
- */
385
- removeTypeAnnotation(name: string): void;
386
-
387
- /**
388
- * 删除类型标注
389
- * @param typeAnnotation 已有的类型标注实例
390
- */
391
- removeTypeAnnotation(typeAnnotation: TypeAnnotation): void;
392
-
393
- removeTypeAnnotation(options: string | TypeAnnotation) {
394
- let typeAnnotation: TypeAnnotation;
395
- if (typeof options === 'string') {
396
- typeAnnotation = this.typeAnnotation;
397
- if (!typeAnnotation) {
398
- throw new Error('找不到类型标注 ' + options);
399
- }
400
- } else {
401
- typeAnnotation = options;
402
- }
403
- return typeAnnotation.delete();
404
- }
405
-
406
- __removeTypeAnnotation(typeAnnotation: TypeAnnotation) {
407
- const parentKey = typeAnnotation.parentKey;
408
- const params: Params = {
409
- parentNode: this,
410
- parentKey,
411
- index: -1,
412
- object: null,
413
- oldObject: typeAnnotation,
414
- };
415
- if (parentKey) {
416
- params.parentKey = parentKey;
417
- if (Array.isArray((this as any)[parentKey])) {
418
- const index = (this as any)[parentKey].indexOf(typeAnnotation);
419
- ~index && (this as any)[parentKey].splice(index, 1);
420
- params.index = index;
421
- } else if ((this as any)[parentKey] === typeAnnotation) {
422
- params.index = 0;
423
- (this as any)[parentKey] = undefined;
424
- }
425
- }
426
- return params;
427
- }
428
-
429
-
430
-
431
- /**
432
- * 删除逻辑项
433
- * @param name 逻辑项名称
434
- */
435
- removeItemInKeys(name: string): void;
436
-
437
- /**
438
- * 删除逻辑项
439
- * @param logicItem 已有的逻辑项实例
440
- */
441
- removeItemInKeys(logicItem: LogicItem): void;
442
-
443
- removeItemInKeys(options: string | LogicItem) {
444
- let logicItem: LogicItem;
445
- if (typeof options === 'string') {
446
- logicItem = (this.keys as LogicItem[]).find((item) => item.name === options);
447
- if (!logicItem) {
448
- throw new Error('找不到逻辑项 ' + options);
449
- }
450
- } else {
451
- logicItem = options;
452
- }
453
- return logicItem.delete();
454
- }
455
-
456
-
457
-
458
- /**
459
- * 删除逻辑项
460
- * @param name 逻辑项名称
461
- */
462
- removeItemInValues(name: string): void;
463
-
464
- /**
465
- * 删除逻辑项
466
- * @param logicItem 已有的逻辑项实例
467
- */
468
- removeItemInValues(logicItem: LogicItem): void;
469
-
470
- removeItemInValues(options: string | LogicItem) {
471
- let logicItem: LogicItem;
472
- if (typeof options === 'string') {
473
- logicItem = (this.values as LogicItem[]).find((item) => item.name === options);
474
- if (!logicItem) {
475
- throw new Error('找不到逻辑项 ' + options);
476
- }
477
- } else {
478
- logicItem = options;
479
- }
480
- return logicItem.delete();
481
- }
482
-
483
- __removeLogicItem(logicItem: LogicItem) {
484
- const parentKey = logicItem.parentKey;
485
- const params: Params = {
486
- parentNode: this,
487
- parentKey,
488
- index: -1,
489
- object: null,
490
- oldObject: logicItem,
491
- };
492
- if (parentKey) {
493
- params.parentKey = parentKey;
494
- if (Array.isArray((this as any)[parentKey])) {
495
- const index = (this as any)[parentKey].indexOf(logicItem);
496
- ~index && (this as any)[parentKey].splice(index, 1);
497
- params.index = index;
498
- } else if ((this as any)[parentKey] === logicItem) {
499
- params.index = 0;
500
- (this as any)[parentKey] = undefined;
501
- }
502
- }
503
- return params;
504
- }
505
-
506
- //================================================================================
507
- // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
508
- // 自动生成的代码已结束。下面可以手动编写。
509
- //================================================================================
510
- getIterator() {
511
- return this.keys.map((k, idx) => ({
512
- key: k,
513
- value: this.values[idx],
514
- uid: uuidv4(),
515
- }));
516
- }
517
-
518
- addPair() {
519
- this.update({
520
- keys: [...this.keys, undefined],
521
- values: [...this.values, undefined],
522
- });
523
- }
524
-
525
- removePair(idx: number) {
526
- const k = this.keys.slice();
527
- k.splice(idx, 1);
528
- const v = this.values.slice();
529
- v.splice(idx, 1);
530
- this.update({
531
- keys: k,
532
- values: v,
533
- });
534
- }
535
-
536
- toBrief(): string {
537
- let code = '';
538
- code += '[<br />';
539
- this.keys.forEach((key, index) => {
540
- if (index >= 10)
541
- return;
542
- const value = this.values[index];
543
- code += '&nbsp;&nbsp;&nbsp;&nbsp;';
544
- code += `${key ? key.toBrief() : 'null'} -> ${value ? value.toBrief() : 'null'}`;
545
- code += '<br />';
546
- });
547
- if (this.keys.length > 10)
548
- code += '&nbsp;&nbsp;&nbsp;&nbsp...<br />';
549
- code += ']';
550
- return code;
551
- }
552
-
553
- toJS(state?: TranslatorState): string {
554
- let code = '';
555
- code += 'await (async () => {\n';
556
- code += 'const obj = {};\n';
557
- code += 'let k;\n';
558
- this.keys.forEach((item, index) => {
559
- const key: any = item;
560
- const value: any = this.values[index];
561
- code += `k = `;
562
- code += `${key ? key.toJS(shiftState(state, code, { inline: true })) : undefined};\n`;
563
- code += 'obj[k] = ';
564
- code += `${value ? value.toJS(shiftState(state, code, { inline: true })) : undefined};\n`;
565
- });
566
- code += `return obj;\n`;
567
- code += '})()';
568
- return code;
569
- }
570
-
571
- @withSourceMap()
572
- toEmbeddedTS(state?: TranslatorState): string {
573
- const indent0 = indent((state?.tabSize || 0));
574
- const indent1 = indent((state?.tabSize || 0) + 1);
575
- const indent2 = indent((state?.tabSize || 0) + 2);
576
- let code = '';
577
- if (this.typeAnnotation) {
578
- const newConstructor = `nasl.util.New<${this.typeAnnotation.sortedTypeKey}>()`;
579
- code += `${indent0}(() => { \n`;
580
- // 方便ts报错检查
581
- code += `${indent1}function __newComposite() {\n`;
582
- this.keys.forEach((item, index) => {
583
- const key = item;
584
- code += `${indent2}nasl.util.MapPut(${newConstructor}, `;
585
- code += `${key ? key.toEmbeddedTS(shiftState(state, code, { inline: true })) : null}`;
586
- code += ', null)\n';
587
- });
588
- this.values.forEach((item, index) => {
589
- const value = this.values[index];
590
- code += `${indent2}nasl.util.MapPut(${newConstructor}, null, `;
591
- code += `${value ? value.toEmbeddedTS(shiftState(state, code, { inline: true })) : null}`;
592
- code += ')';
593
- code += '\n';
594
- });
595
- code += `${indent2}return ${newConstructor};\n`;
596
- code += `${indent1}};\n`;
597
-
598
- code += `${indent1}return __newComposite();\n`;
599
- code += `${indent0}})()`;
600
- } else {
601
- if (this.keys.some((key) => key) || this.values.some((value) => value)) {
602
- code += `${indent0}(() => { \n`;
603
- const valueTsArr: any = [];
604
- let keyTs = 'null';
605
- let valueTs = false;
606
- let keyIndex = -1;
607
- this.keys.forEach((key, index) => {
608
- if (key) {
609
- const ts = key.toEmbeddedTS(shiftState(state, code, { inline: true }));
610
- if (keyIndex === -1 && !['__IDENTIFIER__', '__IDENTIFIER__()'].includes(ts)) {
611
- keyIndex = index;
612
- keyTs = ts;
613
- }
614
- }
615
- });
616
- this.values.length && (code += indent1);
617
- this.values.forEach((item, index) => {
618
- if (item)
619
- valueTs = true;
620
- code += `nasl.core.ensureVoid(`;
621
- const ts = item ? item.toEmbeddedTS(shiftState(state, code, { inline: true })) : null;
622
- valueTsArr.push(ts);
623
- code += valueTsArr[index];
624
- code += '); ';
625
- });
626
- code += '\n';
627
- if (keyTs === 'null' || !valueTs) {
628
- code += `${indent1}__IDENTIFIER__;\n`;
629
- }
630
- // 方便ts报错检查
631
- code += `${indent1}function __newComposite() {\n`;
632
- this.keys.forEach((key: any) => {
633
- if (!key)
634
- return;
635
- code += `${indent2}nasl.core.compareNew(${keyTs}, `;
636
- code += key.toEmbeddedTS(shiftState(state, code, { inline: true }));
637
- code += ');\n';
638
- });
639
- if (keyIndex !== -1) {
640
- code += `${indent2}nasl.util.ValidMapKey(`;
641
- code += `${this.keys[keyIndex].toEmbeddedTS(shiftState(state, code, { inline: true }))});\n`;
642
- }
643
- code += `${indent2}return nasl.util.NewMap(`;
644
- code += `${keyIndex === -1 ? 'null' : keyTs}, ...[`;
645
- valueTsArr.forEach((ts: any, index: number) => {
646
- code += ['__IDENTIFIER__', '__IDENTIFIER__()'].includes(ts) ? null : ts;
647
- if (index + 1 < this.values.length)
648
- code += ', ';
649
- });
650
- code += ']);\n';
651
-
652
- code += `${indent1}};\n`;
653
-
654
- code += `${indent1}return __newComposite();\n`;
655
- code += `${indent0}})()`;
656
- } else {
657
- code += `(() => {\n`;
658
- code += `${indent1}__IDENTIFIER__;\n`;
659
- code += `${indent1}function __newComposite() {\n`;
660
- code += `${indent2}return nasl.util.NewMap(${null}, ${null});\n`;
661
- code += `${indent1}};\n`;
662
-
663
- code += `${indent1}return __newComposite();\n`;
664
- code += `${indent0}})()`;
665
- }
666
- }
667
- return code;
668
- }
669
-
670
- getInitCode(state?: TranslatorState): string {
671
- let code = '';
672
- if (this.keys.some((key) => key) || this.values.some((value) => value)) {
673
- let keyBol = false;
674
- code += `nasl.util.NewMap(`;
675
- this.keys.forEach((key) => {
676
- if (key && !keyBol) {
677
- const ts = key.toEmbeddedTS(shiftState(state, code, { inline: true }));
678
- if (!['__IDENTIFIER__', '__IDENTIFIER__()'].includes(ts)) {
679
- keyBol = true;
680
- code += ts;
681
- }
682
- }
683
- });
684
- if (!keyBol)
685
- code += 'null';
686
- code += `, ...[`;
687
- this.values.forEach((item, index) => {
688
- const ts = item ? item.toEmbeddedTS(shiftState(state, code, { inline: true })) : null;
689
- code += ['__IDENTIFIER__', '__IDENTIFIER__()'].includes(ts) ? null : ts;
690
- if (index + 1 < this.values.length)
691
- code += ', ';
692
- });
693
- code += '])';
694
- } else {
695
- code += `nasl.util.NewMap(${null}, ${null})`;
686
+ return code;
687
+ }
688
+
689
+ getInitCode(state?: TranslatorState): string {
690
+ let code = '';
691
+ if (this.keys.some((key) => key) || this.values.some((value) => value)) {
692
+ let keyBol = false;
693
+ code += `nasl.util.NewMap(`;
694
+ this.keys.forEach((key) => {
695
+ if (key && !keyBol) {
696
+ const ts = key.toEmbeddedTS(shiftState(state, code, { inline: true }));
697
+ if (!['__IDENTIFIER__', '__IDENTIFIER__()'].includes(ts)) {
698
+ keyBol = true;
699
+ code += ts;
700
+ }
696
701
  }
697
- return code;
702
+ });
703
+ if (!keyBol) code += 'null';
704
+ code += `, ...[`;
705
+ this.values.forEach((item, index) => {
706
+ const ts = item ? item.toEmbeddedTS(shiftState(state, code, { inline: true })) : null;
707
+ code += ['__IDENTIFIER__', '__IDENTIFIER__()'].includes(ts) ? null : ts;
708
+ if (index + 1 < this.values.length) code += ', ';
709
+ });
710
+ code += '])';
711
+ } else {
712
+ code += `nasl.util.NewMap(${null}, ${null})`;
698
713
  }
699
- //================================================================================
700
- // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
701
- // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
702
- //================================================================================
714
+ return code;
715
+ }
716
+ //= ===============================================================================
717
+ // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
718
+ // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
719
+ //= ===============================================================================
703
720
  }
704
721
 
705
722
  classMap.NewMap = NewMap;
706
723
  export default NewMap;
707
- //================================================================================
724
+ //= ===============================================================================
708
725
  // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
709
726
  // 自动生成的代码已结束。下面可以手动编写。
710
- //================================================================================
727
+ //= ===============================================================================