@lcap/nasl 1.0.0-alpha.9 → 1.0.2

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 (481) hide show
  1. package/out/automate/engine/index.d.ts +3 -0
  2. package/out/automate/engine/index.js +414 -0
  3. package/out/automate/engine/index.js.map +1 -0
  4. package/out/automate/engine/operators.d.ts +13 -0
  5. package/out/automate/engine/operators.js +63 -0
  6. package/out/automate/engine/operators.js.map +1 -0
  7. package/out/automate/engine/uniqueName.d.ts +6 -0
  8. package/out/automate/engine/uniqueName.js +39 -0
  9. package/out/automate/engine/uniqueName.js.map +1 -0
  10. package/out/automate/engine/utils.d.ts +24 -0
  11. package/out/automate/engine/utils.js +379 -0
  12. package/out/automate/engine/utils.js.map +1 -0
  13. package/out/common/BaseNode.d.ts +21 -1
  14. package/out/common/BaseNode.js +232 -84
  15. package/out/common/BaseNode.js.map +1 -1
  16. package/out/concepts/App__.d.ts +19 -1
  17. package/out/concepts/App__.js +88 -45
  18. package/out/concepts/App__.js.map +1 -1
  19. package/out/concepts/Argument__.d.ts +5 -1
  20. package/out/concepts/Argument__.js +21 -3
  21. package/out/concepts/Argument__.js.map +1 -1
  22. package/out/concepts/Assignee__.d.ts +201 -0
  23. package/out/concepts/Assignee__.js +298 -0
  24. package/out/concepts/Assignee__.js.map +1 -0
  25. package/out/concepts/Assignment__.js +5 -0
  26. package/out/concepts/Assignment__.js.map +1 -1
  27. package/out/concepts/BinaryExpression__.js +8 -7
  28. package/out/concepts/BinaryExpression__.js.map +1 -1
  29. package/out/concepts/BindAttribute__.d.ts +19 -0
  30. package/out/concepts/BindAttribute__.js +55 -10
  31. package/out/concepts/BindAttribute__.js.map +1 -1
  32. package/out/concepts/BindDirective__.js +23 -3
  33. package/out/concepts/BindDirective__.js.map +1 -1
  34. package/out/concepts/BindEvent__.d.ts +2 -2
  35. package/out/concepts/BindEvent__.js +67 -34
  36. package/out/concepts/BindEvent__.js.map +1 -1
  37. package/out/concepts/BooleanLiteral__.d.ts +2 -0
  38. package/out/concepts/BooleanLiteral__.js +10 -0
  39. package/out/concepts/BooleanLiteral__.js.map +1 -1
  40. package/out/concepts/CallFunction__.js +58 -25
  41. package/out/concepts/CallFunction__.js.map +1 -1
  42. package/out/concepts/CallInterface__.d.ts +5 -0
  43. package/out/concepts/CallInterface__.js +238 -31
  44. package/out/concepts/CallInterface__.js.map +1 -1
  45. package/out/concepts/CallLogic__.d.ts +4 -4
  46. package/out/concepts/CallLogic__.js +107 -50
  47. package/out/concepts/CallLogic__.js.map +1 -1
  48. package/out/concepts/CallQueryComponent__.d.ts +38 -3
  49. package/out/concepts/CallQueryComponent__.js +329 -75
  50. package/out/concepts/CallQueryComponent__.js.map +1 -1
  51. package/out/concepts/Comment__.js +6 -2
  52. package/out/concepts/Comment__.js.map +1 -1
  53. package/out/concepts/CompletionProperty__.d.ts +3 -1
  54. package/out/concepts/CompletionProperty__.js +2 -0
  55. package/out/concepts/CompletionProperty__.js.map +1 -1
  56. package/out/concepts/ConfigGroup__.js +3 -3
  57. package/out/concepts/ConfigGroup__.js.map +1 -1
  58. package/out/concepts/ConfigProperty__.js +3 -3
  59. package/out/concepts/ConfigProperty__.js.map +1 -1
  60. package/out/concepts/Configuration__.js +3 -3
  61. package/out/concepts/Configuration__.js.map +1 -1
  62. package/out/concepts/Constant__.d.ts +1 -0
  63. package/out/concepts/Constant__.js +16 -2
  64. package/out/concepts/Constant__.js.map +1 -1
  65. package/out/concepts/Destination__.d.ts +12 -0
  66. package/out/concepts/Destination__.js +115 -22
  67. package/out/concepts/Destination__.js.map +1 -1
  68. package/out/concepts/End__.js +9 -1
  69. package/out/concepts/End__.js.map +1 -1
  70. package/out/concepts/EntityIndex__.js +4 -2
  71. package/out/concepts/EntityIndex__.js.map +1 -1
  72. package/out/concepts/EntityProperty__.d.ts +11 -0
  73. package/out/concepts/EntityProperty__.js +71 -5
  74. package/out/concepts/EntityProperty__.js.map +1 -1
  75. package/out/concepts/Entity__.d.ts +5 -4
  76. package/out/concepts/Entity__.js +35 -19
  77. package/out/concepts/Entity__.js.map +1 -1
  78. package/out/concepts/Enum__.d.ts +5 -0
  79. package/out/concepts/Enum__.js +24 -12
  80. package/out/concepts/Enum__.js.map +1 -1
  81. package/out/concepts/Event__.js +3 -3
  82. package/out/concepts/Event__.js.map +1 -1
  83. package/out/concepts/ForEachStatement__.d.ts +1 -1
  84. package/out/concepts/ForEachStatement__.js +11 -15
  85. package/out/concepts/ForEachStatement__.js.map +1 -1
  86. package/out/concepts/Function__.js +13 -13
  87. package/out/concepts/Function__.js.map +1 -1
  88. package/out/concepts/Identifier__.d.ts +3 -0
  89. package/out/concepts/Identifier__.js +77 -30
  90. package/out/concepts/Identifier__.js.map +1 -1
  91. package/out/concepts/IfStatement__.js +4 -4
  92. package/out/concepts/IfStatement__.js.map +1 -1
  93. package/out/concepts/InterfaceParam__.d.ts +6 -4
  94. package/out/concepts/InterfaceParam__.js +57 -19
  95. package/out/concepts/InterfaceParam__.js.map +1 -1
  96. package/out/concepts/Interface__.d.ts +42 -30
  97. package/out/concepts/Interface__.js +133 -17
  98. package/out/concepts/Interface__.js.map +1 -1
  99. package/out/concepts/JSBlock__.d.ts +1 -0
  100. package/out/concepts/JSBlock__.js +3 -0
  101. package/out/concepts/JSBlock__.js.map +1 -1
  102. package/out/concepts/LogicItem__.d.ts +2 -1
  103. package/out/concepts/LogicItem__.js +14 -0
  104. package/out/concepts/LogicItem__.js.map +1 -1
  105. package/out/concepts/Logic__.d.ts +20 -1
  106. package/out/concepts/Logic__.js +194 -37
  107. package/out/concepts/Logic__.js.map +1 -1
  108. package/out/concepts/MemberExpression__.d.ts +2 -0
  109. package/out/concepts/MemberExpression__.js +49 -13
  110. package/out/concepts/MemberExpression__.js.map +1 -1
  111. package/out/concepts/Module__.d.ts +126 -120
  112. package/out/concepts/Module__.js +36 -26
  113. package/out/concepts/Module__.js.map +1 -1
  114. package/out/concepts/Namespace__.d.ts +5 -1
  115. package/out/concepts/Namespace__.js +48 -37
  116. package/out/concepts/Namespace__.js.map +1 -1
  117. package/out/concepts/NullLiteral__.d.ts +3 -0
  118. package/out/concepts/NullLiteral__.js +11 -1
  119. package/out/concepts/NullLiteral__.js.map +1 -1
  120. package/out/concepts/NumericLiteral__.d.ts +1 -1
  121. package/out/concepts/NumericLiteral__.js +17 -6
  122. package/out/concepts/NumericLiteral__.js.map +1 -1
  123. package/out/concepts/Param__.d.ts +7 -3
  124. package/out/concepts/Param__.js +64 -28
  125. package/out/concepts/Param__.js.map +1 -1
  126. package/out/concepts/ProcessComponent__.js +6 -6
  127. package/out/concepts/ProcessComponent__.js.map +1 -1
  128. package/out/concepts/ProcessElement__.d.ts +0 -4
  129. package/out/concepts/ProcessElement__.js +123 -54
  130. package/out/concepts/ProcessElement__.js.map +1 -1
  131. package/out/concepts/ProcessOutcome__.js +1 -1
  132. package/out/concepts/ProcessOutcome__.js.map +1 -1
  133. package/out/concepts/Process__.d.ts +7 -1
  134. package/out/concepts/Process__.js +81 -85
  135. package/out/concepts/Process__.js.map +1 -1
  136. package/out/concepts/QueryAggregateExpression__.js +1 -1
  137. package/out/concepts/QueryAggregateExpression__.js.map +1 -1
  138. package/out/concepts/QueryFieldExpression__.d.ts +1 -0
  139. package/out/concepts/QueryFieldExpression__.js +3 -0
  140. package/out/concepts/QueryFieldExpression__.js.map +1 -1
  141. package/out/concepts/QueryFromExpression__.js +2 -2
  142. package/out/concepts/QueryFromExpression__.js.map +1 -1
  143. package/out/concepts/QueryGroupByExpression__.d.ts +3 -0
  144. package/out/concepts/QueryGroupByExpression__.js +20 -0
  145. package/out/concepts/QueryGroupByExpression__.js.map +1 -1
  146. package/out/concepts/QueryJoinExpression__.js +5 -5
  147. package/out/concepts/QueryJoinExpression__.js.map +1 -1
  148. package/out/concepts/QueryLimitExpression__.js +2 -2
  149. package/out/concepts/QueryLimitExpression__.js.map +1 -1
  150. package/out/concepts/QuerySelectExpression__.js +3 -3
  151. package/out/concepts/QuerySelectExpression__.js.map +1 -1
  152. package/out/concepts/Return__.d.ts +4 -1
  153. package/out/concepts/Return__.js +74 -23
  154. package/out/concepts/Return__.js.map +1 -1
  155. package/out/concepts/Role__.d.ts +4 -0
  156. package/out/concepts/Role__.js +13 -4
  157. package/out/concepts/Role__.js.map +1 -1
  158. package/out/concepts/SqlQueryComponent__.js +2 -2
  159. package/out/concepts/SqlQueryComponent__.js.map +1 -1
  160. package/out/concepts/StringLiteral__.d.ts +1 -1
  161. package/out/concepts/StringLiteral__.js +22 -39
  162. package/out/concepts/StringLiteral__.js.map +1 -1
  163. package/out/concepts/StructureProperty__.d.ts +5 -4
  164. package/out/concepts/StructureProperty__.js +55 -26
  165. package/out/concepts/StructureProperty__.js.map +1 -1
  166. package/out/concepts/Structure__.d.ts +44 -30
  167. package/out/concepts/Structure__.js +44 -12
  168. package/out/concepts/Structure__.js.map +1 -1
  169. package/out/concepts/SwitchCase__.js +4 -4
  170. package/out/concepts/SwitchCase__.js.map +1 -1
  171. package/out/concepts/SwitchStatement__.js +2 -2
  172. package/out/concepts/SwitchStatement__.js.map +1 -1
  173. package/out/concepts/TypeAnnotation__.d.ts +5 -5
  174. package/out/concepts/TypeAnnotation__.js +82 -20
  175. package/out/concepts/TypeAnnotation__.js.map +1 -1
  176. package/out/concepts/UnaryExpression__.js +10 -8
  177. package/out/concepts/UnaryExpression__.js.map +1 -1
  178. package/out/concepts/Unparsed__.js +1 -1
  179. package/out/concepts/Unparsed__.js.map +1 -1
  180. package/out/concepts/ValidationRule__.d.ts +1 -0
  181. package/out/concepts/ValidationRule__.js +48 -13
  182. package/out/concepts/ValidationRule__.js.map +1 -1
  183. package/out/concepts/Variable__.d.ts +10 -1
  184. package/out/concepts/Variable__.js +77 -20
  185. package/out/concepts/Variable__.js.map +1 -1
  186. package/out/concepts/ViewComponent__.js +15 -15
  187. package/out/concepts/ViewComponent__.js.map +1 -1
  188. package/out/concepts/ViewElement__.d.ts +17 -11
  189. package/out/concepts/ViewElement__.js +302 -204
  190. package/out/concepts/ViewElement__.js.map +1 -1
  191. package/out/concepts/View__.d.ts +13 -12
  192. package/out/concepts/View__.js +124 -102
  193. package/out/concepts/View__.js.map +1 -1
  194. package/out/concepts/WhileStatement__.js +3 -3
  195. package/out/concepts/WhileStatement__.js.map +1 -1
  196. package/out/concepts/basics/stdlib/index.js +4 -1
  197. package/out/concepts/basics/stdlib/index.js.map +1 -1
  198. package/out/concepts/basics/stdlib/{nasl.validate.d.ts → nasl.auth.d.ts} +0 -0
  199. package/out/concepts/basics/stdlib/nasl.auth.js +30 -0
  200. package/out/concepts/basics/stdlib/nasl.auth.js.map +1 -0
  201. package/out/concepts/basics/stdlib/nasl.browser.d.ts +3 -0
  202. package/out/concepts/basics/stdlib/nasl.browser.js +41 -0
  203. package/out/concepts/basics/stdlib/nasl.browser.js.map +1 -0
  204. package/out/concepts/basics/stdlib/nasl.configuration.d.ts +3 -0
  205. package/out/concepts/basics/stdlib/nasl.configuration.js +25 -0
  206. package/out/concepts/basics/stdlib/nasl.configuration.js.map +1 -0
  207. package/out/concepts/basics/stdlib/nasl.interface.d.ts +2 -0
  208. package/out/concepts/basics/stdlib/nasl.interface.js +4 -4
  209. package/out/concepts/basics/stdlib/nasl.interface.js.map +1 -1
  210. package/out/concepts/basics/stdlib/nasl.ui.js +20 -0
  211. package/out/concepts/basics/stdlib/nasl.ui.js.map +1 -1
  212. package/out/concepts/basics/stdlib/nasl.util.js +138 -18
  213. package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
  214. package/out/concepts/basics/stdlib/nasl.validation.js +54 -20
  215. package/out/concepts/basics/stdlib/nasl.validation.js.map +1 -1
  216. package/out/concepts/basics/stdlib/reference2TypeAnnotationList.js +1 -1
  217. package/out/concepts/basics/stdlib/reference2TypeAnnotationList.js.map +1 -1
  218. package/out/concepts/basics/types/coreTypeList.js +11 -10
  219. package/out/concepts/basics/types/coreTypeList.js.map +1 -1
  220. package/out/concepts/basics/types/index.d.ts +1 -0
  221. package/out/concepts/basics/types/index.js +3 -1
  222. package/out/concepts/basics/types/index.js.map +1 -1
  223. package/out/concepts/index__.d.ts +1 -0
  224. package/out/concepts/index__.js +1 -0
  225. package/out/concepts/index__.js.map +1 -1
  226. package/out/config.d.ts +1 -2
  227. package/out/config.js +1 -2
  228. package/out/config.js.map +1 -1
  229. package/out/enums/KEYWORDS.d.ts +3 -0
  230. package/out/enums/KEYWORDS.js +1199 -0
  231. package/out/enums/KEYWORDS.js.map +1 -0
  232. package/out/{terms → enums}/LEVEL_NAME_MAP.d.ts +0 -0
  233. package/out/{terms → enums}/LEVEL_NAME_MAP.js +0 -0
  234. package/out/{terms → enums}/LEVEL_NAME_MAP.js.map +1 -1
  235. package/out/eventBus.d.ts +3 -0
  236. package/out/eventBus.js +7 -0
  237. package/out/eventBus.js.map +1 -0
  238. package/out/generator/genBundleFiles.d.ts +7 -2
  239. package/out/generator/genBundleFiles.js +168 -27
  240. package/out/generator/genBundleFiles.js.map +1 -1
  241. package/out/generator/genMetaData.d.ts +20 -20
  242. package/out/generator/genMetaData.js +50 -15
  243. package/out/generator/genMetaData.js.map +1 -1
  244. package/out/index.d.ts +2 -0
  245. package/out/index.js +2 -0
  246. package/out/index.js.map +1 -1
  247. package/out/manager/diagnostic.d.ts +2 -2
  248. package/out/server/createUiTs.d.ts +1 -0
  249. package/out/server/createUiTs.js +49 -5
  250. package/out/server/createUiTs.js.map +1 -1
  251. package/out/server/entity2LogicNamespace.js +38 -23
  252. package/out/server/entity2LogicNamespace.js.map +1 -1
  253. package/out/server/extendBaseNode.d.ts +1 -0
  254. package/out/server/extendBaseNode.js +323 -0
  255. package/out/server/extendBaseNode.js.map +1 -0
  256. package/out/server/getExtensionModules.js +2 -0
  257. package/out/server/getExtensionModules.js.map +1 -1
  258. package/out/server/getFunctions.d.ts +1 -0
  259. package/out/server/getFunctions.js +7 -1
  260. package/out/server/getFunctions.js.map +1 -1
  261. package/out/server/getLogics.js +84 -18
  262. package/out/server/getLogics.js.map +1 -1
  263. package/out/server/getMemberIdentifier.d.ts +16 -1
  264. package/out/server/getMemberIdentifier.js +326 -38
  265. package/out/server/getMemberIdentifier.js.map +1 -1
  266. package/out/server/getProcesses.d.ts +8 -1
  267. package/out/server/getProcesses.js +383 -1
  268. package/out/server/getProcesses.js.map +1 -1
  269. package/out/server/getScope.d.ts +13 -0
  270. package/out/server/getScope.js +61 -0
  271. package/out/server/getScope.js.map +1 -0
  272. package/out/server/index.d.ts +1 -0
  273. package/out/server/index.js +5 -0
  274. package/out/server/index.js.map +1 -1
  275. package/out/server/naslServer.d.ts +36 -57
  276. package/out/server/naslServer.js +689 -615
  277. package/out/server/naslServer.js.map +1 -1
  278. package/out/server/process2LogicNamespace.d.ts +10 -0
  279. package/out/server/process2LogicNamespace.js +29 -1
  280. package/out/server/process2LogicNamespace.js.map +1 -1
  281. package/out/server/translator.d.ts +22 -3
  282. package/out/server/translator.js +369 -123
  283. package/out/server/translator.js.map +1 -1
  284. package/out/service/creator/add.configs.d.ts +1 -0
  285. package/out/service/creator/add.configs.js +68 -0
  286. package/out/service/creator/add.configs.js.map +1 -0
  287. package/out/service/creator/errHandles.d.ts +18 -0
  288. package/out/service/creator/errHandles.js +60 -0
  289. package/out/service/creator/errHandles.js.map +1 -0
  290. package/out/service/creator/index.d.ts +1 -0
  291. package/out/service/creator/index.js +72 -0
  292. package/out/service/creator/index.js.map +1 -0
  293. package/out/service/storage/api.d.ts +18 -0
  294. package/out/service/storage/api.js +17 -0
  295. package/out/service/storage/api.js.map +1 -0
  296. package/out/service/storage/init.js +221 -37
  297. package/out/service/storage/init.js.map +1 -1
  298. package/out/service/storage/service.d.ts +2 -0
  299. package/out/service/storage/service.js +10 -0
  300. package/out/service/storage/service.js.map +1 -0
  301. package/out/service/storage/storagePoint.d.ts +1 -14
  302. package/out/service/storage/storagePoint.js +16 -16
  303. package/out/service/storage/storagePoint.js.map +1 -1
  304. package/out/templator/genCreateBlock.js +6 -6
  305. package/out/templator/genCreateBlock.js.map +1 -1
  306. package/out/templator/genCurdEditMultipleKeyBlock.js +13 -17
  307. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  308. package/out/templator/genCurdMultipleKeyBlock.js +11 -11
  309. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  310. package/out/templator/genEditTableBlock.js +5 -5
  311. package/out/templator/genEditTableBlock.js.map +1 -1
  312. package/out/templator/genEnumSelectBlock.js +2 -2
  313. package/out/templator/genEnumSelectBlock.js.map +1 -1
  314. package/out/templator/genGetBlock.js +6 -4
  315. package/out/templator/genGetBlock.js.map +1 -1
  316. package/out/templator/genGridViewBlock.d.ts +3 -1
  317. package/out/templator/genGridViewBlock.js +61 -6
  318. package/out/templator/genGridViewBlock.js.map +1 -1
  319. package/out/templator/genQueryComponent.d.ts +2 -0
  320. package/out/templator/genQueryComponent.js +34 -18
  321. package/out/templator/genQueryComponent.js.map +1 -1
  322. package/out/templator/genSelectBlock.js +5 -15
  323. package/out/templator/genSelectBlock.js.map +1 -1
  324. package/out/templator/genTableBlock.d.ts +1 -1
  325. package/out/templator/genTableBlock.js +4 -5
  326. package/out/templator/genTableBlock.js.map +1 -1
  327. package/out/templator/genUpdateBlock.js +10 -11
  328. package/out/templator/genUpdateBlock.js.map +1 -1
  329. package/out/templator/utils.d.ts +16 -5
  330. package/out/templator/utils.js +10 -5
  331. package/out/templator/utils.js.map +1 -1
  332. package/out/test/fixtures/env.js +0 -1
  333. package/out/test/fixtures/env.js.map +1 -1
  334. package/out/test/units/page/Element.spec.js +3 -3
  335. package/out/test/units/page/Element.spec.js.map +1 -1
  336. package/out/test/units/temp/temp.spec.js +1 -1
  337. package/out/test/units/temp/temp.spec.js.map +1 -1
  338. package/out/utils/index.d.ts +6 -0
  339. package/out/utils/index.js +25 -1
  340. package/out/utils/index.js.map +1 -1
  341. package/out/utils/string.d.ts +1 -1
  342. package/out/utils/string.js +38 -9
  343. package/out/utils/string.js.map +1 -1
  344. package/package.json +2 -2
  345. package/src/automate/engine/index.js +95 -119
  346. package/src/automate/engine/operators.js +63 -0
  347. package/src/automate/engine/uniqueName.js +36 -0
  348. package/src/automate/engine/utils.js +63 -19
  349. package/src/common/BaseNode.ts +229 -74
  350. package/src/concepts/App__.ts +92 -85
  351. package/src/concepts/Argument__.ts +23 -3
  352. package/src/concepts/Assignee__.ts +467 -0
  353. package/src/concepts/Assignment__.ts +4 -1
  354. package/src/concepts/BinaryExpression__.ts +9 -7
  355. package/src/concepts/BindAttribute__.ts +69 -9
  356. package/src/concepts/BindDirective__.ts +22 -3
  357. package/src/concepts/BindEvent__.ts +67 -23
  358. package/src/concepts/BooleanLiteral__.ts +8 -0
  359. package/src/concepts/CallFunction__.ts +55 -23
  360. package/src/concepts/CallInterface__.ts +236 -26
  361. package/src/concepts/CallLogic__.ts +111 -52
  362. package/src/concepts/CallQueryComponent__.ts +315 -67
  363. package/src/concepts/Comment__.ts +6 -2
  364. package/src/concepts/CompletionProperty__.ts +5 -1
  365. package/src/concepts/ConfigGroup__.ts +3 -3
  366. package/src/concepts/ConfigProperty__.ts +3 -3
  367. package/src/concepts/Configuration__.ts +3 -3
  368. package/src/concepts/Constant__.ts +14 -2
  369. package/src/concepts/Destination__.ts +123 -37
  370. package/src/concepts/End__.ts +8 -1
  371. package/src/concepts/EntityIndex__.ts +4 -2
  372. package/src/concepts/EntityProperty__.ts +56 -5
  373. package/src/concepts/Entity__.ts +38 -21
  374. package/src/concepts/Enum__.ts +23 -26
  375. package/src/concepts/Event__.ts +3 -3
  376. package/src/concepts/ForEachStatement__.ts +16 -21
  377. package/src/concepts/Function__.ts +13 -13
  378. package/src/concepts/Identifier__.ts +84 -42
  379. package/src/concepts/IfStatement__.ts +4 -4
  380. package/src/concepts/InterfaceParam__.ts +57 -16
  381. package/src/concepts/Interface__.ts +130 -16
  382. package/src/concepts/JSBlock__.ts +4 -0
  383. package/src/concepts/LogicItem__.ts +16 -1
  384. package/src/concepts/Logic__.ts +192 -39
  385. package/src/concepts/MemberExpression__.ts +58 -15
  386. package/src/concepts/Module__.ts +35 -24
  387. package/src/concepts/Namespace__.ts +49 -37
  388. package/src/concepts/NullLiteral__.ts +8 -1
  389. package/src/concepts/NumericLiteral__.ts +17 -6
  390. package/src/concepts/Param__.ts +64 -16
  391. package/src/concepts/ProcessComponent__.ts +6 -6
  392. package/src/concepts/ProcessElement__.ts +149 -44
  393. package/src/concepts/ProcessOutcome__.ts +1 -1
  394. package/src/concepts/Process__.ts +85 -98
  395. package/src/concepts/QueryAggregateExpression__.ts +1 -1
  396. package/src/concepts/QueryFieldExpression__.ts +4 -0
  397. package/src/concepts/QueryFromExpression__.ts +2 -2
  398. package/src/concepts/QueryGroupByExpression__.ts +23 -0
  399. package/src/concepts/QueryJoinExpression__.ts +5 -5
  400. package/src/concepts/QueryLimitExpression__.ts +2 -2
  401. package/src/concepts/QuerySelectExpression__.ts +3 -3
  402. package/src/concepts/Return__.ts +69 -17
  403. package/src/concepts/Role__.ts +5 -4
  404. package/src/concepts/SqlQueryComponent__.ts +2 -2
  405. package/src/concepts/StringLiteral__.ts +21 -39
  406. package/src/concepts/StructureProperty__.ts +50 -18
  407. package/src/concepts/Structure__.ts +32 -10
  408. package/src/concepts/SwitchCase__.ts +4 -4
  409. package/src/concepts/SwitchStatement__.ts +2 -2
  410. package/src/concepts/TypeAnnotation__.ts +66 -15
  411. package/src/concepts/UnaryExpression__.ts +10 -8
  412. package/src/concepts/Unparsed__.ts +1 -1
  413. package/src/concepts/ValidationRule__.ts +44 -14
  414. package/src/concepts/Variable__.ts +70 -16
  415. package/src/concepts/ViewComponent__.ts +15 -15
  416. package/src/concepts/ViewElement__.ts +289 -166
  417. package/src/concepts/View__.ts +135 -69
  418. package/src/concepts/WhileStatement__.ts +4 -4
  419. package/src/concepts/basics/stdlib/index.ts +4 -2
  420. package/src/concepts/basics/stdlib/nasl.auth.ts +26 -0
  421. package/src/concepts/basics/stdlib/nasl.browser.ts +37 -0
  422. package/src/concepts/basics/stdlib/nasl.configuration.ts +21 -0
  423. package/src/concepts/basics/stdlib/nasl.interface.ts +1 -1
  424. package/src/concepts/basics/stdlib/nasl.ui.ts +20 -1
  425. package/src/concepts/basics/stdlib/nasl.util.ts +140 -18
  426. package/src/concepts/basics/stdlib/nasl.validation.ts +45 -11
  427. package/src/concepts/basics/stdlib/reference2TypeAnnotationList.ts +1 -1
  428. package/src/concepts/basics/types/coreTypeList.ts +11 -11
  429. package/src/concepts/basics/types/index.ts +1 -0
  430. package/src/concepts/index__.ts +1 -0
  431. package/src/config.ts +1 -2
  432. package/src/enums/KEYWORDS.ts +1197 -0
  433. package/src/{terms → enums}/LEVEL_NAME_MAP.ts +0 -0
  434. package/src/eventBus.ts +5 -0
  435. package/src/generator/genBundleFiles.ts +182 -30
  436. package/src/generator/genMetaData.ts +72 -21
  437. package/src/index.ts +2 -0
  438. package/src/manager/diagnostic.ts +2 -2
  439. package/src/server/createUiTs.ts +45 -7
  440. package/src/server/entity2LogicNamespace.ts +41 -25
  441. package/src/server/extendBaseNode.ts +318 -0
  442. package/src/server/getExtensionModules.ts +2 -0
  443. package/src/server/getFunctions.ts +6 -0
  444. package/src/server/getLogics.ts +87 -19
  445. package/src/server/getMemberIdentifier.ts +282 -65
  446. package/src/server/getProcesses.ts +397 -4
  447. package/src/server/getScope.ts +67 -0
  448. package/src/server/index.ts +13 -1
  449. package/src/server/naslServer.ts +694 -632
  450. package/src/server/process2LogicNamespace.ts +30 -2
  451. package/src/server/translator.ts +425 -128
  452. package/src/service/config/index.js +1 -1
  453. package/src/service/creator/errHandles.js +5 -2
  454. package/src/service/creator/index.js +0 -6
  455. package/src/service/storage/api.js +14 -0
  456. package/src/service/storage/init.ts +218 -45
  457. package/src/service/storage/service.ts +6 -0
  458. package/src/service/storage/storagePoint.ts +16 -16
  459. package/src/templator/genCreateBlock.ts +6 -6
  460. package/src/templator/genCurdEditMultipleKeyBlock.ts +29 -30
  461. package/src/templator/genCurdMultipleKeyBlock.ts +11 -11
  462. package/src/templator/genEditTableBlock.ts +5 -5
  463. package/src/templator/genEnumSelectBlock.ts +2 -2
  464. package/src/templator/genGetBlock.ts +7 -9
  465. package/src/templator/genGridViewBlock.ts +59 -9
  466. package/src/templator/genQueryComponent.ts +46 -32
  467. package/src/templator/genSelectBlock.ts +5 -15
  468. package/src/templator/genTableBlock.ts +5 -9
  469. package/src/templator/genUpdateBlock.ts +10 -12
  470. package/src/templator/utils.ts +12 -6
  471. package/src/test/fixtures/env.ts +0 -2
  472. package/src/test/units/page/Element.spec.ts +3 -3
  473. package/src/test/units/temp/temp.spec.ts +1 -1
  474. package/src/utils/index.ts +24 -0
  475. package/src/utils/string.ts +39 -9
  476. package/out/concepts/basics/stdlib/nasl.validate.js +0 -527
  477. package/out/concepts/basics/stdlib/nasl.validate.js.map +0 -1
  478. package/out/data/Module.d.ts +0 -34
  479. package/out/data/Module.js +0 -53
  480. package/out/data/Module.js.map +0 -1
  481. package/src/automate/engine/index.d.ts +0 -3
