@lcap/nasl 2.20.0-beta.2 → 2.20.0

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 (323) hide show
  1. package/out/automate/engine/index.d.ts +1 -1
  2. package/out/automate/engine/index.js +2 -3
  3. package/out/automate/engine/index.js.map +1 -1
  4. package/out/automate/engine/uniqueName.d.ts +1 -1
  5. package/out/automate/engine/uniqueName.js +2 -2
  6. package/out/automate/engine/uniqueName.js.map +1 -1
  7. package/out/automate/engine/utils.js +4 -1
  8. package/out/automate/engine/utils.js.map +1 -1
  9. package/out/automate/template/myProcess.d.ts +1 -1
  10. package/out/automate/template/myProcess.js +2 -2
  11. package/out/automate/template/myProcess.js.map +1 -1
  12. package/out/bak/translator.js +14 -22
  13. package/out/bak/translator.js.map +1 -1
  14. package/out/common/BaseNode.js +4 -1
  15. package/out/common/BaseNode.js.map +1 -1
  16. package/out/common/Command.d.ts +1 -0
  17. package/out/common/Command.js +5 -1
  18. package/out/common/Command.js.map +1 -1
  19. package/out/concepts/App__.d.ts +4 -0
  20. package/out/concepts/App__.js +30 -6
  21. package/out/concepts/App__.js.map +1 -1
  22. package/out/concepts/Assignee__.js +4 -3
  23. package/out/concepts/Assignee__.js.map +1 -1
  24. package/out/concepts/BatchAssignment__.js +3 -3
  25. package/out/concepts/BatchAssignment__.js.map +1 -1
  26. package/out/concepts/BindAttribute__.d.ts +7 -0
  27. package/out/concepts/BindAttribute__.js +270 -39
  28. package/out/concepts/BindAttribute__.js.map +1 -1
  29. package/out/concepts/BindDirective__.d.ts +7 -0
  30. package/out/concepts/BindDirective__.js +215 -17
  31. package/out/concepts/BindDirective__.js.map +1 -1
  32. package/out/concepts/BindStyle__.d.ts +7 -0
  33. package/out/concepts/BindStyle__.js +194 -4
  34. package/out/concepts/BindStyle__.js.map +1 -1
  35. package/out/concepts/CallFunction__.js +22 -8
  36. package/out/concepts/CallFunction__.js.map +1 -1
  37. package/out/concepts/CallInterface__.js +3 -2
  38. package/out/concepts/CallInterface__.js.map +1 -1
  39. package/out/concepts/CallLogic__.d.ts +3 -0
  40. package/out/concepts/CallLogic__.js +78 -89
  41. package/out/concepts/CallLogic__.js.map +1 -1
  42. package/out/concepts/CallQueryComponent__.js +20 -3
  43. package/out/concepts/CallQueryComponent__.js.map +1 -1
  44. package/out/concepts/ConfigGroup__.d.ts +1 -0
  45. package/out/concepts/ConfigGroup__.js +13 -0
  46. package/out/concepts/ConfigGroup__.js.map +1 -1
  47. package/out/concepts/ConfigProperty__.d.ts +19 -0
  48. package/out/concepts/ConfigProperty__.js +61 -0
  49. package/out/concepts/ConfigProperty__.js.map +1 -1
  50. package/out/concepts/Configuration__.d.ts +1 -0
  51. package/out/concepts/Configuration__.js +13 -0
  52. package/out/concepts/Configuration__.js.map +1 -1
  53. package/out/concepts/DataSource__.js.map +1 -1
  54. package/out/concepts/Destination__.d.ts +1 -0
  55. package/out/concepts/Destination__.js +61 -7
  56. package/out/concepts/Destination__.js.map +1 -1
  57. package/out/concepts/EntityProperty__.js +9 -1
  58. package/out/concepts/EntityProperty__.js.map +1 -1
  59. package/out/concepts/EnumItem__.d.ts +5 -5
  60. package/out/concepts/EnumItem__.js +6 -6
  61. package/out/concepts/Enum__.d.ts +20 -19
  62. package/out/concepts/Enum__.js +28 -1
  63. package/out/concepts/Enum__.js.map +1 -1
  64. package/out/concepts/ExternalDestination__.d.ts +1 -0
  65. package/out/concepts/ExternalDestination__.js +21 -3
  66. package/out/concepts/ExternalDestination__.js.map +1 -1
  67. package/out/concepts/ForEachStatement__.js +2 -0
  68. package/out/concepts/ForEachStatement__.js.map +1 -1
  69. package/out/concepts/Frontend__.d.ts +2 -1
  70. package/out/concepts/Frontend__.js.map +1 -1
  71. package/out/concepts/Identifier__.js +16 -5
  72. package/out/concepts/Identifier__.js.map +1 -1
  73. package/out/concepts/InterfaceParam__.js +9 -1
  74. package/out/concepts/InterfaceParam__.js.map +1 -1
  75. package/out/concepts/JSBlock__.js +5 -1
  76. package/out/concepts/JSBlock__.js.map +1 -1
  77. package/out/concepts/Logic__.d.ts +79 -79
  78. package/out/concepts/Logic__.js +16 -3
  79. package/out/concepts/Logic__.js.map +1 -1
  80. package/out/concepts/Match__.d.ts +0 -3
  81. package/out/concepts/Match__.js +11 -66
  82. package/out/concepts/Match__.js.map +1 -1
  83. package/out/concepts/MemberExpression__.js +9 -0
  84. package/out/concepts/MemberExpression__.js.map +1 -1
  85. package/out/concepts/Module__.d.ts +16 -0
  86. package/out/concepts/Module__.js +43 -0
  87. package/out/concepts/Module__.js.map +1 -1
  88. package/out/concepts/NewComposite__.d.ts +2 -4
  89. package/out/concepts/NewComposite__.js +91 -126
  90. package/out/concepts/NewComposite__.js.map +1 -1
  91. package/out/concepts/NewList__.d.ts +1 -0
  92. package/out/concepts/NewList__.js +22 -2
  93. package/out/concepts/NewList__.js.map +1 -1
  94. package/out/concepts/NewMap__.d.ts +1 -0
  95. package/out/concepts/NewMap__.js +43 -11
  96. package/out/concepts/NewMap__.js.map +1 -1
  97. package/out/concepts/OqlQueryComponent__.js +40 -12
  98. package/out/concepts/OqlQueryComponent__.js.map +1 -1
  99. package/out/concepts/Param__.js +10 -2
  100. package/out/concepts/Param__.js.map +1 -1
  101. package/out/concepts/ProcessElement__.js +2 -1
  102. package/out/concepts/ProcessElement__.js.map +1 -1
  103. package/out/concepts/ProcessOutcome__.js +1 -1
  104. package/out/concepts/ProcessOutcome__.js.map +1 -1
  105. package/out/concepts/ProcessOutcomes__.js +1 -1
  106. package/out/concepts/ProcessOutcomes__.js.map +1 -1
  107. package/out/concepts/Process__.js +1 -0
  108. package/out/concepts/Process__.js.map +1 -1
  109. package/out/concepts/Return__.js +10 -2
  110. package/out/concepts/Return__.js.map +1 -1
  111. package/out/concepts/StringInterpolation__.js +14 -2
  112. package/out/concepts/StringInterpolation__.js.map +1 -1
  113. package/out/concepts/StringLiteral__.js +6 -6
  114. package/out/concepts/StringLiteral__.js.map +1 -1
  115. package/out/concepts/StructureProperty__.js +9 -1
  116. package/out/concepts/StructureProperty__.js.map +1 -1
  117. package/out/concepts/TypeAnnotation__.d.ts +6 -3
  118. package/out/concepts/TypeAnnotation__.js +67 -13
  119. package/out/concepts/TypeAnnotation__.js.map +1 -1
  120. package/out/concepts/ValidationRule__.d.ts +1 -0
  121. package/out/concepts/ValidationRule__.js +53 -0
  122. package/out/concepts/ValidationRule__.js.map +1 -1
  123. package/out/concepts/Variable__.js +9 -1
  124. package/out/concepts/Variable__.js.map +1 -1
  125. package/out/concepts/ViewElement__.js +17 -1
  126. package/out/concepts/ViewElement__.js.map +1 -1
  127. package/out/concepts/View__.d.ts +1 -3
  128. package/out/concepts/View__.js +22 -11
  129. package/out/concepts/View__.js.map +1 -1
  130. package/out/concepts/basics/stdlib/nasl.collection.js +6 -1
  131. package/out/concepts/basics/stdlib/nasl.collection.js.map +1 -1
  132. package/out/concepts/basics/stdlib/nasl.configuration.js +3 -0
  133. package/out/concepts/basics/stdlib/nasl.configuration.js.map +1 -1
  134. package/out/concepts/basics/stdlib/nasl.core.d.ts +2 -0
  135. package/out/concepts/basics/stdlib/nasl.core.js +34 -0
  136. package/out/concepts/basics/stdlib/nasl.core.js.map +1 -1
  137. package/out/concepts/basics/stdlib/nasl.util.js +4 -2
  138. package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
  139. package/out/concepts/basics/types/index.d.ts +1 -0
  140. package/out/concepts/basics/types/index.js +3 -1
  141. package/out/concepts/basics/types/index.js.map +1 -1
  142. package/out/concepts/index__.d.ts +0 -1
  143. package/out/concepts/index__.js +0 -1
  144. package/out/concepts/index__.js.map +1 -1
  145. package/out/enums/KEYWORDS.js +8 -0
  146. package/out/enums/KEYWORDS.js.map +1 -1
  147. package/out/generator/genBundleFiles.js +24 -5
  148. package/out/generator/genBundleFiles.js.map +1 -1
  149. package/out/generator/genReleaseBody.d.ts +2 -3
  150. package/out/generator/genReleaseBody.js +97 -23
  151. package/out/generator/genReleaseBody.js.map +1 -1
  152. package/out/generator/permission.d.ts +2 -10
  153. package/out/generator/permission.js +27 -14
  154. package/out/generator/permission.js.map +1 -1
  155. package/out/server/entity2LogicNamespace.js +2 -20
  156. package/out/server/entity2LogicNamespace.js.map +1 -1
  157. package/out/server/extendBaseNode.js +16 -5
  158. package/out/server/extendBaseNode.js.map +1 -1
  159. package/out/server/formatTsUtils.d.ts +2 -1
  160. package/out/server/formatTsUtils.js +40 -10
  161. package/out/server/formatTsUtils.js.map +1 -1
  162. package/out/server/getLogics.d.ts +2 -2
  163. package/out/server/getLogics.js +3 -3
  164. package/out/server/getLogics.js.map +1 -1
  165. package/out/server/getMemberIdentifier.d.ts +1 -0
  166. package/out/server/getMemberIdentifier.js +27 -1
  167. package/out/server/getMemberIdentifier.js.map +1 -1
  168. package/out/server/index.js +1 -0
  169. package/out/server/index.js.map +1 -1
  170. package/out/server/naslServer.d.ts +7 -1
  171. package/out/server/naslServer.js +519 -46
  172. package/out/server/naslServer.js.map +1 -1
  173. package/out/server/translator.js +109 -33
  174. package/out/server/translator.js.map +1 -1
  175. package/out/service/storage/init.js +21 -1
  176. package/out/service/storage/init.js.map +1 -1
  177. package/out/templator/genCreateBlock.js +1 -3
  178. package/out/templator/genCreateBlock.js.map +1 -1
  179. package/out/templator/genCurdEditMultipleKeyBlock.js +1 -3
  180. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  181. package/out/templator/genCurdMultipleKeyBlock.js +2 -4
  182. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  183. package/out/templator/genGetBlock.js +1 -1
  184. package/out/templator/genGetBlock.js.map +1 -1
  185. package/out/templator/genGridViewBlock.js +2 -2
  186. package/out/templator/genGridViewBlock.js.map +1 -1
  187. package/out/templator/genListViewBlock.js +7 -1
  188. package/out/templator/genListViewBlock.js.map +1 -1
  189. package/out/templator/genSelectBlock.js +1 -1
  190. package/out/templator/genSelectBlock.js.map +1 -1
  191. package/out/templator/genTableBlock.js +2 -2
  192. package/out/templator/genTableBlock.js.map +1 -1
  193. package/out/templator/genUpdateBlock.js +2 -3
  194. package/out/templator/genUpdateBlock.js.map +1 -1
  195. package/out/utils/traverse.js +8 -2
  196. package/out/utils/traverse.js.map +1 -1
  197. package/package.json +2 -2
  198. package/sandbox/stdlib/dist/nasl.logging.js +0 -0
  199. package/sandbox/stdlib/dist/nasl.util.js +0 -0
  200. package/sandbox/stdlib/nasl.collection.ts +1 -0
  201. package/sandbox/stdlib/nasl.core.ts +34 -0
  202. package/sandbox/stdlib/nasl.oql.ts +71 -15
  203. package/sandbox/stdlib/nasl.util.ts +9 -3
  204. package/src/automate/engine/dist/index.dev.js +517 -0
  205. package/src/automate/engine/index.js +2 -3
  206. package/src/automate/engine/uniqueName.js +2 -2
  207. package/src/automate/engine/utils.js +4 -2
  208. package/src/automate/template/myProcess.js +2 -2
  209. package/src/bak/translator.js +16 -25
  210. package/src/common/BaseNode.ts +3 -1
  211. package/src/common/Command.ts +4 -0
  212. package/src/common/dist/BaseNode.js +1101 -0
  213. package/src/concepts/App__.ts +36 -7
  214. package/src/concepts/Assignee__.ts +4 -3
  215. package/src/concepts/BatchAssignment__.ts +3 -3
  216. package/src/concepts/BindAttribute__.ts +299 -38
  217. package/src/concepts/BindDirective__.ts +204 -31
  218. package/src/concepts/BindStyle__.ts +187 -24
  219. package/src/concepts/CallFunction__.ts +55 -10
  220. package/src/concepts/CallInterface__.ts +3 -2
  221. package/src/concepts/CallLogic__.ts +110 -90
  222. package/src/concepts/CallQueryComponent__.ts +18 -3
  223. package/src/concepts/ConfigGroup__.ts +17 -4
  224. package/src/concepts/ConfigProperty__.ts +70 -4
  225. package/src/concepts/Configuration__.ts +14 -5
  226. package/src/concepts/DataSource__.ts +4 -1
  227. package/src/concepts/Destination__.ts +61 -7
  228. package/src/concepts/EntityProperty__.ts +7 -1
  229. package/src/concepts/EnumItem__.ts +6 -6
  230. package/src/concepts/Enum__.ts +22 -19
  231. package/src/concepts/ExternalDestination__.ts +28 -8
  232. package/src/concepts/ForEachStatement__.ts +2 -0
  233. package/src/concepts/Frontend__.ts +2 -1
  234. package/src/concepts/Identifier__.ts +16 -5
  235. package/src/concepts/InterfaceParam__.ts +7 -1
  236. package/src/concepts/JSBlock__.ts +3 -2
  237. package/src/concepts/Logic__.ts +95 -83
  238. package/src/concepts/Match__.ts +31 -67
  239. package/src/concepts/MemberExpression__.ts +6 -0
  240. package/src/concepts/Module__.ts +57 -0
  241. package/src/concepts/NewComposite__.ts +95 -140
  242. package/src/concepts/NewList__.ts +23 -2
  243. package/src/concepts/NewMap__.ts +48 -24
  244. package/src/concepts/OqlQueryComponent__.ts +40 -20
  245. package/src/concepts/Param__.ts +178 -176
  246. package/src/concepts/ProcessElement__.ts +2 -1
  247. package/src/concepts/ProcessOutcome__.ts +1 -1
  248. package/src/concepts/ProcessOutcomes__.ts +1 -1
  249. package/src/concepts/Process__.ts +1 -0
  250. package/src/concepts/Return__.ts +8 -2
  251. package/src/concepts/StringInterpolation__.ts +19 -7
  252. package/src/concepts/StringLiteral__.ts +7 -6
  253. package/src/concepts/StructureProperty__.ts +7 -1
  254. package/src/concepts/TypeAnnotation__.ts +101 -14
  255. package/src/concepts/ValidationRule__.ts +58 -9
  256. package/src/concepts/Variable__.ts +11 -1
  257. package/src/concepts/ViewElement__.ts +39 -2
  258. package/src/concepts/View__.ts +26 -14
  259. package/src/concepts/basics/stdlib/dist/nasl.util.js +1602 -0
  260. package/src/concepts/basics/stdlib/dist/reference2TypeAnnotationList.js +24 -0
  261. package/src/concepts/basics/stdlib/nasl.collection.ts +6 -1
  262. package/src/concepts/basics/stdlib/nasl.configuration.ts +3 -0
  263. package/src/concepts/basics/stdlib/nasl.core.ts +33 -2
  264. package/src/concepts/basics/stdlib/nasl.util.ts +4 -2
  265. package/src/concepts/basics/types/index.ts +1 -0
  266. package/src/concepts/dist/BindAttribute__.js +795 -0
  267. package/src/concepts/dist/BindEvent__.js +732 -0
  268. package/src/concepts/dist/CallFunction__.js +527 -0
  269. package/src/concepts/dist/CallLogic__.js +932 -0
  270. package/src/concepts/dist/Destination__.js +708 -0
  271. package/src/concepts/dist/ExternalDestination__.js +298 -0
  272. package/src/concepts/dist/Identifier__.js +311 -0
  273. package/src/concepts/dist/StringInterpolation__.js +231 -0
  274. package/src/concepts/dist/TypeAnnotation__.js +834 -0
  275. package/src/concepts/dist/ViewElement__.js +1692 -0
  276. package/src/concepts/dist/View__.js +1601 -0
  277. package/src/concepts/index__.ts +0 -1
  278. package/src/enums/KEYWORDS.ts +8 -0
  279. package/src/generator/dist/genBundleFiles.js +261 -0
  280. package/src/generator/dist/genMetaData.js +245 -0
  281. package/src/generator/dist/permission.js +405 -0
  282. package/src/generator/genBundleFiles.ts +24 -5
  283. package/src/generator/genReleaseBody.ts +75 -30
  284. package/src/generator/permission.ts +31 -15
  285. package/src/server/entity2LogicNamespace.ts +2 -20
  286. package/src/server/extendBaseNode.ts +15 -5
  287. package/src/server/formatTsUtils.ts +41 -10
  288. package/src/server/getLogics.ts +4 -4
  289. package/src/server/getMemberIdentifier.ts +27 -1
  290. package/src/server/index.ts +2 -0
  291. package/src/server/naslServer.ts +520 -48
  292. package/src/server/translator.ts +96 -34
  293. package/src/service/storage/dist/init.js +579 -0
  294. package/src/service/storage/init.ts +22 -2
  295. package/src/templator/dist/genEditTableBlock.js +204 -0
  296. package/src/templator/dist/genGridViewBlock.js +265 -0
  297. package/src/templator/dist/genListViewBlock.js +84 -0
  298. package/src/templator/dist/genTableBlock.js +209 -0
  299. package/src/templator/dist/utils.js +527 -0
  300. package/src/templator/genCreateBlock.ts +1 -3
  301. package/src/templator/genCurdEditMultipleKeyBlock.ts +1 -3
  302. package/src/templator/genCurdMultipleKeyBlock.ts +2 -4
  303. package/src/templator/genGetBlock.ts +1 -1
  304. package/src/templator/genGridViewBlock.ts +3 -4
  305. package/src/templator/genListViewBlock.ts +9 -3
  306. package/src/templator/genSelectBlock.ts +1 -1
  307. package/src/templator/genTableBlock.ts +3 -3
  308. package/src/templator/genUpdateBlock.ts +2 -3
  309. package/src/utils/traverse.ts +10 -2
  310. package/ts-worker/lib/tsserver.js +10 -2
  311. package/ts-worker/package.json +1 -0
  312. package/ts-worker/webpack.config.js +11 -2
  313. package/out/concepts/ConstructArgument__.d.ts +0 -40
  314. package/out/concepts/ConstructArgument__.js +0 -108
  315. package/out/concepts/ConstructArgument__.js.map +0 -1
  316. package/out/concepts/Construct__.d.ts +0 -189
  317. package/out/concepts/Construct__.js +0 -340
  318. package/out/concepts/Construct__.js.map +0 -1
  319. package/out/templator/sql-parser/index.d.ts +0 -1
  320. package/out/templator/sql-parser/index.js +0 -228
  321. package/out/templator/sql-parser/index.js.map +0 -1
  322. package/out/templator/sql-parser/parser.js +0 -26664
  323. package/out/templator/sql-parser/parser.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import { Logic, View, BaseNode, CallLogic, ViewElement, BindEvent, BindAttribute, App, Entity, Module, Frontend } from '../concepts';
