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

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