@@ -4,6 +4,7 @@ import Entity from './Entity__';
4
4
  import Structure from './Structure__';
5
5
  import StructureProperty from './StructureProperty__';
6
6
  import CompletionProperty from './CompletionProperty__';
7
+ import QueryFieldExpression from './QueryFieldExpression__';
7
8
  //================================================================================
8
9
  // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
9
10
  // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
@@ -82,6 +83,12 @@ export class CallQueryComponent extends LogicItem {
82
83
  @property('QueryLimitExpression')
83
84
  limit: QueryLimitExpression = undefined;
84
85
 
86
+ /**
87
+ * 查询组件的局部版本
88
+ */
89
+ @property()
90
+ ideVersion: string = undefined;
91
+
85
92
 
86
93
 
87
94
  /**
@@ -202,7 +209,7 @@ export class CallQueryComponent extends LogicItem {
202
209
  return (this.groupBy || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
203
210
  }
204
211
  getQueryGroupByExpressionUniqueName(name = 'queryGroupByExpression1') {
205
- return utils.unique(name, this.getQueryGroupByExpressionExistingNames());
212
+ return utils.unique(name, this.getQueryGroupByExpressionExistingNames(), undefined, false);
206
213
  }
207
214
 
208
215
  /**
@@ -241,7 +248,7 @@ export class CallQueryComponent extends LogicItem {
241
248
  name: options,
242
249
  }, this, 'groupBy');
243
250
  } else if (options instanceof QueryGroupByExpression) {
244
- options.delete(); // 同一实例不支持多处存在
251
+ options.ensureDelete(); // 同一实例不支持多处存在
245
252
  queryGroupByExpression = options;
246
253
  Object.assign(queryGroupByExpression, relationOptions);
247
254
  } else {
@@ -329,7 +336,7 @@ export class CallQueryComponent extends LogicItem {
329
336
 
330
337
  addQueryGroupByExpressionInGroupBy(options?: string | Partial<QueryGroupByExpression> | QueryGroupByExpression) {
331
338
  const node = this._addQueryGroupByExpressionInGroupBy(options as any);
332
- const index = this.groupBy.length;
339
+ const index = this.groupBy.indexOf(node);
333
340
  node.create({
334
341
  index,
335
342
  parentNode: this,
@@ -359,7 +366,7 @@ export class CallQueryComponent extends LogicItem {
359
366
  const relationOptions = { parentNode: this, parentKey: 'orderBy' };
360
367
  let queryOrderByExpression: QueryOrderByExpression;
361
368
  if (options instanceof QueryOrderByExpression) {
362
- options.delete(); // 同一实例不支持多处存在
369
+ options.ensureDelete(); // 同一实例不支持多处存在
363
370
  queryOrderByExpression = options;
364
371
  Object.assign(queryOrderByExpression, relationOptions);
365
372
  } else {
@@ -433,7 +440,7 @@ export class CallQueryComponent extends LogicItem {
433
440
 
434
441
  addQueryOrderByExpressionInOrderBy(options?: Partial<QueryOrderByExpression> | QueryOrderByExpression) {
435
442
  const node = this._addQueryOrderByExpressionInOrderBy(options as any);
436
- const index = this.orderBy.length;
443
+ const index = this.orderBy.indexOf(node);
437
444
  node.create({
438
445
  index,
439
446
  parentNode: this,
@@ -775,16 +782,47 @@ export class CallQueryComponent extends LogicItem {
775
782
  // })`;
776
783
  }
777
784
 
785
+ isAutoInfer() {
786
+ return this.ideVersion === '2.11';
787
+ }
788
+
778
789
  @withSourceMap()
779
790
  toEmbeddedTS(state?: TranslatorState): string {
780
- let code = `(function(): nasl.collection.PageOf<`;
781
- code += `${this.typeAnnotation.toEmbeddedTS(shiftState(state, code))}> {\n`;
791
+ if (!this.typeAnnotation)
792
+ return `(function () {
793
+ return;
794
+ })()`;
795
+ let code = `(function(): `;
796
+ if (this.isAutoInfer()) {
797
+ code += `${this.typeAnnotation.toEmbeddedTS(shiftState(state, code))} {\n`;
798
+ } else {
799
+ code += `nasl.collection.PageOf<`;
800
+ code += `${this.typeAnnotation.toEmbeddedTS(shiftState(state, code))}> {\n`;
801
+ }
802
+ // 2.11版本后 分组使用别名
803
+ if (this.isAutoInfer()) {
804
+ // 分组别名(列别名)
805
+ this.groupBy.forEach((item, index, array) => {
806
+ code += indent(state.tabSize + 1);
807
+ const groupElement = item.groupElement as QueryFieldExpression;
808
+ if (groupElement.asName)
809
+ code += `const __${groupElement.asName} = `;
810
+ if (groupElement.propertyName) {
811
+ code += groupElement.toEmbeddedTS(shiftState(state, code, { tabSize: 0 }));
812
+ code += ';\n';
813
+ } else
814
+ code += `__EMPTY_GROUP_BY_NAME__;\n`;
815
+
816
+ if (index === array.length - 1)
817
+ code += '\n';
818
+ });
819
+ }
782
820
  // 聚合属性别名
783
821
  this.select.selectElements.forEach((item, index, array) => {
784
822
  code += indent(state.tabSize + 1);
785
823
  const { asName, aggregateName, aggregateParam } = item;
786
824
  if (asName)
787
- code += `const ${asName} = `;
825
+ code += `const __${asName} = `;
788
826
  if (aggregateName) {
789
827
  code += `nasl.langUtil.${aggregateName}(`;
790
828
  code += aggregateParam.toEmbeddedTS(shiftState(state, code, { tabSize: 0 }));
@@ -815,7 +853,7 @@ export class CallQueryComponent extends LogicItem {
815
853
  });
816
854
 
817
855
  // 分组属性(Group by)
818
- code = this.toEmbeddedTSOfSubPart('GROUP_BY', this.groupBy.map((item) => item.groupElement), {
856
+ code = this.toEmbeddedTSOfSubPart('GROUP_BY', this.groupBy, {
819
857
  code,
820
858
  state,
821
859
  });
@@ -845,76 +883,251 @@ export class CallQueryComponent extends LogicItem {
845
883
  return code;
846
884
  }
847
885
 
848
- genStructure() {
849
- const { app } = this;
850
- function genPropertyListOfFrom(node: QueryFromExpression | QueryJoinExpression, entities: any[] = []) {
851
- if (!node)
852
- return [];
886
+ genPropertyListOfFrom(node: QueryFromExpression | QueryJoinExpression, entities: any[] = []) {
887
+ if (!node)
888
+ return [];
853
889
 
854
- const entityName = node.entityName;
855
- entities.push({
856
- concept: 'StructureProperty',
857
- name: utils.firstLowerCase(entityName),
858
- typeAnnotation: {
859
- concept: 'TypeAnnotation',
860
- typeKind: 'reference',
861
- typeName: entityName,
862
- typeNamespace: `${app.getNamespace()}.entities`,
863
- },
890
+ const entityName = node.entityName;
891
+ entities.push({
892
+ concept: 'StructureProperty',
893
+ name: utils.firstLowerCase(entityName),
894
+ typeAnnotation: {
895
+ concept: 'TypeAnnotation',
896
+ typeKind: 'reference',
897
+ typeName: entityName,
898
+ typeNamespace: `${this.app.getNamespace()}.entities`,
899
+ },
900
+ });
901
+
902
+ for (const sub of node.joinParts) {
903
+ this.genPropertyListOfFrom(sub, entities);
904
+ }
905
+
906
+ return entities;
907
+ }
908
+
909
+ genPropertyListOfAggregate(node: CallQueryComponent) {
910
+ return node.select.selectElements
911
+ .filter((item) => item.aggregateName && item.asName)
912
+ .map((item) => {
913
+ let typeName;
914
+ if (['COUNT', 'COUNTD'].includes(item.aggregateName)) {
915
+ typeName = 'Integer';
916
+ } else if (['AVG'].includes(item.aggregateName)) {
917
+ typeName = 'Double';
918
+ } else {
919
+ const { entityAsName, propertyName } = item.aggregateParam;
920
+ const entity = this.app.entities.find((item: Entity) => item.name === entityAsName);
921
+ const property = entity?.properties.find((item) => item.name === propertyName);
922
+ typeName = property?.typeAnnotation.typeName;
923
+ }
924
+ return {
925
+ concept: 'StructureProperty',
926
+ name: item.asName,
927
+ typeAnnotation: {
928
+ concept: 'TypeAnnotation',
929
+ typeKind: 'primitive',
930
+ typeNamespace: 'nasl.core',
931
+ typeName,
932
+ },
933
+ };
864
934
  });
935
+ }
865
936
 
866
- for (const sub of node.joinParts) {
867
- genPropertyListOfFrom(sub, entities);
868
- }
937
+ genPropertyListOfGroupBy(node: CallQueryComponent) {
938
+ return node.groupBy
939
+ .filter((item) => item.groupElement && (item.groupElement as QueryFieldExpression).propertyName && (item.groupElement as QueryFieldExpression).asName)
940
+ .map((item) => {
941
+ const { entityAsName, propertyName, asName } = item.groupElement as QueryFieldExpression;
942
+ const entity = this.app.entities.find((item: Entity) => item.name === entityAsName);
943
+ const property = entity?.properties.find((item) => item.name === propertyName);
944
+ const typeName = property?.typeAnnotation.typeName;
945
+ return {
946
+ concept: 'StructureProperty',
947
+ name: asName,
948
+ typeAnnotation: {
949
+ concept: 'TypeAnnotation',
950
+ typeKind: 'primitive',
951
+ typeName,
952
+ typeNamespace: 'nasl.core',
953
+ },
954
+ };
955
+ });
956
+ }
957
+
958
+ genStructure(structureName?: string, properties: any[] = []) {
959
+ return Structure.from({
960
+ concept: 'Structure',
961
+ name: structureName || this.typeAnnotation?.typeName || `${utils.firstUpperCase(this.logic.name)}Structure`,
962
+ origin: 'CallQueryComponent',
963
+ properties,
964
+ });
965
+ }
966
+
967
+ saveStructure() {
968
+ // 没有数据源时不初始化数据结构
969
+ if (!this.entityNames.length) {
970
+ return;
971
+ }
972
+
973
+ if (!this.isAutoInfer()) {
974
+ // 存量应用走之前的逻辑
975
+ return this.saveStructureNoInfer();
976
+ }
869
977
 
870
- return entities;
978
+ const groupBy = this.groupBy;
979
+ const selectElements = this.select.selectElements;
980
+ let structureName;
981
+ let typeAnnotation;
982
+
983
+ // Structures
984
+ if (this.typeAnnotation) {
985
+ const { typeNamespace, typeName, typeArguments } = this.typeAnnotation;
986
+ if (typeNamespace === 'app.structures') {
987
+ structureName = typeName;
988
+ this.removeStructure(structureName);
989
+ } else if (typeNamespace === 'nasl.collection' && typeName === 'PageOf') {
990
+ // PageOf<Structures>
991
+ if (typeArguments[0].typeNamespace === 'app.structures') {
992
+ structureName = typeArguments[0].typeName;
993
+ this.removeStructure(structureName);
994
+ }
995
+ }
871
996
  }
872
997
 
873
- function genPropertyListOfAggregate(node: CallQueryComponent) {
874
- return node.select.selectElements
875
- .filter((item) => item.aggregateName && item.asName)
876
- .map((item) => {
998
+ structureName = structureName || utils.unique(`${utils.firstUpperCase(this.logic.name)}Structure`, this.app.getStructureExistingNames());
999
+ const groupByLength = groupBy.filter((item) => (item.groupElement as QueryFieldExpression)?.propertyName && (item.groupElement as QueryFieldExpression).asName).length;
1000
+ const aggregateLength = selectElements.filter((item) => item.aggregateName && item.asName).length;
1001
+
1002
+ // 1. 有分组
1003
+ if (groupByLength) {
1004
+ if (!aggregateLength && groupByLength === 1) {
1005
+ // 1.1 单分组无聚合:`PageOf<列的类型>`
1006
+ const { entityAsName, propertyName } = groupBy[0].groupElement as any;
1007
+ const entity = this.app.entities.find((item: Entity) => item.name === entityAsName);
1008
+ const property = entity?.properties.find((item) => item.name === propertyName);
1009
+ const typeName = property?.typeAnnotation.typeName;
1010
+
1011
+ typeAnnotation = TypeAnnotation.from({
1012
+ text: `PageOf<${typeName}>`,
1013
+ concept: 'TypeAnnotation',
1014
+ typeKind: 'generic',
1015
+ typeName: 'PageOf',
1016
+ typeNamespace: `nasl.collection`,
1017
+ typeArguments: [
1018
+ TypeAnnotation.from({
1019
+ concept: 'TypeAnnotation',
1020
+ typeKind: 'primitive',
1021
+ typeName,
1022
+ typeNamespace: 'nasl.core',
1023
+ }, this.typeAnnotation, 'typeAnnotation'),
1024
+ ],
1025
+ }, this, 'typeAnnotation');
1026
+ } else {
1027
+ // 1.2 多分组:`PageOf<Structure>`
1028
+ const structure = this.genStructure(structureName, [
1029
+ ...this.genPropertyListOfGroupBy(this),
1030
+ ...this.genPropertyListOfAggregate(this),
1031
+ ]);
1032
+ this.app.addStructure(structure);
1033
+
1034
+ typeAnnotation = TypeAnnotation.from({
1035
+ text: `PageOf<${structureName}>`,
1036
+ concept: 'TypeAnnotation',
1037
+ typeKind: 'generic',
1038
+ typeName: 'PageOf',
1039
+ typeNamespace: `nasl.collection`,
1040
+ typeArguments: [
1041
+ TypeAnnotation.from({
1042
+ concept: 'TypeAnnotation',
1043
+ typeKind: 'reference',
1044
+ typeName: structureName,
1045
+ typeNamespace: 'app.structures',
1046
+ }, this.typeAnnotation, 'typeAnnotation'),
1047
+ ],
1048
+ }, this, 'typeAnnotation');
1049
+ }
1050
+ } else { // 2. 无分组
1051
+ if (aggregateLength) {
1052
+ if (aggregateLength === 1) {
1053
+ // 2.1 单聚合:`基本类型`
877
1054
  let typeName;
878
- if (['COUNT', 'COUNTD'].includes(item.aggregateName))
1055
+ if (['COUNT', 'COUNTD'].includes(selectElements[0].aggregateName)) {
1056
+ // 2.1.1. `COUNT`、`COUNTD` 返回 `Integer`
879
1057
  typeName = 'Integer';
880
- else {
881
- const { entityAsName, propertyName } = item.aggregateParam;
882
- const entity = app.entities.find((item: Entity) => item.name === entityAsName);
1058
+ } else if (['AVG'].includes(selectElements[0].aggregateName)) {
1059
+ // 2.1.2. `AVG` 返回 `Double`
1060
+ typeName = 'Double';
1061
+ } else {
1062
+ // 2.1.3. 其他返回列类型,包含:`Integer`、`Long`、`Double`
1063
+ const { entityAsName, propertyName } = selectElements[0].aggregateParam;
1064
+ const entity = this.app.entities.find((item: Entity) => item.name === entityAsName);
883
1065
  const property = entity?.properties.find((item) => item.name === propertyName);
884
1066
  typeName = property?.typeAnnotation.typeName;
885
1067
  }
886
- return {
887
- concept: 'StructureProperty',
888
- name: item.asName,
889
- typeAnnotation: {
1068
+ typeAnnotation = TypeAnnotation.from({
1069
+ concept: 'TypeAnnotation',
1070
+ typeKind: 'primitive',
1071
+ typeName,
1072
+ typeNamespace: 'nasl.core',
1073
+ }, this, 'typeAnnotation');
1074
+ } else {
1075
+ // 2.2. 多聚合:`Structure`(自动创建 `Structure`)
1076
+ const structure = this.genStructure(structureName, [
1077
+ ...this.genPropertyListOfAggregate(this),
1078
+ ]);
1079
+ this.app.addStructure(structure);
1080
+
1081
+ typeAnnotation = TypeAnnotation.from({
1082
+ concept: 'TypeAnnotation',
1083
+ typeKind: 'reference',
1084
+ typeName: structureName,
1085
+ typeNamespace: `app.structures`,
1086
+ }, this, 'typeAnnotation');
1087
+ }
1088
+ } else {
1089
+ // 2.3. 无聚合(默认情况):`PageOf<Structure>`(自动创建 `Structure`)
1090
+ const structure = this.genStructure(structureName, [
1091
+ ...this.genPropertyListOfFrom(this.from),
1092
+ ...this.genPropertyListOfAggregate(this),
1093
+ ]);
1094
+ this.app.addStructure(structure);
1095
+
1096
+ typeAnnotation = TypeAnnotation.from({
1097
+ text: structureName,
1098
+ concept: 'TypeAnnotation',
1099
+ typeKind: 'generic',
1100
+ typeName: 'PageOf',
1101
+ typeNamespace: `nasl.collection`,
1102
+ typeArguments: [
1103
+ TypeAnnotation.from({
890
1104
  concept: 'TypeAnnotation',
891
- typeKind: 'primitive',
892
- typeNamespace: 'nasl.core',
893
- typeName,
894
- },
895
- };
896
- });
1105
+ typeKind: 'reference',
1106
+ typeName: structureName,
1107
+ typeNamespace: 'app.structures',
1108
+ }, this.typeAnnotation, 'typeAnnotation'),
1109
+ ],
1110
+ }, this, 'typeAnnotation');
1111
+ }
897
1112
  }
898
1113
 
899
- const structureName = this.typeAnnotation?.typeName || `${utils.firstUpperCase(this.logic.name)}Structure`;
900
-
901
- return Structure.from({
902
- concept: 'Structure',
903
- name: structureName,
904
- properties: [...genPropertyListOfFrom(this.from), ...genPropertyListOfAggregate(this)],
905
- });
1114
+ this.update({ typeAnnotation });
906
1115
  }
907
1116
 
908
- saveStructure() {
909
- const source = this.genStructure();
1117
+ saveStructureNoInfer() {
1118
+ const source = this.genStructure(null, [
1119
+ ...this.genPropertyListOfFrom(this.from),
1120
+ ...this.genPropertyListOfAggregate(this),
1121
+ ]);
910
1122
  if (this.typeAnnotation) {
911
1123
  const structure = this.app.structures.find((item) => item.name === this.typeAnnotation.typeName);
912
1124
  if (structure) {
913
- const properties = source.properties.map((property) => StructureProperty.from(property, structure));
1125
+ const properties = source.properties.map((property) => StructureProperty.from(property, structure, 'properties'));
914
1126
  structure.update({
915
1127
  properties,
916
1128
  });
917
- }
1129
+ } else
1130
+ this.app.addStructure(source);
918
1131
  } else {
919
1132
  source.name = utils.unique(source.name, this.app.getStructureExistingNames());
920
1133
  this.app.addStructure(source);
@@ -923,24 +1136,32 @@ export class CallQueryComponent extends LogicItem {
923
1136
  typeKind: 'reference',
924
1137
  typeName: source.name,
925
1138
  typeNamespace: `app.structures`,
926
- }, this);
1139
+ }, this, 'typeAnnotation');
927
1140
  this.update({
928
1141
  typeAnnotation,
929
1142
  });
930
1143
  }
931
1144
  }
932
1145
 
933
- removeStructure() {
1146
+ removeStructure(structureName?: string) {
934
1147
  try {
935
- this.app.removeStructure(this.typeAnnotation?.typeName);
1148
+ if (this.typeAnnotation) {
1149
+ const { typeNamespace, typeName, typeArguments } = this.typeAnnotation;
1150
+ if (typeNamespace === 'app.structures') {
1151
+ // Structures
1152
+ structureName = typeName;
1153
+ this.app.removeStructure(structureName);
1154
+ } else if (typeNamespace === 'nasl.collection' && typeName === 'PageOf') {
1155
+ // PageOf<Structures>
1156
+ if (typeArguments[0].typeNamespace === 'app.structures') {
1157
+ structureName = typeArguments[0].typeName;
1158
+ this.app.removeStructure(structureName);
1159
+ }
1160
+ }
1161
+ }
936
1162
  } catch {}
937
1163
  }
938
1164
 
939
- delete() {
940
- this.removeStructure();
941
- super.delete();
942
- }
943
-
944
1165
  getEntityNames(node: QueryFromExpression | QueryJoinExpression, set = new Set()) {
945
1166
  if (node?.entityName)
946
1167
  set.add(node.entityName);
@@ -997,16 +1218,43 @@ export class CallQueryComponent extends LogicItem {
997
1218
  new CompletionProperty({
998
1219
  concept: 'CompletionProperty',
999
1220
  name: item.asName,
1000
- value: item.asName,
1221
+ value: `inner.${item.asName}`,
1001
1222
  expression: LogicItem.from({
1002
1223
  concept: 'Identifier',
1003
1224
  name: item.asName,
1225
+ namespace: 'inner',
1226
+ }),
1227
+ }));
1228
+ if (!children || children.length === 0)
1229
+ return;
1230
+
1231
+ children.forEach((item) => {
1232
+ item.icon = 'variable';
1233
+ });
1234
+ return { name: '聚合属性别名', icon: 'category', children, expanded: true };
1235
+ }
1236
+
1237
+ getCompletionPropertyOfGroupByAsNames() {
1238
+ const children = this.groupBy
1239
+ ?.filter((item) => item.concept === 'QueryGroupByExpression' && (item.groupElement as QueryFieldExpression)?.asName)
1240
+ .map((item) =>
1241
+ new CompletionProperty({
1242
+ concept: 'CompletionProperty',
1243
+ name: (item.groupElement as QueryFieldExpression).asName,
1244
+ value: `inner.${(item.groupElement as QueryFieldExpression).asName}`,
1245
+ expression: LogicItem.from({
1246
+ concept: 'Identifier',
1247
+ name: (item.groupElement as QueryFieldExpression).asName,
1248
+ namespace: 'inner',
1004
1249
  }),
1005
1250
  }));
1006
1251
  if (!children || children.length === 0)
1007
1252
  return;
1008
1253
 
1009
- return { name: '聚合属性别名', children };
1254
+ children.forEach((item) => {
1255
+ item.icon = 'variable';
1256
+ });
1257
+ return { name: '分组属性别名', icon: 'category', children, expanded: true };
1010
1258
  }
1011
1259
 
1012
1260
  //================================================================================
@@ -67,7 +67,7 @@ export class Comment extends LogicItem {
67
67
  //================================================================================
68
68
 
69
69
  toJS(state?: TranslatorState): string {
70
- return `\n${indent(state.tabSize)}// ${this.value}\n`;
70
+ return `/* ${this.value} */`;
71
71
  }
72
72
 
73
73
  public static getDefaultOptions() {
@@ -79,7 +79,11 @@ export class Comment extends LogicItem {
79
79
  @withSourceMap()
80
80
  toEmbeddedTS(state?: TranslatorState): string {
81
81
  let code = '';
82
- code += `\n${indent(state.tabSize)}// ${this.value}\n`;
82
+ code += `\n${indent(state.tabSize)}
83
+ /**
84
+ * 注释不用翻译
85
+ */
86
+ \n`;
83
87
  return code;
84
88
  }
