@lcap/nasl 2.20.0-beta.1 → 2.20.0-beta.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 (308) hide show
  1. package/out/automate/engine/index.d.ts +1 -1
  2. package/out/automate/engine/index.js +7 -7
  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 +3 -3
  6. package/out/automate/engine/uniqueName.js.map +1 -1
  7. package/out/automate/template/myProcess.js +1 -1
  8. package/out/automate/template/myProcess.js.map +1 -1
  9. package/out/bak/translator.js +38 -85
  10. package/out/bak/translator.js.map +1 -1
  11. package/out/common/BaseNode.d.ts +10 -6
  12. package/out/common/BaseNode.js +53 -7
  13. package/out/common/BaseNode.js.map +1 -1
  14. package/out/concepts/AnonymousFunction__.d.ts +1 -0
  15. package/out/concepts/AnonymousFunction__.js +40 -2
  16. package/out/concepts/AnonymousFunction__.js.map +1 -1
  17. package/out/concepts/App__.d.ts +89 -261
  18. package/out/concepts/App__.js +315 -367
  19. package/out/concepts/App__.js.map +1 -1
  20. package/out/concepts/Assignee__.js.map +1 -1
  21. package/out/concepts/AssignmentLine__.d.ts +5 -5
  22. package/out/concepts/AssignmentLine__.js +6 -6
  23. package/out/concepts/AssignmentLine__.js.map +1 -1
  24. package/out/concepts/Assignment__.js +1 -2
  25. package/out/concepts/Assignment__.js.map +1 -1
  26. package/out/concepts/BatchAssignment__.d.ts +62 -60
  27. package/out/concepts/BatchAssignment__.js +113 -42
  28. package/out/concepts/BatchAssignment__.js.map +1 -1
  29. package/out/concepts/BindAttribute__.d.ts +24 -0
  30. package/out/concepts/BindAttribute__.js +54 -4
  31. package/out/concepts/BindAttribute__.js.map +1 -1
  32. package/out/concepts/BindDirective__.d.ts +5 -0
  33. package/out/concepts/BindDirective__.js +6 -0
  34. package/out/concepts/BindDirective__.js.map +1 -1
  35. package/out/concepts/BindEvent__.d.ts +5 -0
  36. package/out/concepts/BindEvent__.js +6 -0
  37. package/out/concepts/BindEvent__.js.map +1 -1
  38. package/out/concepts/BindStyle__.d.ts +7 -2
  39. package/out/concepts/BindStyle__.js +9 -3
  40. package/out/concepts/BindStyle__.js.map +1 -1
  41. package/out/concepts/BooleanLiteral__.js +0 -8
  42. package/out/concepts/BooleanLiteral__.js.map +1 -1
  43. package/out/concepts/CallFunction__.js +90 -38
  44. package/out/concepts/CallFunction__.js.map +1 -1
  45. package/out/concepts/CallInterface__.d.ts +7 -0
  46. package/out/concepts/CallInterface__.js +54 -7
  47. package/out/concepts/CallInterface__.js.map +1 -1
  48. package/out/concepts/CallLogic__.d.ts +2 -1
  49. package/out/concepts/CallLogic__.js +171 -37
  50. package/out/concepts/CallLogic__.js.map +1 -1
  51. package/out/concepts/CallQueryComponent__.js +16 -1
  52. package/out/concepts/CallQueryComponent__.js.map +1 -1
  53. package/out/concepts/CompletionProperty__.js +3 -0
  54. package/out/concepts/CompletionProperty__.js.map +1 -1
  55. package/out/concepts/ConfigGroup__.js.map +1 -1
  56. package/out/concepts/ConfigProperty__.js.map +1 -1
  57. package/out/concepts/Configuration__.js.map +1 -1
  58. package/out/concepts/Constant__.d.ts +5 -0
  59. package/out/concepts/Constant__.js +6 -0
  60. package/out/concepts/Constant__.js.map +1 -1
  61. package/out/concepts/DataSource__.d.ts +8 -0
  62. package/out/concepts/DataSource__.js +96 -1
  63. package/out/concepts/DataSource__.js.map +1 -1
  64. package/out/concepts/Destination__.d.ts +11 -2
  65. package/out/concepts/Destination__.js +156 -51
  66. package/out/concepts/Destination__.js.map +1 -1
  67. package/out/concepts/EntityProperty__.d.ts +21 -8
  68. package/out/concepts/EntityProperty__.js +109 -23
  69. package/out/concepts/EntityProperty__.js.map +1 -1
  70. package/out/concepts/Entity__.d.ts +32 -0
  71. package/out/concepts/Entity__.js +117 -2
  72. package/out/concepts/Entity__.js.map +1 -1
  73. package/out/concepts/Enum__.js +0 -4
  74. package/out/concepts/Enum__.js.map +1 -1
  75. package/out/concepts/Event__.js.map +1 -1
  76. package/out/concepts/ExternalDestination__.d.ts +73 -0
  77. package/out/concepts/ExternalDestination__.js +264 -0
  78. package/out/concepts/ExternalDestination__.js.map +1 -0
  79. package/out/concepts/ForEachStatement__.d.ts +0 -4
  80. package/out/concepts/ForEachStatement__.js +4 -8
  81. package/out/concepts/ForEachStatement__.js.map +1 -1
  82. package/out/concepts/Frontend__.d.ts +370 -0
  83. package/out/concepts/Frontend__.js +669 -0
  84. package/out/concepts/Frontend__.js.map +1 -0
  85. package/out/concepts/Function__.js.map +1 -1
  86. package/out/concepts/Identifier__.d.ts +1 -0
  87. package/out/concepts/Identifier__.js +33 -10
  88. package/out/concepts/Identifier__.js.map +1 -1
  89. package/out/concepts/IfStatement__.d.ts +8 -0
  90. package/out/concepts/IfStatement__.js +22 -0
  91. package/out/concepts/IfStatement__.js.map +1 -1
  92. package/out/concepts/InterfaceParam__.js.map +1 -1
  93. package/out/concepts/Interface__.js.map +1 -1
  94. package/out/concepts/LogicItem__.d.ts +6 -1
  95. package/out/concepts/LogicItem__.js +6 -0
  96. package/out/concepts/LogicItem__.js.map +1 -1
  97. package/out/concepts/Logic__.d.ts +91 -80
  98. package/out/concepts/Logic__.js +178 -59
  99. package/out/concepts/Logic__.js.map +1 -1
  100. package/out/concepts/MatchCase__.d.ts +1 -1
  101. package/out/concepts/MatchCase__.js +15 -8
  102. package/out/concepts/MatchCase__.js.map +1 -1
  103. package/out/concepts/Match__.d.ts +21 -19
  104. package/out/concepts/Match__.js +118 -26
  105. package/out/concepts/Match__.js.map +1 -1
  106. package/out/concepts/MemberExpression__.d.ts +4 -1
  107. package/out/concepts/MemberExpression__.js +30 -15
  108. package/out/concepts/MemberExpression__.js.map +1 -1
  109. package/out/concepts/Module__.js.map +1 -1
  110. package/out/concepts/Namespace__.js.map +1 -1
  111. package/out/concepts/NewComposite__.d.ts +345 -0
  112. package/out/concepts/NewComposite__.js +1068 -0
  113. package/out/concepts/NewComposite__.js.map +1 -0
  114. package/out/concepts/NewList__.d.ts +130 -0
  115. package/out/concepts/NewList__.js +349 -0
  116. package/out/concepts/NewList__.js.map +1 -0
  117. package/out/concepts/NewMap__.d.ts +221 -0
  118. package/out/concepts/NewMap__.js +480 -0
  119. package/out/concepts/NewMap__.js.map +1 -0
  120. package/out/concepts/New__.d.ts +19 -0
  121. package/out/concepts/New__.js +66 -0
  122. package/out/concepts/New__.js.map +1 -0
  123. package/out/concepts/NumericLiteral__.js +1 -1
  124. package/out/concepts/NumericLiteral__.js.map +1 -1
  125. package/out/concepts/OqlQueryComponent__.d.ts +7 -3
  126. package/out/concepts/OqlQueryComponent__.js +56 -95
  127. package/out/concepts/OqlQueryComponent__.js.map +1 -1
  128. package/out/concepts/Param__.d.ts +8 -1
  129. package/out/concepts/Param__.js +85 -6
  130. package/out/concepts/Param__.js.map +1 -1
  131. package/out/concepts/ProcessComponent__.js.map +1 -1
  132. package/out/concepts/ProcessElement__.js +42 -13
  133. package/out/concepts/ProcessElement__.js.map +1 -1
  134. package/out/concepts/ProcessOutcomes__.d.ts +30 -0
  135. package/out/concepts/ProcessOutcomes__.js +87 -0
  136. package/out/concepts/ProcessOutcomes__.js.map +1 -0
  137. package/out/concepts/Process__.d.ts +4 -20
  138. package/out/concepts/Process__.js +0 -7
  139. package/out/concepts/Process__.js.map +1 -1
  140. package/out/concepts/QueryJoinExpression__.js.map +1 -1
  141. package/out/concepts/QueryOrderByExpression__.d.ts +3 -3
  142. package/out/concepts/QueryOrderByExpression__.js +3 -3
  143. package/out/concepts/QueryOrderByExpression__.js.map +1 -1
  144. package/out/concepts/QuerySelectExpression__.js.map +1 -1
  145. package/out/concepts/Return__.d.ts +5 -0
  146. package/out/concepts/Return__.js +45 -2
  147. package/out/concepts/Return__.js.map +1 -1
  148. package/out/concepts/SelectMembers__.d.ts +1 -1
  149. package/out/concepts/SelectMembers__.js +5 -5
  150. package/out/concepts/SelectMembers__.js.map +1 -1
  151. package/out/concepts/SqlQueryComponent__.d.ts +2 -4
  152. package/out/concepts/SqlQueryComponent__.js +9 -88
  153. package/out/concepts/SqlQueryComponent__.js.map +1 -1
  154. package/out/concepts/StringInterpolation__.d.ts +113 -0
  155. package/out/concepts/StringInterpolation__.js +227 -0
  156. package/out/concepts/StringInterpolation__.js.map +1 -0
  157. package/out/concepts/StringLiteral__.js +0 -7
  158. package/out/concepts/StringLiteral__.js.map +1 -1
  159. package/out/concepts/StructureProperty__.js.map +1 -1
  160. package/out/concepts/Structure__.js.map +1 -1
  161. package/out/concepts/Transactional__.d.ts +5 -0
  162. package/out/concepts/Transactional__.js +6 -0
  163. package/out/concepts/Transactional__.js.map +1 -1
  164. package/out/concepts/TypeAnnotation__.d.ts +4 -0
  165. package/out/concepts/TypeAnnotation__.js +67 -15
  166. package/out/concepts/TypeAnnotation__.js.map +1 -1
  167. package/out/concepts/TypeParam__.d.ts +1 -0
  168. package/out/concepts/TypeParam__.js +2 -0
  169. package/out/concepts/TypeParam__.js.map +1 -1
  170. package/out/concepts/UnaryExpression__.js +6 -9
  171. package/out/concepts/UnaryExpression__.js.map +1 -1
  172. package/out/concepts/ValidationRule__.js +87 -22
  173. package/out/concepts/ValidationRule__.js.map +1 -1
  174. package/out/concepts/Variable__.d.ts +5 -0
  175. package/out/concepts/Variable__.js +46 -3
  176. package/out/concepts/Variable__.js.map +1 -1
  177. package/out/concepts/ViewComponent__.js.map +1 -1
  178. package/out/concepts/ViewElement__.d.ts +35 -29
  179. package/out/concepts/ViewElement__.js +138 -54
  180. package/out/concepts/ViewElement__.js.map +1 -1
  181. package/out/concepts/View__.d.ts +10 -3
  182. package/out/concepts/View__.js +116 -86
  183. package/out/concepts/View__.js.map +1 -1
  184. package/out/concepts/WhileStatement__.js +1 -1
  185. package/out/concepts/WhileStatement__.js.map +1 -1
  186. package/out/concepts/basics/stdlib/nasl.auth.js +1 -1
  187. package/out/concepts/basics/stdlib/nasl.auth.js.map +1 -1
  188. package/out/concepts/basics/stdlib/nasl.browser.js +50 -0
  189. package/out/concepts/basics/stdlib/nasl.browser.js.map +1 -1
  190. package/out/concepts/basics/stdlib/nasl.logging.js +5 -0
  191. package/out/concepts/basics/stdlib/nasl.logging.js.map +1 -1
  192. package/out/concepts/basics/stdlib/nasl.ui.js +38 -4
  193. package/out/concepts/basics/stdlib/nasl.ui.js.map +1 -1
  194. package/out/concepts/basics/stdlib/nasl.util.js +214 -62
  195. package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
  196. package/out/concepts/index__.d.ts +9 -0
  197. package/out/concepts/index__.js +9 -0
  198. package/out/concepts/index__.js.map +1 -1
  199. package/out/enums/KEYWORDS.d.ts +1 -0
  200. package/out/enums/KEYWORDS.js +9 -1
  201. package/out/enums/KEYWORDS.js.map +1 -1
  202. package/out/generator/genBundleFiles.d.ts +10 -4
  203. package/out/generator/genBundleFiles.js +127 -162
  204. package/out/generator/genBundleFiles.js.map +1 -1
  205. package/out/generator/genMetaData.d.ts +2 -11
  206. package/out/generator/genMetaData.js +185 -51
  207. package/out/generator/genMetaData.js.map +1 -1
  208. package/out/generator/genReleaseBody.d.ts +57 -0
  209. package/out/generator/genReleaseBody.js +380 -0
  210. package/out/generator/genReleaseBody.js.map +1 -0
  211. package/out/generator/index.d.ts +2 -0
  212. package/out/generator/index.js +2 -0
  213. package/out/generator/index.js.map +1 -1
  214. package/out/generator/permission.d.ts +17 -0
  215. package/out/generator/permission.js +221 -0
  216. package/out/generator/permission.js.map +1 -0
  217. package/out/index.d.ts +3 -2
  218. package/out/index.js +7 -1
  219. package/out/index.js.map +1 -1
  220. package/out/server/entity2LogicNamespace.js +100 -20
  221. package/out/server/entity2LogicNamespace.js.map +1 -1
  222. package/out/server/extendBaseNode.js +33 -20
  223. package/out/server/extendBaseNode.js.map +1 -1
  224. package/out/server/formatTsUtils.d.ts +1 -2
  225. package/out/server/formatTsUtils.js +46 -64
  226. package/out/server/formatTsUtils.js.map +1 -1
  227. package/out/server/getLogics.d.ts +2 -1
  228. package/out/server/getLogics.js +24 -6
  229. package/out/server/getLogics.js.map +1 -1
  230. package/out/server/getMemberIdentifier.js +11 -11
  231. package/out/server/getMemberIdentifier.js.map +1 -1
  232. package/out/server/getProcesses.d.ts +1 -1
  233. package/out/server/getProcesses.js +1 -1
  234. package/out/server/getProcesses.js.map +1 -1
  235. package/out/server/index.d.ts +0 -1
  236. package/out/server/index.js +2 -27
  237. package/out/server/index.js.map +1 -1
  238. package/out/server/naslServer.d.ts +50 -8
  239. package/out/server/naslServer.js +816 -429
  240. package/out/server/naslServer.js.map +1 -1
  241. package/out/server/naslStdlibMap.js +30 -28
  242. package/out/server/naslStdlibMap.js.map +1 -1
  243. package/out/server/process2LogicNamespace.js +8 -0
  244. package/out/server/process2LogicNamespace.js.map +1 -1
  245. package/out/server/translator.js +90 -12
  246. package/out/server/translator.js.map +1 -1
  247. package/out/service/creator/add.configs.js +4 -0
  248. package/out/service/creator/add.configs.js.map +1 -1
  249. package/out/service/datasource/api.d.ts +12 -0
  250. package/out/service/datasource/api.js +14 -0
  251. package/out/service/datasource/api.js.map +1 -0
  252. package/out/service/datasource/index.d.ts +2 -0
  253. package/out/service/datasource/index.js +10 -0
  254. package/out/service/datasource/index.js.map +1 -0
  255. package/out/service/defaultErrorMessage.json +97 -0
  256. package/out/service/logic/api.d.ts +9 -0
  257. package/out/service/logic/api.js +11 -0
  258. package/out/service/logic/api.js.map +1 -0
  259. package/out/service/logic/index.d.ts +2 -0
  260. package/out/service/logic/index.js +10 -0
  261. package/out/service/logic/index.js.map +1 -0
  262. package/out/service/storage/init.js +48 -7
  263. package/out/service/storage/init.js.map +1 -1
  264. package/out/templator/genCreateBlock.js +6 -4
  265. package/out/templator/genCreateBlock.js.map +1 -1
  266. package/out/templator/genCurdEditMultipleKeyBlock.js +7 -4
  267. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  268. package/out/templator/genCurdMultipleKeyBlock.js +7 -5
  269. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  270. package/out/templator/genEditTableBlock.js +4 -5
  271. package/out/templator/genEditTableBlock.js.map +1 -1
  272. package/out/templator/genEnumSelectBlock.js +5 -2
  273. package/out/templator/genEnumSelectBlock.js.map +1 -1
  274. package/out/templator/genGetBlock.js +4 -3
  275. package/out/templator/genGetBlock.js.map +1 -1
  276. package/out/templator/genGridViewBlock.js +18 -16
  277. package/out/templator/genGridViewBlock.js.map +1 -1
  278. package/out/templator/genListViewBlock.js +7 -7
  279. package/out/templator/genListViewBlock.js.map +1 -1
  280. package/out/templator/genQueryComponent.d.ts +2 -2
  281. package/out/templator/genQueryComponent.js +4 -1
  282. package/out/templator/genQueryComponent.js.map +1 -1
  283. package/out/templator/genTableBlock.js +8 -12
  284. package/out/templator/genTableBlock.js.map +1 -1
  285. package/out/templator/genUpdateBlock.js +4 -3
  286. package/out/templator/genUpdateBlock.js.map +1 -1
  287. package/out/templator/utils.js +1 -1
  288. package/out/templator/utils.js.map +1 -1
  289. package/out/test/integration/node-nasl-server.js +10 -38
  290. package/out/test/integration/node-nasl-server.js.map +1 -1
  291. package/out/translator/index.d.ts +1 -0
  292. package/out/translator/index.js +1 -1
  293. package/out/translator/index.js.map +1 -1
  294. package/out/utils/index.d.ts +1 -0
  295. package/out/utils/index.js +38 -1
  296. package/out/utils/index.js.map +1 -1
  297. package/out/utils/string.d.ts +15 -2
  298. package/out/utils/string.js +18 -3
  299. package/out/utils/string.js.map +1 -1
  300. package/package.json +1 -1
  301. package/src/concepts/App__.ts +11 -36
  302. package/src/concepts/Frontend__.ts +8 -0
  303. package/src/concepts/ViewElement__.ts +7 -28
  304. package/src/concepts/View__.ts +1 -1
  305. package/src/generator/permission.ts +1 -1
  306. package/src/server/getLogics.ts +2 -2
  307. package/src/server/naslServer.ts +8 -8
  308. package/src/service/storage/init.ts +3 -4
