@lcap/nasl 2.18.0-beta.7 → 2.19.0-beta.1

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 (265) hide show
  1. package/out/automate/template/myProcess.js +1 -1
  2. package/out/automate/template/myProcess.js.map +1 -1
  3. package/out/bak/translator.js +2 -1
  4. package/out/bak/translator.js.map +1 -1
  5. package/out/common/Command.d.ts +1 -0
  6. package/out/common/Command.js +5 -1
  7. package/out/common/Command.js.map +1 -1
  8. package/out/concepts/AnonymousFunction__.d.ts +1 -0
  9. package/out/concepts/AnonymousFunction__.js +40 -2
  10. package/out/concepts/AnonymousFunction__.js.map +1 -1
  11. package/out/concepts/App__.d.ts +10 -0
  12. package/out/concepts/App__.js +132 -0
  13. package/out/concepts/App__.js.map +1 -1
  14. package/out/concepts/Assignee__.js +4 -3
  15. package/out/concepts/Assignee__.js.map +1 -1
  16. package/out/concepts/BatchAssignment__.d.ts +2 -0
  17. package/out/concepts/BatchAssignment__.js +45 -1
  18. package/out/concepts/BatchAssignment__.js.map +1 -1
  19. package/out/concepts/BindAttribute__.js +8 -1
  20. package/out/concepts/BindAttribute__.js.map +1 -1
  21. package/out/concepts/CallFunction__.js +51 -18
  22. package/out/concepts/CallFunction__.js.map +1 -1
  23. package/out/concepts/CallInterface__.js +6 -4
  24. package/out/concepts/CallInterface__.js.map +1 -1
  25. package/out/concepts/CallLogic__.js +87 -15
  26. package/out/concepts/CallLogic__.js.map +1 -1
  27. package/out/concepts/CallQueryComponent__.js +4 -1
  28. package/out/concepts/CallQueryComponent__.js.map +1 -1
  29. package/out/concepts/DataSource__.d.ts +2 -0
  30. package/out/concepts/DataSource__.js +55 -1
  31. package/out/concepts/DataSource__.js.map +1 -1
  32. package/out/concepts/ForEachStatement__.js +2 -0
  33. package/out/concepts/ForEachStatement__.js.map +1 -1
  34. package/out/concepts/Identifier__.d.ts +1 -0
  35. package/out/concepts/Identifier__.js +18 -7
  36. package/out/concepts/Identifier__.js.map +1 -1
  37. package/out/concepts/LogicItem__.d.ts +1 -1
  38. package/out/concepts/LogicItem__.js.map +1 -1
  39. package/out/concepts/Logic__.d.ts +1 -0
  40. package/out/concepts/Logic__.js +27 -14
  41. package/out/concepts/Logic__.js.map +1 -1
  42. package/out/concepts/Match__.js +13 -8
  43. package/out/concepts/Match__.js.map +1 -1
  44. package/out/concepts/NewComposite__.d.ts +345 -0
  45. package/out/concepts/NewComposite__.js +1067 -0
  46. package/out/concepts/NewComposite__.js.map +1 -0
  47. package/out/concepts/NewList__.d.ts +130 -0
  48. package/out/concepts/NewList__.js +353 -0
  49. package/out/concepts/NewList__.js.map +1 -0
  50. package/out/concepts/NewMap__.d.ts +221 -0
  51. package/out/concepts/NewMap__.js +492 -0
  52. package/out/concepts/NewMap__.js.map +1 -0
  53. package/out/concepts/New__.d.ts +19 -0
  54. package/out/concepts/New__.js +66 -0
  55. package/out/concepts/New__.js.map +1 -0
  56. package/out/concepts/Param__.d.ts +2 -0
  57. package/out/concepts/Param__.js +40 -3
  58. package/out/concepts/Param__.js.map +1 -1
  59. package/out/concepts/ProcessElement__.js +31 -10
  60. package/out/concepts/ProcessElement__.js.map +1 -1
  61. package/out/concepts/ProcessOutcome__.js +1 -1
  62. package/out/concepts/ProcessOutcome__.js.map +1 -1
  63. package/out/concepts/ProcessOutcomes__.d.ts +30 -0
  64. package/out/concepts/{ConstructArgument__.js → ProcessOutcomes__.js} +27 -48
  65. package/out/concepts/ProcessOutcomes__.js.map +1 -0
  66. package/out/concepts/Return__.js +2 -1
  67. package/out/concepts/Return__.js.map +1 -1
  68. package/out/concepts/SelectMembers__.js +3 -3
  69. package/out/concepts/SelectMembers__.js.map +1 -1
  70. package/out/concepts/StringInterpolation__.js +12 -2
  71. package/out/concepts/StringInterpolation__.js.map +1 -1
  72. package/out/concepts/TypeAnnotation__.d.ts +4 -0
  73. package/out/concepts/TypeAnnotation__.js +66 -12
  74. package/out/concepts/TypeAnnotation__.js.map +1 -1
  75. package/out/concepts/ValidationRule__.js +1 -1
  76. package/out/concepts/ValidationRule__.js.map +1 -1
  77. package/out/concepts/Variable__.js +2 -1
  78. package/out/concepts/Variable__.js.map +1 -1
  79. package/out/concepts/ViewElement__.js +12 -0
  80. package/out/concepts/ViewElement__.js.map +1 -1
  81. package/out/concepts/View__.d.ts +1 -0
  82. package/out/concepts/View__.js +9 -0
  83. package/out/concepts/View__.js.map +1 -1
  84. package/out/concepts/basics/stdlib/nasl.auth.js +1 -1
  85. package/out/concepts/basics/stdlib/nasl.auth.js.map +1 -1
  86. package/out/concepts/basics/stdlib/nasl.logging.js +5 -0
  87. package/out/concepts/basics/stdlib/nasl.logging.js.map +1 -1
  88. package/out/concepts/basics/stdlib/nasl.ui.js +2 -0
  89. package/out/concepts/basics/stdlib/nasl.ui.js.map +1 -1
  90. package/out/concepts/basics/stdlib/nasl.util.js +151 -19
  91. package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
  92. package/out/concepts/index__.d.ts +5 -0
  93. package/out/concepts/index__.js +5 -0
  94. package/out/concepts/index__.js.map +1 -1
  95. package/out/enums/KEYWORDS.js +1 -0
  96. package/out/enums/KEYWORDS.js.map +1 -1
  97. package/out/generator/genMetaData.js +1 -6
  98. package/out/generator/genMetaData.js.map +1 -1
  99. package/out/generator/genReleaseBody.d.ts +2 -0
  100. package/out/generator/genReleaseBody.js +18 -1
  101. package/out/generator/genReleaseBody.js.map +1 -1
  102. package/out/generator/index.d.ts +1 -0
  103. package/out/generator/index.js +1 -0
  104. package/out/generator/index.js.map +1 -1
  105. package/out/generator/permission.d.ts +9 -0
  106. package/out/generator/permission.js +235 -0
  107. package/out/generator/permission.js.map +1 -0
  108. package/out/index.d.ts +1 -1
  109. package/out/index.js +2 -1
  110. package/out/index.js.map +1 -1
  111. package/out/server/entity2LogicNamespace.js +69 -9
  112. package/out/server/entity2LogicNamespace.js.map +1 -1
  113. package/out/server/extendBaseNode.js +7 -3
  114. package/out/server/extendBaseNode.js.map +1 -1
  115. package/out/server/formatTsUtils.js +6 -0
  116. package/out/server/formatTsUtils.js.map +1 -1
  117. package/out/server/getLogics.d.ts +2 -1
  118. package/out/server/getLogics.js +11 -0
  119. package/out/server/getLogics.js.map +1 -1
  120. package/out/server/getMemberIdentifier.js +1 -1
  121. package/out/server/getMemberIdentifier.js.map +1 -1
  122. package/out/server/naslServer.d.ts +1 -1
  123. package/out/server/naslServer.js +161 -22
  124. package/out/server/naslServer.js.map +1 -1
  125. package/out/server/process2LogicNamespace.js +8 -0
  126. package/out/server/process2LogicNamespace.js.map +1 -1
  127. package/out/server/translator.js +53 -8
  128. package/out/server/translator.js.map +1 -1
  129. package/out/service/creator/add.configs.js +4 -0
  130. package/out/service/creator/add.configs.js.map +1 -1
  131. package/out/service/datasource/api.d.ts +12 -0
  132. package/out/service/datasource/api.js +14 -0
  133. package/out/service/datasource/api.js.map +1 -0
  134. package/out/service/datasource/index.d.ts +2 -0
  135. package/out/service/datasource/index.js +10 -0
  136. package/out/service/datasource/index.js.map +1 -0
  137. package/out/service/storage/init.js +8 -1
  138. package/out/service/storage/init.js.map +1 -1
  139. package/out/templator/genEditTableBlock.js +4 -5
  140. package/out/templator/genEditTableBlock.js.map +1 -1
  141. package/out/templator/genGetBlock.js +4 -3
  142. package/out/templator/genGetBlock.js.map +1 -1
  143. package/out/templator/genGridViewBlock.js +16 -14
  144. package/out/templator/genGridViewBlock.js.map +1 -1
  145. package/out/templator/genListViewBlock.js +5 -5
  146. package/out/templator/genListViewBlock.js.map +1 -1
  147. package/out/templator/genTableBlock.js +6 -10
  148. package/out/templator/genTableBlock.js.map +1 -1
  149. package/package.json +1 -1
  150. package/sandbox/stdlib/dist/nasl.util.js +0 -0
  151. package/sandbox/stdlib/nasl.auth.ts +1 -1
  152. package/sandbox/stdlib/nasl.core.ts +4 -0
  153. package/sandbox/stdlib/nasl.logging.ts +4 -4
  154. package/sandbox/stdlib/nasl.util.ts +13 -4
  155. package/src/automate/template/myProcess.js +1 -1
  156. package/src/bak/translator.js +4 -1
  157. package/src/common/Command.ts +4 -0
  158. package/src/concepts/AnonymousFunction__.ts +48 -2
  159. package/src/concepts/App__.ts +140 -41
  160. package/src/concepts/Assignee__.ts +4 -3
  161. package/src/concepts/BatchAssignment__.ts +45 -1
  162. package/src/concepts/BindAttribute__.ts +9 -2
  163. package/src/concepts/CallFunction__.ts +65 -31
  164. package/src/concepts/CallInterface__.ts +6 -22
  165. package/src/concepts/CallLogic__.ts +62 -13
  166. package/src/concepts/CallQueryComponent__.ts +4 -1
  167. package/src/concepts/DataSource__.ts +56 -1
  168. package/src/concepts/ForEachStatement__.ts +2 -0
  169. package/src/concepts/Identifier__.ts +18 -7
  170. package/src/concepts/LogicItem__.ts +1 -1
  171. package/src/concepts/Logic__.ts +48 -32
  172. package/src/concepts/Match__.ts +12 -8
  173. package/src/concepts/NewComposite__.ts +1356 -0
  174. package/src/concepts/NewList__.ts +444 -0
  175. package/src/concepts/NewMap__.ts +678 -0
  176. package/src/concepts/New__.ts +73 -0
  177. package/src/concepts/Param__.ts +238 -199
  178. package/src/concepts/ProcessElement__.ts +32 -10
  179. package/src/concepts/ProcessOutcome__.ts +1 -1
  180. package/src/concepts/ProcessOutcomes__.ts +90 -0
  181. package/src/concepts/Return__.ts +4 -1
  182. package/src/concepts/SelectMembers__.ts +3 -3
  183. package/src/concepts/StringInterpolation__.ts +21 -11
  184. package/src/concepts/TypeAnnotation__.ts +71 -50
  185. package/src/concepts/ValidationRule__.ts +19 -1
  186. package/src/concepts/Variable__.ts +4 -1
  187. package/src/concepts/ViewElement__.ts +38 -1
  188. package/src/concepts/View__.ts +12 -2
  189. package/src/concepts/basics/stdlib/dist/nasl.util.js +133 -34
  190. package/src/concepts/basics/stdlib/nasl.auth.ts +1 -1
  191. package/src/concepts/basics/stdlib/nasl.logging.ts +5 -0
  192. package/src/concepts/basics/stdlib/nasl.ui.ts +2 -0
  193. package/src/concepts/basics/stdlib/nasl.util.ts +153 -19
  194. package/src/concepts/dist/BindAttribute__.js +760 -0
  195. package/src/concepts/dist/BindEvent__.js +732 -0
  196. package/src/concepts/dist/CallFunction__.js +21 -7
  197. package/src/concepts/dist/CallLogic__.js +50 -10
  198. package/src/concepts/dist/Identifier__.js +311 -0
  199. package/src/concepts/dist/StringInterpolation__.js +231 -0
  200. package/src/concepts/dist/TypeAnnotation__.js +834 -0
  201. package/src/concepts/dist/ViewElement__.js +12 -0
  202. package/src/concepts/dist/View__.js +1601 -0
  203. package/src/concepts/index__.ts +5 -0
  204. package/src/enums/KEYWORDS.ts +1 -0
  205. package/src/generator/dist/genMetaData.js +1 -5
  206. package/src/generator/dist/permission.js +392 -0
  207. package/src/generator/genMetaData.ts +1 -6
  208. package/src/generator/genReleaseBody.ts +21 -3
  209. package/src/generator/index.ts +1 -0
  210. package/src/generator/permission.ts +271 -0
  211. package/src/index.ts +1 -1
  212. package/src/server/dist/naslServer.js +385 -269
  213. package/src/server/entity2LogicNamespace.ts +70 -10
  214. package/src/server/extendBaseNode.ts +7 -3
  215. package/src/server/formatTsUtils.ts +6 -0
  216. package/src/server/getLogics.ts +13 -1
  217. package/src/server/getMemberIdentifier.ts +1 -1
  218. package/src/server/naslServer.ts +162 -29
  219. package/src/server/process2LogicNamespace.ts +8 -0
  220. package/src/server/translator.ts +52 -9
  221. package/src/service/creator/add.configs.js +4 -0
  222. package/src/service/dataSource/api.js +11 -0
  223. package/src/service/dataSource/index.js +6 -0
  224. package/src/service/storage/dist/init.js +8 -1
  225. package/src/service/storage/init.ts +9 -2
  226. package/src/service/video/VideoTranscribe.js +1 -0
  227. package/src/templator/dist/genEditTableBlock.js +204 -0
  228. package/src/templator/dist/genGridViewBlock.js +265 -0
  229. package/src/templator/dist/genListViewBlock.js +84 -0
  230. package/src/templator/dist/genTableBlock.js +209 -0
  231. package/src/templator/dist/utils.js +527 -0
  232. package/src/templator/genEditTableBlock.ts +8 -16
  233. package/src/templator/genGetBlock.ts +18 -19
  234. package/src/templator/genGridViewBlock.ts +18 -18
  235. package/src/templator/genListViewBlock.ts +8 -11
  236. package/src/templator/genTableBlock.ts +6 -10
  237. package/ts-worker/dist/webpack.config.dev.js +1 -3
  238. package/ts-worker/lib/tsserver.js +8 -1
  239. package/out/automate/engine/2.14-components.d.ts +0 -1115
  240. package/out/automate/engine/2.14-components.js +0 -1087
  241. package/out/automate/engine/2.14-components.js.map +0 -1
  242. package/out/concepts/ConstructArgument__.d.ts +0 -40
  243. package/out/concepts/ConstructArgument__.js.map +0 -1
  244. package/out/concepts/Construct__.d.ts +0 -189
  245. package/out/concepts/Construct__.js +0 -340
  246. package/out/concepts/Construct__.js.map +0 -1
  247. package/out/concepts/MatchExpression__.d.ts +0 -97
  248. package/out/concepts/MatchExpression__.js +0 -281
  249. package/out/concepts/MatchExpression__.js.map +0 -1
  250. package/out/templator/sql-parser/index.d.ts +0 -1
  251. package/out/templator/sql-parser/index.js +0 -228
  252. package/out/templator/sql-parser/index.js.map +0 -1
  253. package/out/templator/sql-parser/parser.js +0 -26664
  254. package/out/templator/sql-parser/parser.js.map +0 -1
  255. package/src/concepts/dist/Anchor__.js +0 -179
  256. package/src/concepts/dist/Assignment__.js +0 -301
  257. package/src/concepts/dist/CallInterface__.js +0 -533
  258. package/src/concepts/dist/ForEachStatement__.js +0 -426
  259. package/src/concepts/dist/MatchCase__.js +0 -587
  260. package/src/concepts/dist/Match__.js +0 -631
  261. package/src/concepts/dist/MemberExpression__.js +0 -348
  262. package/src/concepts/dist/Param__.js +0 -538
  263. package/src/concepts/dist/Return__.js +0 -494
  264. package/src/concepts/dist/Variable__.js +0 -537
  265. package/src/server/dist/formatTsUtils.js +0 -683