2
- import { processToTreeFragment } from '@nasl/server/process2LogicNamespace';
1
+ import { Logic, View, BaseNode, CallLogic, ViewElement, BindEvent, BindAttribute, App, Entity, Module, Frontend, BindStyle, BindDirective } from "../concepts";
2
+ import { processToTreeFragment } from '../server/process2LogicNamespace';
3
3
 
4
4
  type Usage = {
5
5
  node: BaseNode,
@@ -48,7 +48,7 @@ async function findViewLogicReferences(logic: Logic, vis: Set<Logic> = new Set()
48
48
  async function dfs(usage: Usage) {
49
49
  if (usage.node instanceof CallLogic) {
50
50
  const logic = usage.node.logic;
51
- if (!vis.has(logic)) {
51
+ if (!vis.has(logic) && logic) {
52
52
  vis.add(logic);
53
53
  await findViewLogicReferences(logic, vis);
54
54
  }
@@ -78,7 +78,7 @@ async function findUIReferences(logic: Logic) {
78
78
 
79
79
  const res: Array<View | ViewElement> = [];
80
80
  function dfs(usage: Usage, parent: Usage = null) {
81
- if ((usage.node instanceof BindEvent || usage.node instanceof BindAttribute)
81
+ if ((usage.node instanceof BindEvent || usage.node instanceof BindAttribute || usage.node instanceof BindStyle || usage.node instanceof BindDirective)
82
82
  && (parent.node instanceof View || parent.node instanceof ViewElement))
83
83
  res.push(parent.node);
84
84
 
@@ -160,7 +160,7 @@ function removeRedundantResourceData2(resources: ResourceNode[][]) {
160
160
  });
161
161
  }
162
162
 
163
- async function findResourcesOfLogic(logic: Logic) {
163
+ async function findResourcesOfLogic(logic: Logic, uploaders: Map<string, ViewElement[]>) {
164
164
  const logics = await findViewLogicReferences(logic);
165
165
  logics.push(logic);
166
166
 
@@ -168,6 +168,12 @@ async function findResourcesOfLogic(logic: Logic) {
168
168
  for (const logic of logics) {
169
169
  UIs = UIs.concat(await findUIReferences(logic));
170
170
  }
171
+
172
+ const service = logic.toService() as { url: { method: string, path: string } };
173
+ if (uploaders.has(service.url.path)) {
174
+ UIs = UIs.concat(uploaders.get(service.url.path));
175
+ }
176
+
171
177
  UIs = Array.from(new Set(UIs));
172
178
 
173
179
  const res = UIs.map((ui) => findResourcesOfUI(ui));
@@ -233,29 +239,39 @@ function getAllLogics(app: App) {
233
239
  };
234
240
  }
235
241
 
242
+ function findUploaders(app: App) {
243
+ const map = new Map<string, ViewElement[]>();
244
+ app.traverseChildren((node) => {
245
+ if (node instanceof ViewElement && node.tag?.includes('uploader')) {
246
+ const urlAttr = node.bindAttrs.find((item) => item.name === 'url');
247
+ const url = urlAttr?.value;
248
+ if (url) {
249
+ if (!map.has(url))
250
+ map.set(url, [node]);
251
+ else
252
+ map.get(url).push(node);
253
+ }
254
+ }
255
+ });
256
+ return map;
257
+ }
258
+
236
259
  export async function genPermissionData(app: App) {
237
260
  // console.time('xxx');
238
261
  openCache();
239
262
  const logicPageResourceDtoList: { [key: string]: ResourceNode[][] } = {};
240
- const resourceList: string[] = [];
241
- const resourceDataList: { value: string, type: 'logic', description: string }[] = [];
242
263
  const { logics, processLogics } = getAllLogics(app);
264
+ const uploaders = findUploaders(app);
243
265
  for (const logic of [...logics, ...processLogics]) {
244
- const resources = await findResourcesOfLogic(logic);
266
+ const resources = await findResourcesOfLogic(logic, uploaders);
245
267
  if (resources.length === 0)
246
268
  continue;
247
269
 
248
270
  const service = logics.includes(logic) ? logic.toService() : logic.toProcessService() as { url: { method: string, path: string } };
249
271
  const key = `${service.url.path}:${service.url.method}`;
250
272
  logicPageResourceDtoList[key] = resources;
251
- resourceList.push(key);
252
- resourceDataList.push({
253
- value: key,
254
- type: 'logic',
255
- description: logic.description,
256
- });
257
273
  }
258
274
  closeCache();
259
275
  // console.timeEnd('xxx');
260
- return { logicPageResourceDtoList, resourceList, resourceDataList };
276
+ return logicPageResourceDtoList;
261
277
  }
@@ -138,26 +138,6 @@ export function entity2LogicNamespace(entity: Entity) {
138
138
  }),
139
139
  required: true,
140
140
  }),
141
- new Param({
142
- name: 'properties',
143
- defaultExpression: new AnonymousFunction({
144
- description: '',
145
- params: [
146
- new Param({
147
- name: 'item',
148
- typeAnnotation: new TypeAnnotation({
149
- typeKind: 'reference',
150
- typeNamespace: entity.getNamespace(),
151
- typeName: entity.name,
152
- }),
153
- }),
154
- ],
155
- body: new NewList({
156
- concept: 'NewList',
157
- }),
158
- }),
159
- required: false,
160
- }),
161
141
  ],
162
142
  body: [],
163
143
  returns: [
@@ -181,6 +161,7 @@ export function entity2LogicNamespace(entity: Entity) {
181
161
  name: 'filter',
182
162
  description: '',
183
163
  params: [
164
+ // 实体的 updateBy、deleteBy 方法的 filter 参数后端要求使用 _ 变量名,类型为本实体
184
165
  new Param({
185
166
  name: '_',
186
167
  typeAnnotation: new TypeAnnotation({
@@ -246,6 +227,7 @@ export function entity2LogicNamespace(entity: Entity) {
246
227
  name: 'filter',
247
228
  description: '',
248
229
  params: [
230
+ // 实体的 updateBy、deleteBy 方法的 filter 参数后端要求使用 _ 变量名,类型为本实体
249
231
  new Param({
250
232
  name: '_',
251
233
  typeAnnotation: new TypeAnnotation({
@@ -87,7 +87,10 @@ BaseNode.prototype.changeName = async function changeName(newValue: string, upda
87
87
  */
88
88
  const res = naslServer._renamePrepare(this, refsList, newValue);
89
89
  if (res.length <= 1) {
90
- (this as SetNameNode).setName(newValue);
90
+ if (this.concept === 'enumItem') {
91
+ (this as any).setValue(newValue);
92
+ } else
93
+ (this as SetNameNode).setName(newValue);
91
94
  } else {
92
95
  const callback = (value: boolean) => {
93
96
  if (value) {
@@ -208,7 +211,11 @@ BaseNode.prototype.prepareDelete = async function prepareDelete() {
208
211
  App.emit('collect:end');
209
212
  } else {
210
213
  this.delete();
214
+ if (node instanceof Frontend) {
215
+ return;
216
+ }
211
217
  }
218
+ return;
212
219
  } else {
213
220
  if (node instanceof Frontend) {
214
221
  let viewPath = (this as FileNode).getEmbeddedFilePath();
@@ -226,7 +233,6 @@ BaseNode.prototype.prepareDelete = async function prepareDelete() {
226
233
  }
227
234
  return null;
228
235
  }).filter((record) => !!record);
229
- console.log(result);
230
236
  const App = this.rootNode;
231
237
  App.emit('collect:start', {
232
238
  actionMsg: `删除端${node.name}`,
@@ -256,7 +262,11 @@ BaseNode.prototype.prepareDelete = async function prepareDelete() {
256
262
  return null;
257
263
  const minRange: MinRange = naslServer._findMinRange(record, fileNode as FileNode);
258
264
  if (minRange) {
259
- if (minRange.node instanceof CallLogic || minRange.node instanceof Destination) {
265
+ /**
266
+ * 调用方是 调用逻辑或者跳转页面, 去删除对应位置的内容
267
+ * 如果是跳转页面,因为流程下的特殊翻译,需要过滤下 非页面下的参数修改,查找到页面跳转
268
+ */
269
+ if (minRange.node instanceof CallLogic || (node.parentNode instanceof View && minRange.node instanceof Destination)) {
260
270
  minRange.node.deleteCalleeArg(Index);
261
271
  }
262
272
  }
@@ -365,14 +375,14 @@ BaseNode.prototype.addParamsPrepare = async function addParamsPrepare(needAdd =
365
375
  /**
366
376
  * 在原型上增加方法来调用
367
377
  */
368
- BaseNode.prototype.getCurrentTypeAnnotation = async function getCurrentTypeAnnotation() {
378
+ BaseNode.prototype.getCurrentTypeAnnotation = async function getCurrentTypeAnnotation(outTime? :number) {
369
379
  try {
370
380
  /**
371
381
  * 查找这个节点是不是有依赖
372
382
  */
373
383
  const app = this.getAncestor('App');
374
384
  const naslServer = (app as any).naslServer as NaslServer;
375
- return naslServer.getCurrentTypeAnnotation(this);
385
+ return naslServer.getCurrentTypeAnnotation(this, outTime || 2000);
376
386
  } catch (err) {
377
387
  console.log(err);
378
388
  }
@@ -1,4 +1,4 @@
1
- import { BaseNode, Identifier, TypeAnnotation, StructureProperty, Entity, Structure, EntityProperty, Param, MemberExpression, CompletionProperty, Variable, Return, Logic } from '..';
1
+ import { BaseNode, Identifier, TypeAnnotation, StructureProperty, Entity, Structure, EntityProperty, Param, MemberExpression, CompletionProperty, Variable, Return, Logic, ConfigProperty } from '..';
2
2
  import { getNaslNodeByNodeCallee } from '../automate/engine/utils';
3
3
 
4
4
  interface variableItem {
@@ -29,6 +29,11 @@ function formatTs2TypeString(displayParts: Array<{ text: string; kind: string }>
29
29
  });
30
30
  return str;
31
31
  }
32
+
33
+ function isValidName(str: string) {
34
+ const regex = /^[a-zA-Z][a-zA-Z0-9_]*$/;
35
+ return regex.test(str);
36
+ }
32
37
  /**
33
38
  * 解析 Completion 和 QuickInfo 的 displayString
34
39
  * 生成 TypeAnnotation
@@ -45,16 +50,19 @@ export function type2TypeAnnotation(oldType: Array<any> | {}): TypeAnnotation {
45
50
  let typeAnnotation: TypeAnnotation;
46
51
  try {
47
52
  const { typeName, typeNamespace, typeArguments, typeKind, properties } = type as any;
48
- if (typeKind === 'anonymousStructure' && Array.isArray(properties) && properties.length) {
53
+ if (typeKind === 'anonymousStructure') {
49
54
  // 自定义类型
50
55
  const newProperties: StructureProperty[] = [];
51
- properties.forEach((item) => {
52
- if (!item?.name?.startsWith('__')) {
53
- const itemType = type2TypeAnnotation(item.typeInfo);
54
- const structureProperty = StructureProperty.from({ name: item.name, typeAnnotation: itemType }, typeAnnotation, 'properties');
55
- newProperties.push(structureProperty);
56
- }
57
- });
56
+ if (Array.isArray(properties) && properties.length) {
57
+ properties.forEach((item) => {
58
+ if (!item?.name?.startsWith('__')) {
59
+ // 如果没有获取到类型,就默认塞一个string
60
+ const itemType = type2TypeAnnotation(item.typeInfo) || TypeAnnotation.createPrimitive('String');
61
+ const structureProperty = StructureProperty.from({ name: item.name, typeAnnotation: itemType }, typeAnnotation, 'properties');
62
+ newProperties.push(structureProperty);
63
+ }
64
+ });
65
+ }
58
66
  typeAnnotation = TypeAnnotation.createTypeAnonymousStructure(newProperties);
59
67
  } else if (!typeName || typeName === 'Promise' || typeName === 'nasl' || typeName === '___IDENTIFIER__') {
60
68
  return null;
@@ -225,7 +233,7 @@ export function getPlatformType(type: string): string {
225
233
  return tsType;
226
234
  }
227
235
  export function isNoChildType(type: String) {
228
- return type?.startsWith('nasl.core') || type?.startsWith('app.enums');
236
+ return (type?.startsWith('nasl.core') && !['String', 'Text', 'Email'].includes(type.split('.')[2])) || type?.startsWith('app.enums');
229
237
  }
230
238
  function findNode(typeKey: string, node: BaseNode) {
231
239
  let newType: Structure | Logic;
@@ -327,6 +335,11 @@ function getAStructureScopeType(type: string, parent: any, node: BaseNode) {
327
335
  if (typeKey && typeKey.startsWith('dataSources')) {
328
336
  typeKey = 'app.' + typeKey;
329
337
  }
338
+ // 如果ls传过来的名字是不合法的就隐藏
339
+ if (!isValidName(name)) {
340
+ console.warn(item, '获取变量不展示');
341
+ return null;
342
+ }
330
343
  res.push({
331
344
  name,
332
345
  typeKey,
@@ -644,3 +657,21 @@ export function formatFrontEndVariables(frontEndVariables: Array<Variable>) {
644
657
  });
645
658
  return result;
646
659
  }
660
+
661
+ export function formatConfigProperties(configProperties: Array<ConfigProperty>) {
662
+ const result = configProperties.map((item) => {
663
+ const namespace = item.getNamespace();
664
+ const newItem: any = {
665
+ name: item.name,
666
+ value: item.name,
667
+ expression: new Identifier({
668
+ name: item.name,
669
+ namespace,
670
+ }),
671
+ icon: 'configProperty',
672
+ calleewholeKey: item.calleewholeKey,
673
+ };
674
+ return newItem;
675
+ });
676
+ return result;
677
+ }
@@ -57,9 +57,9 @@ function iterator(tree: FakeNode | FakeProcessNode, searchContent: string, fakeN
57
57
  function toHump(name: string): string {
58
58
  return name.replace(/\-(\w)/g, (all, letter) => letter.toUpperCase());
59
59
  }
60
- export async function getLogics(node: CallLogic | BindEvent| Identifier, needAllLogic: boolean = true) {
60
+ export async function getLogics(node: CallLogic | BindEvent| Identifier | Logic, needAllLogic: boolean = true) {
61
61
  const app = node.rootNode as App;
62
- if (node.concept === 'CallLogic' || node.concept === 'BindEvent') {
62
+ if (node.concept === 'CallLogic' || node.concept === 'BindEvent' || node.concept === 'Logic') {
63
63
  const result = [];
64
64
 
65
65
  if (needAllLogic) {
@@ -202,7 +202,7 @@ export async function getLogics(node: CallLogic | BindEvent| Identifier, needAll
202
202
  new Namespace({
203
203
  name: 'category',
204
204
  path: `configuration`,
205
- title: '配置',
205
+ title: '应用信息',
206
206
  logics: stdlibNamespace.findChild('configuration').logics,
207
207
  expanded: false,
208
208
  }),
@@ -243,7 +243,7 @@ export async function getLogics(node: CallLogic | BindEvent| Identifier, needAll
243
243
  new Namespace({
244
244
  name: 'category',
245
245
  path: `configuration`,
246
- title: '配置',
246
+ title: '应用信息',
247
247
  logics: stdlibNamespace.findChild('configuration').logics.filter((item) => item.name !== 'getCurrentIp'),
248
248
  expanded: false,
249
249
  }),
@@ -1,5 +1,5 @@
1
1
  import { BaseNode, CompletionProperty, App, Variable, Identifier, MemberExpression, Enum, NullLiteral, BooleanLiteral, Param, BindAttribute, LogicItem, TypeAnnotation, StructureProperty, Entity, Structure, EntityProperty, Frontend, View } from '..';
2
- import { formatVariableData, formatFrontEndVariables } from './formatTsUtils';
2
+ import { formatVariableData, formatFrontEndVariables, formatConfigProperties } from './formatTsUtils';
3
3
 
4
4
  // 简单实现一版本的格式化nums
5
5
  export function formatEnums(enums: Array<Enum>) {
@@ -274,3 +274,29 @@ export async function getSelectNextCompletionData(node: Identifier, completionPr
274
274
  return completionData;
275
275
  }
276
276
  }
277
+
278
+ // 获取枚举
279
+ export function getConfigsIdentifier(node: BaseNode): CompletionProperty[] {
280
+ const app = node.rootNode as App;
281
+ const groups = app?.configuration.groups;
282
+ const customGroup = groups.find((group) => group.name === 'custom');
283
+ const properties = customGroup ? customGroup.properties : [];
284
+ const newProperties = formatConfigProperties(properties);
285
+ // 添加依赖库的枚举选择
286
+ const modules = app?.dependencies?.filter((module) => module.type === 'extension') || [];
287
+ const extensionConfigProperties: any[] = [];
288
+ modules.forEach((module) => {
289
+ const groups = module?.configuration?.groups || [];
290
+ const customGroup = groups.find((group) => group.name === 'custom');
291
+ const properties = customGroup ? customGroup.properties : [];
292
+ if (properties.length) {
293
+ extensionConfigProperties.push({
294
+ name: module.name,
295
+ concept: 'Module',
296
+ icon: 'depend-dataSource',
297
+ children: formatConfigProperties(properties),
298
+ });
299
+ }
300
+ });
301
+ return newProperties.concat(extensionConfigProperties);
302
+ }
@@ -11,6 +11,7 @@ import {
11
11
  getGlobalVariableIdentifier,
12
12
  getLiteralsIdentifier,
13
13
  getSelectNextCompletionData,
14
+ getConfigsIdentifier,
14
15
  } from './getMemberIdentifier';
15
16
  import { NaslServer as NaslServerClass } from './naslServer';
16
17
  import './extendBaseNode';
@@ -35,6 +36,7 @@ const server: any = {
35
36
  getAllComponentEventMap,
36
37
  getLogging,
37
38
  displayString2TypeAnnotation,
39
+ getConfigsIdentifier,
38
40
  };
39
41
  export default server;
40
42
  export const NaslServer = NaslServerClass;