@lcap/nasl 3.2.0-beta.4 → 3.3.0-alpha

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 (774) hide show
  1. package/out/automate/upgrader/2.20.js +1 -1
  2. package/out/automate/upgrader/2.20.js.map +1 -1
  3. package/out/bak/translator.js +11 -15
  4. package/out/bak/translator.js.map +1 -1
  5. package/out/breakpoint/generator/AfterStartNode.js +3 -1
  6. package/out/breakpoint/generator/AfterStartNode.js.map +1 -1
  7. package/out/breakpoint/generator/BeforeEndNode.js.map +1 -1
  8. package/out/breakpoint/generator/BreakpointNode.d.ts +1 -0
  9. package/out/breakpoint/generator/BreakpointNode.js +48 -15
  10. package/out/breakpoint/generator/BreakpointNode.js.map +1 -1
  11. package/out/breakpoint/generator/CallbackNode.d.ts +4 -0
  12. package/out/breakpoint/generator/CallbackNode.js +22 -0
  13. package/out/breakpoint/generator/CallbackNode.js.map +1 -0
  14. package/out/breakpoint/generator/FragmentNode.d.ts +4 -0
  15. package/out/breakpoint/generator/FragmentNode.js +18 -0
  16. package/out/breakpoint/generator/FragmentNode.js.map +1 -0
  17. package/out/breakpoint/generator/index.js +25 -4
  18. package/out/breakpoint/generator/index.js.map +1 -1
  19. package/out/breakpoint/shared/constants.d.ts +3 -0
  20. package/out/breakpoint/shared/constants.js +6 -1
  21. package/out/breakpoint/shared/constants.js.map +1 -1
  22. package/out/breakpoint/shared/operations.js.map +1 -1
  23. package/out/breakpoint/shared/socket.d.ts +1 -1
  24. package/out/breakpoint/shared/socket.js +36 -7
  25. package/out/breakpoint/shared/socket.js.map +1 -1
  26. package/out/breakpoint/shared/utils.d.ts +2 -0
  27. package/out/breakpoint/shared/utils.js +15 -2
  28. package/out/breakpoint/shared/utils.js.map +1 -1
  29. package/out/breakpoint/store/core.d.ts +48 -2
  30. package/out/breakpoint/store/core.js +58 -32
  31. package/out/breakpoint/store/core.js.map +1 -1
  32. package/out/breakpoint/store/dock.js +1 -1
  33. package/out/breakpoint/store/dock.js.map +1 -1
  34. package/out/common/BaseNode.d.ts +1 -1
  35. package/out/common/BaseNode.js +105 -51
  36. package/out/common/BaseNode.js.map +1 -1
  37. package/out/common/Command.d.ts +13 -2
  38. package/out/common/Command.js +37 -9
  39. package/out/common/Command.js.map +1 -1
  40. package/out/common/EventEmitter.js.map +1 -1
  41. package/out/common/Messager.d.ts +3 -3
  42. package/out/common/Messager.js +6 -7
  43. package/out/common/Messager.js.map +1 -1
  44. package/out/common/asyncFuncMap.js.map +1 -1
  45. package/out/concepts/Abort__.js +6 -5
  46. package/out/concepts/Abort__.js.map +1 -1
  47. package/out/concepts/Anchor__.d.ts +4 -3
  48. package/out/concepts/Anchor__.js +24 -7
  49. package/out/concepts/Anchor__.js.map +1 -1
  50. package/out/concepts/AnonymousFunction__.d.ts +22 -21
  51. package/out/concepts/AnonymousFunction__.js +48 -22
  52. package/out/concepts/AnonymousFunction__.js.map +1 -1
  53. package/out/concepts/App__.d.ts +421 -247
  54. package/out/concepts/App__.js +286 -54
  55. package/out/concepts/App__.js.map +1 -1
  56. package/out/concepts/Argument__.d.ts +4 -3
  57. package/out/concepts/Argument__.js +42 -11
  58. package/out/concepts/Argument__.js.map +1 -1
  59. package/out/concepts/Assignee__.d.ts +45 -45
  60. package/out/concepts/Assignee__.js +15 -15
  61. package/out/concepts/Assignee__.js.map +1 -1
  62. package/out/concepts/AssignmentLine__.js +6 -5
  63. package/out/concepts/AssignmentLine__.js.map +1 -1
  64. package/out/concepts/Assignment__.d.ts +7 -6
  65. package/out/concepts/Assignment__.js +40 -22
  66. package/out/concepts/Assignment__.js.map +1 -1
  67. package/out/concepts/Attribute__.d.ts +3 -3
  68. package/out/concepts/Attribute__.js +8 -7
  69. package/out/concepts/Attribute__.js.map +1 -1
  70. package/out/concepts/AuthInterface__.js +4 -3
  71. package/out/concepts/AuthInterface__.js.map +1 -1
  72. package/out/concepts/AuthLogicForCallInterface__.d.ts +15 -15
  73. package/out/concepts/AuthLogicForCallInterface__.js +46 -27
  74. package/out/concepts/AuthLogicForCallInterface__.js.map +1 -1
  75. package/out/concepts/AuthLogic__.js +27 -13
  76. package/out/concepts/AuthLogic__.js.map +1 -1
  77. package/out/concepts/BackendVariable__.d.ts +5 -5
  78. package/out/concepts/BackendVariable__.js +23 -26
  79. package/out/concepts/BackendVariable__.js.map +1 -1
  80. package/out/concepts/Backend__.d.ts +18 -18
  81. package/out/concepts/Backend__.js +13 -13
  82. package/out/concepts/Backend__.js.map +1 -1
  83. package/out/concepts/BatchAssignment__.d.ts +34 -33
  84. package/out/concepts/BatchAssignment__.js +83 -43
  85. package/out/concepts/BatchAssignment__.js.map +1 -1
  86. package/out/concepts/BinaryExpression__.d.ts +7 -6
  87. package/out/concepts/BinaryExpression__.js +60 -24
  88. package/out/concepts/BinaryExpression__.js.map +1 -1
  89. package/out/concepts/BindAttribute__.d.ts +37 -37
  90. package/out/concepts/BindAttribute__.js +101 -48
  91. package/out/concepts/BindAttribute__.js.map +1 -1
  92. package/out/concepts/BindDirective__.d.ts +13 -13
  93. package/out/concepts/BindDirective__.js +23 -21
  94. package/out/concepts/BindDirective__.js.map +1 -1
  95. package/out/concepts/BindEvent__.d.ts +28 -28
  96. package/out/concepts/BindEvent__.js +99 -48
  97. package/out/concepts/BindEvent__.js.map +1 -1
  98. package/out/concepts/BindStyle__.d.ts +14 -15
  99. package/out/concepts/BindStyle__.js +16 -16
  100. package/out/concepts/BindStyle__.js.map +1 -1
  101. package/out/concepts/BooleanLiteral__.d.ts +1 -0
  102. package/out/concepts/BooleanLiteral__.js +12 -5
  103. package/out/concepts/BooleanLiteral__.js.map +1 -1
  104. package/out/concepts/CallAuthInterface__.d.ts +15 -15
  105. package/out/concepts/CallAuthInterface__.js +23 -22
  106. package/out/concepts/CallAuthInterface__.js.map +1 -1
  107. package/out/concepts/CallConnector__.d.ts +11 -9
  108. package/out/concepts/CallConnector__.js +79 -36
  109. package/out/concepts/CallConnector__.js.map +1 -1
  110. package/out/concepts/CallFunction__.d.ts +17 -16
  111. package/out/concepts/CallFunction__.js +95 -63
  112. package/out/concepts/CallFunction__.js.map +1 -1
  113. package/out/concepts/CallInterface__.d.ts +9 -8
  114. package/out/concepts/CallInterface__.js +71 -30
  115. package/out/concepts/CallInterface__.js.map +1 -1
  116. package/out/concepts/CallLogic__.d.ts +20 -19
  117. package/out/concepts/CallLogic__.js +155 -52
  118. package/out/concepts/CallLogic__.js.map +1 -1
  119. package/out/concepts/CallQueryComponent__.d.ts +51 -51
  120. package/out/concepts/CallQueryComponent__.js +66 -63
  121. package/out/concepts/CallQueryComponent__.js.map +1 -1
  122. package/out/concepts/Comment__.d.ts +1 -0
  123. package/out/concepts/Comment__.js +13 -6
  124. package/out/concepts/Comment__.js.map +1 -1
  125. package/out/concepts/CompletionProperty__.d.ts +3 -3
  126. package/out/concepts/CompletionProperty__.js +8 -7
  127. package/out/concepts/CompletionProperty__.js.map +1 -1
  128. package/out/concepts/ConfigGroup__.d.ts +15 -15
  129. package/out/concepts/ConfigGroup__.js +9 -9
  130. package/out/concepts/ConfigGroup__.js.map +1 -1
  131. package/out/concepts/ConfigPropertyValue__.js +4 -3
  132. package/out/concepts/ConfigPropertyValue__.js.map +1 -1
  133. package/out/concepts/ConfigProperty__.d.ts +15 -15
  134. package/out/concepts/ConfigProperty__.js +10 -10
  135. package/out/concepts/ConfigProperty__.js.map +1 -1
  136. package/out/concepts/Configuration__.d.ts +15 -15
  137. package/out/concepts/Configuration__.js +9 -9
  138. package/out/concepts/Configuration__.js.map +1 -1
  139. package/out/concepts/Connection__.d.ts +166 -0
  140. package/out/concepts/Connection__.js +332 -0
  141. package/out/concepts/Connection__.js.map +1 -0
  142. package/out/concepts/ConnectorTrigger__.js +4 -3
  143. package/out/concepts/ConnectorTrigger__.js.map +1 -1
  144. package/out/concepts/Connector__.d.ts +66 -66
  145. package/out/concepts/Connector__.js +16 -15
  146. package/out/concepts/Connector__.js.map +1 -1
  147. package/out/concepts/Constant__.d.ts +3 -3
  148. package/out/concepts/Constant__.js +8 -7
  149. package/out/concepts/Constant__.js.map +1 -1
  150. package/out/concepts/DataElement__.d.ts +3 -3
  151. package/out/concepts/DataElement__.js +6 -5
  152. package/out/concepts/DataElement__.js.map +1 -1
  153. package/out/concepts/DataSource__.d.ts +15 -15
  154. package/out/concepts/DataSource__.js +55 -39
  155. package/out/concepts/DataSource__.js.map +1 -1
  156. package/out/concepts/DatabaseTypeAnnotation__.js +4 -3
  157. package/out/concepts/DatabaseTypeAnnotation__.js.map +1 -1
  158. package/out/concepts/Destination__.d.ts +12 -11
  159. package/out/concepts/Destination__.js +93 -36
  160. package/out/concepts/Destination__.js.map +1 -1
  161. package/out/concepts/End__.js +15 -13
  162. package/out/concepts/End__.js.map +1 -1
  163. package/out/concepts/EntityIndex__.d.ts +1 -1
  164. package/out/concepts/EntityIndex__.js +6 -5
  165. package/out/concepts/EntityIndex__.js.map +1 -1
  166. package/out/concepts/EntityProperty__.d.ts +8 -7
  167. package/out/concepts/EntityProperty__.js +39 -24
  168. package/out/concepts/EntityProperty__.js.map +1 -1
  169. package/out/concepts/Entity__.d.ts +31 -30
  170. package/out/concepts/Entity__.js +40 -16
  171. package/out/concepts/Entity__.js.map +1 -1
  172. package/out/concepts/EnumItem__.d.ts +1 -0
  173. package/out/concepts/EnumItem__.js +12 -5
  174. package/out/concepts/EnumItem__.js.map +1 -1
  175. package/out/concepts/Enum__.d.ts +9 -8
  176. package/out/concepts/Enum__.js +24 -11
  177. package/out/concepts/Enum__.js.map +1 -1
  178. package/out/concepts/Event__.d.ts +15 -15
  179. package/out/concepts/Event__.js +6 -5
  180. package/out/concepts/Event__.js.map +1 -1
  181. package/out/concepts/ExternalDestination__.d.ts +6 -6
  182. package/out/concepts/ExternalDestination__.js +12 -11
  183. package/out/concepts/ExternalDestination__.js.map +1 -1
  184. package/out/concepts/ForEachStatement__.d.ts +25 -24
  185. package/out/concepts/ForEachStatement__.js +101 -36
  186. package/out/concepts/ForEachStatement__.js.map +1 -1
  187. package/out/concepts/FrontendLibrary__.d.ts +30 -30
  188. package/out/concepts/FrontendLibrary__.js +12 -13
  189. package/out/concepts/FrontendLibrary__.js.map +1 -1
  190. package/out/concepts/FrontendVariable__.js +4 -3
  191. package/out/concepts/FrontendVariable__.js.map +1 -1
  192. package/out/concepts/Frontend__.d.ts +64 -65
  193. package/out/concepts/Frontend__.js +23 -27
  194. package/out/concepts/Frontend__.js.map +1 -1
  195. package/out/concepts/Function__.d.ts +64 -63
  196. package/out/concepts/Function__.js +49 -21
  197. package/out/concepts/Function__.js.map +1 -1
  198. package/out/concepts/Identifier__.js +37 -31
  199. package/out/concepts/Identifier__.js.map +1 -1
  200. package/out/concepts/IfStatement__.d.ts +20 -19
  201. package/out/concepts/IfStatement__.js +64 -34
  202. package/out/concepts/IfStatement__.js.map +1 -1
  203. package/out/concepts/Integration__.d.ts +3 -3
  204. package/out/concepts/Integration__.js +8 -7
  205. package/out/concepts/Integration__.js.map +1 -1
  206. package/out/concepts/InterfaceParam__.d.ts +3 -3
  207. package/out/concepts/InterfaceParam__.js +7 -6
  208. package/out/concepts/InterfaceParam__.js.map +1 -1
  209. package/out/concepts/Interface__.d.ts +33 -33
  210. package/out/concepts/Interface__.js +19 -20
  211. package/out/concepts/Interface__.js.map +1 -1
  212. package/out/concepts/JSBlock__.d.ts +1 -0
  213. package/out/concepts/JSBlock__.js +12 -5
  214. package/out/concepts/JSBlock__.js.map +1 -1
  215. package/out/concepts/JavaLogic__.js +10 -9
  216. package/out/concepts/JavaLogic__.js.map +1 -1
  217. package/out/concepts/LogicItem__.d.ts +6 -0
  218. package/out/concepts/LogicItem__.js +14 -5
  219. package/out/concepts/LogicItem__.js.map +1 -1
  220. package/out/concepts/Logic__.d.ts +80 -79
  221. package/out/concepts/Logic__.js +204 -58
  222. package/out/concepts/Logic__.js.map +1 -1
  223. package/out/concepts/MatchCase__.d.ts +39 -38
  224. package/out/concepts/MatchCase__.js +122 -37
  225. package/out/concepts/MatchCase__.js.map +1 -1
  226. package/out/concepts/Match__.d.ts +13 -11
  227. package/out/concepts/Match__.js +128 -60
  228. package/out/concepts/Match__.js.map +1 -1
  229. package/out/concepts/MemberExpression__.d.ts +7 -6
  230. package/out/concepts/MemberExpression__.js +52 -22
  231. package/out/concepts/MemberExpression__.js.map +1 -1
  232. package/out/concepts/MicroApp__.js +4 -3
  233. package/out/concepts/MicroApp__.js.map +1 -1
  234. package/out/concepts/Module__.d.ts +239 -155
  235. package/out/concepts/Module__.js +139 -33
  236. package/out/concepts/Module__.js.map +1 -1
  237. package/out/concepts/MsgTriggerEvent__.d.ts +15 -15
  238. package/out/concepts/MsgTriggerEvent__.js +6 -5
  239. package/out/concepts/MsgTriggerEvent__.js.map +1 -1
  240. package/out/concepts/MsgTriggerLauncher__.d.ts +23 -15
  241. package/out/concepts/MsgTriggerLauncher__.js +24 -5
  242. package/out/concepts/MsgTriggerLauncher__.js.map +1 -1
  243. package/out/concepts/Namespace__.d.ts +180 -180
  244. package/out/concepts/Namespace__.js +33 -34
  245. package/out/concepts/Namespace__.js.map +1 -1
  246. package/out/concepts/NewComposite__.d.ts +49 -48
  247. package/out/concepts/NewComposite__.js +164 -49
  248. package/out/concepts/NewComposite__.js.map +1 -1
  249. package/out/concepts/NewList__.d.ts +19 -18
  250. package/out/concepts/NewList__.js +29 -12
  251. package/out/concepts/NewList__.js.map +1 -1
  252. package/out/concepts/NewMap__.d.ts +34 -33
  253. package/out/concepts/NewMap__.js +81 -72
  254. package/out/concepts/NewMap__.js.map +1 -1
  255. package/out/concepts/New__.js +6 -5
  256. package/out/concepts/New__.js.map +1 -1
  257. package/out/concepts/NullLiteral__.js +6 -5
  258. package/out/concepts/NullLiteral__.js.map +1 -1
  259. package/out/concepts/NumericLiteral__.d.ts +4 -3
  260. package/out/concepts/NumericLiteral__.js +15 -8
  261. package/out/concepts/NumericLiteral__.js.map +1 -1
  262. package/out/concepts/OqlQueryComponent__.d.ts +4 -3
  263. package/out/concepts/OqlQueryComponent__.js +25 -16
  264. package/out/concepts/OqlQueryComponent__.js.map +1 -1
  265. package/out/concepts/OverriddenLogic__.d.ts +79 -79
  266. package/out/concepts/OverriddenLogic__.js +79 -58
  267. package/out/concepts/OverriddenLogic__.js.map +1 -1
  268. package/out/concepts/Param__.d.ts +6 -5
  269. package/out/concepts/Param__.js +66 -29
  270. package/out/concepts/Param__.js.map +1 -1
  271. package/out/concepts/Point__.js +4 -3
  272. package/out/concepts/Point__.js.map +1 -1
  273. package/out/concepts/ProcessComponent__.d.ts +30 -30
  274. package/out/concepts/ProcessComponent__.js +8 -7
  275. package/out/concepts/ProcessComponent__.js.map +1 -1
  276. package/out/concepts/ProcessElement__.d.ts +96 -96
  277. package/out/concepts/ProcessElement__.js +34 -34
  278. package/out/concepts/ProcessElement__.js.map +1 -1
  279. package/out/concepts/ProcessOutcome__.js +6 -5
  280. package/out/concepts/ProcessOutcome__.js.map +1 -1
  281. package/out/concepts/ProcessOutcomes__.js +6 -5
  282. package/out/concepts/ProcessOutcomes__.js.map +1 -1
  283. package/out/concepts/Process__.d.ts +75 -75
  284. package/out/concepts/Process__.js +33 -30
  285. package/out/concepts/Process__.js.map +1 -1
  286. package/out/concepts/QueryAggregateExpression__.d.ts +3 -3
  287. package/out/concepts/QueryAggregateExpression__.js +8 -7
  288. package/out/concepts/QueryAggregateExpression__.js.map +1 -1
  289. package/out/concepts/QueryFieldExpression__.js +7 -6
  290. package/out/concepts/QueryFieldExpression__.js.map +1 -1
  291. package/out/concepts/QueryFromExpression__.d.ts +8 -8
  292. package/out/concepts/QueryFromExpression__.js +8 -7
  293. package/out/concepts/QueryFromExpression__.js.map +1 -1
  294. package/out/concepts/QueryGroupByExpression__.d.ts +3 -3
  295. package/out/concepts/QueryGroupByExpression__.js +9 -10
  296. package/out/concepts/QueryGroupByExpression__.js.map +1 -1
  297. package/out/concepts/QueryJoinExpression__.d.ts +23 -23
  298. package/out/concepts/QueryJoinExpression__.js +11 -10
  299. package/out/concepts/QueryJoinExpression__.js.map +1 -1
  300. package/out/concepts/QueryLimitExpression__.d.ts +6 -6
  301. package/out/concepts/QueryLimitExpression__.js +9 -8
  302. package/out/concepts/QueryLimitExpression__.js.map +1 -1
  303. package/out/concepts/QueryOrderByExpression__.d.ts +6 -6
  304. package/out/concepts/QueryOrderByExpression__.js +9 -8
  305. package/out/concepts/QueryOrderByExpression__.js.map +1 -1
  306. package/out/concepts/QuerySelectExpression__.d.ts +30 -30
  307. package/out/concepts/QuerySelectExpression__.js +9 -8
  308. package/out/concepts/QuerySelectExpression__.js.map +1 -1
  309. package/out/concepts/Rect__.js +4 -3
  310. package/out/concepts/Rect__.js.map +1 -1
  311. package/out/concepts/Return__.d.ts +4 -3
  312. package/out/concepts/Return__.js +37 -18
  313. package/out/concepts/Return__.js.map +1 -1
  314. package/out/concepts/Role__.js +9 -9
  315. package/out/concepts/Role__.js.map +1 -1
  316. package/out/concepts/SelectMembers__.d.ts +18 -18
  317. package/out/concepts/SelectMembers__.js +10 -9
  318. package/out/concepts/SelectMembers__.js.map +1 -1
  319. package/out/concepts/Slot__.d.ts +3 -3
  320. package/out/concepts/Slot__.js +6 -5
  321. package/out/concepts/Slot__.js.map +1 -1
  322. package/out/concepts/SqlQueryComponent__.d.ts +4 -3
  323. package/out/concepts/SqlQueryComponent__.js +21 -12
  324. package/out/concepts/SqlQueryComponent__.js.map +1 -1
  325. package/out/concepts/Start__.js +6 -5
  326. package/out/concepts/Start__.js.map +1 -1
  327. package/out/concepts/StringInterpolation__.d.ts +16 -15
  328. package/out/concepts/StringInterpolation__.js +37 -14
  329. package/out/concepts/StringInterpolation__.js.map +1 -1
  330. package/out/concepts/StringLiteral__.d.ts +1 -0
  331. package/out/concepts/StringLiteral__.js +13 -8
  332. package/out/concepts/StringLiteral__.js.map +1 -1
  333. package/out/concepts/StructureProperty__.d.ts +4 -3
  334. package/out/concepts/StructureProperty__.js +22 -9
  335. package/out/concepts/StructureProperty__.js.map +1 -1
  336. package/out/concepts/Structure__.d.ts +31 -30
  337. package/out/concepts/Structure__.js +27 -15
  338. package/out/concepts/Structure__.js.map +1 -1
  339. package/out/concepts/SwitchCase__.d.ts +12 -11
  340. package/out/concepts/SwitchCase__.js +69 -31
  341. package/out/concepts/SwitchCase__.js.map +1 -1
  342. package/out/concepts/SwitchStatement__.d.ts +9 -8
  343. package/out/concepts/SwitchStatement__.js +27 -7
  344. package/out/concepts/SwitchStatement__.js.map +1 -1
  345. package/out/concepts/Theme__.js +4 -3
  346. package/out/concepts/Theme__.js.map +1 -1
  347. package/out/concepts/Transactional__.js +4 -3
  348. package/out/concepts/Transactional__.js.map +1 -1
  349. package/out/concepts/TriggerEvent__.d.ts +15 -15
  350. package/out/concepts/TriggerEvent__.js +6 -5
  351. package/out/concepts/TriggerEvent__.js.map +1 -1
  352. package/out/concepts/TriggerLauncher__.d.ts +15 -10
  353. package/out/concepts/TriggerLauncher__.js +54 -32
  354. package/out/concepts/TriggerLauncher__.js.map +1 -1
  355. package/out/concepts/TypeAnnotation__.d.ts +28 -27
  356. package/out/concepts/TypeAnnotation__.js +144 -124
  357. package/out/concepts/TypeAnnotation__.js.map +1 -1
  358. package/out/concepts/TypeParam__.d.ts +1 -0
  359. package/out/concepts/TypeParam__.js +12 -5
  360. package/out/concepts/TypeParam__.js.map +1 -1
  361. package/out/concepts/UnaryExpression__.d.ts +4 -3
  362. package/out/concepts/UnaryExpression__.js +31 -20
  363. package/out/concepts/UnaryExpression__.js.map +1 -1
  364. package/out/concepts/Unparsed__.d.ts +1 -0
  365. package/out/concepts/Unparsed__.js +12 -5
  366. package/out/concepts/Unparsed__.js.map +1 -1
  367. package/out/concepts/UseComponent__.js +4 -3
  368. package/out/concepts/UseComponent__.js.map +1 -1
  369. package/out/concepts/ValidationRule__.d.ts +14 -14
  370. package/out/concepts/ValidationRule__.js +19 -17
  371. package/out/concepts/ValidationRule__.js.map +1 -1
  372. package/out/concepts/Variable__.d.ts +4 -3
  373. package/out/concepts/Variable__.js +39 -23
  374. package/out/concepts/Variable__.js.map +1 -1
  375. package/out/concepts/ViewBlock__.js +4 -3
  376. package/out/concepts/ViewBlock__.js.map +1 -1
  377. package/out/concepts/ViewComponent__.d.ts +90 -90
  378. package/out/concepts/ViewComponent__.js +16 -15
  379. package/out/concepts/ViewComponent__.js.map +1 -1
  380. package/out/concepts/ViewElement__.d.ts +91 -86
  381. package/out/concepts/ViewElement__.js +218 -146
  382. package/out/concepts/ViewElement__.js.map +1 -1
  383. package/out/concepts/View__.d.ts +92 -92
  384. package/out/concepts/View__.js +135 -60
  385. package/out/concepts/View__.js.map +1 -1
  386. package/out/concepts/WhileStatement__.d.ts +12 -11
  387. package/out/concepts/WhileStatement__.js +46 -23
  388. package/out/concepts/WhileStatement__.js.map +1 -1
  389. package/out/concepts/index__.d.ts +2 -1
  390. package/out/concepts/index__.js +2 -1
  391. package/out/concepts/index__.js.map +1 -1
  392. package/out/concepts/types__.d.ts +2 -1
  393. package/out/decorators/index.d.ts +1 -1
  394. package/out/decorators/index.js +20 -7
  395. package/out/decorators/index.js.map +1 -1
  396. package/out/decorators/promise.d.ts +7 -0
  397. package/out/decorators/promise.js +28 -0
  398. package/out/decorators/promise.js.map +1 -0
  399. package/out/enums/KEYWORDS.js.map +1 -1
  400. package/out/enums/LEVEL_NAME_MAP.js.map +1 -1
  401. package/out/generator/compileComponent.js.map +1 -1
  402. package/out/generator/genBundleFiles.d.ts +4 -1
  403. package/out/generator/genBundleFiles.js +15 -11
  404. package/out/generator/genBundleFiles.js.map +1 -1
  405. package/out/generator/genHash.js.map +1 -1
  406. package/out/generator/genMetaData.js +12 -8
  407. package/out/generator/genMetaData.js.map +1 -1
  408. package/out/generator/genReleaseBody.js +33 -35
  409. package/out/generator/genReleaseBody.js.map +1 -1
  410. package/out/generator/microApp.js +2 -1
  411. package/out/generator/microApp.js.map +1 -1
  412. package/out/generator/permission.js +16 -14
  413. package/out/generator/permission.js.map +1 -1
  414. package/out/generator/styleReplacer.js +4 -7
  415. package/out/generator/styleReplacer.js.map +1 -1
  416. package/out/index.d.ts +0 -2
  417. package/out/index.js +0 -3
  418. package/out/index.js.map +1 -1
  419. package/out/manager/diagnostic.d.ts +1 -1
  420. package/out/manager/diagnostic.js.map +1 -1
  421. package/out/manager/stepRecorder.js +13 -9
  422. package/out/manager/stepRecorder.js.map +1 -1
  423. package/out/natural/RequirementAnalyzer.d.ts +22 -0
  424. package/out/natural/RequirementAnalyzer.js +196 -0
  425. package/out/natural/RequirementAnalyzer.js.map +1 -0
  426. package/out/natural/RequirementExecutor.d.ts +51 -0
  427. package/out/natural/RequirementExecutor.js +692 -0
  428. package/out/natural/RequirementExecutor.js.map +1 -0
  429. package/out/natural/componentData.d.ts +31 -0
  430. package/out/natural/componentData.js +85 -0
  431. package/out/natural/componentData.js.map +1 -0
  432. package/out/natural/genNaturalTS.d.ts +3 -0
  433. package/out/natural/genNaturalTS.js +76 -0
  434. package/out/natural/genNaturalTS.js.map +1 -0
  435. package/out/natural/index.d.ts +4 -0
  436. package/out/natural/index.js +21 -0
  437. package/out/natural/index.js.map +1 -0
  438. package/out/natural/knowledgeMap.d.ts +4 -0
  439. package/out/natural/knowledgeMap.js +40 -0
  440. package/out/natural/knowledgeMap.js.map +1 -0
  441. package/out/natural/naslStdlibMap.d.ts +2 -0
  442. package/out/natural/naslStdlibMap.js +26 -0
  443. package/out/natural/naslStdlibMap.js.map +1 -0
  444. package/out/natural/transformTSCode.d.ts +7 -0
  445. package/out/natural/transformTSCode.js +760 -0
  446. package/out/natural/transformTSCode.js.map +1 -0
  447. package/out/sentry/index.d.ts +2 -1
  448. package/out/sentry/index.js.map +1 -1
  449. package/out/server/createUiTs.js +28 -16
  450. package/out/server/createUiTs.js.map +1 -1
  451. package/out/server/entity2LogicNamespace.js +24 -22
  452. package/out/server/entity2LogicNamespace.js.map +1 -1
  453. package/out/server/event.js.map +1 -1
  454. package/out/server/extendBaseNode.js +55 -70
  455. package/out/server/extendBaseNode.js.map +1 -1
  456. package/out/server/formatTsUtils.js +46 -50
  457. package/out/server/formatTsUtils.js.map +1 -1
  458. package/out/server/getConnector.d.ts +3 -3
  459. package/out/server/getConnector.js +7 -8
  460. package/out/server/getConnector.js.map +1 -1
  461. package/out/server/getExtensionModules.js +2 -2
  462. package/out/server/getExtensionModules.js.map +1 -1
  463. package/out/server/getFunctions.js.map +1 -1
  464. package/out/server/getInterfaces.js.map +1 -1
  465. package/out/server/getLogging.js.map +1 -1
  466. package/out/server/getLogics.d.ts +1 -1
  467. package/out/server/getLogics.js +34 -16
  468. package/out/server/getLogics.js.map +1 -1
  469. package/out/server/getMemberIdentifier.js +13 -10
  470. package/out/server/getMemberIdentifier.js.map +1 -1
  471. package/out/server/getProcessComponents.js.map +1 -1
  472. package/out/server/getProcesses.js +21 -29
  473. package/out/server/getProcesses.js.map +1 -1
  474. package/out/server/getScope.js.map +1 -1
  475. package/out/server/getValidates.js.map +1 -1
  476. package/out/server/index.js +0 -1
  477. package/out/server/index.js.map +1 -1
  478. package/out/server/naslServer.d.ts +99 -94
  479. package/out/server/naslServer.js +485 -465
  480. package/out/server/naslServer.js.map +1 -1
  481. package/out/server/naslStdlibMap.js +4 -2
  482. package/out/server/naslStdlibMap.js.map +1 -1
  483. package/out/server/process2LogicNamespace.js.map +1 -1
  484. package/out/server/translator.d.ts +1 -1
  485. package/out/server/translator.js +52 -47
  486. package/out/server/translator.js.map +1 -1
  487. package/out/service/storage/init.d.ts +15 -1
  488. package/out/service/storage/init.js +65 -56
  489. package/out/service/storage/init.js.map +1 -1
  490. package/out/templator/genCallComponentLogic.js +1 -2
  491. package/out/templator/genCallComponentLogic.js.map +1 -1
  492. package/out/templator/genCreateBlock.js +13 -8
  493. package/out/templator/genCreateBlock.js.map +1 -1
  494. package/out/templator/genCurdEditMultipleKeyBlock.js +19 -10
  495. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  496. package/out/templator/genCurdMultipleKeyBlock.js +22 -26
  497. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  498. package/out/templator/genEditTableBlock.js +11 -12
  499. package/out/templator/genEditTableBlock.js.map +1 -1
  500. package/out/templator/genEnumSelectBlock.js +1 -1
  501. package/out/templator/genEnumSelectBlock.js.map +1 -1
  502. package/out/templator/genGetBlock.js +2 -2
  503. package/out/templator/genGetBlock.js.map +1 -1
  504. package/out/templator/genGridViewBlock.js +10 -14
  505. package/out/templator/genGridViewBlock.js.map +1 -1
  506. package/out/templator/genListViewBlock.js +4 -7
  507. package/out/templator/genListViewBlock.js.map +1 -1
  508. package/out/templator/genQueryComponent.js +22 -15
  509. package/out/templator/genQueryComponent.js.map +1 -1
  510. package/out/templator/genSelectBlock.js +12 -33
  511. package/out/templator/genSelectBlock.js.map +1 -1
  512. package/out/templator/genTableBlock.js +8 -10
  513. package/out/templator/genTableBlock.js.map +1 -1
  514. package/out/templator/genUpdateBlock.js +12 -7
  515. package/out/templator/genUpdateBlock.js.map +1 -1
  516. package/out/templator/index.d.ts +4 -2
  517. package/out/templator/index.js +2 -2
  518. package/out/templator/index.js.map +1 -1
  519. package/out/templator/utils.d.ts +2 -2
  520. package/out/templator/utils.js +21 -22
  521. package/out/templator/utils.js.map +1 -1
  522. package/out/translator/index.js +27 -28
  523. package/out/translator/index.js.map +1 -1
  524. package/out/utils/index.d.ts +2 -1
  525. package/out/utils/index.js +8 -14
  526. package/out/utils/index.js.map +1 -1
  527. package/out/utils/logger.js.map +1 -1
  528. package/out/utils/sortTsString.js +3 -1
  529. package/out/utils/sortTsString.js.map +1 -1
  530. package/out/utils/string.js +8 -11
  531. package/out/utils/string.js.map +1 -1
  532. package/out/utils/time-slicing.d.ts +41 -0
  533. package/out/utils/time-slicing.js +81 -0
  534. package/out/utils/time-slicing.js.map +1 -0
  535. package/out/utils/traverse.js +4 -6
  536. package/out/utils/traverse.js.map +1 -1
  537. package/package.json +11 -7
  538. package/sandbox/stdlib/nasl.auth.ts +49 -46
  539. package/sandbox/stdlib/nasl.http.ts +29 -31
  540. package/sandbox/stdlib/nasl.ui.definition.ts +13 -1
  541. package/sandbox-natural/stdlib/nasl.core.ts +36 -0
  542. package/sandbox-natural/stdlib/nasl.oql.ts +8 -0
  543. package/sandbox-natural/stdlib/nasl.ui.ts +56 -0
  544. package/sandbox-natural/stdlib/nasl.util.ts +26 -0
  545. package/sandbox-natural/tsconfig.json +12 -0
  546. package/src/automate/upgrader/2.20.js +1 -1
  547. package/src/bak/translator.js +92 -99
  548. package/src/breakpoint/generator/AfterStartNode.ts +19 -17
  549. package/src/breakpoint/generator/BeforeEndNode.ts +17 -17
  550. package/src/breakpoint/generator/BreakpointNode.ts +243 -195
  551. package/src/breakpoint/generator/CallbackNode.ts +20 -0
  552. package/src/breakpoint/generator/FragmentNode.ts +14 -0
  553. package/src/breakpoint/generator/index.ts +107 -80
  554. package/src/breakpoint/shared/constants.ts +59 -53
  555. package/src/breakpoint/shared/operations.ts +6 -6
  556. package/src/breakpoint/shared/socket.ts +277 -223
  557. package/src/breakpoint/shared/utils.ts +166 -146
  558. package/src/breakpoint/store/core.ts +326 -297
  559. package/src/breakpoint/store/dock.ts +103 -103
  560. package/src/breakpoint/types/index.d.ts +11 -11
  561. package/src/common/BaseNode.ts +1102 -1024
  562. package/src/common/Command.ts +46 -16
  563. package/src/common/ComponentAPI.ts +72 -72
  564. package/src/common/EventEmitter.ts +80 -76
  565. package/src/common/Messager.ts +223 -224
  566. package/src/common/asyncFuncMap.ts +12 -12
  567. package/src/concepts/Abort__.ts +53 -60
  568. package/src/concepts/Anchor__.ts +158 -149
  569. package/src/concepts/AnonymousFunction__.ts +584 -551
  570. package/src/concepts/App__.ts +4278 -3671
  571. package/src/concepts/Argument__.ts +234 -210
  572. package/src/concepts/Assignee__.ts +680 -656
  573. package/src/concepts/AssignmentLine__.ts +80 -84
  574. package/src/concepts/Assignment__.ts +275 -264
  575. package/src/concepts/Attribute__.ts +183 -184
  576. package/src/concepts/AuthInterface__.ts +61 -63
  577. package/src/concepts/AuthLogicForCallInterface__.ts +540 -511
  578. package/src/concepts/AuthLogic__.ts +210 -194
  579. package/src/concepts/BackendVariable__.ts +414 -415
  580. package/src/concepts/Backend__.ts +317 -303
  581. package/src/concepts/BatchAssignment__.ts +987 -939
  582. package/src/concepts/BinaryExpression__.ts +370 -341
  583. package/src/concepts/BindAttribute__.ts +1057 -1007
  584. package/src/concepts/BindDirective__.ts +540 -542
  585. package/src/concepts/BindEvent__.ts +992 -911
  586. package/src/concepts/BindStyle__.ts +442 -451
  587. package/src/concepts/BooleanLiteral__.ts +89 -90
  588. package/src/concepts/CallAuthInterface__.ts +458 -433
  589. package/src/concepts/CallConnector__.ts +209 -164
  590. package/src/concepts/CallFunction__.ts +600 -600
  591. package/src/concepts/CallInterface__.ts +752 -721
  592. package/src/concepts/CallLogic__.ts +1324 -1200
  593. package/src/concepts/CallQueryComponent__.ts +1580 -1501
  594. package/src/concepts/Comment__.ts +69 -68
  595. package/src/concepts/CompletionProperty__.ts +250 -255
  596. package/src/concepts/ConfigGroup__.ts +312 -296
  597. package/src/concepts/ConfigPropertyValue__.ts +92 -93
  598. package/src/concepts/ConfigProperty__.ts +374 -357
  599. package/src/concepts/Configuration__.ts +288 -276
  600. package/src/concepts/Connection__.ts +426 -0
  601. package/src/concepts/ConnectorTrigger__.ts +146 -142
  602. package/src/concepts/Connector__.ts +1090 -1048
  603. package/src/concepts/Constant__.ts +226 -219
  604. package/src/concepts/DataElement__.ts +108 -115
  605. package/src/concepts/DataSource__.ts +508 -472
  606. package/src/concepts/DatabaseTypeAnnotation__.ts +53 -59
  607. package/src/concepts/Destination__.ts +808 -746
  608. package/src/concepts/End__.ts +85 -89
  609. package/src/concepts/EntityIndex__.ts +206 -202
  610. package/src/concepts/EntityProperty__.ts +825 -791
  611. package/src/concepts/Entity__.ts +921 -864
  612. package/src/concepts/EnumItem__.ts +133 -125
  613. package/src/concepts/Enum__.ts +347 -337
  614. package/src/concepts/Event__.ts +305 -292
  615. package/src/concepts/ExternalDestination__.ts +269 -280
  616. package/src/concepts/ForEachStatement__.ts +583 -531
  617. package/src/concepts/FrontendLibrary__.ts +507 -485
  618. package/src/concepts/FrontendVariable__.ts +44 -49
  619. package/src/concepts/Frontend__.ts +1239 -1187
  620. package/src/concepts/Function__.ts +1110 -1045
  621. package/src/concepts/Identifier__.ts +276 -272
  622. package/src/concepts/IfStatement__.ts +467 -436
  623. package/src/concepts/Integration__.ts +136 -137
  624. package/src/concepts/InterfaceParam__.ts +239 -238
  625. package/src/concepts/Interface__.ts +969 -948
  626. package/src/concepts/JSBlock__.ts +83 -83
  627. package/src/concepts/JavaLogic__.ts +101 -106
  628. package/src/concepts/LogicItem__.ts +307 -237
  629. package/src/concepts/Logic__.ts +2301 -2088
  630. package/src/concepts/MatchCase__.ts +886 -779
  631. package/src/concepts/Match__.ts +728 -659
  632. package/src/concepts/MemberExpression__.ts +330 -311
  633. package/src/concepts/MicroApp__.ts +91 -97
  634. package/src/concepts/Module__.ts +2590 -2278
  635. package/src/concepts/MsgTriggerEvent__.ts +297 -281
  636. package/src/concepts/MsgTriggerLauncher__.ts +286 -256
  637. package/src/concepts/Namespace__.ts +2579 -2466
  638. package/src/concepts/NewComposite__.ts +1487 -1350
  639. package/src/concepts/NewList__.ts +464 -450
  640. package/src/concepts/NewMap__.ts +691 -674
  641. package/src/concepts/New__.ts +42 -49
  642. package/src/concepts/NullLiteral__.ts +66 -72
  643. package/src/concepts/NumericLiteral__.ts +169 -169
  644. package/src/concepts/OqlQueryComponent__.ts +282 -279
  645. package/src/concepts/OverriddenLogic__.ts +2142 -2097
  646. package/src/concepts/Param__.ts +500 -442
  647. package/src/concepts/Point__.ts +53 -59
  648. package/src/concepts/ProcessComponent__.ts +497 -475
  649. package/src/concepts/ProcessElement__.ts +1852 -1780
  650. package/src/concepts/ProcessOutcome__.ts +59 -64
  651. package/src/concepts/ProcessOutcomes__.ts +59 -64
  652. package/src/concepts/Process__.ts +1491 -1428
  653. package/src/concepts/QueryAggregateExpression__.ts +135 -142
  654. package/src/concepts/QueryFieldExpression__.ts +138 -142
  655. package/src/concepts/QueryFromExpression__.ts +246 -254
  656. package/src/concepts/QueryGroupByExpression__.ts +130 -136
  657. package/src/concepts/QueryJoinExpression__.ts +441 -438
  658. package/src/concepts/QueryLimitExpression__.ts +159 -166
  659. package/src/concepts/QueryOrderByExpression__.ts +173 -180
  660. package/src/concepts/QuerySelectExpression__.ts +464 -439
  661. package/src/concepts/Rect__.ts +73 -79
  662. package/src/concepts/Return__.ts +366 -345
  663. package/src/concepts/Role__.ts +146 -147
  664. package/src/concepts/SelectMembers__.ts +358 -350
  665. package/src/concepts/Slot__.ts +152 -153
  666. package/src/concepts/SqlQueryComponent__.ts +230 -228
  667. package/src/concepts/Start__.ts +45 -52
  668. package/src/concepts/StringInterpolation__.ts +323 -296
  669. package/src/concepts/StringLiteral__.ts +113 -115
  670. package/src/concepts/StructureProperty__.ts +306 -295
  671. package/src/concepts/Structure__.ts +615 -578
  672. package/src/concepts/SwitchCase__.ts +326 -290
  673. package/src/concepts/SwitchStatement__.ts +236 -229
  674. package/src/concepts/Theme__.ts +64 -68
  675. package/src/concepts/Transactional__.ts +159 -153
  676. package/src/concepts/TriggerEvent__.ts +285 -274
  677. package/src/concepts/TriggerLauncher__.ts +232 -196
  678. package/src/concepts/TypeAnnotation__.ts +1049 -1011
  679. package/src/concepts/TypeParam__.ts +48 -50
  680. package/src/concepts/UnaryExpression__.ts +163 -153
  681. package/src/concepts/Unparsed__.ts +81 -82
  682. package/src/concepts/UseComponent__.ts +53 -59
  683. package/src/concepts/ValidationRule__.ts +524 -544
  684. package/src/concepts/Variable__.ts +419 -397
  685. package/src/concepts/ViewBlock__.ts +58 -64
  686. package/src/concepts/ViewComponent__.ts +1323 -1261
  687. package/src/concepts/ViewElement__.ts +2538 -2350
  688. package/src/concepts/View__.ts +2447 -2268
  689. package/src/concepts/WhileStatement__.ts +293 -272
  690. package/src/concepts/index__.ts +2 -1
  691. package/src/concepts/types__.ts +123 -121
  692. package/src/decorators/index.ts +75 -77
  693. package/src/decorators/promise.ts +28 -0
  694. package/src/enums/KEYWORDS.ts +1228 -1228
  695. package/src/enums/LEVEL_NAME_MAP.ts +24 -24
  696. package/src/generator/compileComponent.ts +10 -10
  697. package/src/generator/genBundleFiles.ts +300 -291
  698. package/src/generator/genHash.ts +2 -2
  699. package/src/generator/genMetaData.ts +280 -261
  700. package/src/generator/genReleaseBody.ts +312 -291
  701. package/src/generator/icestark.ts +1 -1
  702. package/src/generator/microApp.ts +17 -20
  703. package/src/generator/permission.ts +227 -218
  704. package/src/generator/qiankun.ts +1 -1
  705. package/src/generator/styleReplacer.ts +28 -31
  706. package/src/index.ts +0 -3
  707. package/src/manager/diagnostic.ts +84 -82
  708. package/src/manager/stepRecorder.ts +106 -94
  709. package/src/natural/RequirementAnalyzer.ts +208 -0
  710. package/src/natural/RequirementExecutor.ts +685 -0
  711. package/src/natural/componentData.ts +81 -0
  712. package/src/natural/genNaturalTS.ts +77 -0
  713. package/src/natural/index.ts +4 -0
  714. package/src/natural/knowledgeMap.ts +39 -0
  715. package/src/natural/naslStdlibMap.ts +24 -0
  716. package/src/natural/transformTSCode.ts +692 -0
  717. package/src/sentry/index.ts +109 -104
  718. package/src/server/createUiTs.ts +190 -184
  719. package/src/server/entity2LogicNamespace.ts +379 -359
  720. package/src/server/event.js +145 -145
  721. package/src/server/extendBaseNode.ts +461 -456
  722. package/src/server/formatTsUtils.ts +712 -713
  723. package/src/server/getConnector.ts +33 -33
  724. package/src/server/getExtensionModules.ts +23 -22
  725. package/src/server/getFunctions.ts +6 -6
  726. package/src/server/getInterfaces.ts +38 -37
  727. package/src/server/getLogging.ts +1 -1
  728. package/src/server/getLogics.ts +390 -344
  729. package/src/server/getMemberIdentifier.ts +286 -281
  730. package/src/server/getProcessComponents.ts +2 -2
  731. package/src/server/getProcesses.ts +548 -534
  732. package/src/server/getScope.ts +51 -51
  733. package/src/server/getValidates.ts +3 -3
  734. package/src/server/index.ts +29 -30
  735. package/src/server/naslServer.ts +4302 -4225
  736. package/src/server/naslStdlibMap.ts +43 -41
  737. package/src/server/process2LogicNamespace.ts +97 -97
  738. package/src/server/translator.ts +740 -746
  739. package/src/service/storage/init.ts +761 -728
  740. package/src/templator/genCallComponentLogic.ts +14 -15
  741. package/src/templator/genCreateBlock.ts +257 -229
  742. package/src/templator/genCurdEditMultipleKeyBlock.ts +332 -316
  743. package/src/templator/genCurdMultipleKeyBlock.ts +501 -473
  744. package/src/templator/genEditTableBlock.ts +192 -182
  745. package/src/templator/genEnumSelectBlock.ts +13 -7
  746. package/src/templator/genGetBlock.ts +57 -55
  747. package/src/templator/genGridViewBlock.ts +191 -201
  748. package/src/templator/genListViewBlock.ts +59 -64
  749. package/src/templator/genQueryComponent.ts +337 -287
  750. package/src/templator/genSelectBlock.ts +276 -285
  751. package/src/templator/genTableBlock.ts +157 -160
  752. package/src/templator/genUpdateBlock.ts +269 -255
  753. package/src/templator/index.ts +4 -4
  754. package/src/templator/utils.ts +490 -464
  755. package/src/translator/index.ts +84 -84
  756. package/src/translator/lsp.ts +22 -22
  757. package/src/translator/tsp.ts +6 -6
  758. package/src/utils/index.ts +115 -117
  759. package/src/utils/logger.ts +3 -4
  760. package/src/utils/sortTsString.ts +34 -32
  761. package/src/utils/string.ts +47 -48
  762. package/src/utils/time-slicing.ts +109 -0
  763. package/src/utils/traverse.ts +114 -126
  764. package/test/concepts/match/__snapshots__/toEmbeddedTS.spec.ts.snap +66 -0
  765. package/test/concepts/match/__snapshots__/toJS.spec.ts.snap +40 -0
  766. package/test/concepts/match/constant.ts +5 -0
  767. package/test/concepts/match/fixtures/isExpression.json +259 -0
  768. package/test/concepts/match/fixtures/lastBodyIf.json +268 -0
  769. package/test/concepts/match/fixtures/noExpression.json +176 -0
  770. package/test/concepts/match/toEmbeddedTS.spec.ts +14 -0
  771. package/test/concepts/match/toJS.spec.ts +14 -0
  772. package/test/setup.ts +2 -1
  773. package/ts-worker/src/index.js +0 -2
  774. package/tsconfig.json +21 -21
