@lcap/nasl 1.0.0-alpha.2 → 1.0.0-alpha.3

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 (391) hide show
  1. package/README.md +3 -3
  2. package/docs/assets/search.js +1 -1
  3. package/docs/classes/Entity.html +2832 -204
  4. package/docs/classes/View.html +4567 -365
  5. package/out/common/BaseNode.js +23 -16
  6. package/out/common/BaseNode.js.map +1 -1
  7. package/out/concepts/App__.d.ts +22 -0
  8. package/out/concepts/App__.js +77 -15
  9. package/out/concepts/App__.js.map +1 -1
  10. package/out/concepts/Argument__.d.ts +2 -1
  11. package/out/concepts/Argument__.js +2 -2
  12. package/out/concepts/Argument__.js.map +1 -1
  13. package/out/concepts/Assignment__.d.ts +2 -1
  14. package/out/concepts/Assignment__.js +3 -8
  15. package/out/concepts/Assignment__.js.map +1 -1
  16. package/out/concepts/Attribute__.js.map +1 -1
  17. package/out/concepts/BinaryExpression__.d.ts +2 -1
  18. package/out/concepts/BinaryExpression__.js +5 -5
  19. package/out/concepts/BinaryExpression__.js.map +1 -1
  20. package/out/concepts/BindAttribute__.d.ts +2 -1
  21. package/out/concepts/BindAttribute__.js +9 -4
  22. package/out/concepts/BindAttribute__.js.map +1 -1
  23. package/out/concepts/BindDirective__.d.ts +2 -1
  24. package/out/concepts/BindDirective__.js +2 -2
  25. package/out/concepts/BindDirective__.js.map +1 -1
  26. package/out/concepts/BindEvent__.d.ts +2 -1
  27. package/out/concepts/BindEvent__.js +4 -3
  28. package/out/concepts/BindEvent__.js.map +1 -1
  29. package/out/concepts/BooleanLiteral__.d.ts +2 -1
  30. package/out/concepts/BooleanLiteral__.js +1 -1
  31. package/out/concepts/BooleanLiteral__.js.map +1 -1
  32. package/out/concepts/CallFunction__.d.ts +57 -1
  33. package/out/concepts/CallFunction__.js +119 -11
  34. package/out/concepts/CallFunction__.js.map +1 -1
  35. package/out/concepts/CallInterface__.d.ts +2 -1
  36. package/out/concepts/CallInterface__.js +2 -2
  37. package/out/concepts/CallInterface__.js.map +1 -1
  38. package/out/concepts/CallLogic__.d.ts +57 -1
  39. package/out/concepts/CallLogic__.js +117 -10
  40. package/out/concepts/CallLogic__.js.map +1 -1
  41. package/out/concepts/CallQueryComponent__.js +1 -1
  42. package/out/concepts/CallQueryComponent__.js.map +1 -1
  43. package/out/concepts/Comment__.js.map +1 -1
  44. package/out/concepts/CompletionProperty__.js.map +1 -1
  45. package/out/concepts/ConfigGroup__.d.ts +120 -0
  46. package/out/concepts/ConfigGroup__.js +214 -0
  47. package/out/concepts/ConfigGroup__.js.map +1 -0
  48. package/out/concepts/ConfigPropertyValue__.d.ts +43 -0
  49. package/out/concepts/ConfigPropertyValue__.js +103 -0
  50. package/out/concepts/ConfigPropertyValue__.js.map +1 -0
  51. package/out/concepts/ConfigProperty__.d.ts +128 -0
  52. package/out/concepts/ConfigProperty__.js +236 -0
  53. package/out/concepts/ConfigProperty__.js.map +1 -0
  54. package/out/concepts/Configuration__.d.ts +120 -0
  55. package/out/concepts/Configuration__.js +210 -0
  56. package/out/concepts/Configuration__.js.map +1 -0
  57. package/out/concepts/Constant__.d.ts +2 -1
  58. package/out/concepts/Constant__.js +1 -1
  59. package/out/concepts/Constant__.js.map +1 -1
  60. package/out/concepts/DataElement__.js.map +1 -1
  61. package/out/concepts/Destination__.d.ts +2 -1
  62. package/out/concepts/Destination__.js +4 -3
  63. package/out/concepts/Destination__.js.map +1 -1
  64. package/out/concepts/End__.js.map +1 -1
  65. package/out/concepts/EntityIndex__.d.ts +8 -0
  66. package/out/concepts/EntityIndex__.js +18 -0
  67. package/out/concepts/EntityIndex__.js.map +1 -1
  68. package/out/concepts/EntityProperty__.d.ts +5 -5
  69. package/out/concepts/EntityProperty__.js +10 -9
  70. package/out/concepts/EntityProperty__.js.map +1 -1
  71. package/out/concepts/Entity__.d.ts +30 -26
  72. package/out/concepts/Entity__.js +44 -36
  73. package/out/concepts/Entity__.js.map +1 -1
  74. package/out/concepts/EnumItem__.js.map +1 -1
  75. package/out/concepts/Enum__.d.ts +8 -8
  76. package/out/concepts/Enum__.js +10 -4
  77. package/out/concepts/Enum__.js.map +1 -1
  78. package/out/concepts/Event__.js +1 -1
  79. package/out/concepts/Event__.js.map +1 -1
  80. package/out/concepts/ForEachStatement__.d.ts +35 -33
  81. package/out/concepts/ForEachStatement__.js +103 -36
  82. package/out/concepts/ForEachStatement__.js.map +1 -1
  83. package/out/concepts/Function__.js +1 -1
  84. package/out/concepts/Function__.js.map +1 -1
  85. package/out/concepts/Identifier__.d.ts +2 -1
  86. package/out/concepts/Identifier__.js +15 -1
  87. package/out/concepts/Identifier__.js.map +1 -1
  88. package/out/concepts/IfStatement__.js.map +1 -1
  89. package/out/concepts/InterfaceParam__.js +1 -1
  90. package/out/concepts/InterfaceParam__.js.map +1 -1
  91. package/out/concepts/Interface__.d.ts +5 -1
  92. package/out/concepts/Interface__.js +19 -5
  93. package/out/concepts/Interface__.js.map +1 -1
  94. package/out/concepts/JSBlock__.js.map +1 -1
  95. package/out/concepts/LogicItem__.d.ts +2 -1
  96. package/out/concepts/LogicItem__.js +2 -2
  97. package/out/concepts/LogicItem__.js.map +1 -1
  98. package/out/concepts/Logic__.js +9 -7
  99. package/out/concepts/Logic__.js.map +1 -1
  100. package/out/concepts/MemberExpression__.d.ts +2 -5
  101. package/out/concepts/MemberExpression__.js +12 -18
  102. package/out/concepts/MemberExpression__.js.map +1 -1
  103. package/out/concepts/Module__.d.ts +121 -126
  104. package/out/concepts/Module__.js +10 -17
  105. package/out/concepts/Module__.js.map +1 -1
  106. package/out/concepts/Namespace__.js +12 -12
  107. package/out/concepts/Namespace__.js.map +1 -1
  108. package/out/concepts/NullLiteral__.d.ts +2 -1
  109. package/out/concepts/NullLiteral__.js +1 -1
  110. package/out/concepts/NullLiteral__.js.map +1 -1
  111. package/out/concepts/NumericLiteral__.d.ts +2 -1
  112. package/out/concepts/NumericLiteral__.js +1 -1
  113. package/out/concepts/NumericLiteral__.js.map +1 -1
  114. package/out/concepts/Param__.d.ts +1 -1
  115. package/out/concepts/Param__.js +2 -2
  116. package/out/concepts/Param__.js.map +1 -1
  117. package/out/concepts/Point__.js.map +1 -1
  118. package/out/concepts/ProcessComponent__.js +2 -2
  119. package/out/concepts/ProcessComponent__.js.map +1 -1
  120. package/out/concepts/ProcessElement__.d.ts +82 -81
  121. package/out/concepts/ProcessElement__.js +19 -6
  122. package/out/concepts/ProcessElement__.js.map +1 -1
  123. package/out/concepts/ProcessOutcome__.js.map +1 -1
  124. package/out/concepts/Process__.d.ts +1 -0
  125. package/out/concepts/Process__.js +10 -4
  126. package/out/concepts/Process__.js.map +1 -1
  127. package/out/concepts/QueryAggregateExpression__.js.map +1 -1
  128. package/out/concepts/QueryFieldExpression__.js +1 -1
  129. package/out/concepts/QueryFieldExpression__.js.map +1 -1
  130. package/out/concepts/QueryFromExpression__.js.map +1 -1
  131. package/out/concepts/QueryGroupByExpression__.js.map +1 -1
  132. package/out/concepts/QueryJoinExpression__.js +1 -1
  133. package/out/concepts/QueryJoinExpression__.js.map +1 -1
  134. package/out/concepts/QueryLimitExpression__.js.map +1 -1
  135. package/out/concepts/QueryOrderByExpression__.js.map +1 -1
  136. package/out/concepts/QuerySelectExpression__.js +1 -1
  137. package/out/concepts/QuerySelectExpression__.js.map +1 -1
  138. package/out/concepts/Rect__.js.map +1 -1
  139. package/out/concepts/Return__.d.ts +1 -1
  140. package/out/concepts/Return__.js +2 -2
  141. package/out/concepts/Return__.js.map +1 -1
  142. package/out/concepts/Role__.d.ts +5 -0
  143. package/out/concepts/Role__.js +19 -2
  144. package/out/concepts/Role__.js.map +1 -1
  145. package/out/concepts/Slot__.js.map +1 -1
  146. package/out/concepts/SqlQueryComponent__.d.ts +2 -0
  147. package/out/concepts/SqlQueryComponent__.js +16 -0
  148. package/out/concepts/SqlQueryComponent__.js.map +1 -1
  149. package/out/concepts/Start__.js.map +1 -1
  150. package/out/concepts/StringLiteral__.d.ts +2 -1
  151. package/out/concepts/StringLiteral__.js +1 -1
  152. package/out/concepts/StringLiteral__.js.map +1 -1
  153. package/out/concepts/StructureProperty__.d.ts +1 -1
  154. package/out/concepts/StructureProperty__.js +1 -1
  155. package/out/concepts/StructureProperty__.js.map +1 -1
  156. package/out/concepts/Structure__.d.ts +1 -1
  157. package/out/concepts/Structure__.js +4 -4
  158. package/out/concepts/Structure__.js.map +1 -1
  159. package/out/concepts/SwitchCase__.js.map +1 -1
  160. package/out/concepts/SwitchStatement__.js.map +1 -1
  161. package/out/concepts/Theme__.js.map +1 -1
  162. package/out/concepts/Transactional__.js.map +1 -1
  163. package/out/concepts/TypeAnnotation__.js +3 -0
  164. package/out/concepts/TypeAnnotation__.js.map +1 -1
  165. package/out/concepts/TypeParam__.js.map +1 -1
  166. package/out/concepts/UnaryExpression__.d.ts +2 -1
  167. package/out/concepts/UnaryExpression__.js +3 -3
  168. package/out/concepts/UnaryExpression__.js.map +1 -1
  169. package/out/concepts/Unparsed__.d.ts +2 -1
  170. package/out/concepts/Unparsed__.js +1 -1
  171. package/out/concepts/Unparsed__.js.map +1 -1
  172. package/out/concepts/UseComponent__.js.map +1 -1
  173. package/out/concepts/ValidationRule__.d.ts +2 -1
  174. package/out/concepts/ValidationRule__.js +2 -2
  175. package/out/concepts/ValidationRule__.js.map +1 -1
  176. package/out/concepts/Variable__.d.ts +6 -5
  177. package/out/concepts/Variable__.js +3 -3
  178. package/out/concepts/Variable__.js.map +1 -1
  179. package/out/concepts/ViewComponent__.js +5 -5
  180. package/out/concepts/ViewComponent__.js.map +1 -1
  181. package/out/concepts/ViewElement__.d.ts +5 -4
  182. package/out/concepts/ViewElement__.js +109 -65
  183. package/out/concepts/ViewElement__.js.map +1 -1
  184. package/out/concepts/View__.d.ts +97 -90
  185. package/out/concepts/View__.js +153 -118
  186. package/out/concepts/View__.js.map +1 -1
  187. package/out/concepts/WhileStatement__.js.map +1 -1
  188. package/out/concepts/basics/stdlib/index.js +2 -2
  189. package/out/concepts/basics/stdlib/index.js.map +1 -1
  190. package/out/concepts/basics/stdlib/nasl.ui.js +3 -137
  191. package/out/concepts/basics/stdlib/nasl.ui.js.map +1 -1
  192. package/out/concepts/basics/stdlib/nasl.util.js +21 -5
  193. package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
  194. package/out/concepts/basics/stdlib/nasl.validation.d.ts +3 -0
  195. package/out/concepts/basics/stdlib/nasl.validation.js +527 -0
  196. package/out/concepts/basics/stdlib/nasl.validation.js.map +1 -0
  197. package/out/concepts/index__.d.ts +4 -0
  198. package/out/concepts/index__.js +4 -0
  199. package/out/concepts/index__.js.map +1 -1
  200. package/out/data/Module.d.ts +34 -0
  201. package/out/data/Module.js +53 -0
  202. package/out/data/Module.js.map +1 -0
  203. package/out/generator/compileComponent.d.ts +1 -1
  204. package/out/generator/genBundleFiles.d.ts +0 -1
  205. package/out/generator/genBundleFiles.js +1 -1
  206. package/out/generator/genBundleFiles.js.map +1 -1
  207. package/out/generator/genMetaData.d.ts +35 -0
  208. package/out/generator/genMetaData.js +78 -0
  209. package/out/generator/genMetaData.js.map +1 -0
  210. package/out/generator/index.d.ts +1 -0
  211. package/out/generator/index.js +1 -0
  212. package/out/generator/index.js.map +1 -1
  213. package/out/index.d.ts +2 -2
  214. package/out/index.js +3 -1
  215. package/out/index.js.map +1 -1
  216. package/out/server/createUiTs.d.ts +7 -0
  217. package/out/server/createUiTs.js +157 -0
  218. package/out/server/createUiTs.js.map +1 -0
  219. package/out/server/entity2LogicNamespace.d.ts +9 -1
  220. package/out/server/entity2LogicNamespace.js +11 -1
  221. package/out/server/entity2LogicNamespace.js.map +1 -1
  222. package/out/server/getExtensionModules.d.ts +3 -0
  223. package/out/server/getExtensionModules.js +18 -0
  224. package/out/server/getExtensionModules.js.map +1 -0
  225. package/out/server/getLogics.js +18 -15
  226. package/out/server/getLogics.js.map +1 -1
  227. package/out/server/getMemberIdentifier.d.ts +3 -2
  228. package/out/server/getMemberIdentifier.js +47 -15
  229. package/out/server/getMemberIdentifier.js.map +1 -1
  230. package/out/server/getProcesses.d.ts +4 -1
  231. package/out/server/getProcesses.js +16 -7
  232. package/out/server/getProcesses.js.map +1 -1
  233. package/out/server/getValidates.js +1 -1
  234. package/out/server/getValidates.js.map +1 -1
  235. package/out/server/index.js +1 -0
  236. package/out/server/index.js.map +1 -1
  237. package/out/server/naslServer.d.ts +23 -5
  238. package/out/server/naslServer.js +199 -25
  239. package/out/server/naslServer.js.map +1 -1
  240. package/out/server/process2LogicNamespace.d.ts +15 -1
  241. package/out/server/process2LogicNamespace.js +30 -3
  242. package/out/server/process2LogicNamespace.js.map +1 -1
  243. package/out/server/translator.js +28 -0
  244. package/out/server/translator.js.map +1 -1
  245. package/out/service/storage/init.d.ts +5 -0
  246. package/out/service/storage/init.js +60 -52
  247. package/out/service/storage/init.js.map +1 -1
  248. package/out/templator/genCallComponentLogic.js +2 -2
  249. package/out/templator/genCallComponentLogic.js.map +1 -1
  250. package/out/templator/genCreateBlock.js +6 -8
  251. package/out/templator/genCreateBlock.js.map +1 -1
  252. package/out/templator/genCurdEditMultipleKeyBlock.js +3 -3
  253. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  254. package/out/templator/genCurdMultipleKeyBlock.js +4 -4
  255. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  256. package/out/templator/genEditTableBlock.js +3 -3
  257. package/out/templator/genEditTableBlock.js.map +1 -1
  258. package/out/templator/genGetBlock.js +1 -1
  259. package/out/templator/genGetBlock.js.map +1 -1
  260. package/out/templator/genListViewBlock.js +2 -2
  261. package/out/templator/genListViewBlock.js.map +1 -1
  262. package/out/templator/genSelectBlock.js +1 -1
  263. package/out/templator/genSelectBlock.js.map +1 -1
  264. package/out/templator/genUpdateBlock.js +8 -12
  265. package/out/templator/genUpdateBlock.js.map +1 -1
  266. package/out/templator/utils.d.ts +20 -20
  267. package/out/templator/utils.js +22 -22
  268. package/out/templator/utils.js.map +1 -1
  269. package/package.json +2 -1
  270. package/src/automate/engine/index.js +37 -3
  271. package/src/automate/engine/utils.js +68 -64
  272. package/src/common/BaseNode.ts +24 -17
  273. package/src/concepts/App__.ts +93 -17
  274. package/src/concepts/Argument__.ts +4 -2
  275. package/src/concepts/Assignment__.ts +5 -7
  276. package/src/concepts/Attribute__.ts +1 -0
  277. package/src/concepts/BinaryExpression__.ts +7 -5
  278. package/src/concepts/BindAttribute__.ts +9 -4
  279. package/src/concepts/BindDirective__.ts +4 -2
  280. package/src/concepts/BindEvent__.ts +6 -4
  281. package/src/concepts/BooleanLiteral__.ts +3 -1
  282. package/src/concepts/CallFunction__.ts +195 -11
  283. package/src/concepts/CallInterface__.ts +4 -2
  284. package/src/concepts/CallLogic__.ts +211 -12
  285. package/src/concepts/CallQueryComponent__.ts +2 -1
  286. package/src/concepts/Comment__.ts +1 -0
  287. package/src/concepts/CompletionProperty__.ts +1 -0
  288. package/src/concepts/ConfigGroup__.ts +290 -0
  289. package/src/concepts/ConfigPropertyValue__.ts +112 -0
  290. package/src/concepts/ConfigProperty__.ts +306 -0
  291. package/src/concepts/Configuration__.ts +286 -0
  292. package/src/concepts/Constant__.ts +3 -1
  293. package/src/concepts/DataElement__.ts +1 -0
  294. package/src/concepts/Destination__.ts +7 -5
  295. package/src/concepts/End__.ts +1 -0
  296. package/src/concepts/EntityIndex__.ts +19 -0
  297. package/src/concepts/EntityProperty__.ts +9 -8
  298. package/src/concepts/Entity__.ts +66 -59
  299. package/src/concepts/EnumItem__.ts +1 -0
  300. package/src/concepts/Enum__.ts +32 -12
  301. package/src/concepts/Event__.ts +2 -1
  302. package/src/concepts/ForEachStatement__.ts +115 -69
  303. package/src/concepts/Function__.ts +2 -1
  304. package/src/concepts/Identifier__.ts +18 -1
  305. package/src/concepts/IfStatement__.ts +1 -0
  306. package/src/concepts/InterfaceParam__.ts +2 -1
  307. package/src/concepts/Interface__.ts +21 -5
  308. package/src/concepts/JSBlock__.ts +1 -0
  309. package/src/concepts/LogicItem__.ts +9 -40
  310. package/src/concepts/Logic__.ts +48 -9
  311. package/src/concepts/MemberExpression__.ts +14 -17
  312. package/src/concepts/Module__.ts +158 -139
  313. package/src/concepts/Namespace__.ts +13 -12
  314. package/src/concepts/NullLiteral__.ts +3 -1
  315. package/src/concepts/NumericLiteral__.ts +3 -1
  316. package/src/concepts/Param__.ts +3 -2
  317. package/src/concepts/Point__.ts +1 -0
  318. package/src/concepts/ProcessComponent__.ts +3 -2
  319. package/src/concepts/ProcessElement__.ts +102 -107
  320. package/src/concepts/ProcessOutcome__.ts +1 -0
  321. package/src/concepts/Process__.ts +12 -4
  322. package/src/concepts/QueryAggregateExpression__.ts +1 -0
  323. package/src/concepts/QueryFieldExpression__.ts +2 -1
  324. package/src/concepts/QueryFromExpression__.ts +1 -0
  325. package/src/concepts/QueryGroupByExpression__.ts +1 -0
  326. package/src/concepts/QueryJoinExpression__.ts +2 -1
  327. package/src/concepts/QueryLimitExpression__.ts +1 -0
  328. package/src/concepts/QueryOrderByExpression__.ts +1 -0
  329. package/src/concepts/QuerySelectExpression__.ts +2 -1
  330. package/src/concepts/Rect__.ts +1 -0
  331. package/src/concepts/Return__.ts +3 -2
  332. package/src/concepts/Role__.ts +19 -2
  333. package/src/concepts/Slot__.ts +1 -0
  334. package/src/concepts/SqlQueryComponent__.ts +11 -1
  335. package/src/concepts/Start__.ts +1 -0
  336. package/src/concepts/StringLiteral__.ts +3 -1
  337. package/src/concepts/StructureProperty__.ts +2 -1
  338. package/src/concepts/Structure__.ts +5 -4
  339. package/src/concepts/SwitchCase__.ts +1 -0
  340. package/src/concepts/SwitchStatement__.ts +1 -0
  341. package/src/concepts/Theme__.ts +1 -0
  342. package/src/concepts/Transactional__.ts +1 -0
  343. package/src/concepts/TypeAnnotation__.ts +4 -0
  344. package/src/concepts/TypeParam__.ts +1 -0
  345. package/src/concepts/UnaryExpression__.ts +6 -3
  346. package/src/concepts/Unparsed__.ts +3 -1
  347. package/src/concepts/UseComponent__.ts +1 -0
  348. package/src/concepts/ValidationRule__.ts +5 -2
  349. package/src/concepts/Variable__.ts +12 -6
  350. package/src/concepts/ViewComponent__.ts +6 -5
  351. package/src/concepts/ViewElement__.ts +109 -80
  352. package/src/concepts/View__.ts +245 -206
  353. package/src/concepts/WhileStatement__.ts +1 -0
  354. package/src/concepts/basics/stdlib/index.ts +2 -2
  355. package/src/concepts/basics/stdlib/nasl.ui.ts +3 -137
  356. package/src/concepts/basics/stdlib/nasl.util.ts +21 -5
  357. package/src/concepts/basics/stdlib/{nasl.validate.ts → nasl.validation.ts} +28 -28
  358. package/src/concepts/index__.ts +4 -0
  359. package/src/generator/compileComponent.ts +1 -1
  360. package/src/generator/genBundleFiles.ts +1 -2
  361. package/src/generator/genMetaData.ts +111 -0
  362. package/src/generator/index.ts +1 -0
  363. package/src/index.ts +2 -2
  364. package/src/server/createUiTs.ts +153 -0
  365. package/src/server/entity2LogicNamespace.ts +17 -1
  366. package/src/server/getExtensionModules.ts +13 -0
  367. package/src/server/getLogics.ts +19 -18
  368. package/src/server/getMemberIdentifier.ts +60 -19
  369. package/src/server/getProcesses.ts +15 -8
  370. package/src/server/getValidates.ts +1 -1
  371. package/src/server/index.ts +2 -1
  372. package/src/server/naslServer.ts +204 -24
  373. package/src/server/process2LogicNamespace.ts +44 -3
  374. package/src/server/translator.ts +121 -97
  375. package/src/service/config/api.js +32 -0
  376. package/src/service/config/index.js +6 -0
  377. package/src/service/creator/index.js +2 -2
  378. package/src/service/logic/checktypeSocket.js +49 -0
  379. package/src/service/modules/api.js +20 -0
  380. package/src/service/modules/index.js +6 -0
  381. package/src/service/storage/init.ts +62 -54
  382. package/src/templator/genCallComponentLogic.ts +2 -2
  383. package/src/templator/genCreateBlock.ts +19 -25
  384. package/src/templator/genCurdEditMultipleKeyBlock.ts +3 -3
  385. package/src/templator/genCurdMultipleKeyBlock.ts +4 -4
  386. package/src/templator/genEditTableBlock.ts +3 -3
  387. package/src/templator/genGetBlock.ts +1 -1
  388. package/src/templator/genListViewBlock.ts +2 -2
  389. package/src/templator/genSelectBlock.ts +1 -1
  390. package/src/templator/genUpdateBlock.ts +19 -25
  391. package/src/templator/utils.ts +25 -153