@@ -0,0 +1,271 @@
1
+ import { Logic, View, BaseNode, CallLogic, ViewElement, BindEvent, BindAttribute, App, Entity, Module } from "../concepts";
2
+ import { processToTreeFragment } from '../server/process2LogicNamespace';
3
+
4
+ type Usage = {
5
+ node: BaseNode,
6
+ children?: Usage[],
7
+ }
8
+ type ResourceNode = {
9
+ path: string,
10
+ type: 'component' | 'page',
11
+ };
12
+
13
+ function isReadOnly(logic: Logic) {
14
+ return !!logic.module
15
+ || logic.parentNode?.concept === 'Namespace'
16
+ || logic.parentKey === 'readonly'; // process logic
17
+ }
18
+
19
+ const cache = new Map();
20
+ let useCache = false;
21
+ async function findUsage(logic: Logic) {
22
+ if(useCache && cache.has(logic))
23
+ return cache.get(logic);
24
+
25
+ const res = isReadOnly(logic) ? await logic.findReadOnlyLogicUsage() : await logic.findUsage();
26
+ if(useCache) cache.set(logic, res);
27
+ return res;
28
+ }
29
+
30
+ function openCache() {
31
+ useCache = true;
32
+ cache.clear();
33
+ }
34
+ function closeCache() {
35
+ useCache = false;
36
+ cache.clear();
37
+ }
38
+
39
+ async function findViewLogicReferences(logic: Logic, vis: Set<Logic> = new Set()) {
40
+ const usageMap: Map<BaseNode, Usage> = await findUsage(logic);
41
+ const usages: Usage[] = [];
42
+ usageMap.forEach((usage: Usage, node: BaseNode) => {
43
+ if(node instanceof View) usages.push(usage);
44
+ });
45
+
46
+ async function dfs(usage: Usage) {
47
+ if(usage.node instanceof CallLogic) {
48
+ const logic = usage.node.logic;
49
+ if(!vis.has(logic)) {
50
+ vis.add(logic);
51
+ await findViewLogicReferences(logic, vis);
52
+ }
53
+ }
54
+
55
+ if(usage.children) {
56
+ for(const child of usage.children) {
57
+ await dfs(child);
58
+ }
59
+ }
60
+ }
61
+
62
+ for(const usage of usages) {
63
+ await dfs(usage);
64
+ }
65
+
66
+ return Array.from(vis);
67
+ }
68
+
69
+ async function findUIReferences(logic: Logic) {
70
+ const usageMap: Map<BaseNode, Usage> = await findUsage(logic);
71
+ const usages: Usage[] = [];
72
+ usageMap.forEach((usage: Usage, node: BaseNode) => {
73
+ if(node instanceof View) usages.push(usage);
74
+ });
75
+
76
+ const res: Array<View | ViewElement> = [];
77
+ function dfs(usage: Usage, parent: Usage = null) {
78
+ if((usage.node instanceof BindEvent || usage.node instanceof BindAttribute)
79
+ && (parent.node instanceof View || parent.node instanceof ViewElement))
80
+ res.push(parent.node);
81
+
82
+ usage.children?.forEach((child) => {
83
+ dfs(child, usage);
84
+ });
85
+ }
86
+
87
+ usages.forEach((usage) => {
88
+ dfs(usage);
89
+ });
90
+ return res;
91
+ }
92
+
93
+ function findResourcesOfUI(view: View | ViewElement) {
94
+ const res: ResourceNode[] = [];
95
+ let node: BaseNode = view;
96
+ while(node) {
97
+ if(node instanceof View && node.auth)
98
+ res.push({
99
+ path: node.authPath,
100
+ type: 'page',
101
+ });
102
+ else if(node instanceof ViewElement) {
103
+ const hasAuth = node.bindDirectives.find((directive) => directive.name === 'auth');
104
+ if(hasAuth)
105
+ res.push({
106
+ path: node.authPath,
107
+ type: 'component',
108
+ });
109
+ }
110
+ node = node.parentNode;
111
+ }
112
+ return res;
113
+ }
114
+
115
+ function optimizeResourceData(resources: ResourceNode[][]) {
116
+ let res = removeRedundantResourceData(resources);
117
+ res = removeRedundantResourceData2(res);
118
+ return res;
119
+ }
120
+
121
+ // [['b'], ['a' ,'b']] 只需要保留 [['b']]
122
+ function removeRedundantResourceData(resources: ResourceNode[][]) {
123
+ const wm: WeakMap<ResourceNode[], string> = new WeakMap();
124
+ for(const resource of resources) {
125
+ const hash = resource.map(({ path, type }) => `${path}_${type}`)
126
+ .join();
127
+ wm.set(resource, hash);
128
+ }
129
+
130
+ resources.sort((a, b) => wm.get(a).length - wm.get(b).length);
131
+
132
+ const res: ResourceNode[][] = [];
133
+ const hashs: string[] = [];;
134
+
135
+ for(const resource of resources) {
136
+ const hash = wm.get(resource);
137
+ if(hashs.some((h) => hash.endsWith(h))) continue;
138
+
139
+ res.push(resource);
140
+ hashs.push(hash);
141
+ }
142
+ return res;
143
+ }
144
+
145
+ // 子页面有权限,父页面默认也有权限,所以不需要记录父页面权限;
146
+ // 组件有权限,组件所在的页面默认也有权限,所以不需要记录页面权限
147
+ function removeRedundantResourceData2(resources: ResourceNode[][]) {
148
+ return resources.map((resource) => {
149
+ if(resource.length <= 1) return resource;
150
+
151
+ if(resource[0].type === 'page')
152
+ return resource.slice(0, 1);
153
+ else if(resource[0].type === 'component')
154
+ return resource.filter((item) => item.type === 'component');
155
+ });
156
+ }
157
+
158
+ async function findResourcesOfLogic(logic: Logic, uploaders: Map<string, ViewElement[]>) {
159
+ const logics = await findViewLogicReferences(logic);
160
+ logics.push(logic);
161
+
162
+ let UIs: Array<View | ViewElement> = [];
163
+ for(const logic of logics) {
164
+ UIs = UIs.concat(await findUIReferences(logic));
165
+ }
166
+
167
+ const service = logic.toService() as { url: { method: string, path: string } };
168
+ if(uploaders.has(service.url.path)) {
169
+ UIs = UIs.concat(uploaders.get(service.url.path));
170
+ }
171
+
172
+ UIs = Array.from(new Set(UIs));
173
+
174
+ const res = UIs.map((ui) => findResourcesOfUI(ui));
175
+
176
+ return optimizeResourceData(res);
177
+ }
178
+
179
+ function getAllLogics(app: App) {
180
+ const modules: Module[] = [];
181
+ const entities: Entity[] = [];
182
+ const logics: Logic[] = [];
183
+
184
+ if (Array.isArray(app.dataSources)) {
185
+ app.dataSources.forEach((dataSource) => {
186
+ if (Array.isArray(dataSource.entities)) {
187
+ entities.push(...dataSource.entities);
188
+ }
189
+ });
190
+ }
191
+ app.logics && logics.push(...app.logics);
192
+
193
+ app.dependencies && modules.push(...app.dependencies);
194
+ app.interfaceDependencies && modules.push(...app.interfaceDependencies);
195
+
196
+ modules.forEach((module: Module) => {
197
+ module.logics && logics.push(...module.logics);
198
+ if (Array.isArray(module.dataSources)) {
199
+ module.dataSources.forEach((dataSource) => {
200
+ if (Array.isArray(dataSource.entities)) {
201
+ entities.push(...dataSource.entities);
202
+ }
203
+ });
204
+ }
205
+ });
206
+
207
+ const allLogics: Logic[] = [];
208
+
209
+ if (Array.isArray(entities)) {
210
+ entities.forEach((entity) => {
211
+ const ns = entity.ns;
212
+ if (Array.isArray(ns?.logics)) {
213
+ allLogics.push(...ns.logics);
214
+ }
215
+ });
216
+ }
217
+ if (Array.isArray(logics)) {
218
+ allLogics.push(...logics);
219
+ }
220
+
221
+ const processLogics: Logic[] = [];
222
+ const processTreeFragments = (app.processes || [])
223
+ .map(processToTreeFragment);
224
+ processTreeFragments.forEach(tree => {
225
+ processLogics.push(...tree.logics);
226
+ tree.elements.forEach((element) => {
227
+ processLogics.push(...element.logics);
228
+ });
229
+ });
230
+
231
+ return {
232
+ logics: allLogics,
233
+ processLogics: processLogics,
234
+ };
235
+ }
236
+
237
+ function findUploaders(app: App) {
238
+ const map = new Map<string, ViewElement[]>();
239
+ app.traverseChildren((node) => {
240
+ if(node instanceof ViewElement && node.tag?.includes('uploader')) {
241
+ const urlAttr = node.bindAttrs.find((item) => item.name === 'url');
242
+ const url = urlAttr?.value;
243
+ if(url) {
244
+ if(!map.has(url))
245
+ map.set(url, [node]);
246
+ else
247
+ map.get(url).push(node);
248
+ }
249
+ }
250
+ });
251
+ return map;
252
+ }
253
+
254
+ export async function genPermissionData(app: App) {
255
+ // console.time('xxx');
256
+ openCache();
257
+ const logicPageResourceDtoList: { [key: string]: ResourceNode[][] } = {};
258
+ const { logics, processLogics } = getAllLogics(app);
259
+ const uploaders = findUploaders(app);
260
+ for(const logic of [...logics, ...processLogics]) {
261
+ let resources = await findResourcesOfLogic(logic, uploaders);
262
+ if(resources.length === 0) continue;
263
+
264
+ const service = logics.includes(logic) ? logic.toService() : logic.toProcessService() as { url: { method: string, path: string } };
265
+ const key = `${service.url.path}:${service.url.method}`;
266
+ logicPageResourceDtoList[key] = resources;
267
+ }
268
+ closeCache();
269
+ // console.timeEnd('xxx');
270
+ return logicPageResourceDtoList;
271
+ }
package/src/index.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { EventEmitter, EventPayload, BaseNode } from './common';
2
2
  export * from './concepts';
3
- export { genBundleFiles, genMetaData, genReleaseBody } from './generator';
3
+ export { genBundleFiles, genMetaData, genReleaseBody, genPermissionData } from './generator';
4
4
  export * from './translator';
5
5
  // export { default as diagnosticManager } from './manager/diagnostic';
6
6
  export { default as server, NaslServer } from './server';