85
89
  //================================================================================
@@ -224,7 +224,7 @@ export class CompletionProperty extends BaseNode {
224
224
  * 子集
225
225
  */
226
226
  @property()
227
- children: Array<LogicItem> = undefined;
227
+ children: Array<CompletionProperty> = undefined;
228
228
 
229
229
  /**
230
230
  * 表达式
@@ -236,6 +236,10 @@ export class CompletionProperty extends BaseNode {
236
236
  * 用于展示图标
237
237
  */
238
238
  icon: string = undefined;
239
+
240
+ isProcess: boolean = false;
241
+
242
+ noFurther: boolean = false;
239
243
  //================================================================================
240
244
  // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
241
245
  // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
@@ -84,7 +84,7 @@ export class ConfigGroup extends BaseNode {
84
84
  return (this.properties || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
85
85
  }
86
86
  getConfigPropertyUniqueName(name = 'configProperty1') {
87
- return utils.unique(name, this.getConfigPropertyExistingNames());
87
+ return utils.unique(name, this.getConfigPropertyExistingNames(), undefined, false);
88
88
  }
89
89
 
90
90
  /**
@@ -123,7 +123,7 @@ export class ConfigGroup extends BaseNode {
123
123
  name: options,
124
124
  }, this, 'properties');
125
125
  } else if (options instanceof ConfigProperty) {
126
- options.delete(); // 同一实例不支持多处存在
126
+ options.ensureDelete(); // 同一实例不支持多处存在
127
127
  configProperty = options;
128
128
  Object.assign(configProperty, relationOptions);
129
129
  } else {
@@ -211,7 +211,7 @@ export class ConfigGroup extends BaseNode {
211
211
 
212
212
  addConfigProperty(options?: string | Partial<ConfigProperty> | ConfigProperty) {
213
213
  const node = this._addConfigProperty(options as any);
214
- const index = this.properties.length;
214
+ const index = this.properties.indexOf(node);
215
215
  node.create({
216
216
  index,
217
217
  parentNode: this,
@@ -90,7 +90,7 @@ export class ConfigProperty extends BaseNode {
90
90
  return (this.values || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
91
91
  }
92
92
  getConfigPropertyValueUniqueName(name = 'configPropertyValue1') {
93
- return utils.unique(name, this.getConfigPropertyValueExistingNames());
93
+ return utils.unique(name, this.getConfigPropertyValueExistingNames(), undefined, false);
94
94
  }
95
95
 
96
96
  /**
@@ -129,7 +129,7 @@ export class ConfigProperty extends BaseNode {
129
129
  name: options,
130
130
  }, this, 'values');
131
131
  } else if (options instanceof ConfigPropertyValue) {
132
- options.delete(); // 同一实例不支持多处存在
132
+ options.ensureDelete(); // 同一实例不支持多处存在
133
133
  configPropertyValue = options;
134
134
  Object.assign(configPropertyValue, relationOptions);
135
135
  } else {
@@ -217,7 +217,7 @@ export class ConfigProperty extends BaseNode {
217
217
 
218
218
  addConfigPropertyValue(options?: string | Partial<ConfigPropertyValue> | ConfigPropertyValue) {
219
219
  const node = this._addConfigPropertyValue(options as any);
220
- const index = this.values.length;
220
+ const index = this.values.indexOf(node);
221
221
  node.create({
222
222
  index,
223
223
  parentNode: this,
@@ -68,7 +68,7 @@ export class Configuration extends BaseNode {
68
68
  return (this.groups || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
69
69
  }
70
70
  getConfigGroupUniqueName(name = 'configGroup1') {
71
- return utils.unique(name, this.getConfigGroupExistingNames());
71
+ return utils.unique(name, this.getConfigGroupExistingNames(), undefined, false);
72
72
  }
73
73
 
74
74
  /**
@@ -107,7 +107,7 @@ export class Configuration extends BaseNode {
107
107
  name: options,
108
108
  }, this, 'groups');
109
109
  } else if (options instanceof ConfigGroup) {
110
- options.delete(); // 同一实例不支持多处存在
110
+ options.ensureDelete(); // 同一实例不支持多处存在
111
111
  configGroup = options;
112
112
  Object.assign(configGroup, relationOptions);
113
113
  } else {
@@ -195,7 +195,7 @@ export class Configuration extends BaseNode {
195
195
 
196
196
  addConfigGroup(options?: string | Partial<ConfigGroup> | ConfigGroup) {
197
197
  const node = this._addConfigGroup(options as any);
198
- const index = this.groups.length;
198
+ const index = this.groups.indexOf(node);
199
199
  node.create({
200
200
  index,
201
201
  parentNode: this,
@@ -230,9 +230,21 @@ export class Constant extends BaseNode {
230
230
  code += ': ';
231
231
  code += this.typeAnnotation.toEmbeddedTS(shiftState(state, code));
232
232
  }
233
- if (this.defaultValue) {
234
- code += ` = ${this.defaultValue}`;
233
+ // if (this.defaultValue) {
234
+ // code += ` = ${this.defaultValue}`;
235
+ // }
236
+ return code;
237
+ }
238
+ @withSourceMap()
239
+ toEmbeddedTSInProcess(state?: TranslatorState): string {
240
+ let code = this.name;
241
+ if (this.typeAnnotation) {
242
+ code += ': undefined as ';
243
+ code += this.typeAnnotation.toEmbeddedTS(shiftState(state, code));
235
244
  }
245
+ // if (this.defaultValue) {
246
+ // code += ` : ${this.defaultValue}`;
247
+ // }
236
248
  return code;
237
249
  }
238
250
  //================================================================================