@@ -34,12 +34,16 @@ import {
34
34
  BindAttribute,
35
35
  Assignment,
36
36
  CallQueryComponent,
37
+ Role,
38
+ Configuration,
37
39
  } from '../concepts';
38
40
  import { lsp2tspNumber, SourceMap, SourceMapItem, embeddedTSEmitter } from '../translator';
39
41
  import axios from '../service/storage';
40
42
  import { transformType, translateDiagnosticMessage } from './translator';
41
43
  import { EventPayload, invokeCommand, registerCommand } from '../common';
42
44
  import { DiagnosticRecord, Diagnostic, default as diagnosticManager } from '../manager/diagnostic';
45
+ import formatUiTs from './createUiTs';
46
+ import { primitiveTypeList } from '../concepts/basics/types/coreTypeList';
43
47
 
44
48
  const EmbeddedTSFileLineMap: { [name: string]: number } = {
45
49
  Entity: 3,
@@ -108,9 +112,21 @@ const naslServer = {
108
112
  * 先用挂在点上面,简单的方法实现,后期再考虑解耦
109
113
  */
110
114
  file2NodeMap: new Map<string, BaseNode>(),
115
+ elementsLogic: <{ [elementLogicName: string]: Array<Logic> }>{},
111
116
  start() {
112
117
  return this.messager.requestCommand('start');
113
118
  },
119
+ async createUiTs(allComponent: any) {
120
+ const { code, elementsLogic } = await formatUiTs(allComponent);
121
+ // 放入生產的uits文件
122
+ await naslServer.addFile({
123
+ file: 'nasl.ui.definition.ts',
124
+ fileContent: code,
125
+ });
126
+ naslServer.elementsLogic = elementsLogic;
127
+ // 全部文件加载完毕开始初始化
128
+ await naslServer.getDiagnosticRecordsAndPushAll();
129
+ },
114
130
  contentToFile(module: Module | App, results: Array<ReturnType<Structure['toEmbeddedTSFile']>>) {
115
131
  module.structures.forEach((structure) => {
116
132
  const result = structure.toEmbeddedTSFile();
@@ -141,18 +157,17 @@ const naslServer = {
141
157
  this.file2NodeMap.set(result.filePath, _enum);
142
158
  });
143
159
  module.logics.forEach((logic) => {
160
+ if (!(logic instanceof Logic))
161
+ return;
144
162
  const result = logic.toEmbeddedTSFile();
145
163
  results.push(result);
146
164
  logic.sourceMap = result.sourceMap;
147
165
  this.file2NodeMap.set(result.filePath, logic);
148
166
  });
149
167
 
150
- module.views.forEach((view) => {
151
- const result = view.toEmbeddedTSFile();
152
- results.push(result);
153
- view.sourceMap = result.sourceMap;
154
- this.file2NodeMap.set(result.filePath, view);
155
- });
168
+ // view的生成
169
+ naslServer.view2TSFile(module.views, results);
170
+
156
171
  module.processes.forEach((process) => {
157
172
  const result = process.toEmbeddedTSFile();
158
173
  results.push(result);
@@ -170,6 +185,18 @@ const naslServer = {
170
185
  });
171
186
  }
172
187
  },
188
+ view2TSFile(viewsChildren: View[], results: Array<ReturnType<Structure['toEmbeddedTSFile']>>) {
189
+ // 子页面
190
+ viewsChildren.forEach((view) => {
191
+ const result = view.toEmbeddedTSFile();
192
+ results.push(result);
193
+ view.sourceMap = result.sourceMap;
194
+ this.file2NodeMap.set(result.filePath, view);
195
+ if (view.children.length) {
196
+ naslServer.view2TSFile(view.children, results);
197
+ }
198
+ });
199
+ },
173
200
  async openApp(app: App) {
174
201
  const results: Array<ReturnType<Structure['toEmbeddedTSFile']>> = [];
175
202
  try {
@@ -210,7 +237,13 @@ const naslServer = {
210
237
  fileContent: result.code,
211
238
  }));
212
239
  await this.writeFiles(files);
213
- this._debugInFileStorage((module.parentNode) as App, files);
240
+ this._debugInFileStorage(module.parentNode as App, files);
241
+ },
242
+ /**
243
+ * 初始化之前添加文件
244
+ */
245
+ addFile(file: tsProtocol.OpenRequestArgs) {
246
+ return this.messager.requestCommand('addFile', file);
214
247
  },
215
248
  /**
216
249
  * 只新增文件
@@ -235,11 +268,15 @@ const naslServer = {
235
268
  updateFiles(args: { outputFiles: Array<tsProtocol.OpenRequestArgs> }) {
236
269
  return this.messager.requestCommand('updateFiles', args);
237
270
  },
238
- _debugInFileStorage(app: App, openFiles: Array<tsProtocol.OpenRequestArgs>) {
239
- return Promise.all(openFiles.map(async (file) => {
240
- const res = await axios.post('/api/App/debugEmbedded?id=' + app.id, file);
241
- return res.data;
242
- }));
271
+ _debugInFileStorage(node: BaseNode, openFiles: Array<tsProtocol.OpenRequestArgs>) {
272
+ // let app = node;
273
+ // if (node.concept !== 'App') {
274
+ // app = (node as any).rootNode || (node as any).app;
275
+ // }
276
+ // return Promise.all(openFiles.map(async (file) => {
277
+ // const res = await axios.post('/api/App/debugEmbedded?id=' + app.id, file);
278
+ // return res.data;
279
+ // }));
243
280
  },
244
281
  open() {
245
282
  return this.messager.requestCommand('open');
@@ -253,23 +290,87 @@ const naslServer = {
253
290
  async references(args: tsProtocol.FileLocationRequestArgs) {
254
291
  return ((await this.messager.requestCommand('references', args)) as any)?.response as tsProtocol.ReferencesResponseBody;
255
292
  },
256
- getSelectCompletion(node: BaseNode) {
293
+ getValueSelectCompletion(node: BaseNode, value: string) {
257
294
  const { currentSource, fileNode } = naslServer.getCurrentSource(node);
258
295
  // console.log(currentSource, fileNode);
259
296
  if (currentSource && fileNode) {
260
- return naslServer._getSelectCompletion({
297
+ return naslServer._getValueSelectCompletion({
261
298
  file: (fileNode as FileNode).getEmbeddedFilePath(),
262
299
  range: {
263
300
  line: lsp2tspNumber(currentSource.range.start.line),
264
301
  offset: lsp2tspNumber(currentSource.range.start.character),
265
302
  },
303
+ value,
266
304
  });
267
305
  } else {
268
306
  console.log('没找到节点', node, currentSource, fileNode);
269
307
  }
270
308
  },
271
- _getSelectCompletion(args: any) {
272
- return this.messager.requestCommand('getSelectCompletion', args);
309
+ _getValueSelectCompletion(args: any) {
310
+ return this.messager.requestCommand('getValueSelectCompletion', args);
311
+ },
312
+ // 联合类型切割取出类型
313
+ getDisplayString2Type(displayString: string) {
314
+ // 取出匹配的内容
315
+ const reg = /\<([^()]+)\>/g;
316
+ const types = reg.exec(displayString);
317
+ // 取出提示的类型,组成是数组
318
+ const typeList: string[] = types[1].split(' | ').map((item: string) => {
319
+ if (item.includes(' ')) {
320
+ const strs = item.split(' ');
321
+ const type = strs[strs.length - 1];
322
+ return type;
323
+ } else if (item.includes('.')) {
324
+ const strs = item.split('.');
325
+ const type = strs[strs.length - 1];
326
+ return type;
327
+ } else {
328
+ return item;
329
+ }
330
+ });
331
+ return typeList;
332
+ },
333
+ async getTypeQuickinfo(node: BaseNode) {
334
+ console.log(node);
335
+ if (node instanceof Identifier) {
336
+ const callFunction = node.parentNode.parentNode;
337
+ /**
338
+ * currentSource callFunction 的节点,要去到当前节点的位置
339
+ * nasl.util.Convert(xxx),所以取到的位置要 + `nasl.util.C` 的长度
340
+ * fileNode
341
+ */
342
+ const { currentSource, fileNode } = naslServer.getCurrentSource(callFunction);
343
+ const quickInfo = await naslServer._getTypeQuickinfo({
344
+ file: (fileNode as FileNode).getEmbeddedFilePath(),
345
+ line: lsp2tspNumber(currentSource.range.start.line),
346
+ offset: lsp2tspNumber(currentSource.range.start.character) + `nasl.util.C`.length,
347
+ });
348
+ if (quickInfo.responseRequired) {
349
+ const displayString = quickInfo?.response?.displayString || '';
350
+ const typeList = naslServer.getDisplayString2Type(displayString);
351
+ let res: Array<TypeAnnotation> = [];
352
+ typeList.forEach((type) => {
353
+ const typeAnnotation = primitiveTypeList.find((typeAnnotation) => typeAnnotation.typeName === type);
354
+ if (typeAnnotation) {
355
+ res.push(typeAnnotation);
356
+ } else if (type === 'unknown') {
357
+ return null;
358
+ }
359
+ });
360
+ if (!res.length) {
361
+ res = primitiveTypeList;
362
+ }
363
+ // 调整结构
364
+ const dataTypeList: Array<{
365
+ title: string;
366
+ children: Array<TypeAnnotation>;
367
+ }> = [{ title: '基础类型', children: res }];
368
+ return dataTypeList;
369
+ }
370
+ }
371
+ },
372
+ _getTypeQuickinfo(args: any) {
373
+ return this.messager.requestCommand('quickInfo', args) as unknown as { responseRequired: boolean; response: tsProtocol.QuickInfoResponseBody };
273
374
  },
