@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,34 +1,34 @@
1
1
  import {
2
- BaseNode,
3
- Identifier,
4
- TypeAnnotation,
5
- StructureProperty,
6
- Structure,
7
- EntityProperty,
8
- Param,
9
- MemberExpression,
10
- CompletionProperty,
11
- Variable,
12
- Logic,
13
- ConfigProperty,
14
- App,
15
- SynatxNode,
16
- BindAttribute,
17
- Interface,
18
- CallLogic,
19
- BackendVariable,
20
- AuthLogic,
21
- AuthLogicForCallInterface,
2
+ BaseNode,
3
+ Identifier,
4
+ TypeAnnotation,
5
+ StructureProperty,
6
+ Structure,
7
+ EntityProperty,
8
+ Param,
9
+ MemberExpression,
10
+ CompletionProperty,
11
+ Variable,
12
+ Logic,
13
+ ConfigProperty,
14
+ App,
15
+ SynatxNode,
16
+ BindAttribute,
17
+ Interface,
18
+ CallLogic,
19
+ BackendVariable,
20
+ AuthLogic,
21
+ AuthLogicForCallInterface,
22
22
  } from '..';
23
23
  import { getNaslNodeByNodeCallee } from '../automate/engine/utils';
24
24
 
25
25
  interface variableItem {
26
- text: string;
27
- completionDetail: any;
28
- children?: variableItem[] | any;
29
- name?: string;
30
- value?: string;
31
- expression: MemberExpression | Identifier;
26
+ text: string;
27
+ completionDetail: any;
28
+ children?: variableItem[] | any;
29
+ name?: string;
30
+ value?: string;
31
+ expression: MemberExpression | Identifier;
32
32
  }
33
33
  /**
34
34
  * 把ts返回的详细信息截取成一个类型字符串
@@ -44,16 +44,16 @@ interface variableItem {
44
44
  * @returns type roles.DEV_AdminRole
45
45
  */
46
46
  function formatTs2TypeString(displayParts: Array<{ text: string; kind: string }>) {
47
- let str = '';
48
- displayParts?.forEach((item) => {
49
- str += item.text;
50
- });
51
- return str;
47
+ let str = '';
48
+ displayParts?.forEach((item) => {
49
+ str += item.text;
50
+ });
51
+ return str;
52
52
  }
53
53
 
54
54
  function isValidName(str: string) {
55
- const regex = /^[a-zA-Z][a-zA-Z0-9_]*$/;
56
- return regex.test(str);
55
+ const regex = /^[a-zA-Z][a-zA-Z0-9_]*$/;
56
+ return regex.test(str);
57
57
  }
58
58
  /**
59
59
  * 解析 Completion 和 QuickInfo 的 displayString
@@ -62,67 +62,66 @@ function isValidName(str: string) {
62
62
  * @returns TypeAnnotation
63
63
  */