@@ -0,0 +1,380 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.genReleaseBody = void 0;
4
+ const concepts_1 = require("../concepts");
5
+ const genBundleFiles_1 = require("./genBundleFiles");
6
+ const permission_1 = require("./permission");
7
+ async function genReleaseBody(app, { env, replicas, generateMini, realRelease, appInfo, staticUrl, frontends = [], }) {
8
+ let authReport;
9
+ let logicPageResourceDtoList;
10
+ if (realRelease) {
11
+ authReport = getAuthReport(app, frontends);
12
+ const permissionData = await (0, permission_1.genPermissionData)(app);
13
+ authReport.resourceDataList = authReport.resourceDataList.concat(permissionData.resourceDataList);
14
+ authReport.resourceList = authReport.resourceList.concat(permissionData.resourceList);
15
+ logicPageResourceDtoList = permissionData.logicPageResourceDtoList;
16
+ }
17
+ const releaseFrontends = app.frontends.map((frontend) => ({
18
+ name: frontend.name,
19
+ type: frontend.type,
20
+ path: frontend.path,
21
+ selected: frontends.includes(frontend),
22
+ }));
23
+ const body = {
24
+ ...authReport,
25
+ logicPageResourceDtoList,
26
+ noAuthApiPathList: getAuthApiPathList(app, frontends),
27
+ reportIdList: findAllReportIdList(app, frontends),
28
+ appId: app.id,
29
+ env,
30
+ replicas,
31
+ callbackLogicsName: app.getExtensionsCallbackLogics(),
32
+ generateMini,
33
+ frontends: releaseFrontends,
34
+ files: [],
35
+ };
36
+ let NaslAnnotatedJSON;
37
+ try {
38
+ NaslAnnotatedJSON = await app.naslServer.getNaslAnnotatedJSON(app, true);
39
+ }
40
+ catch (err) {
41
+ console.error(err);
42
+ throw new Error('代码标注失败');
43
+ }
44
+ let files = (0, genBundleFiles_1.genFrontendBundleFiles)(app, frontends, Object.assign({}, appInfo, {
45
+ env,
46
+ appid: app.id,
47
+ devDnsAddr: app.devDnsAddr,
48
+ miniEnable: app.miniEnable,
49
+ }));
50
+ if (files && files.length === 0) {
51
+ throw new Error('前端代码生成失败');
52
+ }
53
+ if (staticUrl)
54
+ files = replaceAssetUrl(files, appInfo.USER_STATIC_URL, staticUrl);
55
+ // 如果是发布,就排除views,导出源码就不排除
56
+ if (realRelease)
57
+ delete NaslAnnotatedJSON.views;
58
+ const jsonString = JSON.stringify(NaslAnnotatedJSON);
59
+ // 打印传给服务端的nasl,为了服务端排查问题方便
60
+ if (globalThis.window) {
61
+ console.log(NaslAnnotatedJSON, '标注后的nasl');
62
+ }
63
+ files.push({ name: 'nasl-annotated.json', content: jsonString });
64
+ body.files = files;
65
+ return body;
66
+ }
67
+ exports.genReleaseBody = genReleaseBody;
68
+ /**
69
+ * 权限上报数据
70
+ */
71
+ function getAuthReport(app, frontends) {
72
+ const result = {
73
+ roleList: [],
74
+ resourceList: [],
75
+ resourceDataList: [],
76
+ roleResourceMappingList: [],
77
+ };
78
+ result.roleList = app.roles;
79
+ const getAuth = (target) => {
80
+ const authDirective = target.bindDirectives.find((item) => item.name === 'auth');
81
+ return authDirective?.value;
82
+ };
83
+ const loopViews = (view, isMain, frontend) => {
84
+ if (view.children) {
85
+ view.children.forEach((item) => loopViews(item, false, frontend));
86
+ }
87
+ if (view.concept === 'View' && view.elements) {
88
+ view.elements.forEach((item) => loopViews(item, false, frontend));
89
+ }
90
+ if ((view.concept === 'View' && view.auth)
91
+ || (view.concept === 'View' && !isMain && view.parentAuth)
92
+ || (view.concept === 'ViewElement' && getAuth(view))) {
93
+ result.resourceList.push(view.authPath);
94
+ result.resourceDataList.push({
95
+ value: view.authPath,
96
+ description: view.authDescription,
97
+ type: view.concept === 'View' ? 'page' : 'component',
98
+ clientType: frontend.name,
99
+ });
100
+ if (view.bindRoles) {
101
+ const _arr = view.bindRoles.map((it) => ({
102
+ roleName: it,
103
+ resourcePath: view.authPath,
104
+ }));
105
+ result.roleResourceMappingList.push(..._arr);
106
+ }
107
+ }
108
+ };
109
+ frontends.forEach((frontend) => {
110
+ frontend.views.forEach((view) => loopViews(view, true, frontend));
111
+ });
112
+ return result;
113
+ }
114
+ // 以下四个函数 导出源码也有引用 需同步改动
115
+ /**
116
+ * 上报白名单
117
+ */
118
+ function getAuthApiPathList(app, frontends) {
119
+ const thisDiffLogicList = [];
120
+ /* 转换Path */
121
+ function getPathMethods(logicNameSpace) {
122
+ const logic = app.findNodeByCompleteName(logicNameSpace);
123
+ if (!logic) {
124
+ return;
125
+ }
126
+ const logicName = logic?.name;
127
+ const _pathArr = logicNameSpace.split('.');
128
+ const isProcess = _pathArr[1] === 'processes';
129
+ const moduleNode = logic.getAncestor('Module');
130
+ let isEntity = false;
131
+ let namespaceLinkedNode = null;
132
+ const namespaceNode = logic.getAncestor('Namespace');
133
+ if (namespaceNode) {
134
+ namespaceLinkedNode = app.findNodeByCompleteName([namespaceNode.getNamespace(), namespaceNode.name].join('.'));
135
+ isEntity = namespaceNode && namespaceLinkedNode?.concept === 'Entity';
136
+ }
137
+ // 实体
138
+ if (isEntity) {
139
+ const dataSource = namespaceLinkedNode.parentNode;
140
+ if (dataSource.name !== 'defaultDS') {
141
+ return `/api/${dataSource.name}/${getName(namespaceLinkedNode.name)}${getEntityMethods(logic.name)}`;
142
+ }
143
+ return `/api/${getName(namespaceLinkedNode.name)}${getEntityMethods(logic.name)}`;
144
+ }
145
+ else if (moduleNode) {
146
+ // 外部模块引入的逻辑
147
+ return `/api/${getModuleName(moduleNode.name)}/${logicName}:POST`;
148
+ }
149
+ else if (isProcess) {
150
+ if (_pathArr.length === 7) {
151
+ const _name = _pathArr[2];
152
+ const _path = _pathArr[4];
153
+ const _logic = _pathArr[6];
154
+ return `/api/${_name}/${_path}/${_logic}:POST`;
155
+ }
156
+ else {
157
+ const _name = _pathArr[2];
158
+ const _path = _pathArr[4];
159
+ return `/api/${_name}/${_path}:POST`;
160
+ }
161
+ }
162
+ else {
163
+ return `/api/${logicName}:POST`;
164
+ }
165
+ function getName(name) {
166
+ const _name = name.replace(/[A-Z]/g, (item) => '-' + item.toLowerCase());
167
+ return _name[0] === '-' ? _name.slice(1) : _name;
168
+ }
169
+ function getModuleName(name) {
170
+ return name.replace(/-/g, '_');
171
+ }
172
+ function getEntityMethods(path) {
173
+ let name = '';
174
+ switch (path) {
175
+ case 'get':
176
+ name = `:GET`;
177
+ break;
178
+ case 'import':
179
+ name = '/import:POST';
180
+ break;
181
+ case 'create':
182
+ name = ':POST';
183
+ break;
184
+ case 'update':
185
+ name = ':PUT';
186
+ break;
187
+ case 'delete':
188
+ name = `:DELETE`;
189
+ break;
190
+ case 'createOrUpdate':
191
+ name = '/createOrUpdate:POST';
192
+ break;
193
+ case 'updateBy':
194
+ name = '/by:PUT';
195
+ break;
196
+ case 'deleteBy':
197
+ name = '/by:DELETE';
198
+ break;
199
+ case 'batchUpdate':
200
+ name = `/batch:PUT`;
201
+ break;
202
+ case 'batchDelete':
203
+ name = `/batch:DELETE`;
204
+ break;
205
+ case 'batchCreate':
206
+ name = `/batch:POST`;
207
+ break;
208
+ }
209
+ return name;
210
+ }
211
+ }
212
+ /* 获取LogicITEM */
213
+ function getStatement(state, frontend) {
214
+ let logicItems = [];
215
+ if (state instanceof concepts_1.Assignment) {
216
+ logicItems = [state.left, state.right];
217
+ }
218
+ else if (state instanceof concepts_1.BatchAssignment) {
219
+ logicItems = [state.left?.expression, ...state.left?.members, ...state.rights.map((item) => [item?.expression, ...item?.members]).flat(1)];
220
+ }
221
+ else if (state instanceof concepts_1.IfStatement) {
222
+ logicItems = [...state.consequent, ...state.alternate];
223
+ }
224
+ else if (state instanceof concepts_1.ForEachStatement) {
225
+ logicItems = [...state.body, state.each, state.start, state.end];
226
+ }
227
+ else if (state instanceof concepts_1.Match) {
228
+ logicItems = state.cases.map((case1) => getStatement(case1, frontend)).flat(1);
229
+ }
230
+ else if (state instanceof concepts_1.MatchCase) {
231
+ logicItems = [...state.patterns, ...state.body];
232
+ }
233
+ else if (state instanceof concepts_1.SwitchStatement) {
234
+ logicItems = state.cases.map((case1) => getStatement(case1, frontend)).flat(1);
235
+ }
236
+ else if (state instanceof concepts_1.SwitchCase) {
237
+ logicItems = [state.test, ...state.consequent];
238
+ }
239
+ else if (state instanceof concepts_1.WhileStatement) {
240
+ logicItems = [state.test, ...state.body];
241
+ }
242
+ else if (state instanceof concepts_1.CallLogic) {
243
+ logicItems = state.arguments?.map((item) => item.expression);
244
+ getLogic(state.calleewholeKey, frontend);
245
+ }
246
+ else if (state instanceof concepts_1.CallFunction) {
247
+ logicItems = state.arguments?.map((item) => item.expression);
248
+ }
249
+ else if (state instanceof concepts_1.CallInterface) {
250
+ logicItems = state.arguments?.map((item) => item.expression);
251
+ }
252
+ return logicItems.filter((item) => !!item);
253
+ }
254
+ /* 获取非鉴权全局逻辑 */
255
+ function getLogic(key, frontend) {
256
+ if (!thisDiffLogicList.find((diffLogic) => diffLogic.logicName === key && diffLogic.frontendName === frontend.name)) {
257
+ thisDiffLogicList.push({ logicName: key, frontendName: frontend.name });
258
+ const logic = app.findNodeByCompleteName(key);
259
+ if (logic && logic.body && logic.body.length > 2) {
260
+ logic.body.map((item) => getStatement(item, frontend));
261
+ }
262
+ }
263
+ }
264
+ const importList = [];
265
+ const itemloop = (state, view, frontend) => {
266
+ const logicItems = getStatement(state, frontend);
267
+ if (logicItems.length) {
268
+ logicItems.map((item) => itemloop(item, view, frontend));
269
+ }
270
+ };
271
+ const loopEle = (view, frontend) => {
272
+ view?.children?.forEach((vitem) => loopEle(vitem, frontend));
273
+ view.concept === 'View' && view?.elements?.forEach((ele) => loopEle(ele, frontend));
274
+ if (!view.parentAuth) {
275
+ if (view.bindEvents) {
276
+ view.bindEvents.forEach((item) => {
277
+ if (item.logics) {
278
+ item.logics.forEach((logic) => {
279
+ if (logic.body.length > 2) {
280
+ logic.body.forEach((it) => {
281
+ itemloop(it, view, frontend);
282
+ });
283
+ }
284
+ });
285
+ }
286
+ });
287
+ }
288
+ }
289
+ if (view.concept === 'ViewElement' && (view.tag === 'u-uploader' || view.tag === 'van-uploader')) {
290
+ const attr = view?.bindAttrs.find((item) => item.name === 'url');
291
+ if (attr?.value.endsWith('/import') && !view.parentAuth) {
292
+ importList.push(attr?.value);
293
+ }
294
+ }
295
+ };
296
+ const loopViews = (view, isChild, frontend) => {
297
+ // 有权限的页面下的逻辑都不需要上报白名单
298
+ if (!view.auth) {
299
+ if (view.logics) {
300
+ view.logics.forEach((logic) => {
301
+ if (logic.body.length > 2) {
302
+ logic.body.forEach((it) => {
303
+ itemloop(it, view, frontend);
304
+ });
305
+ }
306
+ });
307
+ }
308
+ if (view.bindEvents) {
309
+ view.bindEvents.forEach((item) => {
310
+ if (item.logics) {
311
+ item.logics.forEach((logic) => {
312
+ if (logic.body.length > 2) {
313
+ logic.body.forEach((it) => {
314
+ itemloop(it, view, frontend);
315
+ });
316
+ }
317
+ });
318
+ }
319
+ });
320
+ }
321
+ view.children.forEach((item) => loopViews(item, true, frontend));
322
+ }
323
+ if (!isChild) {
324
+ view.children.forEach((vitem) => loopEle(vitem, frontend));
325
+ view.elements.forEach((vele) => loopEle(vele, frontend));
326
+ }
327
+ };
328
+ frontends.forEach((frontend) => {
329
+ frontend.views.forEach((view) => loopViews(view, true, frontend));
330
+ });
331
+ const diffLogicList = thisDiffLogicList.filter((item) => item.logicName.startsWith('app') || item.logicName.startsWith('extensions'));
332
+ const authApiList = [
333
+ ...diffLogicList.map((diffLogic) => {
334
+ const path = getPathMethods(diffLogic.logicName);
335
+ return `${path}:${diffLogic.frontendName}`;
336
+ }),
337
+ ...Array.from(new Set(importList.map((item) => item + ':POST'))),
338
+ ].filter((item) => !!item);
339
+ return authApiList;
340
+ }
341
+ /**
342
+ * 获取页面中所有 分析报告组件 的reportId
343
+ */
344
+ function findAllReportIdList(app, frontends) {
345
+ const reportIds = [];
346
+ frontends.forEach((frontend) => {
347
+ frontend.views.forEach((view) => loop(view));
348
+ });
349
+ function loop(root) {
350
+ if (root.concept === 'ViewElement') {
351
+ root.bindAttrs.forEach((attr) => {
352
+ if (attr.name === 'reportId') {
353
+ reportIds.push(JSON.parse(attr.value || '{}').id);
354
+ }
355
+ });
356
+ }
357
+ if (root.children && root.children.length) {
358
+ root.children.forEach((item) => loop(item));
359
+ }
360
+ if (root.concept === 'View' && root.elements && root.elements.length) {
361
+ root.elements.forEach((item) => loop(item));
362
+ }
363
+ }
364
+ return [...new Set(reportIds)].filter(Boolean);
365
+ }
366
+ function replaceAssetUrl(files, oldUrlWithoutProtocol, newUrlWithProtocol) {
367
+ const newUrlWithoutProtocol = newUrlWithProtocol.replace(/^https?:/, '');
368
+ if (newUrlWithoutProtocol === oldUrlWithoutProtocol)
369
+ return files;
370
+ const reg = new RegExp(`${oldUrlWithoutProtocol}[^?'"\\s]*\\?[^?'"\\s]*(?=("|'))`, 'g');
371
+ const reg2 = new RegExp(`(https?:)?${oldUrlWithoutProtocol}`, 'g');
372
+ for (const file of files) {
373
+ // 清除 query 参数
374
+ file.content = file.content.replace(reg, (...args) => args[0].split('?')[0]);
375
+ file.content = file.content.replace(reg2, (whole, protocol) => (protocol ? newUrlWithProtocol : newUrlWithoutProtocol));
376
+ file.name = file.name.replace(reg2, (whole, protocol) => (protocol ? newUrlWithProtocol : newUrlWithoutProtocol));
377
+ }
378
+ return files;
379
+ }
380
+ //# sourceMappingURL=genReleaseBody.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genReleaseBody.js","sourceRoot":"","sources":["../../src/generator/genReleaseBody.ts"],"names":[],"mappings":"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"}
@@ -3,3 +3,5 @@ export * from './compileComponent';
3
3
  export * from './styleReplacer';