274
375
  getSelectNextCompletion(node: BaseNode) {
275
376
  const { currentSource, fileNode } = naslServer.getCurrentSource(node);
@@ -320,10 +421,15 @@ const naslServer = {
320
421
  // 实体下的建议不用展示,因为都是平台自己写的逻辑
321
422
  if (node instanceof Entity) {
322
423
  record.suggestionDiagnostics = [];
323
- } else if (node instanceof View) {
424
+ }
425
+ if (node instanceof View) {
324
426
  // event在view中不展示建议使用,提示关闭掉
325
427
  record.suggestionDiagnostics = record.suggestionDiagnostics.filter((item) => !item.text.includes(`'event'`));
326
428
  }
429
+ if (node instanceof Logic) {
430
+ // logic在for循环中,不展示any提示
431
+ record.suggestionDiagnostics = record.suggestionDiagnostics.filter((item) => !item.text.includes(`implicitly has an 'any' type, but a better type may be inferred from usage.`));
432
+ }
327
433
  record.suggestionDiagnostics = record.suggestionDiagnostics
328
434
  .map((diag) => this._resolveDiagnostic(diag as unknown as tsProtocol.DiagnosticWithFileName, node.sourceMap))
329
435
  .filter((diag) => !!diag);
@@ -361,7 +467,7 @@ const naslServer = {
361
467
  _diagnosticSpecialTreatment(minRange: MinRange, tsErrorDetail: Diagnostic) {
362
468
  // 因为缺少参数时候有可能有特殊情况,因为原本少的多了就会找到 callLogic上,
363
469
  // 但是只少一个的时候就会找到准确的Argument上 需要特殊处理, ui层就可以统一处理
364
- if (minRange.node instanceof Argument && /Expected (.+?) arguments, but got (.+?)./.exec(tsErrorDetail.text)) {
470
+ if (minRange.node instanceof Argument && /Expected (.+?) arguments, but got (.+?)./.exec(tsErrorDetail.originalDiagnostic.text)) {
365
471
  minRange.node = minRange.node.parentNode;
366
472
  }
367
473
  minRange.node.tsErrorDetail = tsErrorDetail;
@@ -515,6 +621,31 @@ const naslServer = {
515
621
  });
516
622
  refsList = [...viewRefs.refs];
517
623
  }
624
+ /**
625
+ * elements 需要查的是__elements.后面的那个内容,过滤两个为了生成内容的节点
626
+ */
627
+ if (node instanceof ViewElement) {
628
+ const code = currentSource.code;
629
+ const prefix = '__elements.';
630
+ const prefixIndex = code.indexOf(prefix) !== -1 ? code.indexOf(prefix) : 0;
631
+ const methodsNameIndex = prefixIndex + prefix.length;
632
+ const methods = await naslServer.references({
633
+ file: (fileNode as FileNode).getEmbeddedFilePath(),
634
+ line: lsp2tspNumber(currentSource.range.start.line),
635
+ offset: lsp2tspNumber(currentSource.range.start.character + methodsNameIndex),
636
+ });
637
+
638
+ const methodRefs = methods.refs.filter((item) => {
639
+ if (item.lineText.includes('__elements.') && item.lineText.includes('new nasl.ui.')) {
640
+ return false;
641
+ }
642
+ if (item.lineText.includes(': <nasl.ui.')) {
643
+ return false;
644
+ }
645
+ return true;
646
+ });
647
+ refsList = [...methodRefs];
648
+ }
518
649
  return refsList;
519
650
  },
520
651
  /**
@@ -545,6 +676,10 @@ const naslServer = {
545
676
  if (minRange.node instanceof CallLogic && node instanceof Logic) {
546
677
  minRange.setTypeMethods = 'setCalleeName';
547
678
  }
679
+ if (minRange.node instanceof CallLogic && node instanceof ViewElement) {
680
+ minRange.setTypeMethods = 'setCalleeName';
681
+ minRange.newValue = 'elements.' + newValue + '.logics';
682
+ }
548
683
  // 如果节点是实体修改引发calllogic修改
549
684
  if (minRange.node instanceof CallLogic && (node instanceof Entity || node instanceof View)) {
550
685
  // 匹配到的内容,当前这一行的内容;
@@ -609,6 +744,11 @@ const naslServer = {
609
744
  minRange.newValue = newTextValue;
610
745
  }
611
746
  }
747
+ // 如果修改逻辑,改到了Identifier表达式,只能说明是在属性里有使用了
748
+ if (minRange.node instanceof Identifier && node instanceof Logic) {
749
+ minRange.newValue = newValue;
750
+ minRange.setTypeMethods = 'setName';
751
+ }
612
752
  // 如果节点是MemberExpression表达式
613
753
  if (minRange.node instanceof MemberExpression) {
614
754
  // 匹配到的内容,当前这一行的内容;
@@ -711,6 +851,19 @@ const naslServer = {
711
851
  minRange.newValue = newTsNameSpace;
712
852
  }
713
853
  }
854
+ if (minRange.node instanceof Interface && node instanceof Logic) {
855
+ minRange.setTypeMethods = 'setOriginLogicName';
856
+ }
857
+ // 如果是role改名,就需要查到变更后的数组
858
+ if ((minRange.node instanceof View || minRange.node instanceof ViewElement) && node instanceof Role) {
859
+ // oldName旧的节点存的值
860
+ // newValue用户输入值
861
+ // node.bindRoles 存的
862
+ minRange.setTypeMethods = 'setBindRoles';
863
+ const str = minRange.node.bindRoles.toString().replace(oldName, newValue);
864
+ const newBindRoles = str.split(',');
865
+ minRange.newValue = newBindRoles;
866
+ }
714
867
  // 枚举修改枚举名,比较特殊
715
868
  if (minRange.node instanceof EnumItem && node instanceof Enum) {
716
869
  // 什么都不做,用来跳过修改
@@ -725,6 +878,10 @@ const naslServer = {
725
878
  if (minRange.node instanceof View && node instanceof View && minRange.node !== node) {
726
879
  return null;
727
880
  }
881
+ // 逻辑改名,触发了在定义里面的,element定义,的值,直接掠过
882
+ if (minRange.node instanceof View && node instanceof Logic) {
883
+ return null;
884
+ }
728
885
  } else {
729
886
  console.log('没找到节点需要排查');
730
887
  console.log(record, fileNode.sourceMap);
@@ -920,7 +1077,7 @@ const naslServer = {
920
1077
  }
921
1078
  },
922
1079
  // 获取element方法的可选值
923
- getElementsMethod(node: CallLogic | BindEvent, getFieldKey: string) {
1080
+ getFieldKeySelectCompletion(node: BaseNode, fieldKey?: string) {
924
1081
  const { currentSource, fileNode } = naslServer.getCurrentSource(node);
925
1082
  console.log(currentSource);
926
1083
  if (currentSource && fileNode) {
@@ -930,7 +1087,7 @@ const naslServer = {
930
1087
  line: lsp2tspNumber(currentSource.range.start.line),
931
1088
  offset: lsp2tspNumber(currentSource.range.start.character),
932
1089
  },
933
- getFieldKey,
1090
+ getFieldKey: fieldKey,
934
1091
  });
935
1092
  } else {
936
1093
  console.log('没找到节点', currentSource, fileNode);
@@ -984,6 +1141,8 @@ BaseNode.prototype.findUsage = function findUsage() {
984
1141
  }
985
1142
  };
986
1143
  BaseNode.prototype.changeName = async function changeName(newValue: string, updateAll: boolean = false) {
1144
+ console.log(newValue);
1145
+ console.log(this);
987
1146
  try {
988
1147
  /**
989
1148
  * 查找这个节点是不是有依赖
@@ -1068,10 +1227,11 @@ BaseNode.prototype.prepareDelete = async function prepareDelete() {
1068
1227
  } else {
1069
1228
  // 如果有依赖就有一个查找引用提示
1070
1229
  confirmParms.tipFlag = true;
1230
+ const node = this;
1071
1231
  callback = () => {
1072
1232
  // removeParam
1073
1233
  // 跟rename 还不太一样,部分修改依赖修改好的值,然后在下面的修改需要把自己传递进去
1074
- if (this instanceof Param) {
1234
+ if (node instanceof Param) {
1075
1235
  const App = this.rootNode;
1076
1236
  const logicNode = this.parentNode;
1077
1237
  // 收集修改
@@ -1092,6 +1252,26 @@ BaseNode.prototype.prepareDelete = async function prepareDelete() {
1092
1252
  App.emit('collect:end');
1093
1253
  return;
1094
1254
  }
1255
+ // 删除logic节点,如果有对应的interface要一起删除
1256
+ if (node instanceof Logic) {
1257
+ const App = this.rootNode;
1258
+ // 收集修改
1259
+ App.emit('collect:start');
1260
+ this.delete();
1261
+ refsList.forEach((record) => {
1262
+ const fileNode = naslServer.file2NodeMap.get(record.file);
1263
+ if (!fileNode)
1264
+ return null;
1265
+ const minRange: MinRange = naslServer._findMinRange(record, fileNode.sourceMap);
1266
+ if (minRange) {
1267
+ if (minRange.node instanceof Interface) {
1268
+ minRange.node.delete();
1269
+ }
1270
+ }
1271
+ });
1272
+ // 结束修改 ,批量操作
1273
+ App.emit('collect:end');
1274
+ }
1095
1275
  // 其余的都直接调用删除
1096
1276
  this.delete();
1097
1277
  };
@@ -1235,8 +1415,8 @@ async function receiveHandleChange($event: EventPayload) {
1235
1415
  const targetNode = $event.target;
1236
1416
  // 当前操作的文件节点
1237
1417
  const { fileNode } = naslServer.getCurrentSource(targetNode);
1238
- // 如果是导入模块就,就引入对应模块,先不处理module,下面的内容会自动创建
1239
- if (fileNode instanceof Module) {
1418
+ // 如果是导入模块就,就引入对应模块,先不处理module和Configuration,下面的内容会自动创建
1419
+ if (fileNode instanceof Module || fileNode instanceof Configuration) {
1240
1420
  return;
1241
1421
  }
1242
1422
 
@@ -1273,7 +1453,7 @@ embeddedTSEmitter.on('change', ($event: EventPayload) => {
1273
1453
  // 收集到一个行为集合
1274
1454
  const eventValue = $event.value;
1275
1455
  eventValue.forEach((item: EventPayload) => {
1276
- receiveHandleChange(item);
1456
+ receiveHandleChange(item.originEvent);
1277
1457
  });
1278
1458
  });
1279
1459
 
@@ -1,4 +1,4 @@
1
- import { CallLogic, BindEvent, App, Namespace, Entity, BaseNode, Logic, Param, TypeAnnotation, Return, Process } from '..';
1
+ import { CallLogic, BindEvent, App, Namespace, Entity, BaseNode, Logic, Param, TypeAnnotation, Return, Process, ProcessElement } from '..';
2
2
  import { genLaunchProcess, genUserTaskLogic } from './getProcesses';
3
3
 
4
4
  export function process2LogicNamespace(process: Process) {
@@ -10,11 +10,12 @@ export function process2LogicNamespace(process: Process) {
10
10
  name: e.name,
11
11
  logics: [l],
12
12
  });
13
+ const path = `app.processes.${process.name}.elements.${e.name}.logic`;
13
14
  l.getNamespace = function() {
14
- return (this.parentNode as Namespace).getNamespace()
15
+ return path;
15
16
  }
16
17
  children.push(ns);
17
- ns.path = `app.processes.${process.name}.elements.${e.name}.logic`;
18
+ ns.path = `app.processes.${process.name}.elements.${e.name}`
18
19
  }
19
20
  });
20
21
  const launchLogic = genLaunchProcess(process);
@@ -26,3 +27,43 @@ export function process2LogicNamespace(process: Process) {
26
27
  ns.path = `app.processes.${process.name}.logics`;
27
28
  return ns;
28
29
  }
30
+
31
+ interface processTreeFragment {
32
+ level: 'processTreeFragment';
33
+ name: string,
34
+ id: string,
35
+ logics: Array<Logic>,
36
+ elements: Array<{
37
+ level: 'processTreeElementFragment',
38
+ name: string,
39
+ id: string,
40
+ logics: Array<Logic>,
41
+ }>
42
+ }
43
+
44
+ export function processToTreeFragment(process: Process) {
45
+ const fragment: processTreeFragment = {
46
+ level: 'processTreeFragment',
47
+ name: process.name,
48
+ id: process.id,
49
+ logics: [],
50
+ elements: [],
51
+ }
52
+ process.elements.forEach((e) => {
53
+ if (e.type === 'UserTask') {
54
+ const l = genUserTaskLogic(e);
55
+ l.parentKey = 'readonly'
56
+ fragment.elements.push({
57
+ level: 'processTreeElementFragment',
58
+ id: e.id,
59
+ name: e.name,
60
+ logics: [l],
61
+ })
62
+ }
63
+ });
64
+
65
+ const launchLogic = genLaunchProcess(process);
66
+ fragment.logics.push(launchLogic);
67
+ launchLogic.parentKey = 'readonly'
68
+ return fragment;
69
+ }