@@ -1,14 +1,14 @@
1
- import { App, LogicItem, Logic, Module, View, ViewElement, Argument, SelectMembers, SynatxNode, BindDirective } from '../../concepts';
1
+ import { App, LogicItem, Logic, Module, View, ViewElement, Argument, SelectMembers, SynatxNode, BindDirective, CallLogic } from '../../concepts';
2
2
  import { addBreakpointNodesFromApp } from '../../breakpoint';
3
3
  import { getConceptConstructor } from '../../decorators';
4
4
  import { config } from '../../config';
5
- import Vue from 'vue';
6
5
  import storageService from './service';
7
6
  import { v4 as uuidv4 } from 'uuid';
8
7
  import stepRecorder from '../../manager/stepRecorder';
9
8
  /// #if !process.env.NODE_ENV || process.env.BUILD_TARGET === 'node'
10
9
  import * as fs from 'fs-extra';
11
10
  import * as jsoner from './jsoner';
11
+ import type { NaslServer } from 'src/server/naslServer';
12
12
  /// #endif
13
13
 
14
14
  export const batchQuery = storageService.batchQuery;
@@ -20,661 +20,696 @@ let tabTimestamp: string;
20
20
  export const databaseTypes = storageService.databaseTypes;
21
21
 
22
22
  function getLogic(key: string, app: any, diffLogicList: string[]) {
23
- if (!diffLogicList.includes(key)) {
24
- diffLogicList.push(key);
25
- if (key.startsWith('app')) {
26
- const index = key.lastIndexOf('.');
27
- const name = key.slice(index + 1);
28
- const logic = app.logics.find((item: any) => item.name === name);
29
- if (logic && logic.body && logic.body.length > 2) {
30
- logic.body.map((item: any) => getStatement(item, app, diffLogicList));
31
- }
32
- } else if (key.startsWith('extensions')) {
33
- const _pathArr = key.split('.');
34
- const _name = _pathArr[1];
35
- const _path = _pathArr[3];
36
- const _list = app.dependencies;
37
- const _module = _list.find((it: Module) => {
38
- const name = it.name.replaceAll('-', '_');
39
- return name === _name;
40
- });
41
- const logic = _module?.logics?.find((item: Logic) => item.name === _path);
42
- if (logic && logic.body && logic.body.length > 2) {
43
- logic.body.map((item: any) => getStatement(item, app, diffLogicList));
44
- }
45
- }
23
+ if (!diffLogicList.includes(key)) {
24
+ diffLogicList.push(key);
25
+ if (key.startsWith('app')) {
26
+ const index = key.lastIndexOf('.');
27
+ const name = key.slice(index + 1);
28
+ const logic = app.logics.find((item: any) => item.name === name);
29
+ if (logic && logic.body && logic.body.length > 2) {
30
+ logic.body.map((item: any) => getStatement(item, app, diffLogicList));
31
+ }
32
+ } else if (key.startsWith('extensions')) {
33
+ const _pathArr = key.split('.');
34
+ const _name = _pathArr[1];
35
+ const _path = _pathArr[3];
36
+ const _list = app.dependencies;
37
+ const _module = _list.find((it: Module) => {
38
+ const name = it.name.replaceAll('-', '_');
39
+ return name === _name;
40
+ });
41
+ const logic = _module?.logics?.find((item: Logic) => item.name === _path);
42
+ if (logic && logic.body && logic.body.length > 2) {
43
+ logic.body.map((item: any) => getStatement(item, app, diffLogicList));
44
+ }
46
45
  }
46
+ }
47
47
  }
48
48
  /* 获取LogicITEM */
49
49
  function getStatement(state: any, app: any, diffLogicList: string[]) {
50
- let logicItems = [];
51
- switch (state.concept) {
52
- case 'Assignment':
53
- logicItems = [state.left, state.right];
54
- break;
55
- case 'IfStatement':
56
- logicItems = [...state.consequent, ...state.alternate];
57
- break;
58
- case 'ForEachStatement':
59
- logicItems = [...state.body, state.each, state.start, state.end];
60
- break;
61
- case 'Match':
62
- logicItems = [state.expression, ...state.cases.map(getStatement).flat(1)];
63
- break;
64
- case 'MatchCase':
65
- logicItems = [...state.patterns, ...state.body];
66
- break;
67
- case 'SwitchStatement':
68
- logicItems = state.cases.map(getStatement).flat(1);
69
- break;
70
- case 'SwitchCase':
71
- logicItems = [state.test, ...state.consequent];
72
- break;
73
- case 'WhileStatement':
74
- logicItems = [state.test, ...state.body];
75
- break;
76
- case 'CallLogic':
77
- logicItems = state.arguments?.map((item: Argument) => item.expression);
78
- getLogic(state.calleewholeKey, app, diffLogicList);
79
- break;
80
- case 'CallFunction':
81
- logicItems = state.arguments?.map((item: Argument) => item.expression);
82
- break;
83
- case 'CallInterface':
84
- logicItems = state.arguments?.map((item: Argument) => item.expression);
85
- break;
86
- case 'ExternalDestination':
87
- logicItems = [state.anchor, state.link];
88
- break;
89
- case 'BatchAssignment':
90
- logicItems = [state.left?.expression, ...state.left?.members, ...state.rights.map((item: SelectMembers) => [item?.expression, ...item?.members]).flat(1)];
91
- break;
92
- case 'MemberExpression':
93
- logicItems = [state.object, state.property];
94
- break;
95
- case 'StringInterpolation':
96
- logicItems = [...state.expressions];
97
- break;
98
- case 'NewComposite':
99
- logicItems = [...state.rights.map((item: SelectMembers) => item.expression)];
100
- break;
101
- case 'NewList':
102
- logicItems = [...state.items];
103
- break;
104
- default:
105
- break;
106
- }
107
-
108
- return logicItems.filter((item: LogicItem) => !!item);
50
+ let logicItems = [];
51
+ switch (state.concept) {
52
+ case 'Assignment':
53
+ logicItems = [state.left, state.right];
54
+ break;
55
+ case 'IfStatement':
56
+ logicItems = [...state.consequent, ...state.alternate];
57
+ break;
58
+ case 'ForEachStatement':
59
+ logicItems = [...state.body, state.each, state.start, state.end];
60
+ break;
61
+ case 'Match':
62
+ logicItems = [state.expression, ...state.cases.map(getStatement).flat(1)];
63
+ break;
64
+ case 'MatchCase':
65
+ logicItems = [...state.patterns, ...state.body];
66
+ break;
67
+ case 'SwitchStatement':
68
+ logicItems = state.cases.map(getStatement).flat(1);
69
+ break;
70
+ case 'SwitchCase':
71
+ logicItems = [state.test, ...state.consequent];
72
+ break;
73
+ case 'WhileStatement':
74
+ logicItems = [state.test, ...state.body];
75
+ break;
76
+ case 'CallLogic':
77
+ logicItems = state.arguments?.map((item: Argument) => item.expression);
78
+ getLogic(state.calleewholeKey, app, diffLogicList);
79
+ break;
80
+ case 'CallFunction':
81
+ logicItems = state.arguments?.map((item: Argument) => item.expression);
82
+ break;
83
+ case 'CallInterface':
84
+ logicItems = state.arguments?.map((item: Argument) => item.expression);
85
+ break;
86
+ case 'ExternalDestination':
87
+ logicItems = [state.anchor, state.link];
88
+ break;
89
+ case 'BatchAssignment':
90
+ logicItems = [state.left?.expression, ...state.left?.members, ...state.rights.map((item: SelectMembers) => [item?.expression, ...item?.members]).flat(1)];
91
+ break;
92
+ case 'MemberExpression':
93
+ logicItems = [state.object, state.property];
94
+ break;
95
+ case 'StringInterpolation':
96
+ logicItems = [...state.expressions];
97
+ break;
98
+ case 'NewComposite':
99
+ logicItems = [...state.rights.map((item: SelectMembers) => item.expression)];
100
+ break;
101
+ case 'NewList':
102
+ logicItems = [...state.items];
103
+ break;
104
+ default:
105
+ break;
106
+ }
107
+
108
+ return logicItems.filter((item: LogicItem) => !!item);
109
109
  }
110
110
 
111
111
  /* 小程序影响的服务端发布 */
112
112
  function getMiniAppChange(target: any, obj: any, action: string) {
113
- if (!target.app.miniEnable) {
114
- return false;
115
- }
116
- /* 分端以后需要改 */
117
- const len = target.nodePath?.split('.').length;
118
- if (len > 2) {
119
- return false;
120
- }
121
- if (action === 'delete') {
122
- return true;
123
- } else {
124
- if ('name' in obj || 'title' in obj) {
125
- return true;
126
- }
113
+ if (!target.app.miniEnable) {
114
+ return false;
115
+ }
116
+ /* 分端以后需要改 */
117
+ const len = target.nodePath?.split('.').length;
118
+ if (len > 2) {
119
+ return false;
120
+ }
121
+ if (action === 'delete') {
122
+ return true;
123
+ } else {
124
+ if ('name' in obj || 'title' in obj) {
125
+ return true;
127
126
  }
127
+ }
128
128
  }
129
129
 
130
130
  /**
131
131
  * 执行更新
132
132
  */
133
133
  async function doAction(app: any, actionItem: any) {
134
- let hasFrontEnd = false;
135
- let hasBackEnd = false;
136
- const actionList: any[] = [];
137
- const { list, actionMsg, action } = actionItem || {};
138
- const itemloop = (_i: LogicItem, app: any, diffArr: string[]) => {
139
- const _l = getStatement(_i, app, diffArr);
140
- if (_l.length) {
141
- _l.map((_ii: LogicItem) => itemloop(_ii, app, diffArr));
134
+ let hasFrontEnd = false;
135
+ let hasBackEnd = false;
136
+ const actionList: any[] = [];
137
+ const { list, actionMsg, action } = actionItem || {};
138
+ const itemloop = (_i: LogicItem, app: any, diffArr: string[]) => {
139
+ const _l = getStatement(_i, app, diffArr);
140
+ if (_l.length) {
141
+ _l.map((_ii: LogicItem) => itemloop(_ii, app, diffArr));
142
+ }
143
+ };
144
+ const loopEle = (view: View | ViewElement, checkAuth: boolean) => {
145
+ if (view instanceof View) {
146
+ view?.elements?.forEach((item) => loopEle(item, checkAuth));
147
+ }
148
+ view?.children?.forEach((item) => loopEle(item, checkAuth));
149
+ if (view instanceof ViewElement) {
150
+ if (view.bindEvents.length) {
151
+ const diffArr: string[] = [];
152
+ view.bindEvents.forEach((bindEvent) => {
153
+ bindEvent.logics.forEach((logic) => {
154
+ logic.body.forEach((logicItem) => itemloop(logicItem, app, diffArr));
155
+ });
156
+ });
157
+ const result = diffArr.filter((item) => item.startsWith('app') || item.startsWith('extensions'));
158
+ if (result.length) {
159
+ hasBackEnd = true;
142
160
  }
143
- };
144
- const loopEle = (view: View | ViewElement, checkAuth: boolean) => {
145
- if (view instanceof View) {
146
- view?.elements?.forEach((item) => loopEle(item, checkAuth));
161
+ }
162
+ if (view.tag === 'u-uploader' || view.tag === 'van-uploader') {
163
+ const bute = view?.bindAttrs.find((item) => item.name === 'url');
164
+ const needUpdateBackEnd = bute?.value?.endsWith('/import') || bute?.value?.includes('/upload/');
165
+ if (checkAuth) {
166
+ if (needUpdateBackEnd && !view.view.parentAuth) {
167
+ hasBackEnd = true;
168
+ }
169
+ } else {
170
+ if (needUpdateBackEnd) {
171
+ hasBackEnd = true;
172
+ }
147
173
  }
148
- view?.children?.forEach((item) => loopEle(item, checkAuth));
149
- if (view instanceof ViewElement) {
150
- if (view.bindEvents.length) {
151
- const diffArr: string[] = [];
152
- view.bindEvents.forEach((bindEvent) => {
153
- bindEvent.logics.forEach((logic) => {
154
- logic.body.forEach((logicItem) => itemloop(logicItem, app, diffArr));
155
- });
156
- });
157
- const result = diffArr.filter((item) => item.startsWith('app') || item.startsWith('extensions'));
158
- if (result.length) {
159
- hasBackEnd = true;
160
- }
174
+ }
175
+ }
176
+ };
177
+
178
+ const loopEleAuth = (viewElement: ViewElement) => {
179
+ viewElement?.children?.forEach((item: ViewElement) => {
180
+ const bindDirective = item?.bindDirectives?.find(
181
+ (item: BindDirective) => item.name === 'auth'
182
+ )
183
+ if (bindDirective) {
184
+ hasBackEnd = true
185
+ }
186
+ loopEleAuth(item)
187
+ })
188
+ }
189
+ try {
190
+ if (Array.isArray(list)) {
191
+ list.forEach((event) => {
192
+ const emitTarget = event?.originEvent?.target as SynatxNode;
193
+ const _path: string = event.originEvent.path;
194
+ const _root = _path.split('.')?.[1] || '';
195
+ if (['backend', 'overriddenLogics', 'dataSources', 'processes', 'roles', 'logics', 'enums', 'structures', 'interfaces', 'interfaceDependencies', 'configuration', 'dependencies', 'authLogics', 'authLogicsForCallInterface', 'triggerLaunchers', 'connections'].some((item) => _root.startsWith(item))) {
196
+ hasBackEnd = true;
197
+ }
198
+ if (emitTarget) {
199
+ if (emitTarget.concept === 'App') {
200
+ if (event?.object?.preferenceMap || event?.originEvent?.object?.preferenceMap) {
201
+ hasBackEnd = true
202
+ hasFrontEnd = true
161
203
  }
162
- if (view.tag === 'u-uploader' || view.tag === 'van-uploader') {
163
- const bute = view?.bindAttrs.find((item) => item.name === 'url');
164
- if (checkAuth) {
165
- if (bute?.value.endsWith('/import') && !view.view.parentAuth) {
166
- hasBackEnd = true;
167
- }
168
- } else {
169
- if (bute?.value.endsWith('/import')) {
170
- hasBackEnd = true;
171
- }
172
- }
204
+ }
205
+ if (emitTarget.concept === 'ValidationRule') {
206
+ if (
207
+ event?.object?.enableServerValidation ||
208
+ event?.originEvent?.object?.enableServerValidation
209
+ ) {
210
+ hasBackEnd = true
211
+ hasFrontEnd = true
212
+ }
213
+ }
214
+ if (emitTarget.concept === 'Logic') {
215
+ const diffArr: string[] = [];
216
+ if (emitTarget.body.length > 2) {
217
+ emitTarget.body.forEach((it: LogicItem) => {
218
+ itemloop(it, app, diffArr);
219
+ });
220
+ }
221
+ const result = diffArr.filter((item) => item.startsWith('app') || item.startsWith('extensions'));
222
+ if (result.length) {
223
+ hasBackEnd = true;
173
224
  }
225
+ }
226
+ if ('view' in emitTarget && emitTarget.view) {
227
+ hasFrontEnd = true
228
+ }
229
+ if (emitTarget.concept === 'BindDirective') {
230
+ const isDelete = event?.originEvent?.action === 'delete'
231
+ if (isDelete) {
232
+ const isAuto = ~event?.originEvent?.path?.indexOf('name=auth')
233
+ if (isAuto) {
234
+ hasBackEnd = true
235
+ }
236
+ }
237
+ if (event?.originEvent?.object?.name === 'auth') {
238
+ hasBackEnd = true
239
+ }
240
+ }
241
+ if (emitTarget.concept === 'View') {
242
+ if (getMiniAppChange(emitTarget, event?.originEvent?.object, event?.originEvent?.action)) {
243
+ hasBackEnd = true;
244
+ }
245
+ const isDelete = event?.originEvent?.action === 'delete';
246
+ const isAuthView = emitTarget.auth && event?.originEvent?.object?.name;
247
+ const isUpdateAuth = event?.originEvent?.action === 'update' && event?.originEvent?.object && event?.originEvent?.object?.auth
248
+ const isUpdateBindRoles = event?.originEvent?.action === 'update' && event?.originEvent?.object && event?.originEvent?.object?.bindRoles;
249
+ if (isDelete || isUpdateAuth || isUpdateBindRoles || isAuthView) {
250
+ hasBackEnd = true;
251
+ // const app = emitTarget.app;
252
+ // const diffArr: string[] = [];
253
+ // emitTarget.logics.forEach((logic: Logic) => {
254
+ // if (logic.body.length > 2) {
255
+ // logic.body.forEach((it: LogicItem) => {
256
+ // itemloop(it, app, diffArr);
257
+ // });
258
+ // }
259
+ // });
260
+ // const result = diffArr.filter((item) => item.startsWith('app') || item.startsWith('extensions'));
261
+ // if (result.length) {
262
+ // hasBackEnd = true;
263
+ // }
264
+ // emitTarget.children.forEach((item: View | ViewElement) => loopEle(item, isDelete));
265
+ // emitTarget.elements.forEach((item: View | ViewElement) => loopEle(item, isDelete));
266
+ }
267
+ hasFrontEnd = true;
174
268
  }
175
- };
176
-
177
- const loopEleAuth = (viewElement: ViewElement) => {
178
- viewElement?.children?.forEach((item:ViewElement) => {
179
- const bindDirective = item?.bindDirectives?.find((item: BindDirective) => item.name === "auth")
269
+ if (emitTarget.concept === 'ViewElement') {
270
+ if (event?.originEvent?.object?.name) {
271
+ const bindDirective = emitTarget.bindDirectives.find(
272
+ (item: BindDirective) => item.name === 'auth'
273
+ )
180
274
  if (bindDirective) {
181
- hasBackEnd = true;
275
+ hasBackEnd = true;
276
+ }
277
+ }
278
+ if (event?.originEvent?.action === 'delete') {
279
+ const bindDirective = emitTarget?.bindDirectives?.find(
280
+ (item: BindDirective) => item.name === 'auth'
281
+ )
282
+ if (bindDirective) {
283
+ hasBackEnd = true
182
284
  }
183
- loopEleAuth(item);
184
- })
185
- }
186
- try {
187
- if (Array.isArray(list)) {
188
- list.forEach((event) => {
189
- const emitTarget = event?.originEvent?.target as SynatxNode;
190
- const _path: string = event.originEvent.path;
191
- const _root = _path.split('.')?.[1] || '';
192
- if (['backend', 'overriddenLogics', 'dataSources', 'processes', 'roles', 'logics', 'enums', 'structures', 'interfaces', 'interfaceDependencies', 'configuration', 'dependencies', 'authLogics', 'authLogicsForCallInterface'].some((item) => _root.startsWith(item))) {
193
- hasBackEnd = true;
194
- }
195
- if (emitTarget) {
196
- if (emitTarget.concept === 'App') {
197
- if (event?.object?.preferenceMap || event?.originEvent?.object?.preferenceMap) {
198
- hasBackEnd = true;
199
- hasFrontEnd = true;
200
- }
201
- }
202
- if (emitTarget.concept === 'ValidationRule') {
203
- if (event?.object?.enableServerValidation || event?.originEvent?.object?.enableServerValidation) {
204
- hasBackEnd = true;
205
- hasFrontEnd = true;
206
- }
207
- }
208
- if (emitTarget.concept === 'Logic') {
209
- const diffArr: string[] = [];
210
- if (emitTarget.body.length > 2) {
211
- emitTarget.body.forEach((it: LogicItem) => {
212
- itemloop(it, app, diffArr);
213
- });
214
- }
215
- const result = diffArr.filter((item) => item.startsWith('app') || item.startsWith('extensions'));
216
- if (result.length) {
217
- hasBackEnd = true;
218
- }
219
- }
220
- if ('view' in emitTarget && emitTarget.view) {
221
- hasFrontEnd = true;
222
- }
223
- if (emitTarget.concept === 'BindDirective') {
224
- const isDelete = event?.originEvent?.action === 'delete';
225
- if (isDelete) {
226
- const isAuto = ~event?.originEvent?.path?.indexOf('name=auth');
227
- if (isAuto) {
228
- hasBackEnd = true;
229
- }
230
- }
231
- if (event?.originEvent?.object?.name === 'auth') {
232
- hasBackEnd = true;
233
- }
234
- }
235
- if (emitTarget.concept === 'View') {
236
- if (getMiniAppChange(emitTarget, event?.originEvent?.object, event?.originEvent?.action)) {
237
- hasBackEnd = true;
238
- }
239
- const isDelete = event?.originEvent?.action === 'delete';
240
- const isAuthView = emitTarget.auth && event?.originEvent?.object?.name
241
- const isUpdateAuth = event?.originEvent?.action === 'update' && event?.originEvent?.object && event?.originEvent?.object?.auth;
242
- const isUpdateBindRoles = event?.originEvent?.action === 'update' && event?.originEvent?.object && event?.originEvent?.object?.bindRoles;
243
- if (isDelete || isUpdateAuth || isUpdateBindRoles || isAuthView) {
244
- hasBackEnd = true;
245
- // const app = emitTarget.app;
246
- // const diffArr: string[] = [];
247
- // emitTarget.logics.forEach((logic: Logic) => {
248
- // if (logic.body.length > 2) {
249
- // logic.body.forEach((it: LogicItem) => {
250
- // itemloop(it, app, diffArr);
251
- // });
252
- // }
253
- // });
254
- // const result = diffArr.filter((item) => item.startsWith('app') || item.startsWith('extensions'));
255
- // if (result.length) {
256
- // hasBackEnd = true;
257
- // }
258
- // emitTarget.children.forEach((item: View | ViewElement) => loopEle(item, isDelete));
259
- // emitTarget.elements.forEach((item: View | ViewElement) => loopEle(item, isDelete));
260
- }
261
- hasFrontEnd = true;
262
- }
263
- if (emitTarget.concept === 'ViewElement') {
264
- if (event?.originEvent?.object?.name) {
265
- const bindDirective = emitTarget.bindDirectives.find((item: BindDirective) => item.name === "auth")
266
- if (bindDirective) {
267
- hasBackEnd = true;
268
- }
269
- }
270
- if (event?.originEvent?.action === 'delete') {
271
- const bindDirective = emitTarget?.bindDirectives?.find((item: BindDirective) => item.name === "auth")
272
- if (bindDirective) {
273
- hasBackEnd = true;
274
- }
275
- loopEleAuth(emitTarget);
276
- }
277
- if (event?.originEvent?.action !== 'create') {
278
- if (event?.originEvent?.object && event?.originEvent?.object?.bindRoles) {
279
- hasBackEnd = true;
280
- }
281
- }
282
- loopEle(emitTarget, true);
283
- }
284
- if (emitTarget.concept === 'BindAttribute' && emitTarget.name === 'url' && emitTarget.value.endsWith('/import')) {
285
- if (!emitTarget.view.parentAuth) {
286
- hasBackEnd = true;
287
- }
288
- }
289
- if (emitTarget.concept === 'CallLogic') {
290
- const arrlist: string[] = [];
291
- getLogic(emitTarget.calleeKey, emitTarget.app, arrlist);
292
- const result = arrlist.filter((item) => item.startsWith('app') || item.startsWith('extensions'));
293
- // console.log(result, 'CallLogic');
294
- if (result.length) {
295
- hasBackEnd = true;
296
- }
297
- }
298
- // 更新端时需要出发后端更新
299
- if (emitTarget.concept === 'Frontend') {
300
- hasBackEnd = true;
301
- }
302
- }
303
- event.eventList.forEach(({ action, path, object: objItem }: { action: string; path: string; object: any }) => {
304
- if (Array.isArray(objItem)) {
305
- if (action === 'update') {
306
- actionList.push({
307
- action,
308
- path,
309
- node: objItem[0],
310
- });
311
- } else {
312
- objItem.forEach((item, index) => {
313
- actionList.push({
314
- action,
315
- path,
316
- node: item,
317
- });
318
- });
319
- }
320
- } else {
321
- actionList.push({
322
- action,
323
- path,
324
- object: objItem,
325
- });
326
- }
285
+ loopEleAuth(emitTarget)
286
+ }
287
+ if (event?.originEvent?.action !== 'create') {
288
+ if (event?.originEvent?.object && event?.originEvent?.object?.bindRoles) {
289
+ hasBackEnd = true
290
+ }
291
+ }
292
+ loopEle(emitTarget, true)
293
+ }
294
+ if (emitTarget.concept === 'BindAttribute' && emitTarget.name === 'url') {
295
+ const needUpdateBackEnd =
296
+ emitTarget?.value?.endsWith('/import') || emitTarget?.value?.includes('/upload/')
297
+ if (!emitTarget.view.parentAuth && needUpdateBackEnd) {
298
+ hasBackEnd = true
299
+ }
300
+ }
301
+ if (emitTarget.concept === 'CallLogic') {
302
+ const arrlist: string[] = [];
303
+ getLogic((emitTarget as CallLogic).calleeKey, emitTarget.app, arrlist);
304
+ const result = arrlist.filter((item) => item.startsWith('app') || item.startsWith('extensions'));
305
+ // console.log(result, 'CallLogic');
306
+ if (result.length) {
307
+ hasBackEnd = true;
308
+ }
309
+ }
310
+ // 更新端时需要出发后端更新
311
+ if (emitTarget.concept === 'Frontend') {
312
+ hasBackEnd = true;
313
+ }
314
+ }
315
+
316
+ event.eventList.forEach(({ action, path, object: objItem }: { action: string; path: string; object: any }) => {
317
+ if (Array.isArray(objItem)) {
318
+ if (action === 'update') {
319
+ actionList.push({
320
+ action,
321
+ path,
322
+ node: objItem[0],
323
+ });
324
+ } else {
325
+ objItem.forEach((item, index) => {
326
+ actionList.push({
327
+ action,
328
+ path,
329
+ node: item,
327
330
  });
331
+ });
332
+ }
333
+ } else {
334
+ actionList.push({
335
+ action,
336
+ path,
337
+ object: objItem,
328
338
  });
329
- }
330
- } catch (error) {
331
- console.log(error);
332
- taskQueue.refreshNasl(app, {
333
- errorInfo: {
334
- message: error?.message,
335
- stack: error?.stack,
336
- },
339
+ }
337
340
  });
338
- return;
341
+ });
339
342
  }
340
-
341
- const instructList = [{
342
- uuid: uuidv4().replace(/-/g, ''),
343
- actions: actionList,
344
- }];
345
- saveNasl({ app, hasFrontEnd, hasBackEnd, instructList });
346
-
347
- if (!app._historying) {
348
- if (app._historyIndex !== app._historyList.length) {
349
- app._historyList = app._historyList.splice(0, app._historyIndex);
350
- }
351
- app._historyList.push({
352
- actionMsg,
353
- list: list.map((item: any) => item.originEvent),
354
- });
355
- app._historyIndex = app._historyList.length;
356
- } else {
357
- const actionMap = {
358
- undo: '已撤销操作:',
359
- redo: '已重做操作:',
360
- };
361
- let msg = actionMap[action as 'undo' | 'redo'];
362
- msg += actionMsg;
363
- Vue.prototype.$toast.info(msg);
364
- app._historying = false;
343
+ } catch (error) {
344
+ console.log(error);
345
+ taskQueue.refreshNasl(app, {
346
+ errorInfo: {
347
+ message: error?.message,
348
+ stack: error?.stack,
349
+ },
350
+ });
351
+ return;
352
+ }
353
+
354
+ const instructList = [{
355
+ uuid: uuidv4().replace(/-/g, ''),
356
+ actions: actionList,
357
+ }];
358
+ saveNasl({ app, hasFrontEnd, hasBackEnd, instructList });
359
+
360
+ if (!app._historying) {
361
+ if (app._historyIndex !== app._historyList.length) {
362
+ app._historyList = app._historyList.splice(0, app._historyIndex);
365
363
  }
366
- stepRecorder.initialized && stepRecorder.record(actionMsg, actionItem, actionList);
364
+ app._historyList.push({
365
+ actionMsg,
366
+ list: list.map((item: any) => item.originEvent),
367
+ });
368
+ app._historyIndex = app._historyList.length;
369
+ } else {
370
+ const actionMap = {
371
+ undo: '已撤销操作:',
372
+ redo: '已重做操作:',
373
+ };
374
+ let msg = actionMap[action as 'undo' | 'redo'];
375
+ msg += actionMsg;
376
+ if (process.env.BUILD_TARGET !== 'node') {
377
+ require('element-plus').ElMessage.info(msg);
378
+ }
379
+ app._historying = false;
380
+ }
381
+ stepRecorder.initialized && stepRecorder.record(actionMsg, actionItem, actionList);
367
382
  }
368
383
 
369
384
  type Instruct = {
370
- uuid: string,
371
- actions: any[],
385
+ uuid: string,
386
+ actions: any[],
372
387
  };
373
388
  type TaskOption = {
374
- app: any,
375
- hasFrontEnd: boolean,
376
- hasBackEnd: boolean,
377
- instructList: Instruct[],
389
+ app: any,
390
+ hasFrontEnd: boolean,
391
+ hasBackEnd: boolean,
392
+ instructList: Instruct[],
378
393
  };
379
394
  enum TaskQueueStatus {
380
- ExceedMaxTaskCount,
381
- Retrying,
395
+ ExceedMaxTaskCount,
396
+ Retrying,
382
397
  }
383
398
  type RefreshNaslOptions = {
384
- errorInfo: {
385
- message?: string,
386
- stack?: string,
387
- }
399
+ errorInfo: {
400
+ message?: string,
401
+ stack?: string,
402
+ }
388
403
  };
389
404
 
390
405
  class TaskQueue {
391
- queue: TaskOption[] = []
392
- lastQueue: TaskOption[] = []
393
- running: Boolean = false
394
- maxTaskCount: number = 10
395
- status?: TaskQueueStatus = undefined
396
-
397
- addTask(task: TaskOption) {
398
- this.queue.push(task);
399
-
400
- if (this.queue.length >= this.maxTaskCount) {
401
- this.status = TaskQueueStatus.ExceedMaxTaskCount;
402
- task.app.emit('ExceedMaxTaskCount');
403
- }
404
-
405
- this.run();
406
+ queue: TaskOption[] = []
407
+ lastQueue: TaskOption[] = []
408
+ running: Boolean = false
409
+ maxTaskCount: number = 10
410
+ status?: TaskQueueStatus = undefined
411
+
412
+ addTask(task: TaskOption) {
413
+ this.queue.push(task);
414
+
415
+ if (this.queue.length >= this.maxTaskCount) {
416
+ this.status = TaskQueueStatus.ExceedMaxTaskCount;
417
+ task.app.emit('ExceedMaxTaskCount');
406
418
  }
407
419
 
408
- clear() {
409
- this.queue = [];
410
- this.lastQueue = [];
411
- this.status = undefined;
412
- this.running = false;
413
- }
420
+ this.run();
421
+ }
414
422
 
415
- async run(queue = this.queue) {
416
- if (this.running)
417
- return;
418
- if (queue.length === 0)
419
- return;
420
-
421
- const app = queue[0].app;
422
- let hasFrontEnd = false;
423
- let hasBackEnd = false;
424
- let instructList: Instruct[] = [];
425
-
426
- for (const task of queue) {
427
- if (task.hasFrontEnd)
428
- hasFrontEnd = true;
429
- if (task.hasBackEnd)
430
- hasBackEnd = true;
431
- instructList = instructList.concat(task.instructList);
432
- }
423
+ clear() {
424
+ this.queue = [];
425
+ this.lastQueue = [];
426
+ this.status = undefined;
427
+ this.running = false;
428
+ }
433
429
 
434
- if (queue === this.queue) {
435
- this.lastQueue = [...queue];
436
- this.queue = [];
437
- }
438
-
439
- this.running = true;
440
- const error = await _saveNasl({
441
- app, hasFrontEnd, hasBackEnd, instructList,
442
- });
430
+ async run(queue = this.queue) {
431
+ if (this.running)
432
+ return;
433
+ if (queue.length === 0)
434
+ return;
443
435
 
444
- // code: 401650, 检测到当前应用拉取操作已被强制结束, 用户确认后再刷新
445
- // code: 500502 msg: "该应用已在新tab 页打开,请刷新!" 不重试或刷新
446
- if (!error)
447
- this.recover(app);
448
- else if (![401650, 500502].includes(error.code)) {
449
- // 连接失败,或超时,或后端持久化异常
450
- if ((error.message === 'Network Error' || error.message?.includes('timeout') || error.code === 500500)
451
- && this.status !== TaskQueueStatus.Retrying) {
452
- this.running = false;
453
- this.retry();
454
- } else
455
- this.refreshNasl(app);
456
-
457
- return;
458
- }
459
-
460
- this.running = false;
436
+ const app = queue[0].app;
437
+ let hasFrontEnd = false;
438
+ let hasBackEnd = false;
439
+ let instructList: Instruct[] = [];
440
+
441
+ for (const task of queue) {
442
+ if (task.hasFrontEnd)
443
+ hasFrontEnd = true;
444
+ if (task.hasBackEnd)
445
+ hasBackEnd = true;
446
+ instructList = instructList.concat(task.instructList);
447
+ }
461
448
 
462
- this.run();
449
+ if (queue === this.queue) {
450
+ this.lastQueue = [...queue];
451
+ this.queue = [];
463
452
  }
464
453
 
465
- retry() {
466
- if (this.lastQueue.length === 0)
467
- return;
454
+ this.running = true;
455
+ const error = await _saveNasl({
456
+ app, hasFrontEnd, hasBackEnd, instructList,
457
+ });
468
458
 
469
- const app = this.lastQueue[0].app;
470
- this.status = TaskQueueStatus.Retrying;
471
- app.emit('Retrying');
472
- this.run(this.lastQueue);
473
- }
459
+ // code: 401650, 检测到当前应用拉取操作已被强制结束, 用户确认后再刷新
460
+ // code: 500502 msg: "该应用已在新tab 页打开,请刷新!" 不重试或刷新
461
+ if (!error)
462
+ this.recover(app);
463
+ else if (![401650, 500502].includes(error.code)) {
464
+ // 连接失败,或超时,或后端持久化异常
465
+ if ((error.message === 'Network Error' || error.message?.includes('timeout') || error.code === 500500)
466
+ && this.status !== TaskQueueStatus.Retrying) {
467
+ this.running = false;
468
+ this.retry();
469
+ } else
470
+ this.refreshNasl(app);
474
471
 
475
- async refreshNasl(app: App, options: RefreshNaslOptions = { errorInfo: {} }) {
476
- const failedQueue = this.lastQueue.map(({ hasFrontEnd, hasBackEnd, instructList }) => ({
477
- hasFrontEnd, hasBackEnd, instructList,
478
- }));
479
- const queue = this.queue.map(({ hasFrontEnd, hasBackEnd, instructList }) => ({
480
- hasFrontEnd, hasBackEnd, instructList,
481
- }));
482
- await storageService.saveFrontendNasl({
483
- body: {
484
- nasl: app?.toJSON(),
485
- failedQueue,
486
- queue,
487
- errorInfo: options.errorInfo,
488
- },
489
- }).catch((err: any) => {
490
- console.log('备份 nasl 失败:', err);
491
- });
492
- this.clear();
493
- app.emit('refresh');
472
+ return;
494
473
  }
495
474
 
496
- recover(app: App) {
497
- switch (this.status) {
498
- case TaskQueueStatus.ExceedMaxTaskCount:
499
- app.emit('BelowMaxTaskCount');
500
- this.status = undefined;
501
- break;
502
- case TaskQueueStatus.Retrying:
503
- app.emit('SuccessRetry');
504
- this.status = undefined;
505
- break;
506
- }
475
+ this.running = false;
476
+
477
+ this.run();
478
+ }
479
+
480
+ retry() {
481
+ if (this.lastQueue.length === 0)
482
+ return;
483
+
484
+ const app = this.lastQueue[0].app;
485
+ this.status = TaskQueueStatus.Retrying;
486
+ app.emit('Retrying');
487
+ this.run(this.lastQueue);
488
+ }
489
+
490
+ async refreshNasl(app: App, options: RefreshNaslOptions = { errorInfo: {} }) {
491
+ const failedQueue = this.lastQueue.map(({ hasFrontEnd, hasBackEnd, instructList }) => ({
492
+ hasFrontEnd, hasBackEnd, instructList,
493
+ }));
494
+ const queue = this.queue.map(({ hasFrontEnd, hasBackEnd, instructList }) => ({
495
+ hasFrontEnd, hasBackEnd, instructList,
496
+ }));
497
+ await storageService.saveFrontendNasl({
498
+ body: {
499
+ nasl: app?.toJSON(),
500
+ failedQueue,
501
+ queue,
502
+ errorInfo: options.errorInfo,
503
+ },
504
+ }).catch((err: any) => {
505
+ console.log('备份 nasl 失败:', err);
506
+ });
507
+ this.clear();
508
+ app.emit('refresh');
509
+ }
510
+
511
+ recover(app: App) {
512
+ switch (this.status) {
513
+ case TaskQueueStatus.ExceedMaxTaskCount:
514
+ app.emit('BelowMaxTaskCount');
515
+ this.status = undefined;
516
+ break;
517
+ case TaskQueueStatus.Retrying:
518
+ app.emit('SuccessRetry');
519
+ this.status = undefined;
520
+ break;
507
521
  }
522
+ }
508
523
  }
509
524
 
510
525
  export const taskQueue = new TaskQueue();
511
526
  async function saveNasl(options: TaskOption) {
512
- taskQueue.addTask(options);
527
+ taskQueue.addTask(options);
513
528
  }
514
529
 
515
530
  async function _saveNasl(options: TaskOption) {
516
- const { app, hasFrontEnd, hasBackEnd, instructList } = options;
517
- app.emit('saving');
518
- let ChangedNASLType = '';
519
- if (hasFrontEnd && hasBackEnd) {
520
- ChangedNASLType = 'both';
521
- } else if (hasFrontEnd) {
522
- ChangedNASLType = 'web';
523
- } else if (hasBackEnd) {
524
- ChangedNASLType = 'backend';
531
+ const { app, hasFrontEnd, hasBackEnd, instructList } = options;
532
+ app.emit('saving');
533
+ let ChangedNASLType = '';
534
+ if (hasFrontEnd && hasBackEnd) {
535
+ ChangedNASLType = 'both';
536
+ } else if (hasFrontEnd) {
537
+ ChangedNASLType = 'web';
538
+ } else if (hasBackEnd) {
539
+ ChangedNASLType = 'backend';
540
+ }
541
+ let err;
542
+ if (config.storage.protocol === 'http') {
543
+ try {
544
+ await storageService.batchInstruct({
545
+ body: instructList,
546
+ headers: {
547
+ appId: app.id,
548
+ ChangedNASLType,
549
+ tabTimestamp,
550
+ // 其他封装在 storageService 里了
551
+ },
552
+ });
553
+ } catch (error) {
554
+ err = error;
525
555
  }
526
- let err;
527
- if (config.storage.protocol === 'http') {
528
- try {
529
- await storageService.batchInstruct({
530
- body: instructList,
531
- headers: {
532
- appId: app.id,
533
- ChangedNASLType,
534
- tabTimestamp,
535
- // 其他封装在 storageService 里了
536
- },
537
- });
538
- } catch (error) {
539
- err = error;
540
- }
541
- } else if (config.storage.protocol === 'mock') {
542
- // Do nothing
543
- } else {
544
- const json = await fs.readJSON(config.storage.basePath);
545
-
546
- let actionList: any[] = [];
547
- for (const { actions } of instructList) {
548
- actionList = actionList.concat(actions);
549
- }
550
-
551
- jsoner.batchAction(json, actionList);
552
- await fs.writeJSON(config.storage.basePath, json, {
553
- spaces: 4,
554
- });
556
+ } else if (config.storage.protocol === 'mock') {
557
+ // Do nothing
558
+ } else {
559
+ const json = await fs.readJSON(config.storage.basePath);
560
+
561
+ let actionList: any[] = [];
562
+ for (const { actions } of instructList) {
563
+ actionList = actionList.concat(actions);
555
564
  }
556
- app.emit('saved', err);
557
- return err;
558
- }
559
-
560
- export function handleApp(app: any) {
561
- app._isCollectingCount = 0;
562
- app._collectingList = [];
563
- app._historyList = [];
564
- app._historyIndex = 0;
565
- app._historying = false;
566
- app._timer = null;
567
-
568
- app.on('undo', () => {
569
- app._historying = true;
570
- });
571
565
 
572
- app.on('redo', () => {
573
- app._historying = true;
574
- });
575
-
576
- /**
577
- * 开启收集
578
- */
579
- app.on('collect:start', (event: any) => {
580
- if (app._timer) {
581
- clearTimeout(app._timer);
582
- }
583
- if (!app._noTimer) {
584
- app._noTimer = event.noTimer;
585
- }
586
- if (!app._noTimer) {
587
- app._timer = setTimeout(() => {
588
- console.error('收集超时,请及时排查原因', event);
589
- taskQueue.refreshNasl(app, {
590
- errorInfo: {
591
- message: '收集超时,请及时排查原因',
592
- },
593
- });
594
- }, 2500);
595
- }
596
- if (!app._isCollectingCount) {
597
- app._actionMsg = event?.actionMsg;
598
- app._action = event?.action;
599
- }
600
- app._isCollectingCount++;
566
+ jsoner.batchAction(json, actionList);
567
+ await fs.writeJSON(config.storage.basePath, json, {
568
+ spaces: 4,
601
569
  });
570
+ }
571
+ app.emit('saved', err);
572
+ return err;
573
+ }
602
574
 
603
- /**
604
- * 结束收集
605
- */
606
- app.on('collect:end', async () => {
607
- app._isCollectingCount--;
608
- if (app._isCollectingCount === 0) {
609
- if (app._timer) {
610
- clearTimeout(app._timer);
611
- }
612
- // 结束收集时,立即将全局收集变量状态重置,防止下次收集数据混乱
613
- const collectingList = app._collectingList;
614
- const actionMsg = app._actionMsg;
615
- const action = app._action;
616
- app._collectingList = [];
617
- app._actionMsg = '';
618
- app._action = '';
619
- app._noTimer = undefined;
620
- if (Array.isArray(collectingList) && collectingList.length) {
621
- mountDatabaseTypes(app);
622
- app.naslServer?.embeddedTSEmitter?.emit('change', {
623
- value: collectingList,
624
- });
625
- await doAction(app, {
626
- list: collectingList,
627
- actionMsg,
628
- action,
629
- });
630
- }
631
- } else if (app._isCollectingCount < 0) {
632
- app._isCollectingCount = 0;
633
- throw Error('关闭收集有问题,请排查');
634
- }
635
- });
575
+ export interface ProxyApp extends App {
576
+ _isCollectingCount: number;
577
+ _collectingList: number[];
578
+ _historyList: number[];
579
+ _historyIndex: number;
580
+ _historying: boolean;
581
+ _timer: NodeJS.Timeout;
582
+ _noTimer: NodeJS.Timeout;
583
+ _actionMsg: string;
584
+ _action: string;
585
+ naslServer: NaslServer;
586
+ }
636
587
 
637
- /**
638
- * 有变更
639
- */
640
- app.on('storage', (event: any) => {
641
- // 是否正在收集
642
- if (app._isCollectingCount === 0) {
643
- app.naslServer?.embeddedTSEmitter?.emit('change', {
644
- value: [event],
645
- });
646
- let actionMsg = '';
647
- const { action, target } = event.originEvent || {};
648
- const { concept, name } = target || {};
649
- switch (action) {
650
- case 'create':
651
- actionMsg = '添加';
652
- break;
653
- case 'delete':
654
- actionMsg = '删除';
655
- break;
656
- case 'update':
657
- actionMsg = '修改';
658
- break;
659
- }
660
- actionMsg += getConceptConstructor(concept).nodeTitle;
661
- if (name) {
662
- actionMsg += `“${name}”`;
663
- }
664
- doAction(app, {
665
- list: [event],
666
- actionMsg,
667
- });
668
- } else {
669
- app._collectingList.push(event);
670
- }
671
- });
588
+ export function handleApp(app: ProxyApp) {
589
+ app._isCollectingCount = 0;
590
+ app._collectingList = [];
591
+ app._historyList = [];
592
+ app._historyIndex = 0;
593
+ app._historying = false;
594
+ app._timer = null;
595
+
596
+ app.on('undo', function (this: ProxyApp) {
597
+ const proxyApp = this;
598
+ proxyApp._historying = true;
599
+ });
600
+
601
+ app.on('redo', function (this: ProxyApp) {
602
+ const proxyApp = this;
603
+ proxyApp._historying = true;
604
+ });
605
+
606
+ /**
607
+ * 开启收集
608
+ */
609
+ app.on('collect:start', function (this: ProxyApp, event: any) {
610
+ const proxyApp = this;
611
+ if (proxyApp._timer) {
612
+ clearTimeout(proxyApp._timer);
613
+ }
614
+ if (!proxyApp._noTimer) {
615
+ proxyApp._noTimer = event.noTimer;
616
+ }
617
+ if (!proxyApp._noTimer) {
618
+ proxyApp._timer = setTimeout(() => {
619
+ console.error('收集超时,请及时排查原因', event);
620
+ taskQueue.refreshNasl(proxyApp, {
621
+ errorInfo: {
622
+ message: '收集超时,请及时排查原因',
623
+ },
624
+ });
625
+ }, 2500);
626
+ }
627
+ if (!proxyApp._isCollectingCount) {
628
+ proxyApp._actionMsg = event?.actionMsg;
629
+ proxyApp._action = event?.action;
630
+ }
631
+ proxyApp._isCollectingCount++;
632
+ });
633
+
634
+ /**
635
+ * 结束收集
636
+ */
637
+ app.on('collect:end', async function (this: ProxyApp) {
638
+ const proxyApp = this;
639
+ proxyApp._isCollectingCount--;
640
+ if (proxyApp._isCollectingCount === 0) {
641
+ if (proxyApp._timer) {
642
+ clearTimeout(proxyApp._timer);
643
+ }
644
+ // 结束收集时,立即将全局收集变量状态重置,防止下次收集数据混乱
645
+ const collectingList = proxyApp._collectingList;
646
+ const actionMsg = proxyApp._actionMsg;
647
+ const action = proxyApp._action;
648
+ proxyApp._collectingList = [];
649
+ proxyApp._actionMsg = '';
650
+ proxyApp._action = '';
651
+ proxyApp._noTimer = undefined;
652
+ if (Array.isArray(collectingList) && collectingList.length) {
653
+ mountDatabaseTypes(proxyApp);
654
+ proxyApp.naslServer?.embeddedTSEmitter?.emit('change', {
655
+ value: collectingList,
656
+ });
657
+ await doAction(proxyApp, {
658
+ list: collectingList,
659
+ actionMsg,
660
+ action,
661
+ });
662
+ }
663
+ } else if (proxyApp._isCollectingCount < 0) {
664
+ proxyApp._isCollectingCount = 0;
665
+ throw Error('关闭收集有问题,请排查');
666
+ }
667
+ });
668
+
669
+ /**
670
+ * 有变更
671
+ */
672
+ app.on('storage', function (this: ProxyApp, event: any) {
673
+ const proxyApp = this;
674
+ // 是否正在收集
675
+ if (proxyApp._isCollectingCount === 0) {
676
+ proxyApp.naslServer?.embeddedTSEmitter?.emit('change', {
677
+ value: [event],
678
+ });
679
+ let actionMsg = '';
680
+ const { action, target } = event.originEvent || {};
681
+ const { concept, name } = target || {};
682
+ switch (action) {
683
+ case 'create':
684
+ actionMsg = '添加';
685
+ break;
686
+ case 'delete':
687
+ actionMsg = '删除';
688
+ break;
689
+ case 'update':
690
+ actionMsg = '修改';
691
+ break;
692
+ }
693
+ actionMsg += getConceptConstructor(concept).nodeTitle;
694
+ if (name) {
695
+ actionMsg += `“${name}”`;
696
+ }
697
+ doAction(proxyApp, {
698
+ list: [event],
699
+ actionMsg,
700
+ });
701
+ } else {
702
+ proxyApp._collectingList.push(event);
703
+ }
704
+ });
672
705
  }
673
706
 
674
- type BreakpointItem = any | {
675
- path: string,
676
- breakpointStatus: null | 'ENABLED' | 'DISABLED',
677
- };
707
+ type BreakpointItem =
708
+ | any
709
+ | {
710
+ path: string
711
+ breakpointStatus: null | 'ENABLED' | 'DISABLED'
712
+ }
678
713
 
679
714
  /**
680
715
  * 加载 app
@@ -682,150 +717,148 @@ type BreakpointItem = any | {
682
717
  * @returns app 对象
683
718
  */
684
719
  export async function loadApp(appId?: string) {
685
- let app: App;
686
- if (config.storage.protocol === 'http') {
687
- console.time('batchQuery');
688
- const promises = [
689
- storageService.batchQuery({
690
- body: [
691
- {
692
- path: 'app',
693
- // excludes: ['views'],
694
- },
695
- ],
696
- headers: {
697
- appId,
698
- checkTabOpenTime: 'true',
699
- // 其他封装在 storageService 里了
700
- },
701
- config: {
702
- shortResponse: false,
703
- },
704
- }),
705
- storageService.breakpoint({
706
- body: { appId },
707
- }),
708
- ];
709
-
710
- const [batchQueryRes, breakpointRes] = await Promise.all(promises);
711
-
712
- // 请求
713
- console.timeEnd('batchQuery');
714
-
715
- tabTimestamp = batchQueryRes?.headers?.tabtimestamp;
716
- const data = batchQueryRes?.data?.result;
717
-
718
- console.time('new App');
719
- app = new App(Object.assign(data?.[0], { id: appId }));
720
-
721
- breakpointRes?.forEach((item: BreakpointItem = {}) => {
722
- const { path, breakpointStatus } = item;
723
-
724
- if (breakpointStatus) {
725
- const node = app.findNodeByPath(path);
726
-
727
- if (node) {
728
- node.breakpoint = breakpointStatus;
729
- }
730
- }
731
- });
732
- console.timeEnd('new App');
733
-
734
- if (!app.id) {
735
- app.id = appId;
720
+ let app: App;
721
+ if (config.storage.protocol === 'http') {
722
+ console.time('batchQuery');
723
+ const promises = [
724
+ storageService.batchQuery({
725
+ body: [
726
+ {
727
+ path: 'app'
728
+ // excludes: ['views'],
729
+ }
730
+ ],
731
+ headers: {
732
+ appId,
733
+ checkTabOpenTime: 'true'
734
+ // 其他封装在 storageService 里了
735
+ },
736
+ config: {
737
+ shortResponse: false
736
738
  }
739
+ }),
740
+ storageService.breakpoint({
741
+ body: { appId }
742
+ })
743
+ ]
737
744
 
738
- addBreakpointNodesFromApp(app);
739
- } else if (config.storage.protocol === 'mock') {
740
- app = new App({
741
- id: appId,
742
- concept: 'App',
743
- name: 'devapp',
744
- title: '开发应用',
745
- envs: 'dev,online',
746
- hasAuth: true,
747
- hasUserCenter: true,
748
- dataSources: [],
749
- structures: [],
750
- enums: [],
751
- logics: [],
752
- interfaces: [],
753
- processes: [],
754
- roles: [],
755
- dependencies: [],
756
- interfaceDependencies: [],
757
- frontends: [],
758
- });
759
- } else {
760
- const json = await fs.readJSON(config.storage.basePath);
761
- app = new App(appId ? Object.assign(json, { id: appId }) : json);
745
+ const [batchQueryRes, breakpointRes] = await Promise.all(promises)
746
+
747
+ // 请求
748
+ console.timeEnd('batchQuery');
749
+
750
+ tabTimestamp = batchQueryRes?.headers?.tabtimestamp;
751
+ const data = batchQueryRes?.data?.result;
752
+
753
+ console.time('new App');
754
+ app = new App(Object.assign(data?.[0], { id: appId }));
755
+
756
+ breakpointRes?.forEach((item: BreakpointItem = {}) => {
757
+ const { path, breakpointStatus } = item
758
+
759
+ if (breakpointStatus) {
760
+ const node = app.findNodeByPath(path)
761
+
762
+ if (node) {
763
+ node.breakpoint = breakpointStatus
764
+ }
765
+ }
766
+ })
767
+ console.timeEnd('new App');
768
+ if (!app.id) {
769
+ app.id = appId;
762
770
  }
763
- // config.scope = app.scope;
764
- handleApp(app);
765
- (app as any)._isCollectingCount = 0;
766
- mountDatabaseTypes(app);
767
- return app as App;
771
+ addBreakpointNodesFromApp(app)
772
+ } else if (config.storage.protocol === 'mock') {
773
+ app = new App({
774
+ id: appId,
775
+ concept: 'App',
776
+ name: 'devapp',
777
+ title: '开发应用',
778
+ envs: 'dev,online',
779
+ hasAuth: true,
780
+ hasUserCenter: true,
781
+ dataSources: [],
782
+ structures: [],
783
+ enums: [],
784
+ logics: [],
785
+ interfaces: [],
786
+ processes: [],
787
+ roles: [],
788
+ dependencies: [],
789
+ interfaceDependencies: [],
790
+ frontends: [],
791
+ });
792
+ } else {
793
+ const json = await fs.readJSON(config.storage.basePath);
794
+ app = new App(appId ? Object.assign(json, { id: appId }) : json);
795
+ }
796
+ // config.scope = app.scope;
797
+ handleApp(app as ProxyApp);
798
+ (app as any)._isCollectingCount = 0;
799
+ mountDatabaseTypes(app);
800
+ return app as App;
768
801
  }
769
802
 
770
803
  // 在app上挂载所有的数据库类型
771
804
  export async function mountDatabaseTypes(app: App) {
772
- if (!app.__databaseTypeMap) {
773
- app.__databaseTypeMap = {};
774
- }
775
- const dataSources = app?.dataSources;
776
- const dbTypeSet = new Set();
777
- if (Array.isArray(dataSources)) {
778
- dataSources.forEach((dataSource) => {
779
- const dataSourceSqlType = JSON.parse(dataSource.dataSourceConfig?.devProperty?.value || '{}')?.type;
780
- if (dataSourceSqlType && !app.__databaseTypeMap[dataSourceSqlType]) {
781
- dbTypeSet.add(dataSourceSqlType);
782
- }
783
- });
784
- }
785
- const dbTypes = [...dbTypeSet];
786
- if (Array.isArray(dbTypes) && dbTypes.length) {
787
- const res: any = await databaseTypes({
788
- query: {
789
- dbTypes: dbTypes.join(','),
790
- },
791
- });
792
- if (Array.isArray(res)) {
793
- res.forEach((databaseType: any) => {
794
- const { dbType, columnTypes } = databaseType || {};
795
- const columnTypeMap: any = {};
796
- if (Array.isArray(columnTypes)) {
797
- columnTypes.forEach((columnType) => {
798
- const { naslType, dataBaseTypes } = columnType;
799
- const dataBaseTypeMap: any = {};
800
- let defaultDataBaseType;
801
- if (Array.isArray(dataBaseTypes)) {
802
- dataBaseTypes.forEach((dataBaseType) => {
803
- const { type } = dataBaseType || {};
804
- if (type) {
805
- dataBaseTypeMap[type] = dataBaseType;
806
- const { defaultType } = dataBaseType;
807
- if (defaultType) {
808
- defaultDataBaseType = dataBaseType;
809
- }
810
- }
811
- });
812
- }
813
- columnTypeMap[naslType] = {
814
- dataBaseTypes,
815
- dataBaseTypeMap,
816
- defaultDataBaseType,
817
- };
818
- });
805
+ if (!app.__databaseTypeMap) {
806
+ app.__databaseTypeMap = {};
807
+ }
808
+ const dataSources = app?.dataSources;
809
+ const dbTypeSet = new Set();
810
+ if (Array.isArray(dataSources)) {
811
+ dataSources.forEach((dataSource) => {
812
+ const dataSourceSqlType = JSON.parse(dataSource.dataSourceConfig?.devProperty?.value || '{}')?.type;
813
+ if (dataSourceSqlType && !app.__databaseTypeMap[dataSourceSqlType]) {
814
+ dbTypeSet.add(dataSourceSqlType);
815
+ }
816
+ });
817
+ }
818
+ const dbTypes = [...dbTypeSet];
819
+ if (Array.isArray(dbTypes) && dbTypes.length) {
820
+ const res: any = await databaseTypes({
821
+ query: {
822
+ dbTypes: dbTypes.join(','),
823
+ },
824
+ });
825
+ if (Array.isArray(res)) {
826
+ res.forEach((databaseType: any) => {
827
+ const { dbType, columnTypes } = databaseType || {};
828
+ const columnTypeMap: any = {};
829
+ if (Array.isArray(columnTypes)) {
830
+ columnTypes.forEach((columnType) => {
831
+ const { naslType, dataBaseTypes } = columnType;
832
+ const dataBaseTypeMap: any = {};
833
+ let defaultDataBaseType;
834
+ if (Array.isArray(dataBaseTypes)) {
835
+ dataBaseTypes.forEach((dataBaseType) => {
836
+ const { type } = dataBaseType || {};
837
+ if (type) {
838
+ dataBaseTypeMap[type] = dataBaseType;
839
+ const { defaultType } = dataBaseType;
840
+ if (defaultType) {
841
+ defaultDataBaseType = dataBaseType;
842
+ }
819
843
  }
820
- app.__databaseTypeMap[dbType] = columnTypeMap;
821
- });
844
+ });
845
+ }
846
+ columnTypeMap[naslType] = {
847
+ dataBaseTypes,
848
+ dataBaseTypeMap,
849
+ defaultDataBaseType,
850
+ };
851
+ });
822
852
  }
853
+ app.__databaseTypeMap[dbType] = columnTypeMap;
854
+ });
823
855
  }
824
- if (Array.isArray(dataSources)) {
825
- dataSources.forEach((dataSource) => {
826
- dataSource.__hasDatabaseConfig = !!(app.__databaseTypeMap?.[dataSource.dataSourceSqlType]);
827
- });
828
- }
856
+ }
857
+ if (Array.isArray(dataSources)) {
858
+ dataSources.forEach((dataSource) => {
859
+ dataSource.__hasDatabaseConfig = !!(app.__databaseTypeMap?.[dataSource.dataSourceSqlType]);
860
+ });
861
+ }
829
862
  }
830
863
 
831
864
  /**
@@ -833,8 +866,8 @@ export async function mountDatabaseTypes(app: App) {
833
866
  * @returns app 对象
834
867
  */
835
868
  export function loadAppSync() {
836
- const json = fs.readJSONSync(config.storage.basePath);
837
- const app = new App(json);
838
- handleApp(app);
839
- return app;
869
+ const json = fs.readJSONSync(config.storage.basePath);
870
+ const app = new App(json);
871
+ handleApp(app as ProxyApp);
872
+ return app;
840
873
  }