4
4
  export * from './genBundleFiles';
5
5
  export * from './genMetaData';
6
+ export * from './genReleaseBody';
7
+ export * from './permission';
@@ -19,4 +19,6 @@ __exportStar(require("./compileComponent"), exports);
19
19
  __exportStar(require("./styleReplacer"), exports);
20
20
  __exportStar(require("./genBundleFiles"), exports);
21
21
  __exportStar(require("./genMetaData"), exports);
22
+ __exportStar(require("./genReleaseBody"), exports);
23
+ __exportStar(require("./permission"), exports);
22
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,qDAAmC;AACnC,kDAAgC;AAChC,mDAAiC;AACjC,gDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,qDAAmC;AACnC,kDAAgC;AAChC,mDAAiC;AACjC,gDAA8B;AAC9B,mDAAiC;AACjC,+CAA6B"}
@@ -0,0 +1,17 @@
1
+ import { App } from '../concepts';
2
+ declare type ResourceNode = {
3
+ path: string;
4
+ type: 'component' | 'page';
5
+ };
6
+ export declare function genPermissionData(app: App): Promise<{
7
+ logicPageResourceDtoList: {
8
+ [key: string]: ResourceNode[][];
9
+ };
10
+ resourceList: string[];
11
+ resourceDataList: {
12
+ value: string;
13
+ type: 'logic';
14
+ description: string;
15
+ }[];
16
+ }>;
17
+ export {};
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.genPermissionData = void 0;
4
+ const concepts_1 = require("../concepts");
5
+ const process2LogicNamespace_1 = require("../server/process2LogicNamespace");
6
+ function isReadOnly(logic) {
7
+ return !!logic.module
8
+ || logic.parentNode?.concept === 'Namespace'
9
+ || logic.parentKey === 'readonly'; // process logic
10
+ }
11
+ const cache = new Map();
12
+ let useCache = false;
13
+ async function findUsage(logic) {
14
+ if (useCache && cache.has(logic))
15
+ return cache.get(logic);
16
+ const res = isReadOnly(logic) ? await logic.findReadOnlyLogicUsage() : await logic.findUsage();
17
+ if (useCache)
18
+ cache.set(logic, res);
19
+ return res;
20
+ }
21
+ function openCache() {
22
+ useCache = true;
23
+ cache.clear();
24
+ }
25
+ function closeCache() {
26
+ useCache = false;
27
+ cache.clear();
28
+ }
29
+ async function findViewLogicReferences(logic, vis = new Set()) {
30
+ const usageMap = await findUsage(logic);
31
+ const usages = [];
32
+ usageMap.forEach((usage, node) => {
33
+ if (node instanceof concepts_1.Frontend)
34
+ usages.push(usage);
35
+ });
36
+ async function dfs(usage) {
37
+ if (usage.node instanceof concepts_1.CallLogic) {
38
+ const logic = usage.node.logic;
39
+ if (!vis.has(logic)) {
40
+ vis.add(logic);
41
+ await findViewLogicReferences(logic, vis);
42
+ }
43
+ }
44
+ if (usage.children) {
45
+ for (const child of usage.children) {
46
+ await dfs(child);
47
+ }
48
+ }
49
+ }
50
+ for (const usage of usages) {
51
+ await dfs(usage);
52
+ }
53
+ return Array.from(vis);
54
+ }
55
+ async function findUIReferences(logic) {
56
+ const usageMap = await findUsage(logic);
57
+ const usages = [];
58
+ usageMap.forEach((usage, node) => {
59
+ if (node instanceof concepts_1.Frontend)
60
+ usages.push(usage);
61
+ });
62
+ const res = [];
63
+ function dfs(usage, parent = null) {
64
+ if ((usage.node instanceof concepts_1.BindEvent || usage.node instanceof concepts_1.BindAttribute)
65
+ && (parent.node instanceof concepts_1.View || parent.node instanceof concepts_1.ViewElement))
66
+ res.push(parent.node);
67
+ usage.children?.forEach((child) => {
68
+ dfs(child, usage);
69
+ });
70
+ }
71
+ usages.forEach((usage) => {
72
+ dfs(usage);
73
+ });
74
+ return res;
75
+ }
76
+ function findResourcesOfUI(view) {
77
+ const res = [];
78
+ let node = view;
79
+ while (node) {
80
+ if (node instanceof concepts_1.View && node.auth)
81
+ res.push({
82
+ path: node.authPath,
83
+ type: 'page',
84
+ });
85
+ else if (node instanceof concepts_1.ViewElement) {
86
+ const hasAuth = node.bindDirectives.find((directive) => directive.name === 'auth');
87
+ if (hasAuth)
88
+ res.push({
89
+ path: node.authPath,
90
+ type: 'component',
91
+ });
92
+ }
93
+ node = node.parentNode;
94
+ }
95
+ return res;
96
+ }
97
+ function optimizeResourceData(resources) {
98
+ let res = removeRedundantResourceData(resources);
99
+ res = removeRedundantResourceData2(res);
100
+ return res;
101
+ }
102
+ // [['b'], ['a' ,'b']] 只需要保留 [['b']]
103
+ function removeRedundantResourceData(resources) {
104
+ const wm = new WeakMap();
105
+ for (const resource of resources) {
106
+ const hash = resource.map(({ path, type }) => `${path}_${type}`)
107
+ .join();
108
+ wm.set(resource, hash);
109
+ }
110
+ resources.sort((a, b) => wm.get(a).length - wm.get(b).length);
111
+ const res = [];
112
+ const hashs = [];
113
+ for (const resource of resources) {
114
+ const hash = wm.get(resource);
115
+ if (hashs.some((h) => hash.endsWith(h)))
116
+ continue;
117
+ res.push(resource);
118
+ hashs.push(hash);
119
+ }
120
+ return res;
121
+ }
122
+ // 子页面有权限,父页面默认也有权限,所以不需要记录父页面权限;
123
+ // 组件有权限,组件所在的页面默认也有权限,所以不需要记录页面权限
124
+ function removeRedundantResourceData2(resources) {
125
+ return resources.map((resource) => {
126
+ if (resource.length <= 1)
127
+ return resource;
128
+ if (resource[0].type === 'page')
129
+ return resource.slice(0, 1);
130
+ else if (resource[0].type === 'component')
131
+ return resource.filter((item) => item.type === 'component');
132
+ });
133
+ }
134
+ async function findResourcesOfLogic(logic) {
135
+ const logics = await findViewLogicReferences(logic);
136
+ logics.push(logic);
137
+ let UIs = [];
138
+ for (const logic of logics) {
139
+ UIs = UIs.concat(await findUIReferences(logic));
140
+ }
141
+ UIs = Array.from(new Set(UIs));
142
+ const res = UIs.map((ui) => findResourcesOfUI(ui));
143
+ return optimizeResourceData(res);
144
+ }
145
+ function getAllLogics(app) {
146
+ const modules = [];
147
+ const entities = [];
148
+ const logics = [];
149
+ if (Array.isArray(app.dataSources)) {
150
+ app.dataSources.forEach((dataSource) => {
151
+ if (Array.isArray(dataSource.entities)) {
152
+ entities.push(...dataSource.entities);
153
+ }
154
+ });
155
+ }
156
+ app.logics && logics.push(...app.logics);
157
+ app.dependencies && modules.push(...app.dependencies);
158
+ app.interfaceDependencies && modules.push(...app.interfaceDependencies);
159
+ modules.forEach((module) => {
160
+ module.logics && logics.push(...module.logics);
161
+ if (Array.isArray(module.dataSources)) {
162
+ module.dataSources.forEach((dataSource) => {
163
+ if (Array.isArray(dataSource.entities)) {
164
+ entities.push(...dataSource.entities);
165
+ }
166
+ });
167
+ }
168
+ });
169
+ const allLogics = [];
170
+ if (Array.isArray(entities)) {
171
+ entities.forEach((entity) => {
172
+ const ns = entity.ns;
173
+ if (Array.isArray(ns?.logics)) {
174
+ allLogics.push(...ns.logics);
175
+ }
176
+ });
177
+ }
178
+ if (Array.isArray(logics)) {
179
+ allLogics.push(...logics);
180
+ }
181
+ const processLogics = [];
182
+ const processTreeFragments = (app.processes || [])
183
+ .map(process2LogicNamespace_1.processToTreeFragment);
184
+ processTreeFragments.forEach((tree) => {
185
+ processLogics.push(...tree.logics);
186
+ tree.elements.forEach((element) => {
187
+ processLogics.push(...element.logics);
188
+ });
189
+ });
190
+ return {
191
+ logics: allLogics,
192
+ processLogics,
193
+ };
194
+ }
195
+ async function genPermissionData(app) {
196
+ // console.time('xxx');
197
+ openCache();
198
+ const logicPageResourceDtoList = {};
199
+ const resourceList = [];
200
+ const resourceDataList = [];
201
+ const { logics, processLogics } = getAllLogics(app);
202
+ for (const logic of [...logics, ...processLogics]) {
203
+ const resources = await findResourcesOfLogic(logic);
204
+ if (resources.length === 0)
205
+ continue;
206
+ const service = logics.includes(logic) ? logic.toService() : logic.toProcessService();
207
+ const key = `${service.url.path}:${service.url.method}`;
208
+ logicPageResourceDtoList[key] = resources;
209
+ resourceList.push(key);
210
+ resourceDataList.push({
211
+ value: key,
212
+ type: 'logic',
213
+ description: logic.description,
214
+ });
215
+ }
216
+ closeCache();
217
+ // console.timeEnd('xxx');
218
+ return { logicPageResourceDtoList, resourceList, resourceDataList };
219
+ }
220
+ exports.genPermissionData = genPermissionData;
221
+ //# sourceMappingURL=permission.js.map