64
64
  export function type2TypeAnnotation(oldType: Array<any> | {}): TypeAnnotation {
65
- if (!oldType)
66
- return null;
67
- let type = oldType;
68
- if (Array.isArray(oldType)) {
69
- type = oldType[0];
70
- }
71
- let typeAnnotation: TypeAnnotation;
72
- try {
73
- const { typeName, typeNamespace, typeArguments, typeKind, properties } = type as any;
74
- if (typeKind === 'anonymousStructure') {
75
- // 自定义类型
76
- const newProperties: StructureProperty[] = [];
77
- if (Array.isArray(properties) && properties.length) {
78
- properties.forEach((item) => {
79
- if (!item?.name?.startsWith('__')) {
80
- // 如果没有获取到类型,就默认塞一个string
81
- const itemType = type2TypeAnnotation(item.typeInfo) || TypeAnnotation.createPrimitive('String');
82
- const structureProperty = StructureProperty.from({ name: item.name, typeAnnotation: itemType }, typeAnnotation, 'properties');
83
- newProperties.push(structureProperty);
84
- }
85
- });
86
- }
87
- typeAnnotation = TypeAnnotation.createTypeAnonymousStructure(newProperties);
88
- } else if (!typeName || typeName === 'Promise' || typeName === 'nasl' || typeName === '___IDENTIFIER__') {
89
- return null;
90
- } else if (typeName === 'String' || typeName === 'Boolean') {
91
- typeAnnotation = TypeAnnotation.createPrimitive(typeName);
92
- } else if (typeName === 'Union') {
93
- typeAnnotation = TypeAnnotation.createPrimitive('Union');
94
- typeAnnotation.typeArguments = [];
95
- typeArguments.forEach((item: any) => {
96
- const typeItem = type2TypeAnnotation(item);
97
- if (typeItem) {
98
- typeAnnotation.typeArgumentsPush(typeItem);
99
- }
100
- });
101
- } else if (typeNamespace && typeNamespace.startsWith('nasl.core')) {
102
- typeAnnotation = TypeAnnotation.createPrimitive(typeName);
103
- } else if (typeNamespace && typeArguments?.length) {
104
- // 泛型类型
105
- typeAnnotation = TypeAnnotation.createGeneric(typeName, {
106
- typeNamespace,
107
- });
108
- // 如果有泛型处理泛型
109
- typeAnnotation.typeArguments = [];
110
- typeArguments.forEach((item: any) => {
111
- const typeItem = type2TypeAnnotation(item);
112
- if (typeItem) {
113
- typeAnnotation.typeArgumentsPush(typeItem);
114
- }
115
- });
116
- } else {
117
- // 其余的引用类型
118
- typeAnnotation = TypeAnnotation.createReference(typeName, {
119
- typeNamespace,
120
- });
65
+ if (!oldType) return null;
66
+ let type = oldType;
67
+ if (Array.isArray(oldType)) {
68
+ type = oldType[0];
69
+ }
70
+ let typeAnnotation: TypeAnnotation;
71
+ try {
72
+ const { typeName, typeNamespace, typeArguments, typeKind, properties } = type as any;
73
+ if (typeKind === 'anonymousStructure') {
74
+ // 自定义类型
75
+ const newProperties: StructureProperty[] = [];
76
+ if (Array.isArray(properties) && properties.length) {
77
+ properties.forEach((item) => {
78
+ if (!item?.name?.startsWith('__')) {
79
+ // 如果没有获取到类型,就默认塞一个string
80
+ const itemType = type2TypeAnnotation(item.typeInfo) || TypeAnnotation.createPrimitive('String');
81
+ const structureProperty = StructureProperty.from({ name: item.name, typeAnnotation: itemType }, typeAnnotation, 'properties');
82
+ newProperties.push(structureProperty);
83
+ }
84
+ });
85
+ }
86
+ typeAnnotation = TypeAnnotation.createTypeAnonymousStructure(newProperties);
87
+ } else if (!typeName || typeName === 'Promise' || typeName === 'nasl' || typeName === '___IDENTIFIER__') {
88
+ return null;
89
+ } else if (typeName === 'String' || typeName === 'Boolean') {
90
+ typeAnnotation = TypeAnnotation.createPrimitive(typeName);
91
+ } else if (typeName === 'Union') {
92
+ typeAnnotation = TypeAnnotation.createPrimitive('Union');
93
+ typeAnnotation.typeArguments = [];
94
+ typeArguments.forEach((item: any) => {
95
+ const typeItem = type2TypeAnnotation(item);
96
+ if (typeItem) {
97
+ typeAnnotation.typeArgumentsPush(typeItem);
98
+ }
99
+ });
100
+ } else if (typeNamespace && typeNamespace.startsWith('nasl.core')) {
101
+ typeAnnotation = TypeAnnotation.createPrimitive(typeName);
102
+ } else if (typeNamespace && typeArguments?.length) {
103
+ // 泛型类型
104
+ typeAnnotation = TypeAnnotation.createGeneric(typeName, {
105
+ typeNamespace,
106
+ });
107
+ // 如果有泛型处理泛型
108
+ typeAnnotation.typeArguments = [];
109
+ typeArguments.forEach((item: any) => {
110
+ const typeItem = type2TypeAnnotation(item);
111
+ if (typeItem) {
112
+ typeAnnotation.typeArgumentsPush(typeItem);
121
113
  }
122
- } catch (err) {
123
- console.log(err, type);
114
+ });
115
+ } else {
116
+ // 其余的引用类型
117
+ typeAnnotation = TypeAnnotation.createReference(typeName, {
118
+ typeNamespace,
119
+ });
124
120
  }
125
- return typeAnnotation;
121
+ } catch (err) {
122
+ console.log(err, type);
123
+ }
124
+ return typeAnnotation;
126
125
  }
127
126
 
128
127
  /**
@@ -132,148 +131,146 @@ export function type2TypeAnnotation(oldType: Array<any> | {}): TypeAnnotation {
132
131
  * @returns TypeAnnotation
133
132
  */
134
133
  export function displayString2TypeAnnotation(typeStr: string, parentPrefix?: string): TypeAnnotation {
135
- let type = '';
136
- if (typeStr?.includes(': ')) {
137
- const lastIndexOf = typeStr.lastIndexOf(': ');
138
- type = typeStr.substring(lastIndexOf + 2, typeStr.length);
134
+ let type = '';
135
+ if (typeStr?.includes(': ')) {
136
+ const lastIndexOf = typeStr.lastIndexOf(': ');
137
+ type = typeStr.substring(lastIndexOf + 2, typeStr.length);
138
+ } else {
139
+ type = typeStr;
140
+ }
141
+ if (!type) return;
142
+ type = type.replaceAll(' ', '');
143
+ if (type === 'Promise<void>') return null;
144
+ // 把后面结尾里带()的比如
145
+ // 'function nasl.core.add(left: nasl.core.Long, right: nasl.core.Long): nasl.core.Long (+12 overloads)'
146
+ if (type.includes('(') && type.includes(')')) {
147
+ type = type.replace(/\([^)]*\)/g, '');
148
+ }
149
+ let typeAnnotation;
150
+ try {
151
+ if (type.includes('<') && type.includes('>')) {
152
+ // 泛型的处理
153
+ typeAnnotation = createGenericTypeAnnotation(type, parentPrefix);
139
154
  } else {
140
- type = typeStr;
141
- }
142
- if (!type)
143
- return;
144
- type = type.replaceAll(' ', '');
145
- if (type === 'Promise<void>')
146
- return null;
147
- // 把后面结尾里带()的比如
148
- // 'function nasl.core.add(left: nasl.core.Long, right: nasl.core.Long): nasl.core.Long (+12 overloads)'
149
- if (type.includes('(') && type.includes(')')) {
150
- type = type.replace(/\([^)]*\)/g, '');
151
- }
152
- let typeAnnotation;
153
- try {
154
- if (type.includes('<') && type.includes('>')) {
155
- // 泛型的处理
156
- typeAnnotation = createGenericTypeAnnotation(type, parentPrefix);
157
- } else {
158
- typeAnnotation = createType2Annotation(type, parentPrefix);
159
- }
160
- } catch (err) {
161
- console.log(err);
155
+ typeAnnotation = createType2Annotation(type, parentPrefix);
162
156
  }
163
- return typeAnnotation as TypeAnnotation;
157
+ } catch (err) {
158
+ console.log(err);
159
+ }
160
+ return typeAnnotation as TypeAnnotation;
164
161
  }
165
162
 
166
163
  function createGenericTypeAnnotation(type: string, parentPrefix?: string) {
167
- // 取出匹配的内容
168
-
169
- const childType = type.substring(0, type.indexOf('<'));
170
- const typeAnnotation = createType2Annotation(childType);
171
- // 如果还有匹配到的多层泛型;
172
- // 取出匹配到的内容
173
- const types = /<([^()]+)>/g.exec(type);
174
- if (types === null)
175
- return types;
176
- const newtext = types[1];
177
- // 把匹配的值,的内容在,检索一遍,看是不是泛型套泛型
178
- const newTypes = /<([^()]+)>/g.exec(newtext);
179
- // 如果是的话就去递归
180
- if (newTypes) {
181
- const argTypeAnnotation = createGenericTypeAnnotation(newtext, parentPrefix);
182
- typeAnnotation.typeArguments = [argTypeAnnotation as TypeAnnotation];
164
+ // 取出匹配的内容
165
+
166
+ const childType = type.substring(0, type.indexOf('<'));
167
+ const typeAnnotation = createType2Annotation(childType);
168
+ // 如果还有匹配到的多层泛型;
169
+ // 取出匹配到的内容
170
+ const types = /<([^()]+)>/g.exec(type);
171
+ if (types === null) return types;
172
+ const newtext = types[1];
173
+ // 把匹配的值,的内容在,检索一遍,看是不是泛型套泛型
174
+ const newTypes = /<([^()]+)>/g.exec(newtext);
175
+ // 如果是的话就去递归
176
+ if (newTypes) {
177
+ const argTypeAnnotation = createGenericTypeAnnotation(newtext, parentPrefix);
178
+ typeAnnotation.typeArguments = [argTypeAnnotation as TypeAnnotation];
179
+ } else {
180
+ const argTypeAnnotation = createType2Annotation(newtext, parentPrefix);
181
+
182
+ // 如果不是就创造内部的真正类型
183
+ if (newtext.includes(',')) {
184
+ typeAnnotation.typeArguments = newtext.split(',').map((item) => createType2Annotation(item));
183
185
  } else {
184
- const argTypeAnnotation = createType2Annotation(newtext, parentPrefix);
185
-
186
- // 如果不是就创造内部的真正类型
187
- if (newtext.includes(',')) {
188
- typeAnnotation.typeArguments = newtext.split(',').map((item) => createType2Annotation(item));
189
- } else {
190
- typeAnnotation.typeArguments = [argTypeAnnotation];
191
- }
186
+ typeAnnotation.typeArguments = [argTypeAnnotation];
192
187
  }
193
- return typeAnnotation;
188
+ }
189
+ return typeAnnotation;
194
190
  }
195
191
  function createType2Annotation(type: string, parentPrefix?: string): TypeAnnotation {
196
- let typeAnnotation;
197
- // 没有泛型类型的
198
- const types = type.split('.');
199
- // 长度等于1就说明是
200
- if (types.length === 1) {
201
- typeAnnotation = TypeAnnotation.createPrimitive(types[0]);
192
+ let typeAnnotation;
193
+ // 没有泛型类型的
194
+ const types = type.split('.');
195
+ // 长度等于1就说明是
196
+ if (types.length === 1) {
197
+ typeAnnotation = TypeAnnotation.createPrimitive(types[0]);
198
+ } else {
199
+ const typeName = types.pop();
200
+ const typeNamespace = types.join('.');
201
+ if (type.startsWith('nasl.core')) {
202
+ typeAnnotation = TypeAnnotation.createPrimitive(typeName);
203
+ } else if (type.startsWith('nasl.ui')) {
204
+ typeAnnotation = TypeAnnotation.createReference(typeName, {
205
+ typeNamespace,
206
+ });
207
+ } else if (type.startsWith('nasl.process')) {
208
+ // nasl的引用类型
209
+ typeAnnotation = TypeAnnotation.createReference(typeName, {
210
+ typeNamespace,
211
+ });
212
+ } else if (type.startsWith('nasl.collection')) {
213
+ // nasl的泛型类型
214
+ typeAnnotation = TypeAnnotation.createGeneric(typeName, {
215
+ typeNamespace,
216
+ });
217
+ } else if (type.startsWith('dataSources.') || type.startsWith('structures.') || type.startsWith('enums.')) {
218
+ typeAnnotation = TypeAnnotation.createReference(typeName, {
219
+ typeNamespace: (parentPrefix || 'app.') + typeNamespace,
220
+ });
202
221
  } else {
203
- const typeName = types.pop();
204
- const typeNamespace = types.join('.');
205
- if (type.startsWith('nasl.core')) {
206
- typeAnnotation = TypeAnnotation.createPrimitive(typeName);
207
- } else if (type.startsWith('nasl.ui')) {
208
- typeAnnotation = TypeAnnotation.createReference(typeName, {
209
- typeNamespace,
210
- });
211
- } else if (type.startsWith('nasl.process')) {
212
- // nasl的引用类型
213
- typeAnnotation = TypeAnnotation.createReference(typeName, {
214
- typeNamespace,
215
- });
216
- } else if (type.startsWith('nasl.collection')) {
217
- // nasl的泛型类型
218
- typeAnnotation = TypeAnnotation.createGeneric(typeName, {
219
- typeNamespace,
220
- });
221
- } else if (type.startsWith('dataSources.') || type.startsWith('structures.') || type.startsWith('enums.')) {
222
- typeAnnotation = TypeAnnotation.createReference(typeName, {
223
- typeNamespace: (parentPrefix || 'app.') + typeNamespace,
224
- });
225
- } else {
226
- typeAnnotation = TypeAnnotation.createReference(typeName, {
227
- typeNamespace,
228
- });
229
- }
222
+ typeAnnotation = TypeAnnotation.createReference(typeName, {
223
+ typeNamespace,
224
+ });
230
225
  }
231
- return typeAnnotation;
226
+ }
227
+ return typeAnnotation;
232
228
  }
233
229
  export function getPlatformType(type: string): string {
234
- let tsType = '';
235
-
236
- if (type?.includes(': ')) {
237
- const lastIndexOf = type.lastIndexOf(': ');
238
- tsType = type.substring(lastIndexOf + 2, type.length);
239
- } else {
240
- tsType = type;
241
- }
242
- tsType = tsType.replaceAll(' ', '');
243
- const namespacePrefix = ['app', 'extensions', 'apis', 'components', 'nasl'];
244
- if (tsType === 'String') {
245
- return 'nasl.core.String';
246
- } else if (tsType === 'Boolean') {
247
- return 'nasl.core.Boolean';
230
+ let tsType = '';
231
+
232
+ if (type?.includes(': ')) {
233
+ const lastIndexOf = type.lastIndexOf(': ');
234
+ tsType = type.substring(lastIndexOf + 2, type.length);
235
+ } else {
236
+ tsType = type;
237
+ }
238
+ tsType = tsType.replaceAll(' ', '');
239
+ const namespacePrefix = ['app', 'extensions', 'apis', 'components', 'nasl'];
240
+ if (tsType === 'String') {
241
+ return 'nasl.core.String';
242
+ }
243
+ if (tsType === 'Boolean') {
244
+ return 'nasl.core.Boolean';
245
+ }
246
+
247
+ const strTypes = tsType.split('.');
248
+ if (strTypes.length) {
249
+ const first = strTypes[0];
250
+ // 如果不是这几个前缀就加一个namespace
251
+ if (!namespacePrefix.includes(first)) {
252
+ return `app.${tsType}`;
248
253
  }
249
-
250
- const strTypes = tsType.split('.');
251
- if (strTypes.length) {
252
- const first = strTypes[0];
253
- // 如果不是这几个前缀就加一个namespace
254
- if (!namespacePrefix.includes(first)) {
255
- return 'app.' + tsType;
256
- }
257
- }
258
- return tsType;
254
+ }
255
+ return tsType;
259
256
  }
260
257
  export function isNoChildType(type: String) {
261
- return (type?.startsWith('nasl.core') && !['String', 'Text', 'Email'].includes(type.split('.')[2])) || type?.startsWith('app.enums');
258
+ return (type?.startsWith('nasl.core') && !['String', 'Text', 'Email'].includes(type.split('.')[2])) || type?.startsWith('app.enums');
262
259
  }
263
260
  function findNode(typeKey: string, node: BaseNode) {
264
- let newType: Structure | Logic;
265
- if (typeKey.startsWith('nasl.') && typeKey.includes('<')) {
266
- const findGenericsIndex = typeKey.indexOf('<');
267
- typeKey = typeKey.substring(0, findGenericsIndex);
268
- const typeIndex = typeKey.lastIndexOf('.');
269
- newType = getNaslNodeByNodeCallee(typeKey.substring(0, typeIndex), typeKey.substring(typeIndex + 1, typeKey.length));
270
- } else if (typeKey.startsWith('nasl.')) {
271
- const typeIndex = typeKey.lastIndexOf('.');
272
- newType = getNaslNodeByNodeCallee(typeKey.substring(0, typeIndex), typeKey.substring(typeIndex + 1, typeKey.length));
273
- } else {
274
- newType = (node as Identifier)?.app?.findNodeByCompleteName(typeKey);
275
- }
276
- return newType;
261
+ let newType: Structure | Logic;
262
+ if (typeKey.startsWith('nasl.') && typeKey.includes('<')) {
263
+ const findGenericsIndex = typeKey.indexOf('<');
264
+ typeKey = typeKey.substring(0, findGenericsIndex);
265
+ const typeIndex = typeKey.lastIndexOf('.');
266
+ newType = getNaslNodeByNodeCallee(typeKey.substring(0, typeIndex), typeKey.substring(typeIndex + 1, typeKey.length));
267
+ } else if (typeKey.startsWith('nasl.')) {
268
+ const typeIndex = typeKey.lastIndexOf('.');
269
+ newType = getNaslNodeByNodeCallee(typeKey.substring(0, typeIndex), typeKey.substring(typeIndex + 1, typeKey.length));
270
+ } else {
271
+ newType = (node as Identifier)?.app?.findNodeByCompleteName(typeKey);
272
+ }
273
+ return newType;
277
274
  }
278
275
 
279
276
  /**
@@ -283,28 +280,28 @@ function findNode(typeKey: string, node: BaseNode) {
283
280
  * @param node 获取变量框的位置
284
281
  */
285
282
  export function nextFindTypeChild(typeKey: string, item: any, node: SynatxNode) {
286
- const newType = findNode(typeKey, node);
287
- if ((newType as Structure)?.properties && (newType as Structure).properties.length) {
288
- // 处理泛型的内容要取到值
289
- const StructureJson = newType.toJSON();
290
- const newStructure = new Structure(StructureJson);
291
- newStructure.properties.forEach((item: StructureProperty | EntityProperty) => {
292
- const itemType = item?.typeAnnotation?.typeKey;
293
- if (itemType === 'T' && /<([^()]+)>/g.exec(typeKey)) {
294
- const newTypes = /<([^()]+)>/g.exec(typeKey);
295
- // 找到当前原来的类型
296
- const contentType = getPlatformType(newTypes[1]);
297
- const typeNamespace = contentType.substring(0, contentType.lastIndexOf('.'));
298
- const typeName = contentType.substring(contentType.lastIndexOf('.') + 1, contentType.length);
299
- item.typeAnnotation = new TypeAnnotation({
300
- typeKind: 'reference',
301
- typeNamespace,
302
- typeName,
303
- });
304
- }
283
+ const newType = findNode(typeKey, node);
284
+ if ((newType as Structure)?.properties && (newType as Structure).properties.length) {
285
+ // 处理泛型的内容要取到值
286
+ const StructureJson = newType.toJSON();
287
+ const newStructure = new Structure(StructureJson);
288
+ newStructure.properties.forEach((item: StructureProperty | EntityProperty) => {
289
+ const itemType = item?.typeAnnotation?.typeKey;
290
+ if (itemType === 'T' && /<([^()]+)>/g.exec(typeKey)) {
291
+ const newTypes = /<([^()]+)>/g.exec(typeKey);
292
+ // 找到当前原来的类型
293
+ const contentType = getPlatformType(newTypes[1]);
294
+ const typeNamespace = contentType.substring(0, contentType.lastIndexOf('.'));
295
+ const typeName = contentType.substring(contentType.lastIndexOf('.') + 1, contentType.length);
296
+ item.typeAnnotation = new TypeAnnotation({
297
+ typeKind: 'reference',
298
+ typeNamespace,
299
+ typeName,
305
300
  });
306
- item.children = formatVariableData(newStructure.properties, node, item);
307
- }
301
+ }
302
+ });
303
+ item.children = formatVariableData(newStructure.properties, node, item);
304
+ }
308
305
  }
309
306
 
310
307
  /**
@@ -317,92 +314,94 @@ export function nextFindTypeChild(typeKey: string, item: any, node: SynatxNode)
317
314
  }>`
318
315
  */
319
316
  function getAStructureScopeType(type: string, parent: any, node: SynatxNode) {
320
- let newType = type.replaceAll(' ', '').replaceAll('\n', '').replace(/__name:"AStructure_\w{8}";/g, '');
321
-
322
- const parentItem: any = parent;
323
- // 如果没有父节点就是Identifier
324
- // value需要拼接生成
325
- const identifier = new Identifier({ name: parentItem.text });
326
- parentItem.expression = identifier;
327
- parentItem.value = parentItem.text;
328
- parentItem.name = parentItem.text;
329
-
330
- // 处理泛型的内容要取到值
331
- const newNode = findNode(newType, node);
332
-
333
- const StructureJson = newNode.toJSON();
334
- const newStructure = new Structure(StructureJson);
335
- const children = newStructure.properties;
336
- if (children && children.length) {
337
- const newChildren = children.map((structureProperty) => {
338
- const structureItem: any = structureProperty;
339
- // 如果没有父节点就是Identifier
340
- structureItem.value = `${parentItem.value}.${structureItem.name}`;
341
- const memberExpression = new MemberExpression({
342
- object: parentItem.expression,
343
- property: new Identifier({ name: structureItem.name }),
344
- });
345
- structureItem.expression = memberExpression;
346
- // 如果是从实体或者数据结构取的属性,就需要重置一下类型
347
- structureItem.concept = 'CompletionProperty';
348
- const completionProperty = new CompletionProperty(structureItem);
349
- completionProperty.icon = 'refProperty';
350
-
351
- if (structureItem.name === 'item') {
352
- const context = /\{([^()]+)\}/.exec(newType);
353
- newType = context[1];
354
- let res: any[] = [];
355
- newType.split(';').forEach((item) => {
356
- if (item) {
357
- const itemArr = item.split(':');
358
- const name = itemArr[0];
359
- let typeKey = itemArr[1];
360
- if (typeKey && typeKey.startsWith('dataSources')) {
361
- typeKey = 'app.' + typeKey;
362
- }
363
- // 如果ls传过来的名字是不合法的就隐藏
364
- if (!isValidName(name)) {
365
- console.warn(item, '获取变量不展示');
366
- return null;
367
- }
368
- res.push({
369
- name,
370
- typeKey,
371
- });
372
- }
373
- });
374
- res = res.map((item) => {
375
- const newItem: any = item;
376
- // 如果没有父节点就是Identifier
377
- newItem.value = `${structureItem.value}.${newItem.name}`;
378
- const memberExpression = new MemberExpression({
379
- object: structureItem.expression,
380
- property: new Identifier({ name: newItem.name }),
381
- });
382
- newItem.expression = memberExpression;
383
- // 如果是从实体或者数据结构取的属性,就需要重置一下类型
384
- newItem.concept = 'CompletionProperty';
385
- // 如果有类型而且类型不是没有子集的类型,就把他当前的类型拿到
386
- if (item.typeKey && !isNoChildType(item.typeKey)) {
387
- newItem.children = nextObjectTypeChild(item.typeKey, newItem, node);
388
- }
389
- newItem.typeAnnotation = displayString2TypeAnnotation(newItem.typeKey);
390
- const completionProperty = new CompletionProperty(newItem);
391
- completionProperty.icon = 'refProperty';
392
- return completionProperty;
393
- });
394
- completionProperty.children = res;
395
- return completionProperty;
396
- } else {
397
- return completionProperty;
317
+ let newType = type
318
+ .replaceAll(' ', '')
319
+ .replaceAll('\n', '')
320
+ .replace(/__name:"AStructure_\w{8}";/g, '');
321
+
322
+ const parentItem: any = parent;
323
+ // 如果没有父节点就是Identifier
324
+ // value需要拼接生成
325
+ const identifier = new Identifier({ name: parentItem.text });
326
+ parentItem.expression = identifier;
327
+ parentItem.value = parentItem.text;
328
+ parentItem.name = parentItem.text;
329
+
330
+ // 处理泛型的内容要取到值
331
+ const newNode = findNode(newType, node);
332
+
333
+ const StructureJson = newNode.toJSON();
334
+ const newStructure = new Structure(StructureJson);
335
+ const children = newStructure.properties;
336
+ if (children && children.length) {
337
+ const newChildren = children.map((structureProperty) => {
338
+ const structureItem: any = structureProperty;
339
+ // 如果没有父节点就是Identifier
340
+ structureItem.value = `${parentItem.value}.${structureItem.name}`;
341
+ const memberExpression = new MemberExpression({
342
+ object: parentItem.expression,
343
+ property: new Identifier({ name: structureItem.name }),
344
+ });
345
+ structureItem.expression = memberExpression;
346
+ // 如果是从实体或者数据结构取的属性,就需要重置一下类型
347
+ structureItem.concept = 'CompletionProperty';
348
+ const completionProperty = new CompletionProperty(structureItem);
349
+ completionProperty.icon = 'refProperty';
350
+
351
+ if (structureItem.name === 'item') {
352
+ const context = /\{([^()]+)\}/.exec(newType);
353
+ newType = context[1];
354
+ let res: any[] = [];
355
+ newType.split(';').forEach((item) => {
356
+ if (item) {
357
+ const itemArr = item.split(':');
358
+ const name = itemArr[0];
359
+ let typeKey = itemArr[1];
360
+ if (typeKey && typeKey.startsWith('dataSources')) {
361
+ typeKey = `app.${typeKey}`;
398
362
  }
363
+ // 如果ls传过来的名字是不合法的就隐藏
364
+ if (!isValidName(name)) {
365
+ console.warn(item, '获取变量不展示');
366
+ return null;
367
+ }
368
+ res.push({
369
+ name,
370
+ typeKey,
371
+ });
372
+ }
399
373
  });
400
- parentItem.children = newChildren;
401
- }
402
- const completionProperty = new CompletionProperty(parentItem);
403
- // 变量 param return 在这里添加图标
404
- completionProperty.icon = getNodeiconFromLogic(completionProperty, node);
405
- return completionProperty;
374
+ res = res.map((item) => {
375
+ const newItem: any = item;
376
+ // 如果没有父节点就是Identifier
377
+ newItem.value = `${structureItem.value}.${newItem.name}`;
378
+ const memberExpression = new MemberExpression({
379
+ object: structureItem.expression,
380
+ property: new Identifier({ name: newItem.name }),
381
+ });
382
+ newItem.expression = memberExpression;
383
+ // 如果是从实体或者数据结构取的属性,就需要重置一下类型
384
+ newItem.concept = 'CompletionProperty';
385
+ // 如果有类型而且类型不是没有子集的类型,就把他当前的类型拿到
386
+ if (item.typeKey && !isNoChildType(item.typeKey)) {
387
+ newItem.children = nextObjectTypeChild(item.typeKey, newItem, node);
388
+ }
389
+ newItem.typeAnnotation = displayString2TypeAnnotation(newItem.typeKey);
390
+ const completionProperty = new CompletionProperty(newItem);
391
+ completionProperty.icon = 'refProperty';
392
+ return completionProperty;
393
+ });
394
+ completionProperty.children = res;
395
+ return completionProperty;
396
+ }
397
+ return completionProperty;
398
+ });
399
+ parentItem.children = newChildren;
400
+ }
401
+ const completionProperty = new CompletionProperty(parentItem);
402
+ // 变量 param return 在这里添加图标
403
+ completionProperty.icon = getNodeiconFromLogic(completionProperty, node);
404
+ return completionProperty;
406
405
  }
407
406
  /**
408
407
  * 获取对象类型的下一级展示
@@ -418,344 +417,344 @@ function getAStructureScopeType(type: string, parent: any, node: SynatxNode) {
418
417
  }`
419
418
  */
420
419
  function getAStructureObjectStringType(type: string, parent: any, node: SynatxNode) {
421
- let newType = type.replaceAll(' ', '').replaceAll('\n', '').replace(/__name:"AStructure_\w{8}";/g, '');
422
- newType = newType.substring(1, newType.length - 1);
423
- if (/\{([^()]+)\}/.exec(newType)) {
424
- newType = newType.replace(/\{([^()]+)\}/, '');
420
+ let newType = type
421
+ .replaceAll(' ', '')
422
+ .replaceAll('\n', '')
423
+ .replace(/__name:"AStructure_\w{8}";/g, '');
424
+ newType = newType.substring(1, newType.length - 1);
425
+ if (/\{([^()]+)\}/.exec(newType)) {
426
+ newType = newType.replace(/\{([^()]+)\}/, '');
427
+ }
428
+ let res: any[] = [];
429
+ newType.split(';').forEach((item) => {
430
+ if (item) {
431
+ const itemArr = item.split(':');
432
+ const name = itemArr[0];
433
+ const typeKey = itemArr[1];
434
+ res.push({
435
+ name,
436
+ typeKey,
437
+ });
425
438
  }
426
- let res: any[] = [];
427
- newType.split(';').forEach((item) => {
428
- if (item) {
429
- const itemArr = item.split(':');
430
- const name = itemArr[0];
431
- const typeKey = itemArr[1];
432
- res.push({
433
- name,
434
- typeKey,
435
- });
436
- }
437
- });
438
- const parentItem: any = parent;
439
+ });
440
+ const parentItem: any = parent;
441
+ // 如果没有父节点就是Identifier
442
+ // value需要拼接生成
443
+ const identifier = new Identifier({ name: parentItem.text });
444
+ parentItem.expression = identifier;
445
+ parentItem.value = parentItem.text;
446
+ parentItem.name = parentItem.text;
447
+
448
+ // 如果是从实体或者数据结构取的属性,就需要重置一下类型
449
+ parentItem.concept = 'CompletionProperty';
450
+
451
+ res = res.map((item) => {
452
+ const newItem: any = item;
439
453
  // 如果没有父节点就是Identifier
440
- // value需要拼接生成
441
- const identifier = new Identifier({ name: parentItem.text });
442
- parentItem.expression = identifier;
443
- parentItem.value = parentItem.text;
444
- parentItem.name = parentItem.text;
445
-
446
- // 如果是从实体或者数据结构取的属性,就需要重置一下类型
447
- parentItem.concept = 'CompletionProperty';
448
-
449
- res = res.map((item) => {
450
- const newItem: any = item;
451
- // 如果没有父节点就是Identifier
452
- newItem.value = `${parentItem.value}.${newItem.name}`;
453
- const memberExpression = new MemberExpression({
454
- object: parentItem.expression,
455
- property: new Identifier({ name: newItem.name }),
456
- });
457
- newItem.expression = memberExpression;
458
- // 如果是从实体或者数据结构取的属性,就需要重置一下类型
459
- newItem.concept = 'CompletionProperty';
460
- // 如果有类型而且类型不是没有子集的类型,就把他当前的类型拿到
461
- if (item.typeKey && !isNoChildType(item.typeKey)) {
462
- newItem.children = nextObjectTypeChild(getPlatformType(item.typeKey), newItem, node);
463
- }
464
- newItem.typeAnnotation = displayString2TypeAnnotation(newItem.typeKey);
465
- const completionProperty = new CompletionProperty(newItem);
466
-
467
- completionProperty.icon = 'refProperty';
468
- return completionProperty;
454
+ newItem.value = `${parentItem.value}.${newItem.name}`;
455
+ const memberExpression = new MemberExpression({
456
+ object: parentItem.expression,
457
+ property: new Identifier({ name: newItem.name }),
469
458
  });
470
- parentItem.children = res;
471
- const completionProperty = new CompletionProperty(parentItem);
459
+ newItem.expression = memberExpression;
460
+ // 如果是从实体或者数据结构取的属性,就需要重置一下类型
461
+ newItem.concept = 'CompletionProperty';
462
+ // 如果有类型而且类型不是没有子集的类型,就把他当前的类型拿到
463
+ if (item.typeKey && !isNoChildType(item.typeKey)) {
464
+ newItem.children = nextObjectTypeChild(getPlatformType(item.typeKey), newItem, node);
465
+ }
466
+ newItem.typeAnnotation = displayString2TypeAnnotation(newItem.typeKey);
467
+ const completionProperty = new CompletionProperty(newItem);
472
468
 
473
- // 变量 param return 在这里添加图标
474
- completionProperty.icon = getNodeiconFromLogic(completionProperty, node);
469
+ completionProperty.icon = 'refProperty';
475
470
  return completionProperty;
471
+ });
472
+ parentItem.children = res;
473
+ const completionProperty = new CompletionProperty(parentItem);
474
+
475
+ // 变量 param return 在这里添加图标
476
+ completionProperty.icon = getNodeiconFromLogic(completionProperty, node);
477
+ return completionProperty;
476
478
  }
477
479
  function nextObjectTypeChild(typeKey: string, item: any, node: SynatxNode) {
478
- const newType = findNode(typeKey, node);
479
- if ((newType as Structure)?.properties && (newType as Structure).properties.length) {
480
- // 处理泛型的内容要取到值
481
- const StructureJson = newType.toJSON();
482
- const newStructure = new Structure(StructureJson);
483
- newStructure.properties.forEach((item: StructureProperty | EntityProperty) => {
484
- const itemType = item?.typeAnnotation?.typeKey;
485
- if (itemType === 'T' && /<([^()]+)>/g.exec(typeKey)) {
486
- const newTypes = /<([^()]+)>/g.exec(typeKey);
487
- // 找到当前原来的类型
488
- const contentType = getPlatformType(newTypes[1]);
489
- const typeNamespace = contentType.substring(0, contentType.lastIndexOf('.'));
490
- const typeName = contentType.substring(contentType.lastIndexOf('.') + 1, contentType.length);
491
- item.typeAnnotation = new TypeAnnotation({
492
- typeKind: 'reference',
493
- typeNamespace,
494
- typeName,
495
- });
496
- }
480
+ const newType = findNode(typeKey, node);
481
+ if ((newType as Structure)?.properties && (newType as Structure).properties.length) {
482
+ // 处理泛型的内容要取到值
483
+ const StructureJson = newType.toJSON();
484
+ const newStructure = new Structure(StructureJson);
485
+ newStructure.properties.forEach((item: StructureProperty | EntityProperty) => {
486
+ const itemType = item?.typeAnnotation?.typeKey;
487
+ if (itemType === 'T' && /<([^()]+)>/g.exec(typeKey)) {
488
+ const newTypes = /<([^()]+)>/g.exec(typeKey);
489
+ // 找到当前原来的类型
490
+ const contentType = getPlatformType(newTypes[1]);
491
+ const typeNamespace = contentType.substring(0, contentType.lastIndexOf('.'));
492
+ const typeName = contentType.substring(contentType.lastIndexOf('.') + 1, contentType.length);
493
+ item.typeAnnotation = new TypeAnnotation({
494
+ typeKind: 'reference',
495
+ typeNamespace,
496
+ typeName,
497
497
  });
498
- return formatVariableData(newStructure.properties, node, item);
499
- }
498
+ }
499
+ });
500
+ return formatVariableData(newStructure.properties, node, item);
501
+ }
500
502
  }
501
503
 
502
504
  function getNodeTypeVariableData(nodeType: any, item: any, node: SynatxNode) {
503
- item.value = item.text;
504
- item.name = item.text;
505
- const parentExpression = new Identifier({ name: item.text });
506
- item.expression = parentExpression;
507
- if (nodeType) {
508
- const typeAnnotation = type2TypeAnnotation(nodeType);
509
- const typeKeyMap = new Map();
510
- const app = (node.rootNode) as App;
511
- let structure: any = {};
512
-
513
- // 偶尔会报这个错误,先跳过吧
514
- if (!typeAnnotation) {
515
- return;
516
- }
517
-
518
- // 数据查询没有输出参数,特殊处理
519
- if (typeAnnotation.typeKind === 'anonymousStructure') {
520
- structure = { properties: typeAnnotation.properties };
521
- } else if (typeAnnotation.typeArguments) {
522
- structure = { properties: app.getSelectRef(typeAnnotation, true) };
523
- } else {
524
- structure = app.findNodeByCompleteName(typeAnnotation.typeNamespace + '.' + typeAnnotation.typeName);
525
- }
526
- structure?.properties?.forEach((structureProperty: StructureProperty) => {
527
- const { name, typeAnnotation } = structureProperty;
528
- const expression = new MemberExpression({
529
- object: parentExpression,
530
- property: new Identifier({ name }),
531
- });
532
- const completionData = new CompletionProperty({
533
- name,
534
- value: name,
535
- expression,
536
- children: [],
537
- });
538
- completionData.icon = 'refProperty';
539
-
540
- item.children.push(completionData);
541
- recursionProperty(typeAnnotation, completionData, node, typeKeyMap);
542
- });
505
+ item.value = item.text;
506
+ item.name = item.text;
507
+ const parentExpression = new Identifier({ name: item.text });
508
+ item.expression = parentExpression;
509
+ if (nodeType) {
510
+ const typeAnnotation = type2TypeAnnotation(nodeType);
511
+ const typeKeyMap = new Map();
512
+ const app = node.rootNode as App;
513
+ let structure: any = {};
514
+
515
+ // 偶尔会报这个错误,先跳过吧
516
+ if (!typeAnnotation) {
517
+ return;
543
518
  }
544
519
 
545
- const completionData = new CompletionProperty(item);
546
- // 变量 param return 在这里添加图标
547
- completionData.icon = getNodeiconFromLogic(completionData, node);
548
- return completionData;
549
- }
550
- function recursionProperty(structureTypeAnnotation: TypeAnnotation, parentCompletion: CompletionProperty, node: BaseNode, typeKeyMap: Map<string, number>) {
551
- const app = (node.rootNode) as App;
552
- let structure;
553
- if (structureTypeAnnotation.typeArguments) {
554
- structure = { properties: app.getSelectRef(structureTypeAnnotation, true) };
520
+ // 数据查询没有输出参数,特殊处理
521
+ if (typeAnnotation.typeKind === 'anonymousStructure') {
522
+ structure = { properties: typeAnnotation.properties };
523
+ } else if (typeAnnotation.typeArguments) {
524
+ structure = { properties: app.getSelectRef(typeAnnotation, true) };
555
525
  } else {
556
- if (structureTypeAnnotation.typeKind === 'anonymousStructure') {
557
- structure = { properties: structureTypeAnnotation.properties };
558
- } else {
559
- structure = app.findNodeByCompleteName(structureTypeAnnotation.typeNamespace + '.' + structureTypeAnnotation.typeName);
560
- }
526
+ structure = app.findNodeByCompleteName(`${typeAnnotation.typeNamespace}.${typeAnnotation.typeName}`);
561
527
  }
562
-
563
528
  structure?.properties?.forEach((structureProperty: StructureProperty) => {
564
- const { name, typeAnnotation } = structureProperty;
565
- const object = (BaseNode.from({ ...parentCompletion.expression.toJSON() }) as any);
566
- const expression = new MemberExpression({
567
- object,
568
- property: new Identifier({ name }),
569
- });
570
- const completionData = new CompletionProperty({
571
- name,
572
- value: name,
573
- expression,
574
- children: [],
575
- });
576
- completionData.icon = 'refProperty';
577
- parentCompletion.children.push(completionData);
578
- if (getNextFlag(typeAnnotation.typeKey, typeKeyMap)) {
579
- recursionProperty(typeAnnotation, completionData, node, typeKeyMap);
580
- }
529
+ const { name, typeAnnotation } = structureProperty;
530
+ const expression = new MemberExpression({
531
+ object: parentExpression,
532
+ property: new Identifier({ name }),
533
+ });
534
+ const completionData = new CompletionProperty({
535
+ name,
536
+ value: name,
537
+ expression,
538
+ children: [],
539
+ });
540
+ completionData.icon = 'refProperty';
541
+
542
+ item.children.push(completionData);
543
+ recursionProperty(typeAnnotation, completionData, node, typeKeyMap);
581
544
  });
545
+ }
546
+
547
+ const completionData = new CompletionProperty(item);
548
+ // 变量 param return 在这里添加图标
549
+ completionData.icon = getNodeiconFromLogic(completionData, node);
550
+ return completionData;
551
+ }
552
+ function recursionProperty(
553
+ structureTypeAnnotation: TypeAnnotation,
554
+ parentCompletion: CompletionProperty,
555
+ node: BaseNode,
556
+ typeKeyMap: Map<string, number>
557
+ ) {
558
+ const app = node.rootNode as App;
559
+ let structure;
560
+ if (structureTypeAnnotation.typeArguments) {
561
+ structure = { properties: app.getSelectRef(structureTypeAnnotation, true) };
562
+ } else if (structureTypeAnnotation.typeKind === 'anonymousStructure') {
563
+ structure = { properties: structureTypeAnnotation.properties };
564
+ } else {
565
+ structure = app.findNodeByCompleteName(`${structureTypeAnnotation.typeNamespace}.${structureTypeAnnotation.typeName}`);
566
+ }
567
+
568
+ structure?.properties?.forEach((structureProperty: StructureProperty) => {
569
+ const { name, typeAnnotation } = structureProperty;
570
+ const object = BaseNode.from({ ...parentCompletion.expression.toJSON() }) as any;
571
+ const expression = new MemberExpression({
572
+ object,
573
+ property: new Identifier({ name }),
574
+ });
575
+ const completionData = new CompletionProperty({
576
+ name,
577
+ value: name,
578
+ expression,
579
+ children: [],
580
+ });
581
+ completionData.icon = 'refProperty';
582
+ parentCompletion.children.push(completionData);
583
+ if (getNextFlag(typeAnnotation.typeKey, typeKeyMap)) {
584
+ recursionProperty(typeAnnotation, completionData, node, typeKeyMap);
585
+ }
586
+ });
582
587
  }
583
588
 
584
589
  function getNextFlag(typeKey: string, typeKeyMap: Map<string, number>) {
585
- if (['nasl.core.String', 'nasl.collection.List', 'nasl.collection.Map'].includes(typeKey))
586
- return true;
587
- if (typeKeyMap.get(typeKey) === 3) {
588
- return false;
589
- } else if (typeKeyMap.get(typeKey) > 0) {
590
- typeKeyMap.set(typeKey, typeKeyMap.get(typeKey) + 1);
591
- } else {
592
- typeKeyMap.set(typeKey, 1);
593
- }
594
- return true;
590
+ if (['nasl.core.String', 'nasl.collection.List', 'nasl.collection.Map'].includes(typeKey)) return true;
591
+ if (typeKeyMap.get(typeKey) === 3) {
592
+ return false;
593
+ }
594
+ if (typeKeyMap.get(typeKey) > 0) {
595
+ typeKeyMap.set(typeKey, typeKeyMap.get(typeKey) + 1);
596
+ } else {
597
+ typeKeyMap.set(typeKey, 1);
598
+ }
599
+ return true;
595
600
  }
596
601
  // 格式化变量数据
597
602
  export function formatVariableData(data: unknown | variableItem[], node: SynatxNode, parent?: any) {
598
- if (Array.isArray(data)) {
599
- let result = data.map((item) => {
600
- item.children = [];
601
- // 当前的类型如 app.entitys.entity1 nasl.core.String
602
- let typeKey: string;
603
- if (item.completionDetail) {
604
- if (item.completionDetail?.hasOwnProperty('nodeType') || item.completionDetail?.hasOwnProperty('newNodeType')) {
605
- const completionProperty = getNodeTypeVariableData(item.completionDetail?.nodeType || item.completionDetail?.newNodeType, item, node);
606
- return completionProperty;
607
- } else {
608
- // 当前节点的完整类型,主要是在有T的内容使用 nasl.list<Enum1> 内部匹配内容给里面子集的T赋值类型
609
- let currentType: string = formatTs2TypeString(item.completionDetail.displayParts as Array<{ text: string; kind: string }>);
610
- if (currentType) {
611
- if (currentType?.includes(': ')) {
612
- const indexOf = currentType.indexOf(': ');
613
- const newCurrentType = currentType.substring(indexOf + 2, currentType.length);
614
- // 如果是对象形式的就单独处理
615
- if (newCurrentType.startsWith('{') && newCurrentType.endsWith('}')) {
616
- const completionProperty = getAStructureObjectStringType(newCurrentType, item, node);
617
- return completionProperty;
618
- } else if (newCurrentType.startsWith('nasl.ui.Current<{')) {
619
- const completionProperty = getAStructureScopeType(newCurrentType, item, node);
620
- return completionProperty;
621
- } else if (newCurrentType.startsWith('nasl.collection.List<{') && newCurrentType.endsWith('}>')) {
622
- currentType = 'nasl.collection.List<nasl.core.Any>';
623
- }
624
- }
625
- }
626
- typeKey = getPlatformType(currentType);
627
- item.typeAnnotation = displayString2TypeAnnotation(typeKey);
628
- }
629
- } else if (item instanceof StructureProperty || item instanceof EntityProperty) {
630
- typeKey = item?.typeAnnotation?.typeKey;
631
- }
632
- // 如果没有父节点就是Identifier
633
- if (!parent) {
634
- // value需要拼接生成
635
- item.value = parent ? `${parent.value}.${item.text}` : item.text;
636
- item.name = item.text;
637
- const identifier = new Identifier({ name: item.name });
638
- item.expression = identifier;
639
- item.typeKey = typeKey;
640
- } else {
641
- item.value = `${parent.value}.${item.name}`;
642
- const object: any = BaseNode.from(parent.expression.toJSON());
643
- const memberExpression = new MemberExpression({
644
- object,
645
- property: new Identifier({ name: item.name }),
646
- });
647
- item.expression = memberExpression;
648
- item.variableParent = parent;
649
- item.typeKey = typeKey;
650
- // 标记实体属性是否是符合类型
651
- item.isComplexType = item.typeAnnotation?.isComplexType();
652
- }
653
- // 如果有类型而且类型不是没有子集的类型,就把他当前的类型拿到
654
- if (typeKey && !isNoChildType(typeKey)) {
655
- let currentParent = item;
656
- let typeKeyIndex = 0;
657
- while (currentParent.variableParent) {
658
- currentParent = currentParent.variableParent;
659
- if (currentParent.typeKey === typeKey) {
660
- typeKeyIndex++;
661
- }
662
- }
663
- // 向上找到3次一样的就结束
664
- if (typeKeyIndex < 3) {
665
- nextFindTypeChild(typeKey, item, node);
666
- }
603
+ if (Array.isArray(data)) {
604
+ let result = data.map((item) => {
605
+ item.children = [];
606
+ // 当前的类型如 app.entitys.entity1 nasl.core.String
607
+ let typeKey: string;
608
+ if (item.completionDetail) {
609
+ if (item.completionDetail?.hasOwnProperty('nodeType') || item.completionDetail?.hasOwnProperty('newNodeType')) {
610
+ const completionProperty = getNodeTypeVariableData(item.completionDetail?.nodeType || item.completionDetail?.newNodeType, item, node);
611
+ return completionProperty;
612
+ }
613
+ // 当前节点的完整类型,主要是在有T的内容使用 nasl.list<Enum1> 内部匹配内容给里面子集的T赋值类型
614
+ let currentType: string = formatTs2TypeString(item.completionDetail.displayParts as Array<{ text: string; kind: string }>);
615
+ if (currentType) {
616
+ if (currentType?.includes(': ')) {
617
+ const indexOf = currentType.indexOf(': ');
618
+ const newCurrentType = currentType.substring(indexOf + 2, currentType.length);
619
+ // 如果是对象形式的就单独处理
620
+ if (newCurrentType.startsWith('{') && newCurrentType.endsWith('}')) {
621
+ const completionProperty = getAStructureObjectStringType(newCurrentType, item, node);
622
+ return completionProperty;
667
623
  }
668
- // 如果是从实体或者数据结构取的属性,就需要重置一下类型
669
- item.concept = 'CompletionProperty';
670
- const completionProperty = new CompletionProperty(item);
671
- completionProperty.jsonName = item.jsonName;
672
- // 标记实体属性是否是符合类型
673
- if (typeof item.isComplexType === 'boolean') {
674
- Object.assign(completionProperty, { isComplexType: item.isComplexType });
624
+ if (newCurrentType.startsWith('nasl.ui.Current<{')) {
625
+ const completionProperty = getAStructureScopeType(newCurrentType, item, node);
626
+ return completionProperty;
675
627
  }
676
- if (!parent) {
677
- // 变量 param return 在这里添加图标
678
- completionProperty.icon = getNodeiconFromLogic(completionProperty, node);
679
- } else {
680
- completionProperty.icon = 'refProperty';
628
+ if (newCurrentType.startsWith('nasl.collection.List<{') && newCurrentType.endsWith('}>')) {
629
+ currentType = 'nasl.collection.List<nasl.core.Any>';
681
630
  }
682
- return completionProperty;
631
+ }
632
+ }
633
+ typeKey = getPlatformType(currentType);
634
+ item.typeAnnotation = displayString2TypeAnnotation(typeKey);
635
+ } else if (item instanceof StructureProperty || item instanceof EntityProperty) {
636
+ typeKey = item?.typeAnnotation?.typeKey;
637
+ }
638
+ // 如果没有父节点就是Identifier
639
+ if (!parent) {
640
+ // value需要拼接生成
641
+ item.value = parent ? `${parent.value}.${item.text}` : item.text;
642
+ item.name = item.text;
643
+ const identifier = new Identifier({ name: item.name });
644
+ item.expression = identifier;
645
+ item.typeKey = typeKey;
646
+ } else {
647
+ item.value = `${parent.value}.${item.name}`;
648
+ const object: any = BaseNode.from(parent.expression.toJSON());
649
+ const memberExpression = new MemberExpression({
650
+ object,
651
+ property: new Identifier({ name: item.name }),
683
652
  });
684
-
685
- /**
686
- * 排序result
687
- * 如果没有父级就是第一集就排序一下当前result,用户体验优化
688
- */
689
- if (!parent) {
690
- result = sortFirstVariableData(result, node);
653
+ item.expression = memberExpression;
654
+ item.variableParent = parent;
655
+ item.typeKey = typeKey;
656
+ // 标记实体属性是否是符合类型
657
+ item.isComplexType = item.typeAnnotation?.isComplexType();
658
+ }
659
+ // 如果有类型而且类型不是没有子集的类型,就把他当前的类型拿到
660
+ if (typeKey && !isNoChildType(typeKey)) {
661
+ let currentParent = item;
662
+ let typeKeyIndex = 0;
663
+ while (currentParent.variableParent) {
664
+ currentParent = currentParent.variableParent;
665
+ if (currentParent.typeKey === typeKey) {
666
+ typeKeyIndex++;
667
+ }
691
668
  }
669
+ // 向上找到3次一样的就结束
670
+ if (typeKeyIndex < 3) {
671
+ nextFindTypeChild(typeKey, item, node);
672
+ }
673
+ }
674
+ // 如果是从实体或者数据结构取的属性,就需要重置一下类型
675
+ item.concept = 'CompletionProperty';
676
+ const completionProperty = new CompletionProperty(item);
677
+ completionProperty.jsonName = item.jsonName;
678
+ // 标记实体属性是否是符合类型
679
+ if (typeof item.isComplexType === 'boolean') {
680
+ Object.assign(completionProperty, { isComplexType: item.isComplexType });
681
+ }
682
+ if (!parent) {
683
+ // 变量 param return 在这里添加图标
684
+ completionProperty.icon = getNodeiconFromLogic(completionProperty, node);
685
+ } else {
686
+ completionProperty.icon = 'refProperty';
687
+ }
688
+ return completionProperty;
689
+ });
692
690
 
693
- return result.filter(Boolean);
691
+ /**
692
+ * 排序result
693
+ * 如果没有父级就是第一集就排序一下当前result,用户体验优化
694
+ */
695
+ if (!parent) {
696
+ result = sortFirstVariableData(result, node);
694
697
  }
698
+
699
+ return result.filter(Boolean);
700
+ }
695
701
  }
696
702
 
697
703
  // 从logic获取节点的icon
698
704
  function getNodeiconFromLogic(completionProperty: CompletionProperty, node: SynatxNode): string {
699
- const { name: propName } = completionProperty;
700
- const { view } = node as Param;
701
- const logic = (node as Param).logic || (node as Param).OverriddenLogic || (node as Param).AuthLogic || (node as Param).AuthLogicForCallInterface;
702
-
705
+ const { name: propName } = completionProperty;
706
+ const { view } = node as Param;
707
+ const logic = (node as Param).logic || (node as Param).OverriddenLogic || (node as Param).AuthLogic || (node as Param).AuthLogicForCallInterface;
703
708
 
704
- if (node.concept === 'Identifier' || node.concept === 'BindAttribute' || node.concept === 'MemberExpression') {
705
- const callLogic = node.getAncestor<CallLogic>('CallLogic');
706
- const originLogic = callLogic?.getCallNode() as Logic;
709
+ if (node.concept === 'Identifier' || node.concept === 'BindAttribute' || node.concept === 'MemberExpression') {
710
+ const callLogic = node.getAncestor<CallLogic>('CallLogic');
711
+ const originLogic = callLogic?.getCallNode() as Logic;
707
712
 
708
- if (originLogic?.params.find((item) => item.name === propName)) {
709
- return 'param';
710
- }
713
+ if (originLogic?.params.find((item) => item.name === propName)) {
714
+ return 'param';
711
715
  }
716
+ }
712
717
 
713
- if (view) {
714
- // 前端逻辑调用
715
- const { params } = view;
718
+ if (view) {
719
+ // 前端逻辑调用
720
+ const { params } = view;
716
721
 
717
- if (params.find((item) => item.name === propName)) {
718
- return 'param';
719
- }
722
+ if (params.find((item) => item.name === propName)) {
723
+ return 'param';
720
724
  }
725
+ }
721
726
 
722
- if (logic) {
723
- const { params, returns } = logic;
724
-
725
- if (logic instanceof AuthLogicForCallInterface) {
726
- const { authParams } = logic;
727
- if (authParams.find((item) => item.name === completionProperty.name))
728
- return 'api-auth-params';
729
- if (params.find((item) => item.name === completionProperty.name))
730
- return 'api-auth-params';
731
- } else if (logic instanceof AuthLogic) {
732
- if (params.find((item) => item.name === completionProperty.name))
733
- return 'api-auth-params';
734
- } else {
735
- if (params.find((item) => item.name === completionProperty.name))
736
- return 'param';
737
- }
727
+ if (logic) {
728
+ const { params, returns } = logic;
738
729
 
739
- if (params.find((item) => item.name === propName)) {
740
- return 'param';
741
- } else if (returns.find((item) => item.name === propName)) {
742
- return 'return';
743
- } else {
744
- return 'variable';
745
- }
730
+ if (logic instanceof AuthLogicForCallInterface) {
731
+ const { authParams } = logic;
732
+ if (authParams.find((item) => item.name === completionProperty.name)) return 'api-auth-params';
733
+ if (params.find((item) => item.name === completionProperty.name)) return 'api-auth-params';
734
+ } else if (logic instanceof AuthLogic) {
735
+ if (params.find((item) => item.name === completionProperty.name)) return 'api-auth-params';
736
+ } else if (params.find((item) => item.name === completionProperty.name)) return 'param';
737
+
738
+ if (params.find((item) => item.name === propName)) {
739
+ return 'param';
740
+ }
741
+ if (returns.find((item) => item.name === propName)) {
742
+ return 'return';
746
743
  }
744
+ return 'variable';
745
+ }
747
746
 
748
- const bindAttr = node.getAncestor<BindAttribute>('BindAttribute');
747
+ const bindAttr = node.getAncestor<BindAttribute>('BindAttribute');
749
748
 
750
- if (bindAttr) {
751
- const interfaceInstance = bindAttr.getAncestor<Interface>('Interface');
749
+ if (bindAttr) {
750
+ const interfaceInstance = bindAttr.getAncestor<Interface>('Interface');
752
751
 
753
- if (interfaceInstance?.params.find((item) => item.name === propName)) {
754
- return 'param';
755
- }
752
+ if (interfaceInstance?.params.find((item) => item.name === propName)) {
753
+ return 'param';
756
754
  }
755
+ }
757
756
 
758
- return 'variable';
757
+ return 'variable';
759
758
  }
760
759
 
761
760
  /**
@@ -768,113 +767,113 @@ function getNodeiconFromLogic(completionProperty: CompletionProperty, node: Syna
768
767
  * 流程的韬哥自己解决了,所以先解决这两部分
769
768
  */
770
769
  function sortFirstVariableData(result: CompletionProperty[], node: BaseNode) {
771
- const newResult: CompletionProperty[] = [];
772
- const logic = (node as Param).logic;
773
- const view = (node as Param).view;
774
- if (view) {
775
- const { params, variables } = view;
776
- const list = [...params, ...variables];
777
- list.forEach((item) => {
778
- const findIndex = result.findIndex((findItem) => findItem.name === item.name);
779
- if (findIndex !== -1) {
780
- newResult.push(result[findIndex]);
781
- result.splice(findIndex, 1);
782
- }
783
- });
784
- }
785
- if (logic) {
786
- const { params, returns, variables } = logic;
787
- const list = [...params, ...returns, ...variables];
788
- list.forEach((item) => {
789
- const findIndex = result.findIndex((findItem) => findItem.name === item.name);
790
- if (findIndex !== -1) {
791
- newResult.push(result[findIndex]);
792
- result.splice(findIndex, 1);
793
- }
794
- });
795
- }
796
- newResult.push(...result);
797
- return newResult;
770
+ const newResult: CompletionProperty[] = [];
771
+ const { logic } = node as Param;
772
+ const { view } = node as Param;
773
+ if (view) {
774
+ const { params, variables } = view;
775
+ const list = [...params, ...variables];
776
+ list.forEach((item) => {
777
+ const findIndex = result.findIndex((findItem) => findItem.name === item.name);
778
+ if (findIndex !== -1) {
779
+ newResult.push(result[findIndex]);
780
+ result.splice(findIndex, 1);
781
+ }
782
+ });
783
+ }
784
+ if (logic) {
785
+ const { params, returns, variables } = logic;
786
+ const list = [...params, ...returns, ...variables];
787
+ list.forEach((item) => {
788
+ const findIndex = result.findIndex((findItem) => findItem.name === item.name);
789
+ if (findIndex !== -1) {
790
+ newResult.push(result[findIndex]);
791
+ result.splice(findIndex, 1);
792
+ }
793
+ });
794
+ }
795
+ newResult.push(...result);
796
+ return newResult;
798
797
  }
799
798
  export function formatBackendVariables(variables: Array<BackendVariable>) {
800
- const result = variables.map((itemNode) => {
801
- const namespace = itemNode.getNamespace();
802
- const newItem: any = {
803
- name: itemNode.name,
804
- value: itemNode.name,
805
- expression: new Identifier({
806
- name: itemNode.name,
807
- namespace,
808
- }),
809
- };
810
- const noChildType = isNoChildType(itemNode.typeAnnotation?.typeKey);
811
-
812
- if (!noChildType) {
813
- nextFindTypeChild(itemNode.typeAnnotation.typeKey, newItem, itemNode);
814
- }
815
- const completionProperty = new CompletionProperty(newItem);
816
- completionProperty.icon = 'backendVariable';
817
- return completionProperty;
818
- });
819
- return result;
799
+ const result = variables.map((itemNode) => {
800
+ const namespace = itemNode.getNamespace();
801
+ const newItem: any = {
802
+ name: itemNode.name,
803
+ value: itemNode.name,
804
+ expression: new Identifier({
805
+ name: itemNode.name,
806
+ namespace,
807
+ }),
808
+ };
809
+ const noChildType = isNoChildType(itemNode.typeAnnotation?.typeKey);
810
+
811
+ if (!noChildType) {
812
+ nextFindTypeChild(itemNode.typeAnnotation.typeKey, newItem, itemNode);
813
+ }
814
+ const completionProperty = new CompletionProperty(newItem);
815
+ completionProperty.icon = 'backendVariable';
816
+ return completionProperty;
817
+ });
818
+ return result;
820
819
  }
821
820
  export function formatFrontEndVariables(frontEndVariables: Array<Variable>) {
822
- const result = frontEndVariables.map((itemNode) => {
823
- const namespace = itemNode.getNamespace();
824
- const newItem: any = {
825
- name: itemNode.name,
826
- value: itemNode.name,
827
- expression: new Identifier({
828
- name: itemNode.name,
829
- namespace,
830
- }),
831
- };
832
- const noChildType = isNoChildType(itemNode.typeAnnotation?.typeKey);
833
-
834
- if (!noChildType) {
835
- nextFindTypeChild(itemNode.typeAnnotation.typeKey, newItem, itemNode);
836
- }
837
- const completionProperty = new CompletionProperty(newItem);
838
- completionProperty.icon = 'frontendVariable';
839
- return completionProperty;
840
- });
841
- return result;
821
+ const result = frontEndVariables.map((itemNode) => {
822
+ const namespace = itemNode.getNamespace();
823
+ const newItem: any = {
824
+ name: itemNode.name,
825
+ value: itemNode.name,
826
+ expression: new Identifier({
827
+ name: itemNode.name,
828
+ namespace,
829
+ }),
830
+ };
831
+ const noChildType = isNoChildType(itemNode.typeAnnotation?.typeKey);
832
+
833
+ if (!noChildType) {
834
+ nextFindTypeChild(itemNode.typeAnnotation.typeKey, newItem, itemNode);
835
+ }
836
+ const completionProperty = new CompletionProperty(newItem);
837
+ completionProperty.icon = 'frontendVariable';
838
+ return completionProperty;
839
+ });
840
+ return result;
842
841
  }
843
842
 
844
843
  export function formatConfigProperties(configProperties: Array<ConfigProperty>, isView: Boolean) {
845
- const result = configProperties.reduce((pre: any, item) => {
846
- const { isPrivate = false } = item;
847
-
848
- if (!isPrivate || !isView) {
849
- const namespace = item.getNamespace();
850
- const newItem: any = {
851
- name: item.name,
852
- value: item.name,
853
- expression: new Identifier({
854
- name: item.name,
855
- namespace,
856
- }),
857
- icon: 'configProperty',
858
- calleewholeKey: item.calleewholeKey,
859
- };
860
-
861
- pre.push(newItem);
862
- }
863
- return pre;
864
- }, []);
865
- // const result = configProperties.map((item) => {
866
- // const namespace = item.getNamespace();
867
- // const newItem: any = {
868
- // name: item.name,
869
- // value: item.name,
870
- // expression: new Identifier({
871
- // name: item.name,
872
- // namespace,
873
- // }),
874
- // icon: 'configProperty',
875
- // calleewholeKey: item.calleewholeKey,
876
- // };
877
- // return newItem;
878
- // });
879
- return result;
844
+ const result = configProperties.reduce((pre: any, item) => {
845
+ const { isPrivate = false } = item;
846
+
847
+ if (!isPrivate || !isView) {
848
+ const namespace = item.getNamespace();
849
+ const newItem: any = {
850
+ name: item.name,
851
+ value: item.name,
852
+ expression: new Identifier({
853
+ name: item.name,
854
+ namespace,
855
+ }),
856
+ icon: 'configProperty',
857
+ calleewholeKey: item.calleewholeKey,
858
+ };
859
+
860
+ pre.push(newItem);
861
+ }
862
+ return pre;
863
+ }, []);
864
+ // const result = configProperties.map((item) => {
865
+ // const namespace = item.getNamespace();
866
+ // const newItem: any = {
867
+ // name: item.name,
868
+ // value: item.name,
869
+ // expression: new Identifier({
870
+ // name: item.name,
871
+ // namespace,
872
+ // }),
873
+ // icon: 'configProperty',
874
+ // calleewholeKey: item.calleewholeKey,
875
+ // };
876
+ // return newItem;
877
+ // });
878
+ return result;
880
879
  }