@lcap/nasl 3.4.0-beta.3 → 3.4.0-beta.4

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 (880) hide show
  1. package/out/automate/engine/index.d.ts +4 -4
  2. package/out/automate/engine/index.js +363 -363
  3. package/out/automate/engine/operators.d.ts +26 -16
  4. package/out/automate/engine/operators.js +363 -363
  5. package/out/automate/engine/uniqueName.d.ts +12 -12
  6. package/out/automate/engine/uniqueName.js +111 -111
  7. package/out/automate/engine/utils.d.ts +25 -25
  8. package/out/automate/engine/utils.js +443 -443
  9. package/out/automate/engine/viewCache.d.ts +19 -18
  10. package/out/automate/engine/viewCache.js +44 -44
  11. package/out/automate/template/myProcess.d.ts +10 -9
  12. package/out/automate/template/myProcess.js +11501 -11500
  13. package/out/automate/template/myProcess.js.map +1 -1
  14. package/out/automate/upgrader/2.12.d.ts +7 -7
  15. package/out/automate/upgrader/2.12.js +62 -62
  16. package/out/automate/upgrader/2.14-components.d.ts +1115 -1115
  17. package/out/automate/upgrader/2.14-components.js +1086 -1086
  18. package/out/automate/upgrader/2.14.d.ts +10 -10
  19. package/out/automate/upgrader/2.14.js +235 -235
  20. package/out/automate/upgrader/2.14.old.d.ts +1 -1
  21. package/out/automate/upgrader/2.14.old.js +124 -124
  22. package/out/automate/upgrader/2.16.d.ts +10 -10
  23. package/out/automate/upgrader/2.16.js +74 -74
  24. package/out/automate/upgrader/2.17.d.ts +21 -21
  25. package/out/automate/upgrader/2.17.js +556 -556
  26. package/out/automate/upgrader/2.18.d.ts +10 -10
  27. package/out/automate/upgrader/2.18.js +106 -106
  28. package/out/automate/upgrader/2.20.d.ts +17 -17
  29. package/out/automate/upgrader/2.20.js +67 -67
  30. package/out/bak/translator.d.ts +1 -1
  31. package/out/bak/translator.js +143 -143
  32. package/out/breakpoint/generator/AfterStartNode.d.ts +7 -7
  33. package/out/breakpoint/generator/AfterStartNode.js +29 -29
  34. package/out/breakpoint/generator/BeforeEndNode.d.ts +7 -7
  35. package/out/breakpoint/generator/BeforeEndNode.js +27 -27
  36. package/out/breakpoint/generator/BreakpointNode.d.ts +15 -15
  37. package/out/breakpoint/generator/BreakpointNode.js +283 -283
  38. package/out/breakpoint/generator/CallbackNode.d.ts +4 -4
  39. package/out/breakpoint/generator/CallbackNode.js +21 -21
  40. package/out/breakpoint/generator/FragmentNode.d.ts +4 -4
  41. package/out/breakpoint/generator/FragmentNode.js +17 -17
  42. package/out/breakpoint/generator/index.d.ts +4 -4
  43. package/out/breakpoint/generator/index.js +118 -118
  44. package/out/breakpoint/index.d.ts +3 -3
  45. package/out/breakpoint/index.js +19 -19
  46. package/out/breakpoint/shared/constants.d.ts +37 -37
  47. package/out/breakpoint/shared/constants.js +105 -105
  48. package/out/breakpoint/shared/index.d.ts +3 -3
  49. package/out/breakpoint/shared/index.js +32 -32
  50. package/out/breakpoint/shared/operations.d.ts +10 -10
  51. package/out/breakpoint/shared/operations.js +24 -24
  52. package/out/breakpoint/shared/socket.d.ts +48 -48
  53. package/out/breakpoint/shared/socket.js +256 -256
  54. package/out/breakpoint/shared/utils.d.ts +27 -27
  55. package/out/breakpoint/shared/utils.js +228 -228
  56. package/out/breakpoint/store/core.d.ts +80 -80
  57. package/out/breakpoint/store/core.js +415 -415
  58. package/out/breakpoint/store/dock.d.ts +1 -1
  59. package/out/breakpoint/store/dock.js +159 -159
  60. package/out/breakpoint/store/index.d.ts +2 -2
  61. package/out/breakpoint/store/index.js +18 -18
  62. package/out/common/BaseNode.d.ts +347 -334
  63. package/out/common/BaseNode.js +1376 -1325
  64. package/out/common/BaseNode.js.map +1 -1
  65. package/out/common/Command.d.ts +21 -21
  66. package/out/common/Command.js +78 -78
  67. package/out/common/ComponentAPI.d.ts +110 -110
  68. package/out/common/ComponentAPI.js +2 -2
  69. package/out/common/EventEmitter.d.ts +60 -60
  70. package/out/common/EventEmitter.js +68 -68
  71. package/out/common/EventEmitter.js.map +1 -1
  72. package/out/common/Messager.d.ts +91 -91
  73. package/out/common/Messager.js +206 -206
  74. package/out/common/asyncFuncMap.d.ts +2 -2
  75. package/out/common/asyncFuncMap.js +15 -15
  76. package/out/common/index.d.ts +3 -3
  77. package/out/common/index.js +19 -19
  78. package/out/concepts/Abort__.d.ts +28 -26
  79. package/out/concepts/Abort__.js +83 -81
  80. package/out/concepts/Abort__.js.map +1 -1
  81. package/out/concepts/AbstractInterface__.d.ts +22 -0
  82. package/out/concepts/AbstractInterface__.js +60 -0
  83. package/out/concepts/AbstractInterface__.js.map +1 -0
  84. package/out/concepts/Anchor__.d.ts +48 -46
  85. package/out/concepts/Anchor__.js +208 -206
  86. package/out/concepts/Anchor__.js.map +1 -1
  87. package/out/concepts/AnonymousFunction__.d.ts +175 -173
  88. package/out/concepts/AnonymousFunction__.js +548 -546
  89. package/out/concepts/AnonymousFunction__.js.map +1 -1
  90. package/out/concepts/App__.d.ts +1770 -1687
  91. package/out/concepts/App__.js +2777 -2670
  92. package/out/concepts/App__.js.map +1 -1
  93. package/out/concepts/Argument__.d.ts +70 -68
  94. package/out/concepts/Argument__.js +285 -285
  95. package/out/concepts/Argument__.js.map +1 -1
  96. package/out/concepts/Assignee__.d.ts +291 -289
  97. package/out/concepts/Assignee__.js +455 -452
  98. package/out/concepts/Assignee__.js.map +1 -1
  99. package/out/concepts/AssignmentLine__.d.ts +44 -42
  100. package/out/concepts/AssignmentLine__.js +120 -118
  101. package/out/concepts/AssignmentLine__.js.map +1 -1
  102. package/out/concepts/Assignment__.d.ts +77 -75
  103. package/out/concepts/Assignment__.js +328 -327
  104. package/out/concepts/Assignment__.js.map +1 -1
  105. package/out/concepts/Attribute__.d.ts +112 -110
  106. package/out/concepts/Attribute__.js +259 -265
  107. package/out/concepts/Attribute__.js.map +1 -1
  108. package/out/concepts/AuthInterface__.d.ts +38 -36
  109. package/out/concepts/AuthInterface__.js +86 -85
  110. package/out/concepts/AuthInterface__.js.map +1 -1
  111. package/out/concepts/AuthLogicForCallInterface__.d.ts +141 -139
  112. package/out/concepts/AuthLogicForCallInterface__.js +535 -532
  113. package/out/concepts/AuthLogicForCallInterface__.js.map +1 -1
  114. package/out/concepts/AuthLogic__.d.ts +69 -67
  115. package/out/concepts/AuthLogic__.js +222 -221
  116. package/out/concepts/AuthLogic__.js.map +1 -1
  117. package/out/concepts/BackendVariable__.d.ts +148 -146
  118. package/out/concepts/BackendVariable__.js +482 -481
  119. package/out/concepts/BackendVariable__.js.map +1 -1
  120. package/out/concepts/Backend__.d.ts +137 -135
  121. package/out/concepts/Backend__.js +287 -285
  122. package/out/concepts/Backend__.js.map +1 -1
  123. package/out/concepts/BatchAssignment__.d.ts +255 -253
  124. package/out/concepts/BatchAssignment__.js +883 -880
  125. package/out/concepts/BatchAssignment__.js.map +1 -1
  126. package/out/concepts/BinaryExpression__.d.ts +74 -72
  127. package/out/concepts/BinaryExpression__.js +398 -398
  128. package/out/concepts/BinaryExpression__.js.map +1 -1
  129. package/out/concepts/BindAttribute__.d.ts +330 -328
  130. package/out/concepts/BindAttribute__.js +1064 -1071
  131. package/out/concepts/BindAttribute__.js.map +1 -1
  132. package/out/concepts/BindDirective__.d.ts +169 -167
  133. package/out/concepts/BindDirective__.js +558 -562
  134. package/out/concepts/BindDirective__.js.map +1 -1
  135. package/out/concepts/BindEvent__.d.ts +255 -253
  136. package/out/concepts/BindEvent__.js +943 -942
  137. package/out/concepts/BindEvent__.js.map +1 -1
  138. package/out/concepts/BindStyle__.d.ts +142 -140
  139. package/out/concepts/BindStyle__.js +424 -423
  140. package/out/concepts/BindStyle__.js.map +1 -1
  141. package/out/concepts/BooleanLiteral__.d.ts +38 -36
  142. package/out/concepts/BooleanLiteral__.js +109 -108
  143. package/out/concepts/BooleanLiteral__.js.map +1 -1
  144. package/out/concepts/CallAuthInterface__.d.ts +128 -126
  145. package/out/concepts/CallAuthInterface__.js +421 -414
  146. package/out/concepts/CallAuthInterface__.js.map +1 -1
  147. package/out/concepts/CallConnector__.d.ts +49 -47
  148. package/out/concepts/CallConnector__.js +267 -266
  149. package/out/concepts/CallConnector__.js.map +1 -1
  150. package/out/concepts/CallFunction__.d.ts +161 -159
  151. package/out/concepts/CallFunction__.js +589 -568
  152. package/out/concepts/CallFunction__.js.map +1 -1
  153. package/out/concepts/CallInterface__.d.ts +132 -130
  154. package/out/concepts/CallInterface__.js +808 -802
  155. package/out/concepts/CallInterface__.js.map +1 -1
  156. package/out/concepts/CallLogic__.d.ts +233 -231
  157. package/out/concepts/CallLogic__.js +1317 -1319
  158. package/out/concepts/CallLogic__.js.map +1 -1
  159. package/out/concepts/CallQueryComponent__.d.ts +435 -433
  160. package/out/concepts/CallQueryComponent__.js +1313 -1325
  161. package/out/concepts/CallQueryComponent__.js.map +1 -1
  162. package/out/concepts/Comment__.d.ts +35 -33
  163. package/out/concepts/Comment__.js +101 -100
  164. package/out/concepts/Comment__.js.map +1 -1
  165. package/out/concepts/CompletionProperty__.d.ts +107 -105
  166. package/out/concepts/CompletionProperty__.js +279 -283
  167. package/out/concepts/CompletionProperty__.js.map +1 -1
  168. package/out/concepts/ConfigGroup__.d.ts +127 -125
  169. package/out/concepts/ConfigGroup__.js +266 -264
  170. package/out/concepts/ConfigGroup__.js.map +1 -1
  171. package/out/concepts/ConfigPropertyValue__.d.ts +47 -45
  172. package/out/concepts/ConfigPropertyValue__.js +110 -110
  173. package/out/concepts/ConfigPropertyValue__.js.map +1 -1
  174. package/out/concepts/ConfigProperty__.d.ts +156 -154
  175. package/out/concepts/ConfigProperty__.js +334 -334
  176. package/out/concepts/ConfigProperty__.js.map +1 -1
  177. package/out/concepts/Configuration__.d.ts +126 -124
  178. package/out/concepts/Configuration__.js +239 -236
  179. package/out/concepts/Configuration__.js.map +1 -1
  180. package/out/concepts/Connection__.d.ts +168 -166
  181. package/out/concepts/Connection__.js +347 -347
  182. package/out/concepts/Connection__.js.map +1 -1
  183. package/out/concepts/ConnectorTrigger__.d.ts +81 -79
  184. package/out/concepts/ConnectorTrigger__.js +160 -161
  185. package/out/concepts/ConnectorTrigger__.js.map +1 -1
  186. package/out/concepts/Connector__.d.ts +929 -570
  187. package/out/concepts/Connector__.js +1346 -907
  188. package/out/concepts/Connector__.js.map +1 -1
  189. package/out/concepts/Constant__.d.ts +121 -119
  190. package/out/concepts/Constant__.js +313 -313
  191. package/out/concepts/Constant__.js.map +1 -1
  192. package/out/concepts/DataSource__.d.ts +171 -169
  193. package/out/concepts/DataSource__.js +477 -477
  194. package/out/concepts/DataSource__.js.map +1 -1
  195. package/out/concepts/DatabaseTypeAnnotation__.d.ts +34 -32
  196. package/out/concepts/DatabaseTypeAnnotation__.js +82 -82
  197. package/out/concepts/DatabaseTypeAnnotation__.js.map +1 -1
  198. package/out/concepts/DefaultValue__.d.ts +98 -98
  199. package/out/concepts/DefaultValue__.js +210 -209
  200. package/out/concepts/DefaultValue__.js.map +1 -1
  201. package/out/concepts/Destination__.d.ts +160 -158
  202. package/out/concepts/Destination__.js +804 -804
  203. package/out/concepts/Destination__.js.map +1 -1
  204. package/out/concepts/End__.d.ts +27 -25
  205. package/out/concepts/End__.js +117 -115
  206. package/out/concepts/End__.js.map +1 -1
  207. package/out/concepts/EntityIndex__.d.ts +98 -96
  208. package/out/concepts/EntityIndex__.js +227 -229
  209. package/out/concepts/EntityIndex__.js.map +1 -1
  210. package/out/concepts/EntityProperty__.d.ts +289 -287
  211. package/out/concepts/EntityProperty__.js +883 -888
  212. package/out/concepts/EntityProperty__.js.map +1 -1
  213. package/out/concepts/Entity__.d.ts +342 -340
  214. package/out/concepts/Entity__.js +779 -769
  215. package/out/concepts/Entity__.js.map +1 -1
  216. package/out/concepts/EnumItem__.d.ts +67 -65
  217. package/out/concepts/EnumItem__.js +155 -155
  218. package/out/concepts/EnumItem__.js.map +1 -1
  219. package/out/concepts/Enum__.d.ts +141 -139
  220. package/out/concepts/Enum__.js +341 -341
  221. package/out/concepts/Enum__.js.map +1 -1
  222. package/out/concepts/Event__.d.ts +146 -144
  223. package/out/concepts/Event__.js +261 -263
  224. package/out/concepts/Event__.js.map +1 -1
  225. package/out/concepts/ExternalDestination__.d.ts +78 -76
  226. package/out/concepts/ExternalDestination__.js +292 -291
  227. package/out/concepts/ExternalDestination__.js.map +1 -1
  228. package/out/concepts/ForEachStatement__.d.ts +173 -190
  229. package/out/concepts/ForEachStatement__.js +533 -534
  230. package/out/concepts/ForEachStatement__.js.map +1 -1
  231. package/out/concepts/FrontendLibrary__.d.ts +216 -214
  232. package/out/concepts/FrontendLibrary__.js +374 -372
  233. package/out/concepts/FrontendLibrary__.js.map +1 -1
  234. package/out/concepts/FrontendVariable__.d.ts +24 -22
  235. package/out/concepts/FrontendVariable__.js +66 -63
  236. package/out/concepts/FrontendVariable__.js.map +1 -1
  237. package/out/concepts/Frontend__.d.ts +511 -509
  238. package/out/concepts/Frontend__.js +1043 -1003
  239. package/out/concepts/Frontend__.js.map +1 -1
  240. package/out/concepts/Function__.d.ts +420 -418
  241. package/out/concepts/Function__.js +805 -801
  242. package/out/concepts/Function__.js.map +1 -1
  243. package/out/concepts/I18nInfo__.d.ts +44 -44
  244. package/out/concepts/I18nInfo__.js +110 -110
  245. package/out/concepts/I18nInfo__.js.map +1 -1
  246. package/out/concepts/Identifier__.d.ts +54 -52
  247. package/out/concepts/Identifier__.js +309 -305
  248. package/out/concepts/Identifier__.js.map +1 -1
  249. package/out/concepts/IfStatement__.d.ts +161 -159
  250. package/out/concepts/IfStatement__.js +353 -352
  251. package/out/concepts/IfStatement__.js.map +1 -1
  252. package/out/concepts/Integration__.d.ts +146 -144
  253. package/out/concepts/Integration__.js +301 -298
  254. package/out/concepts/Integration__.js.map +1 -1
  255. package/out/concepts/InterfaceFromExample__.d.ts +88 -0
  256. package/out/concepts/InterfaceFromExample__.js +172 -0
  257. package/out/concepts/InterfaceFromExample__.js.map +1 -0
  258. package/out/concepts/InterfaceParam__.d.ts +151 -144
  259. package/out/concepts/InterfaceParam__.js +354 -346
  260. package/out/concepts/InterfaceParam__.js.map +1 -1
  261. package/out/concepts/Interface__.d.ts +334 -331
  262. package/out/concepts/Interface__.js +923 -910
  263. package/out/concepts/Interface__.js.map +1 -1
  264. package/out/concepts/JSBlock__.d.ts +37 -35
  265. package/out/concepts/JSBlock__.js +113 -112
  266. package/out/concepts/JSBlock__.js.map +1 -1
  267. package/out/concepts/JavaLogic__.d.ts +45 -43
  268. package/out/concepts/JavaLogic__.js +127 -128
  269. package/out/concepts/JavaLogic__.js.map +1 -1
  270. package/out/concepts/LogicItem__.d.ts +154 -152
  271. package/out/concepts/LogicItem__.js +289 -291
  272. package/out/concepts/LogicItem__.js.map +1 -1
  273. package/out/concepts/Logic__.d.ts +648 -644
  274. package/out/concepts/Logic__.js +1967 -1946
  275. package/out/concepts/Logic__.js.map +1 -1
  276. package/out/concepts/MatchCase__.d.ts +261 -259
  277. package/out/concepts/MatchCase__.js +703 -693
  278. package/out/concepts/MatchCase__.js.map +1 -1
  279. package/out/concepts/Match__.d.ts +127 -125
  280. package/out/concepts/Match__.js +697 -695
  281. package/out/concepts/Match__.js.map +1 -1
  282. package/out/concepts/MemberExpression__.d.ts +77 -75
  283. package/out/concepts/MemberExpression__.js +496 -495
  284. package/out/concepts/MemberExpression__.js.map +1 -1
  285. package/out/concepts/MicroApp__.d.ts +54 -52
  286. package/out/concepts/MicroApp__.js +122 -127
  287. package/out/concepts/MicroApp__.js.map +1 -1
  288. package/out/concepts/Module__.d.ts +985 -1236
  289. package/out/concepts/Module__.js +1450 -1756
  290. package/out/concepts/Module__.js.map +1 -1
  291. package/out/concepts/MsgTriggerEvent__.d.ts +140 -138
  292. package/out/concepts/MsgTriggerEvent__.js +239 -236
  293. package/out/concepts/MsgTriggerEvent__.js.map +1 -1
  294. package/out/concepts/MsgTriggerLauncher__.d.ts +129 -127
  295. package/out/concepts/MsgTriggerLauncher__.js +234 -232
  296. package/out/concepts/MsgTriggerLauncher__.js.map +1 -1
  297. package/out/concepts/Namespace__.d.ts +1086 -1070
  298. package/out/concepts/Namespace__.js +1546 -1491
  299. package/out/concepts/Namespace__.js.map +1 -1
  300. package/out/concepts/NewComposite__.d.ts +351 -349
  301. package/out/concepts/NewComposite__.js +1261 -1311
  302. package/out/concepts/NewComposite__.js.map +1 -1
  303. package/out/concepts/NewList__.d.ts +138 -136
  304. package/out/concepts/NewList__.js +455 -449
  305. package/out/concepts/NewList__.js.map +1 -1
  306. package/out/concepts/NewMap__.d.ts +229 -227
  307. package/out/concepts/NewMap__.js +600 -589
  308. package/out/concepts/NewMap__.js.map +1 -1
  309. package/out/concepts/New__.d.ts +23 -21
  310. package/out/concepts/New__.js +71 -69
  311. package/out/concepts/New__.js.map +1 -1
  312. package/out/concepts/NullLiteral__.d.ts +29 -27
  313. package/out/concepts/NullLiteral__.js +84 -82
  314. package/out/concepts/NullLiteral__.js.map +1 -1
  315. package/out/concepts/NumericLiteral__.d.ts +59 -57
  316. package/out/concepts/NumericLiteral__.js +190 -189
  317. package/out/concepts/NumericLiteral__.js.map +1 -1
  318. package/out/concepts/OqlQueryComponent__.d.ts +76 -74
  319. package/out/concepts/OqlQueryComponent__.js +368 -365
  320. package/out/concepts/OqlQueryComponent__.js.map +1 -1
  321. package/out/concepts/OverriddenLogic__.d.ts +637 -635
  322. package/out/concepts/OverriddenLogic__.js +1693 -1691
  323. package/out/concepts/OverriddenLogic__.js.map +1 -1
  324. package/out/concepts/Param__.d.ts +182 -180
  325. package/out/concepts/Param__.js +512 -512
  326. package/out/concepts/Param__.js.map +1 -1
  327. package/out/concepts/Point__.d.ts +34 -32
  328. package/out/concepts/Point__.js +82 -82
  329. package/out/concepts/Point__.js.map +1 -1
  330. package/out/concepts/ProcessComponent__.d.ts +222 -220
  331. package/out/concepts/ProcessComponent__.js +360 -360
  332. package/out/concepts/ProcessComponent__.js.map +1 -1
  333. package/out/concepts/ProcessElement__.d.ts +649 -647
  334. package/out/concepts/ProcessElement__.js +1335 -1334
  335. package/out/concepts/ProcessElement__.js.map +1 -1
  336. package/out/concepts/ProcessOutcome__.d.ts +33 -32
  337. package/out/concepts/ProcessOutcome__.js +108 -92
  338. package/out/concepts/ProcessOutcome__.js.map +1 -1
  339. package/out/concepts/ProcessOutcomes__.d.ts +33 -32
  340. package/out/concepts/ProcessOutcomes__.js +110 -93
  341. package/out/concepts/ProcessOutcomes__.js.map +1 -1
  342. package/out/concepts/Process__.d.ts +616 -614
  343. package/out/concepts/Process__.js +1139 -1135
  344. package/out/concepts/Process__.js.map +1 -1
  345. package/out/concepts/QueryAggregateExpression__.d.ts +54 -52
  346. package/out/concepts/QueryAggregateExpression__.js +159 -159
  347. package/out/concepts/QueryAggregateExpression__.js.map +1 -1
  348. package/out/concepts/QueryFieldExpression__.d.ts +56 -54
  349. package/out/concepts/QueryFieldExpression__.js +163 -164
  350. package/out/concepts/QueryFieldExpression__.js.map +1 -1
  351. package/out/concepts/QueryFromExpression__.d.ts +101 -99
  352. package/out/concepts/QueryFromExpression__.js +220 -220
  353. package/out/concepts/QueryFromExpression__.js.map +1 -1
  354. package/out/concepts/QueryGroupByExpression__.d.ts +49 -47
  355. package/out/concepts/QueryGroupByExpression__.js +150 -148
  356. package/out/concepts/QueryGroupByExpression__.js.map +1 -1
  357. package/out/concepts/QueryJoinExpression__.d.ts +188 -186
  358. package/out/concepts/QueryJoinExpression__.js +347 -348
  359. package/out/concepts/QueryJoinExpression__.js.map +1 -1
  360. package/out/concepts/QueryLimitExpression__.d.ts +60 -58
  361. package/out/concepts/QueryLimitExpression__.js +172 -171
  362. package/out/concepts/QueryLimitExpression__.js.map +1 -1
  363. package/out/concepts/QueryOrderByExpression__.d.ts +71 -69
  364. package/out/concepts/QueryOrderByExpression__.js +185 -184
  365. package/out/concepts/QueryOrderByExpression__.js.map +1 -1
  366. package/out/concepts/QuerySelectExpression__.d.ts +206 -204
  367. package/out/concepts/QuerySelectExpression__.js +311 -308
  368. package/out/concepts/QuerySelectExpression__.js.map +1 -1
  369. package/out/concepts/Rect__.d.ts +42 -40
  370. package/out/concepts/Rect__.js +98 -100
  371. package/out/concepts/Rect__.js.map +1 -1
  372. package/out/concepts/Return__.d.ts +147 -145
  373. package/out/concepts/Return__.js +410 -409
  374. package/out/concepts/Return__.js.map +1 -1
  375. package/out/concepts/Role__.d.ts +65 -63
  376. package/out/concepts/Role__.js +172 -173
  377. package/out/concepts/Role__.js.map +1 -1
  378. package/out/concepts/SelectMembers__.d.ts +145 -143
  379. package/out/concepts/SelectMembers__.js +307 -305
  380. package/out/concepts/SelectMembers__.js.map +1 -1
  381. package/out/concepts/Slot__.d.ts +77 -75
  382. package/out/concepts/Slot__.js +175 -178
  383. package/out/concepts/Slot__.js.map +1 -1
  384. package/out/concepts/SqlQueryComponent__.d.ts +74 -72
  385. package/out/concepts/SqlQueryComponent__.js +291 -292
  386. package/out/concepts/SqlQueryComponent__.js.map +1 -1
  387. package/out/concepts/Start__.d.ts +27 -25
  388. package/out/concepts/Start__.js +76 -74
  389. package/out/concepts/Start__.js.map +1 -1
  390. package/out/concepts/StringInterpolation__.d.ts +118 -116
  391. package/out/concepts/StringInterpolation__.js +275 -272
  392. package/out/concepts/StringInterpolation__.js.map +1 -1
  393. package/out/concepts/StringLiteral__.d.ts +45 -43
  394. package/out/concepts/StringLiteral__.js +165 -157
  395. package/out/concepts/StringLiteral__.js.map +1 -1
  396. package/out/concepts/StructureProperty__.d.ts +150 -148
  397. package/out/concepts/StructureProperty__.js +373 -372
  398. package/out/concepts/StructureProperty__.js.map +1 -1
  399. package/out/concepts/Structure__.d.ts +252 -248
  400. package/out/concepts/Structure__.js +521 -506
  401. package/out/concepts/Structure__.js.map +1 -1
  402. package/out/concepts/SwitchCase__.d.ts +97 -95
  403. package/out/concepts/SwitchCase__.js +287 -281
  404. package/out/concepts/SwitchCase__.js.map +1 -1
  405. package/out/concepts/SwitchStatement__.d.ts +87 -85
  406. package/out/concepts/SwitchStatement__.js +212 -209
  407. package/out/concepts/SwitchStatement__.js.map +1 -1
  408. package/out/concepts/Theme__.d.ts +40 -38
  409. package/out/concepts/Theme__.js +91 -89
  410. package/out/concepts/Theme__.js.map +1 -1
  411. package/out/concepts/Transactional__.d.ts +90 -88
  412. package/out/concepts/Transactional__.js +171 -172
  413. package/out/concepts/Transactional__.js.map +1 -1
  414. package/out/concepts/TriggerEvent__.d.ts +123 -121
  415. package/out/concepts/TriggerEvent__.js +236 -234
  416. package/out/concepts/TriggerEvent__.js.map +1 -1
  417. package/out/concepts/TriggerLauncher__.d.ts +84 -82
  418. package/out/concepts/TriggerLauncher__.js +223 -225
  419. package/out/concepts/TriggerLauncher__.js.map +1 -1
  420. package/out/concepts/TypeAnnotation__.d.ts +304 -299
  421. package/out/concepts/TypeAnnotation__.js +1054 -1025
  422. package/out/concepts/TypeAnnotation__.js.map +1 -1
  423. package/out/concepts/TypeParam__.d.ts +28 -26
  424. package/out/concepts/TypeParam__.js +82 -81
  425. package/out/concepts/TypeParam__.js.map +1 -1
  426. package/out/concepts/UnaryExpression__.d.ts +52 -50
  427. package/out/concepts/UnaryExpression__.js +200 -199
  428. package/out/concepts/UnaryExpression__.js.map +1 -1
  429. package/out/concepts/Unparsed__.d.ts +36 -33
  430. package/out/concepts/Unparsed__.js +103 -102
  431. package/out/concepts/Unparsed__.js.map +1 -1
  432. package/out/concepts/UseComponent__.d.ts +34 -32
  433. package/out/concepts/UseComponent__.js +82 -82
  434. package/out/concepts/UseComponent__.js.map +1 -1
  435. package/out/concepts/ValidationRule__.d.ts +152 -150
  436. package/out/concepts/ValidationRule__.js +531 -525
  437. package/out/concepts/ValidationRule__.js.map +1 -1
  438. package/out/concepts/Variable__.d.ts +167 -165
  439. package/out/concepts/Variable__.js +479 -478
  440. package/out/concepts/Variable__.js.map +1 -1
  441. package/out/concepts/ViewBlock__.d.ts +38 -36
  442. package/out/concepts/ViewBlock__.js +90 -91
  443. package/out/concepts/ViewBlock__.js.map +1 -1
  444. package/out/concepts/ViewComponent__.d.ts +568 -566
  445. package/out/concepts/ViewComponent__.js +819 -816
  446. package/out/concepts/ViewComponent__.js.map +1 -1
  447. package/out/concepts/ViewElement__.d.ts +628 -626
  448. package/out/concepts/ViewElement__.js +2315 -2316
  449. package/out/concepts/ViewElement__.js.map +1 -1
  450. package/out/concepts/View__.d.ts +725 -723
  451. package/out/concepts/View__.js +2219 -2217
  452. package/out/concepts/View__.js.map +1 -1
  453. package/out/concepts/WhileStatement__.d.ts +100 -98
  454. package/out/concepts/WhileStatement__.js +251 -247
  455. package/out/concepts/WhileStatement__.js.map +1 -1
  456. package/out/concepts/basics/constants.d.ts +1 -0
  457. package/out/concepts/basics/constants.js +6 -0
  458. package/out/concepts/basics/constants.js.map +1 -0
  459. package/out/concepts/basics/stdlib/index.d.ts +4 -4
  460. package/out/concepts/basics/stdlib/index.js +44 -44
  461. package/out/concepts/basics/stdlib/nasl.auth.d.ts +7 -7
  462. package/out/concepts/basics/stdlib/nasl.auth.js +163 -163
  463. package/out/concepts/basics/stdlib/nasl.browser.d.ts +3 -3
  464. package/out/concepts/basics/stdlib/nasl.browser.js +148 -148
  465. package/out/concepts/basics/stdlib/nasl.collection.d.ts +7 -7
  466. package/out/concepts/basics/stdlib/nasl.collection.js +51 -51
  467. package/out/concepts/basics/stdlib/nasl.configuration.d.ts +3 -3
  468. package/out/concepts/basics/stdlib/nasl.configuration.js +55 -55
  469. package/out/concepts/basics/stdlib/nasl.core.d.ts +5 -5
  470. package/out/concepts/basics/stdlib/nasl.core.js +48 -48
  471. package/out/concepts/basics/stdlib/nasl.event.d.ts +3 -3
  472. package/out/concepts/basics/stdlib/nasl.event.js +24 -24
  473. package/out/concepts/basics/stdlib/nasl.http.d.ts +7 -7
  474. package/out/concepts/basics/stdlib/nasl.http.js +168 -168
  475. package/out/concepts/basics/stdlib/nasl.interface.d.ts +7 -7
  476. package/out/concepts/basics/stdlib/nasl.interface.js +42 -42
  477. package/out/concepts/basics/stdlib/nasl.io.d.ts +3 -3
  478. package/out/concepts/basics/stdlib/nasl.io.js +51 -51
  479. package/out/concepts/basics/stdlib/nasl.logging.d.ts +3 -3
  480. package/out/concepts/basics/stdlib/nasl.logging.js +55 -55
  481. package/out/concepts/basics/stdlib/nasl.process.d.ts +7 -7
  482. package/out/concepts/basics/stdlib/nasl.process.js +637 -637
  483. package/out/concepts/basics/stdlib/nasl.ui.d.ts +7 -7
  484. package/out/concepts/basics/stdlib/nasl.ui.js +1062 -1062
  485. package/out/concepts/basics/stdlib/nasl.util.d.ts +5 -5
  486. package/out/concepts/basics/stdlib/nasl.util.js +2291 -2291
  487. package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
  488. package/out/concepts/basics/stdlib/nasl.validation.d.ts +3 -3
  489. package/out/concepts/basics/stdlib/nasl.validation.js +564 -564
  490. package/out/concepts/basics/stdlib/reference2TypeAnnotationList.d.ts +5 -5
  491. package/out/concepts/basics/stdlib/reference2TypeAnnotationList.js +25 -25
  492. package/out/concepts/basics/stdlib/timeZone.d.ts +5 -5
  493. package/out/concepts/basics/stdlib/timeZone.js +195 -195
  494. package/out/concepts/basics/types/coreTypeList.d.ts +2 -2
  495. package/out/concepts/basics/types/coreTypeList.js +14 -14
  496. package/out/concepts/basics/types/index.d.ts +16 -16
  497. package/out/concepts/basics/types/index.js +34 -34
  498. package/out/concepts/index.d.ts +6 -6
  499. package/out/concepts/index.js +24 -24
  500. package/out/concepts/index__.d.ts +126 -124
  501. package/out/concepts/index__.js +142 -140
  502. package/out/concepts/index__.js.map +1 -1
  503. package/out/concepts/types__.d.ts +128 -126
  504. package/out/concepts/types__.js +2 -2
  505. package/out/config.d.ts +43 -43
  506. package/out/config.js +71 -71
  507. package/out/decorators/index.d.ts +69 -57
  508. package/out/decorators/index.js +216 -172
  509. package/out/decorators/index.js.map +1 -1
  510. package/out/decorators/promise.d.ts +7 -7
  511. package/out/decorators/promise.js +27 -27
  512. package/out/enums/KEYWORDS.d.ts +6 -6
  513. package/out/enums/KEYWORDS.js +1245 -1243
  514. package/out/enums/KEYWORDS.js.map +1 -1
  515. package/out/enums/LEVEL_NAME_MAP.d.ts +26 -26
  516. package/out/enums/LEVEL_NAME_MAP.js +29 -29
  517. package/out/eventBus.d.ts +3 -3
  518. package/out/eventBus.js +6 -6
  519. package/out/generator/compileComponent.d.ts +11 -11
  520. package/out/generator/compileComponent.js +11 -11
  521. package/out/generator/genBundleFiles.d.ts +34 -34
  522. package/out/generator/genBundleFiles.js +356 -356
  523. package/out/generator/genBundleFiles.js.map +1 -1
  524. package/out/generator/genHash.d.ts +7 -7
  525. package/out/generator/genHash.js +38 -38
  526. package/out/generator/genMetaData.d.ts +31 -31
  527. package/out/generator/genMetaData.js +305 -301
  528. package/out/generator/genMetaData.js.map +1 -1
  529. package/out/generator/genReleaseBody.d.ts +72 -72
  530. package/out/generator/genReleaseBody.js +323 -321
  531. package/out/generator/genReleaseBody.js.map +1 -1
  532. package/out/generator/icestark.d.ts +2 -2
  533. package/out/generator/icestark.js +7 -5
  534. package/out/generator/icestark.js.map +1 -1
  535. package/out/generator/index.d.ts +7 -7
  536. package/out/generator/index.js +23 -23
  537. package/out/generator/microApp.d.ts +2 -2
  538. package/out/generator/microApp.js +35 -35
  539. package/out/generator/permission.d.ts +10 -10
  540. package/out/generator/permission.js +269 -269
  541. package/out/generator/qiankun.d.ts +2 -2
  542. package/out/generator/qiankun.js +6 -4
  543. package/out/generator/qiankun.js.map +1 -1
  544. package/out/generator/styleReplacer.d.ts +3 -3
  545. package/out/generator/styleReplacer.js +67 -67
  546. package/out/index.d.ts +13 -13
  547. package/out/index.js +66 -66
  548. package/out/manager/diagnostic.d.ts +35 -35
  549. package/out/manager/diagnostic.js +62 -62
  550. package/out/manager/stepRecorder.d.ts +20 -20
  551. package/out/manager/stepRecorder.js +108 -108
  552. package/out/natural/componentData.d.ts +31 -31
  553. package/out/natural/componentData.js +84 -84
  554. package/out/natural/genNaturalTS.d.ts +3 -3
  555. package/out/natural/genNaturalTS.js +89 -90
  556. package/out/natural/genNaturalTS.js.map +1 -1
  557. package/out/natural/index.d.ts +2 -2
  558. package/out/natural/index.js +18 -18
  559. package/out/natural/naslStdlibMap.d.ts +2 -2
  560. package/out/natural/naslStdlibMap.js +25 -25
  561. package/out/natural/transformTSCode.d.ts +7 -7
  562. package/out/natural/transformTSCode.js +919 -877
  563. package/out/natural/transformTSCode.js.map +1 -1
  564. package/out/sentry/index.d.ts +34 -34
  565. package/out/sentry/index.js +148 -147
  566. package/out/sentry/index.js.map +1 -1
  567. package/out/server/createUiTs.d.ts +16 -16
  568. package/out/server/createUiTs.js +242 -242
  569. package/out/server/entity2LogicNamespace.d.ts +10 -10
  570. package/out/server/entity2LogicNamespace.js +381 -381
  571. package/out/server/event.d.ts +30 -30
  572. package/out/server/event.js +150 -150
  573. package/out/server/extendBaseNode.d.ts +1 -1
  574. package/out/server/extendBaseNode.js +574 -543
  575. package/out/server/extendBaseNode.js.map +1 -1
  576. package/out/server/formatTsUtils.d.ts +37 -37
  577. package/out/server/formatTsUtils.js +851 -851
  578. package/out/server/getConnector.d.ts +14 -14
  579. package/out/server/getConnector.js +77 -77
  580. package/out/server/getExtensionModules.d.ts +3 -3
  581. package/out/server/getExtensionModules.js +33 -33
  582. package/out/server/getFunctions.d.ts +3 -3
  583. package/out/server/getFunctions.js +19 -19
  584. package/out/server/getInterfaces.d.ts +2 -2
  585. package/out/server/getInterfaces.js +47 -47
  586. package/out/server/getLogging.d.ts +1 -1
  587. package/out/server/getLogging.js +8 -8
  588. package/out/server/getLogics.d.ts +4 -4
  589. package/out/server/getLogics.js +380 -380
  590. package/out/server/getMemberIdentifier.d.ts +17 -17
  591. package/out/server/getMemberIdentifier.js +508 -508
  592. package/out/server/getProcessComponents.d.ts +2 -2
  593. package/out/server/getProcessComponents.js +12 -12
  594. package/out/server/getProcesses.d.ts +33 -33
  595. package/out/server/getProcesses.js +596 -596
  596. package/out/server/getScope.d.ts +13 -13
  597. package/out/server/getScope.js +60 -60
  598. package/out/server/getValidates.d.ts +3 -3
  599. package/out/server/getValidates.js +13 -13
  600. package/out/server/index.d.ts +5 -5
  601. package/out/server/index.js +41 -41
  602. package/out/server/naslServer.d.ts +375 -371
  603. package/out/server/naslServer.js +4706 -4585
  604. package/out/server/naslServer.js.map +1 -1
  605. package/out/server/naslStdlibMap.d.ts +2 -2
  606. package/out/server/naslStdlibMap.js +53 -53
  607. package/out/server/process2LogicNamespace.d.ts +26 -26
  608. package/out/server/process2LogicNamespace.js +108 -108
  609. package/out/server/translator.d.ts +26 -26
  610. package/out/server/translator.js +819 -805
  611. package/out/server/translator.js.map +1 -1
  612. package/out/service/creator/add.configs.d.ts +1 -1
  613. package/out/service/creator/add.configs.js +102 -102
  614. package/out/service/creator/errHandles.d.ts +18 -18
  615. package/out/service/creator/errHandles.js +67 -67
  616. package/out/service/creator/index.d.ts +1 -1
  617. package/out/service/creator/index.js +86 -86
  618. package/out/service/datasource/api.d.ts +12 -12
  619. package/out/service/datasource/api.js +13 -13
  620. package/out/service/datasource/index.d.ts +2 -2
  621. package/out/service/datasource/index.js +9 -9
  622. package/out/service/defaultErrorMessage.json +98 -98
  623. package/out/service/logic/api.d.ts +9 -9
  624. package/out/service/logic/api.js +10 -10
  625. package/out/service/logic/checktypeSocket.d.ts +5 -5
  626. package/out/service/logic/checktypeSocket.js +54 -54
  627. package/out/service/logic/index.d.ts +2 -2
  628. package/out/service/logic/index.js +9 -9
  629. package/out/service/storage/api.d.ts +54 -54
  630. package/out/service/storage/api.js +41 -41
  631. package/out/service/storage/index.d.ts +2 -2
  632. package/out/service/storage/index.js +9 -9
  633. package/out/service/storage/init.d.ts +102 -102
  634. package/out/service/storage/init.js +1161 -1161
  635. package/out/service/storage/jsoner.d.ts +36 -36
  636. package/out/service/storage/jsoner.js +128 -130
  637. package/out/service/storage/jsoner.js.map +1 -1
  638. package/out/service/storage/map.d.ts +4 -4
  639. package/out/service/storage/map.js +53 -53
  640. package/out/service/storage/service.d.ts +25 -25
  641. package/out/service/storage/service.js +79 -79
  642. package/out/service/storage/storagePoint.d.ts +17 -17
  643. package/out/service/storage/storagePoint.js +75 -75
  644. package/out/service/video/BaseService.d.ts +7 -7
  645. package/out/service/video/BaseService.js +60 -60
  646. package/out/service/video/MainCallbackService.d.ts +12 -12
  647. package/out/service/video/MainCallbackService.js +182 -182
  648. package/out/service/video/VideoTranscribe.d.ts +15 -15
  649. package/out/service/video/VideoTranscribe.js +95 -95
  650. package/out/service/video/publishService.d.ts +1 -1
  651. package/out/service/video/publishService.js +57 -57
  652. package/out/templator/genCallComponentLogic.d.ts +17 -17
  653. package/out/templator/genCallComponentLogic.js +28 -28
  654. package/out/templator/genCreateBlock.d.ts +10 -10
  655. package/out/templator/genCreateBlock.js +297 -297
  656. package/out/templator/genCurdEditMultipleKeyBlock.d.ts +8 -8
  657. package/out/templator/genCurdEditMultipleKeyBlock.js +398 -398
  658. package/out/templator/genCurdMultipleKeyBlock.d.ts +34 -34
  659. package/out/templator/genCurdMultipleKeyBlock.js +541 -541
  660. package/out/templator/genEditTableBlock.d.ts +51 -51
  661. package/out/templator/genEditTableBlock.js +255 -255
  662. package/out/templator/genEnumSelectBlock.d.ts +10 -10
  663. package/out/templator/genEnumSelectBlock.js +21 -21
  664. package/out/templator/genGetBlock.d.ts +6 -6
  665. package/out/templator/genGetBlock.js +96 -96
  666. package/out/templator/genGridViewBlock.d.ts +55 -55
  667. package/out/templator/genGridViewBlock.js +286 -286
  668. package/out/templator/genListViewBlock.d.ts +19 -19
  669. package/out/templator/genListViewBlock.js +108 -108
  670. package/out/templator/genQueryComponent.d.ts +34 -34
  671. package/out/templator/genQueryComponent.js +348 -348
  672. package/out/templator/genSelectBlock.d.ts +45 -45
  673. package/out/templator/genSelectBlock.js +340 -340
  674. package/out/templator/genTableBlock.d.ts +53 -53
  675. package/out/templator/genTableBlock.js +226 -226
  676. package/out/templator/genUpdateBlock.d.ts +6 -6
  677. package/out/templator/genUpdateBlock.js +322 -322
  678. package/out/templator/index.d.ts +19 -19
  679. package/out/templator/index.js +37 -37
  680. package/out/templator/utils.d.ts +683 -683
  681. package/out/templator/utils.js +458 -458
  682. package/out/translator/constant.d.ts +6 -6
  683. package/out/translator/constant.js +9 -9
  684. package/out/translator/index.d.ts +3 -3
  685. package/out/translator/index.js +19 -19
  686. package/out/translator/types.d.ts +33 -32
  687. package/out/translator/types.js +2 -2
  688. package/out/translator/utils.d.ts +17 -17
  689. package/out/translator/utils.js +110 -97
  690. package/out/translator/utils.js.map +1 -1
  691. package/out/utils/cookie.d.ts +9 -9
  692. package/out/utils/cookie.js +61 -61
  693. package/out/utils/env.d.ts +2 -2
  694. package/out/utils/env.js +5 -5
  695. package/out/utils/i18nInfo.d.ts +5 -5
  696. package/out/utils/i18nInfo.js +60 -60
  697. package/out/utils/index.d.ts +44 -44
  698. package/out/utils/index.js +200 -200
  699. package/out/utils/logger.d.ts +7 -7
  700. package/out/utils/logger.js +22 -22
  701. package/out/utils/sortTsString.d.ts +1 -1
  702. package/out/utils/sortTsString.js +43 -37
  703. package/out/utils/sortTsString.js.map +1 -1
  704. package/out/utils/string.d.ts +51 -51
  705. package/out/utils/string.js +106 -106
  706. package/out/utils/time-slicing.d.ts +41 -41
  707. package/out/utils/time-slicing.js +81 -81
  708. package/out/utils/traverse.d.ts +36 -36
  709. package/out/utils/traverse.js +142 -142
  710. package/out/utils/types.d.ts +1 -1
  711. package/out/utils/types.js +2 -2
  712. package/out/utils/window.d.ts +7 -7
  713. package/out/utils/window.js +13 -13
  714. package/package.json +8 -8
  715. package/sandbox/stdlib/nasl.oql.ts +6 -1
  716. package/sandbox-natural/stdlib/nasl.core.ts +6 -3
  717. package/sandbox-natural/stdlib/nasl.oql.ts +6 -0
  718. package/sandbox-natural/stdlib/nasl.util.ts +2 -1
  719. package/src/automate/template/myProcess.js +3 -2
  720. package/src/common/BaseNode.ts +108 -51
  721. package/src/concepts/Abort__.ts +4 -1
  722. package/src/concepts/AbstractInterface__.ts +64 -0
  723. package/src/concepts/Anchor__.ts +6 -2
  724. package/src/concepts/AnonymousFunction__.ts +11 -5
  725. package/src/concepts/App__.ts +1648 -1378
  726. package/src/concepts/Argument__.ts +7 -3
  727. package/src/concepts/Assignee__.ts +10 -5
  728. package/src/concepts/AssignmentLine__.ts +3 -0
  729. package/src/concepts/Assignment__.ts +8 -4
  730. package/src/concepts/Attribute__.ts +7 -2
  731. package/src/concepts/AuthInterface__.ts +3 -0
  732. package/src/concepts/AuthLogicForCallInterface__.ts +8 -4
  733. package/src/concepts/AuthLogic__.ts +3 -0
  734. package/src/concepts/BackendVariable__.ts +11 -4
  735. package/src/concepts/Backend__.ts +5 -1
  736. package/src/concepts/BatchAssignment__.ts +13 -8
  737. package/src/concepts/BinaryExpression__.ts +10 -6
  738. package/src/concepts/BindAttribute__.ts +6 -2
  739. package/src/concepts/BindDirective__.ts +11 -4
  740. package/src/concepts/BindEvent__.ts +8 -3
  741. package/src/concepts/BindStyle__.ts +5 -1
  742. package/src/concepts/BooleanLiteral__.ts +4 -1
  743. package/src/concepts/CallAuthInterface__.ts +11 -3
  744. package/src/concepts/CallConnector__.ts +3 -0
  745. package/src/concepts/CallFunction__.ts +41 -15
  746. package/src/concepts/CallInterface__.ts +33 -21
  747. package/src/concepts/CallLogic__.ts +41 -35
  748. package/src/concepts/CallQueryComponent__.ts +11 -14
  749. package/src/concepts/Comment__.ts +3 -0
  750. package/src/concepts/CompletionProperty__.ts +5 -1
  751. package/src/concepts/ConfigGroup__.ts +5 -1
  752. package/src/concepts/ConfigPropertyValue__.ts +3 -0
  753. package/src/concepts/ConfigProperty__.ts +5 -1
  754. package/src/concepts/Configuration__.ts +5 -1
  755. package/src/concepts/Connection__.ts +5 -1
  756. package/src/concepts/ConnectorTrigger__.ts +3 -0
  757. package/src/concepts/Connector__.ts +910 -25
  758. package/src/concepts/Constant__.ts +9 -4
  759. package/src/concepts/DataSource__.ts +5 -1
  760. package/src/concepts/DatabaseTypeAnnotation__.ts +3 -0
  761. package/src/concepts/DefaultValue__.ts +4 -3
  762. package/src/concepts/Destination__.ts +8 -4
  763. package/src/concepts/End__.ts +3 -0
  764. package/src/concepts/EntityIndex__.ts +3 -0
  765. package/src/concepts/EntityProperty__.ts +14 -4
  766. package/src/concepts/Entity__.ts +17 -2
  767. package/src/concepts/EnumItem__.ts +3 -0
  768. package/src/concepts/Enum__.ts +5 -1
  769. package/src/concepts/Event__.ts +5 -1
  770. package/src/concepts/ExternalDestination__.ts +7 -3
  771. package/src/concepts/ForEachStatement__.ts +21 -16
  772. package/src/concepts/FrontendLibrary__.ts +7 -2
  773. package/src/concepts/FrontendVariable__.ts +3 -0
  774. package/src/concepts/Frontend__.ts +59 -14
  775. package/src/concepts/Function__.ts +15 -7
  776. package/src/concepts/I18nInfo__.ts +1 -0
  777. package/src/concepts/Identifier__.ts +9 -2
  778. package/src/concepts/IfStatement__.ts +25 -22
  779. package/src/concepts/Integration__.ts +8 -4
  780. package/src/concepts/InterfaceFromExample__.ts +194 -0
  781. package/src/concepts/InterfaceParam__.ts +20 -4
  782. package/src/concepts/Interface__.ts +51 -25
  783. package/src/concepts/JSBlock__.ts +3 -0
  784. package/src/concepts/JavaLogic__.ts +3 -0
  785. package/src/concepts/LogicItem__.ts +3 -0
  786. package/src/concepts/Logic__.ts +48 -19
  787. package/src/concepts/MatchCase__.ts +16 -5
  788. package/src/concepts/Match__.ts +8 -4
  789. package/src/concepts/MemberExpression__.ts +8 -4
  790. package/src/concepts/MicroApp__.ts +3 -0
  791. package/src/concepts/Module__.ts +286 -893
  792. package/src/concepts/MsgTriggerEvent__.ts +5 -1
  793. package/src/concepts/MsgTriggerLauncher__.ts +6 -2
  794. package/src/concepts/Namespace__.ts +246 -173
  795. package/src/concepts/NewComposite__.ts +54 -103
  796. package/src/concepts/NewList__.ts +27 -18
  797. package/src/concepts/NewMap__.ts +29 -15
  798. package/src/concepts/New__.ts +3 -0
  799. package/src/concepts/NullLiteral__.ts +4 -1
  800. package/src/concepts/NumericLiteral__.ts +6 -2
  801. package/src/concepts/OqlQueryComponent__.ts +8 -1
  802. package/src/concepts/OverriddenLogic__.ts +18 -7
  803. package/src/concepts/Param__.ts +8 -2
  804. package/src/concepts/Point__.ts +3 -0
  805. package/src/concepts/ProcessComponent__.ts +7 -2
  806. package/src/concepts/ProcessElement__.ts +19 -8
  807. package/src/concepts/ProcessOutcome__.ts +20 -2
  808. package/src/concepts/ProcessOutcomes__.ts +20 -2
  809. package/src/concepts/Process__.ts +15 -7
  810. package/src/concepts/QueryAggregateExpression__.ts +5 -1
  811. package/src/concepts/QueryFieldExpression__.ts +3 -0
  812. package/src/concepts/QueryFromExpression__.ts +5 -1
  813. package/src/concepts/QueryGroupByExpression__.ts +5 -1
  814. package/src/concepts/QueryJoinExpression__.ts +5 -1
  815. package/src/concepts/QueryLimitExpression__.ts +5 -1
  816. package/src/concepts/QueryOrderByExpression__.ts +5 -1
  817. package/src/concepts/QuerySelectExpression__.ts +5 -1
  818. package/src/concepts/Rect__.ts +3 -0
  819. package/src/concepts/Return__.ts +9 -3
  820. package/src/concepts/Role__.ts +3 -0
  821. package/src/concepts/SelectMembers__.ts +5 -1
  822. package/src/concepts/Slot__.ts +5 -1
  823. package/src/concepts/SqlQueryComponent__.ts +5 -1
  824. package/src/concepts/Start__.ts +3 -0
  825. package/src/concepts/StringInterpolation__.ts +7 -3
  826. package/src/concepts/StringLiteral__.ts +12 -3
  827. package/src/concepts/StructureProperty__.ts +12 -4
  828. package/src/concepts/Structure__.ts +25 -3
  829. package/src/concepts/SwitchCase__.ts +9 -1
  830. package/src/concepts/SwitchStatement__.ts +7 -3
  831. package/src/concepts/Theme__.ts +3 -0
  832. package/src/concepts/Transactional__.ts +3 -0
  833. package/src/concepts/TriggerEvent__.ts +5 -1
  834. package/src/concepts/TriggerLauncher__.ts +3 -0
  835. package/src/concepts/TypeAnnotation__.ts +62 -23
  836. package/src/concepts/TypeParam__.ts +3 -0
  837. package/src/concepts/UnaryExpression__.ts +8 -4
  838. package/src/concepts/Unparsed__.ts +5 -2
  839. package/src/concepts/UseComponent__.ts +3 -0
  840. package/src/concepts/ValidationRule__.ts +21 -7
  841. package/src/concepts/Variable__.ts +10 -4
  842. package/src/concepts/ViewBlock__.ts +3 -0
  843. package/src/concepts/ViewComponent__.ts +15 -6
  844. package/src/concepts/ViewElement__.ts +13 -5
  845. package/src/concepts/View__.ts +27 -11
  846. package/src/concepts/WhileStatement__.ts +7 -1
  847. package/src/concepts/basics/constants.ts +2 -0
  848. package/src/concepts/basics/stdlib/nasl.util.ts +3 -3
  849. package/src/concepts/index__.ts +2 -0
  850. package/src/concepts/types__.ts +4 -0
  851. package/src/decorators/index.ts +55 -0
  852. package/src/enums/KEYWORDS.ts +2 -0
  853. package/src/generator/genBundleFiles.ts +7 -7
  854. package/src/generator/genMetaData.ts +7 -2
  855. package/src/generator/genReleaseBody.ts +8 -4
  856. package/src/generator/icestark.ts +4 -2
  857. package/src/generator/qiankun.ts +3 -1
  858. package/src/natural/genNaturalTS.ts +5 -6
  859. package/src/natural/transformTSCode.ts +53 -13
  860. package/src/sentry/index.ts +3 -1
  861. package/src/server/extendBaseNode.ts +30 -2
  862. package/src/server/naslServer.ts +142 -22
  863. package/src/server/translator.ts +13 -1
  864. package/src/service/storage/jsoner.ts +2 -2
  865. package/src/translator/types.ts +1 -0
  866. package/src/translator/utils.ts +15 -0
  867. package/src/utils/sortTsString.ts +9 -4
  868. package/test/concepts/call-function/__snapshots__/toEmbeddedTS.spec.ts.snap +26 -0
  869. package/test/concepts/call-function/__snapshots__/toJS.spec.ts.snap +26 -0
  870. package/test/concepts/call-function/constant.ts +5 -0
  871. package/test/concepts/call-function/fixtures/from-string.json +100 -0
  872. package/test/concepts/call-function/fixtures/to-string-global-tz.json +99 -0
  873. package/test/concepts/call-function/fixtures/to-string-no-tz.json +89 -0
  874. package/test/concepts/call-function/fixtures/to-string-user-tz.json +101 -0
  875. package/test/concepts/call-function/fixtures/to-string-utc-tz.json +101 -0
  876. package/test/concepts/call-function/toEmbeddedTS.spec.ts +14 -0
  877. package/test/concepts/call-function/toJS.spec.ts +14 -0
  878. package/test/concepts/call-interface/__snapshots__/toEmbeddedTS.spec.ts.snap +6 -3
  879. package/test/concepts/call-logic/__snapshots__/getQuickInfoOffset.spec.ts.snap +3 -3
  880. package/test/concepts/call-logic/__snapshots__/toEmbeddedTS.spec.ts.snap +3 -3
@@ -1,1326 +1,1377 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
- return c > 3 && r && Object.defineProperty(target, key, r), r;
23
- };
24
- var __importStar = (this && this.__importStar) || function (mod) {
25
- if (mod && mod.__esModule) return mod;
26
- var result = {};
27
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
- __setModuleDefault(result, mod);
29
- return result;
30
- };
31
- var __importDefault = (this && this.__importDefault) || function (mod) {
32
- return (mod && mod.__esModule) ? mod : { "default": mod };
33
- };
34
- var BaseNode_1;
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.BaseNode = void 0;
37
- const lodash_1 = require("lodash");
38
- const uuid_1 = require("uuid");
39
- const map_1 = require("../service/storage/map");
40
- const utils = __importStar(require("../utils"));
41
- const EventEmitter_1 = require("./EventEmitter");
42
- const decorators_1 = require("../decorators");
43
- const sentry_1 = require("../sentry");
44
- const operations_1 = __importDefault(require("../breakpoint/shared/operations"));
45
- /**
46
- * 顶点类
47
- * 属性均为只读,仅在初始化和 load 的情况下可以修改
48
- */
49
- let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
50
- static { BaseNode_1 = this; }
51
- static ConceptName = 'BaseNode';
52
- /**
53
- * 可修改标志,内部属性
54
- * 标记在构造函数结束后是否可修改
55
- */
56
- _mutable = true;
57
- /** 节点类别缓存 */
58
- _concept;
59
- /**
60
- * 概念
61
- */
62
- get concept() {
63
- return this._concept ?? this.constructor.ConceptName;
64
- }
65
- set concept(val) {
66
- console.warn(`[警告] 尽快移除变更 concept 值的操作,下个版本 concept 将会改为只读。\n当前变更:${this.concept} -> ${val},原始节点类别:${this.constructor.ConceptName}`);
67
- if (val !== this.concept) {
68
- if (val === this.constructor.ConceptName) {
69
- delete this._concept;
70
- }
71
- else {
72
- this._concept = val;
73
- }
74
- }
75
- }
76
- /**
77
- * toJSON 时需要去除的键,为了避免出现 CircularJSON
78
- */
79
- JSON_EXCLUDED_KEYS;
80
- /**
81
- * 唯一 Id
82
- */
83
- id = (0, uuid_1.v4)().replace(/-/g, '');
84
- /**
85
- * 变动时间
86
- */
87
- changedTime;
88
- /**
89
- * 分支名称
90
- */
91
- branchName;
92
- /**
93
- * 合并代码相关
94
- */
95
- workingCopy;
96
- branch;
97
- /**
98
- * 断点状态
99
- * undefined ==> 未设置
100
- * null ==> 已删除
101
- * 'ENABLED' ==> 启用断点
102
- * 'DISABLED' ==> 禁用断点
103
- */
104
- breakpoint;
105
- /**
106
- * 父节点
107
- */
108
- parentNode = null;
109
- parentKey = '';
110
- /**
111
- * 是否正在编辑
112
- * 前端 UI 状态
113
- */
114
- editable;
115
- /**
116
- * 是否可以删除
117
- * 前端 UI 状态
118
- */
119
- removable;
120
- /**
121
- * 是否正在编辑
122
- * 前端 UI 状态
123
- */
124
- editing;
125
- /**
126
- * 是否正在请求
127
- * 前端 UI 状态
128
- */
129
- loading;
130
- /**
131
- * 节点是否为展开状态
132
- * 前端 UI 状态
133
- */
134
- expanded;
135
- /**
136
- * 节点是否显示
137
- * 前端 UI 状态
138
- */
139
- hidden;
140
- /**
141
- * 页面树节点是否显示
142
- * 前端 UI 状态
143
- */
144
- pageTreeNodeHidden;
145
- /**
146
- * 逻辑树节点是否显示
147
- * 前端 UI 状态
148
- */
149
- logicTreeNodeHidden;
150
- /**
151
- * 数据树节点是否显示
152
- * 前端 UI 状态
153
- */
154
- dataTreeNodeHidden;
155
- /**
156
- * 数据树节点是否显示
157
- * 前端 UI 状态
158
- */
159
- processTreeNodeHidden;
160
- /**
161
- * 数据树节点是否展开
162
- * 前端 UI 状态
163
- */
164
- logicTreeNodeExpanded;
165
- /**
166
- * 用于挂 embeddedTS 的 sourceMap
167
- */
168
- sourceMap;
169
- /**
170
- * 是否为叶子节点
171
- * 前端 UI 状态
172
- */
173
- isLeaf;
174
- storageJSON;
175
- /**
176
- * 当前节点上报错详细信息
177
- */
178
- tsErrorDetail;
179
- name = '';
180
- /**
181
- * 当前节点的类型标注
182
- */
183
- __TypeAnnotation;
184
- /**
185
- * 当前节点的类型标注是不是正确的
186
- */
187
- __isCorrectTypeAnnotation;
188
- /**
189
- * @param source 需要合并的部分参数
190
- */
191
- constructor(source) {
192
- super();
193
- if (this.hasOwnProperty('JSON_EXCLUDED_KEYS') && this.JSON_EXCLUDED_KEYS === undefined)
194
- delete this.JSON_EXCLUDED_KEYS;
195
- /**
196
- * 监听action,delete,update事件
197
- */
198
- this.on('create', this.genActionListener);
199
- this.on('delete', this.genActionListener);
200
- this.on('update', this.genActionListener);
201
- /**
202
- * 监听action,delete,update事件
203
- */
204
- this.on('create', () => operations_1.default.create(this));
205
- this.on('delete', () => operations_1.default.delete(this));
206
- this.on('update', () => operations_1.default.update(this));
207
- }
208
- subConstructor(source) {
209
- const propertyMap = (0, decorators_1.getConceptPropertyMap)(this.concept || this.constructor.name);
210
- const properties = Array.from(new Set([...Object.keys(this), ...Object.keys(source)])).filter((key) => propertyMap.has(key));
211
- // 测试时用的标记属性
212
- if (process.env.NODE_ENV === 'testing') {
213
- properties.push('__$Selected', '__TypeAnnotation');
214
- }
215
- properties.forEach((key) => {
216
- if (key === 'concept') {
217
- return;
218
- }
219
- const sourceItem = source[key] !== undefined ? source[key] : this[key];
220
- let property = propertyMap.get(key);
221
- let objectRefCtor;
222
- // 测试环境下,类型节点由外部注入,所以需要在初始化的时候必须带上类型节点
223
- if (process.env.NODE_ENV === 'testing' && key === '__TypeAnnotation' && sourceItem) {
224
- property = { objectRef: 'TypeAnnotation' };
225
- }
226
- try {
227
- if (property?.objectRef) {
228
- const arr = property.objectRef.split(' | ');
229
- for (let i = 0; i < arr.length; i++) {
230
- objectRefCtor = (0, decorators_1.getConceptConstructor)(arr[i]);
231
- if (sourceItem instanceof objectRefCtor) {
232
- sourceItem.parentNode = this;
233
- sourceItem.parentKey = key;
234
- break;
235
- }
236
- }
237
- }
238
- // 数组的情况也在这里做掉了
239
- const val = objectRefCtor && sourceItem && !(sourceItem instanceof objectRefCtor) ? this.instantiateSub(sourceItem, key) : sourceItem;
240
- if (val !== undefined) {
241
- this[key] = val;
242
- }
243
- }
244
- catch (e) {
245
- // Function has non-object prototype 'undefined' in instanceof check
246
- if (!e.message.includes('Function has non-object prototype'))
247
- throw e;
248
- }
249
- });
250
- operations_1.default.create(this);
251
- // node 环境下需要删除当前节点的 concept 属性
252
- if (utils.isNode && ('concept' in this) && !this.concept) {
253
- Reflect.deleteProperty(this, 'concept');
254
- }
255
- }
256
- fixInstantiate() {
257
- const propertyMap = (0, decorators_1.getConceptPropertyMap)(this.concept ?? this.constructor.name);
258
- const properties = Object.keys(this).filter((key) => propertyMap.has(key));
259
- properties.forEach((key) => {
260
- const property = propertyMap.get(key);
261
- const sourceItem = this[key];
262
- const objectRefCtor = property.objectRef && (0, decorators_1.getConceptConstructor)(property.objectRef);
263
- if (objectRefCtor) {
264
- if (Array.isArray(sourceItem)) {
265
- sourceItem.forEach((item, index) => {
266
- if (item instanceof objectRefCtor) {
267
- item.parentNode = this;
268
- item.parentKey = key;
269
- item.fixInstantiate();
270
- }
271
- else {
272
- sourceItem[index] = this.instantiateSub(item instanceof BaseNode_1 ? item.toJSON() : item, key);
273
- }
274
- });
275
- }
276
- else if (sourceItem instanceof objectRefCtor) {
277
- sourceItem.parentNode = this;
278
- sourceItem.parentKey = key;
279
- sourceItem.fixInstantiate();
280
- }
281
- else {
282
- this[key] = this.instantiateSub(sourceItem instanceof BaseNode_1 ? sourceItem.toJSON() : sourceItem, key);
283
- }
284
- }
285
- });
286
- }
287
- getIndexOfParent() {
288
- let index = -1;
289
- const { parentNode } = this;
290
- if (parentNode) {
291
- const { parentKey } = this;
292
- const parentProperty = parentNode[parentKey];
293
- if (Array.isArray(parentProperty)) {
294
- index = parentProperty.indexOf(this);
295
- }
296
- }
297
- return index;
298
- }
299
- /**
300
- * 为存储点生成行为监听器
301
- * @param action
302
- * @returns
303
- */
304
- genActionListener($event) {
305
- // eventList是要被发送给后端的数据
306
- if (!$event.eventList) {
307
- $event.eventList = [];
308
- }
309
- if (!$event.eventStop) {
310
- $event.eventList.push($event);
311
- }
312
- $event.originEvent = $event.originEvent || $event;
313
- this.onChange($event);
314
- if (this.concept === 'App') {
315
- this.emit('storage', $event);
316
- }
317
- else if (this.parentNode && this.parentNode.emit) {
318
- const event = {
319
- action: 'update',
320
- path: this.parentNode?.getNodePath(false),
321
- object: {},
322
- oldObject: {},
323
- originEvent: $event.originEvent,
324
- eventList: $event.eventList,
325
- // eventStop为true后,数据不再存入eventList,就不再会将冒泡数据发送给后端
326
- eventStop: true,
327
- };
328
- this.parentNode?.emit('update', event);
329
- }
330
- }
331
- createNode({ parentNode, parentKey, index }) {
332
- if (parentNode) {
333
- const property = parentNode[parentKey];
334
- if (Array.isArray(property) && index !== -1) {
335
- property.splice(index, 0, this);
336
- }
337
- else {
338
- parentNode[parentKey] = this;
339
- }
340
- this.parentNode = parentNode;
341
- this.parentKey = parentKey;
342
- this.create({
343
- index,
344
- parentKey,
345
- });
346
- }
347
- }
348
- toTemplateJSON() {
349
- return this._toJSON((source) => {
350
- delete source.id;
351
- return source;
352
- });
353
- }
354
- /**
355
- * 创建节点
356
- */
357
- create(parentParams) {
358
- if (process.env.NODE_ENV === 'development') {
359
- console.log('[创建节点]', this?.name, this);
360
- }
361
- this.emit('create', {
362
- action: 'create',
363
- path: this.getNodePath(true),
364
- object: this.toJSON(),
365
- ...parentParams,
366
- oldObject: null,
367
- });
368
- }
369
- /**
370
- * 如果有父节点,则删除节点,在添加时调用
371
- */
372
- ensureDelete() {
373
- // 批量赋值因为连线的问题需要特殊处理一下.
374
- if (this.parentNode?.concept === 'SelectMembers') {
375
- this.parentNode.ensureDelete();
376
- return;
377
- }
378
- if (this.parentNode && this.parentKey) {
379
- const path = this.getNodePath(false);
380
- const parentParams = this._delete();
381
- if (parentParams && parentParams.index !== -1) {
382
- if (Array.isArray(this.parentNode[this.parentKey])) {
383
- this.emit('delete', {
384
- action: 'delete',
385
- path,
386
- object: null,
387
- ...parentParams,
388
- });
389
- }
390
- else {
391
- const parentPath = this.parentNode.getNodePath(false);
392
- this.parentNode.emit('update', {
393
- action: 'update',
394
- path: parentPath,
395
- object: {
396
- [this.parentKey]: null,
397
- },
398
- oldObject: {
399
- [this.parentKey]: this.toJSON(),
400
- },
401
- });
402
- }
403
- }
404
- }
405
- }
406
- /**
407
- * 删除节点
408
- */
409
- delete() {
410
- if (this.parentNode?.concept === 'Match' && this.parentKey === 'expression') {
411
- this.parentNode.setExpressionWitchCase(null);
412
- return;
413
- }
414
- // 批量赋值因为连线的问题需要特殊处理一下.
415
- if (this.parentNode?.concept === 'SelectMembers') {
416
- const node = this.parentNode;
417
- node.delete();
418
- return;
419
- }
420
- if (this.concept === 'SelectMembers') {
421
- const node = this.parentNode;
422
- node.changeLinesLocation(this);
423
- }
424
- // 自定义连接器下的namespace删除的时候需要同时删除对应的logic
425
- if (this.concept === 'Namespace' && this.parentNode.concept === 'Connector') {
426
- this.logics.forEach(logic => logic?.delete());
427
- }
428
- const useIndex = ['BindEvent', 'Identifier'].includes(this.concept);
429
- const path = this.getNodePath(useIndex);
430
- const parentParams = this._delete();
431
- if (parentParams && parentParams.index !== -1) {
432
- if (Array.isArray(this.parentNode[this.parentKey])) {
433
- if (process.env.NODE_ENV === 'development') {
434
- console.log('[删除节点]', this?.name, this);
435
- }
436
- this.emit('delete', {
437
- action: 'delete',
438
- path,
439
- object: null,
440
- ...parentParams,
441
- });
442
- }
443
- else {
444
- const parentPath = this.parentNode.getNodePath(false);
445
- this.parentNode.emit('update', {
446
- action: 'update',
447
- path: parentPath,
448
- object: {
449
- [this.parentKey]: null,
450
- },
451
- oldObject: {
452
- [this.parentKey]: this.toJSON(),
453
- },
454
- });
455
- }
456
- }
457
- }
458
- /**
459
- * 更新节点
460
- */
461
- update({ field, ...object }) {
462
- const path = this.getNodePath(false);
463
- // 更新前的旧的对象
464
- const oldObject = {};
465
- // 更新后的新对象
466
- const newObject = {};
467
- const riskList = [];
468
- for (const key in object) {
469
- if (key === 'concept') {
470
- continue;
471
- }
472
- if (Object.prototype.hasOwnProperty.call(object, key)) {
473
- // 旧对象收集
474
- this.collectOldObject({
475
- oldObject,
476
- key
477
- });
478
- // 新对象收集
479
- this.collectNewObject({
480
- newObject,
481
- object,
482
- key,
483
- riskList
484
- });
485
- }
486
- }
487
- // 更新实例上的属性
488
- this.updateInstance(newObject);
489
- if (process.env.NODE_ENV === 'development') {
490
- console.log('[更新节点]', 'path:', path, 'oldObject:', oldObject, 'newObject:', newObject);
491
- }
492
- this.emit('update', {
493
- action: 'update',
494
- path,
495
- object: newObject,
496
- oldObject,
497
- field,
498
- riskList,
499
- });
500
- }
501
- // 旧对象收集
502
- collectOldObject(params) {
503
- const { oldObject, key } = params || {};
504
- const oldProperty = this[key] ?? null;
505
- oldObject[key] = oldProperty;
506
- if (Array.isArray(oldProperty)) {
507
- oldObject[key] = oldProperty.map((item) => {
508
- let propertyItem = item ?? null;
509
- if (item instanceof BaseNode_1) {
510
- propertyItem = item.toJSON();
511
- }
512
- return propertyItem;
513
- });
514
- }
515
- else if (oldProperty instanceof BaseNode_1) {
516
- oldObject[key] = oldProperty.toJSON();
517
- }
518
- }
519
- // 新对象收集
520
- collectNewObject(params) {
521
- const { newObject, object, key, riskList } = params || {};
522
- const propertyMap = (0, decorators_1.getConceptPropertyMap)(this.concept ?? this.constructor.name);
523
- const property = propertyMap.get(key);
524
- if (property) {
525
- const objProperty = object[key] ?? null;
526
- const propertyConcept = property?.objectRef;
527
- // 在定义中该属性是否为数组
528
- const propertyIsArray = property?.isArray;
529
- const propertyDefaultValue = property?.defaultValue;
530
- if (propertyIsArray && (!Array.isArray(objProperty) && objProperty != propertyDefaultValue)) {
531
- riskList?.push(`将Nasl节点“${this.concept}”上声明为数组的属性“${key}”赋值为“${objProperty}”`);
532
- }
533
- if (propertyConcept) {
534
- if (Array.isArray(objProperty)) {
535
- newObject[key] = objProperty.map((objItem) => {
536
- return this.ensureDefined({
537
- object: objItem,
538
- concept: propertyConcept,
539
- riskList
540
- });
541
- });
542
- }
543
- else {
544
- newObject[key] = this.ensureDefined({
545
- object: objProperty,
546
- concept: propertyConcept,
547
- riskList
548
- });
549
- }
550
- }
551
- else {
552
- newObject[key] = objProperty;
553
- }
554
- }
555
- }
556
- // 确保属性都是定义过的
557
- ensureDefined(params) {
558
- const { object, concept, riskList } = params || {};
559
- if (!object) {
560
- return object;
561
- }
562
- const newObject = {};
563
- const actualConcept = object?.concept || concept;
564
- if (actualConcept) {
565
- const propertyMap = (0, decorators_1.getConceptPropertyMap)(actualConcept);
566
- for (const key in object) {
567
- const property = propertyMap.get(key);
568
- if (property) {
569
- const objProperty = object[key] ?? null;
570
- const propertyConcept = property?.objectRef;
571
- // 在定义中该属性是否为数组
572
- const propertyIsArray = property?.isArray;
573
- const propertyDefaultValue = property?.defaultValue;
574
- if (propertyIsArray && (!Array.isArray(objProperty) && objProperty != propertyDefaultValue)) {
575
- riskList?.push(`将Nasl节点“${actualConcept}”上声明为数组的属性“${key}”赋值为“${objProperty}”`);
576
- }
577
- if (propertyConcept) {
578
- if (Array.isArray(objProperty)) {
579
- newObject[key] = objProperty.map((objItem) => {
580
- return this.ensureDefined({
581
- object: objItem,
582
- concept: propertyConcept,
583
- riskList,
584
- });
585
- });
586
- }
587
- else {
588
- newObject[key] = this.ensureDefined({
589
- object: objProperty,
590
- concept: propertyConcept,
591
- riskList
592
- });
593
- }
594
- }
595
- else {
596
- newObject[key] = objProperty;
597
- }
598
- }
599
- }
600
- newObject.concept = actualConcept;
601
- }
602
- return newObject;
603
- }
604
- // 更新实例上的属性
605
- updateInstance(object) {
606
- for (const key in object) {
607
- if (key === 'concept') {
608
- continue;
609
- }
610
- const property = object[key] ?? null;
611
- this[key] = property;
612
- const objectRefCtor = (0, decorators_1.getConceptConstructor)(property?.concept);
613
- if (Array.isArray(property)) {
614
- this[key] = property.map((item) => {
615
- let propertyItem = item ?? null;
616
- const propertyObjectRefCtor = (0, decorators_1.getConceptConstructor)(item?.concept);
617
- if (propertyObjectRefCtor?.from) {
618
- propertyItem = propertyObjectRefCtor.from(item, this, key);
619
- }
620
- return propertyItem;
621
- });
622
- }
623
- else if (objectRefCtor?.from) {
624
- this[key] = objectRefCtor.from(property, this, key);
625
- }
626
- }
627
- }
628
- _delete() {
629
- /* override */
630
- return {
631
- propertyName: '',
632
- index: -1,
633
- object: null,
634
- oldObject: this,
635
- };
636
- }
637
- static from(source, parentNode, parentKey) {
638
- // 有一些继承的情况
639
- const Ctor = decorators_1.classMap.get(source?.concept) || this;
640
- if (Ctor && source instanceof Ctor) {
641
- if (parentNode) {
642
- source.parentNode = parentNode;
643
- }
644
- if (parentKey) {
645
- source.parentKey = parentKey;
646
- }
647
- return source;
648
- }
649
- if (Ctor) {
650
- const instance = new Ctor();
651
- if (parentNode) {
652
- instance.parentNode = parentNode;
653
- }
654
- if (parentKey) {
655
- instance.parentKey = parentKey;
656
- }
657
- instance.subConstructor({
658
- ...source,
659
- concept: source?.concept ?? this?.prototype?.concept ?? Ctor.ConceptName ?? Ctor.name,
660
- parentNode,
661
- });
662
- return instance;
663
- }
664
- }
665
- get nodePath() {
666
- return this.getNodePath(false);
667
- }
668
- getNodePath(useIndex) {
669
- let node = this;
670
- let useIndexKeys = [];
671
- if (Array.isArray(useIndex)) {
672
- useIndexKeys = useIndex;
673
- useIndex = false;
674
- }
675
- let isNodeSelf = true;
676
- const pathArr = [];
677
- while (node) {
678
- let path = '';
679
- const { parentNode } = node;
680
- if (parentNode) {
681
- const { parentKey } = node;
682
- path = parentKey;
683
- const parentProperty = parentNode[parentKey];
684
- if (Array.isArray(parentProperty)) {
685
- const { name } = node;
686
- // 如果存在同名节点,使用下标来表示NodePath
687
- const siblingNode = name
688
- ? parentProperty.find((child) => {
689
- // 因为proxy的关系,导致两边的引用不相同,所以这里需要判断id
690
- return child?.name === name && child !== node && child?.id !== node?.id;
691
- })
692
- : null;
693
- if (siblingNode || !name || (useIndex && isNodeSelf) || useIndexKeys.includes(node.concept)) {
694
- const index = parentProperty.findIndex((item) => {
695
- if (item === node) {
696
- return true;
697
- }
698
- return item?.id && item?.id === node?.id;
699
- });
700
- path += `[${index}]`;
701
- }
702
- else {
703
- path += `[name=${name}]`;
704
- }
705
- }
706
- pathArr.unshift(path);
707
- }
708
- node = parentNode;
709
- isNodeSelf = false;
710
- }
711
- pathArr.unshift('app');
712
- return pathArr.join('.');
713
- }
714
- /**
715
- * 上层节点
716
- */
717
- get upperNode() {
718
- // eslint-disable-next-line consistent-this
719
- let _upperNode = this;
720
- while (!!_upperNode && _upperNode.concept === this.concept) {
721
- _upperNode = _upperNode.parentNode;
722
- }
723
- return _upperNode;
724
- }
725
- /**
726
- * 根节点
727
- */
728
- get rootNode() {
729
- return this.getAncestor('App');
730
- }
731
- getAncestor(concept) {
732
- let { upperNode } = this;
733
- while (upperNode && upperNode.concept && upperNode.concept !== concept) {
734
- upperNode = upperNode.upperNode;
735
- }
736
- return upperNode;
737
- }
738
- /**
739
- *
740
- * @param source
741
- * @param Ctor
742
- * @param completeList
743
- * @param idsList
744
- */
745
- handleSource(source, completeList) {
746
- const { id, concept } = source || {};
747
- const actualSource = source instanceof BaseNode_1 ? source : (0, map_1.getSourceFromMap)(id, concept);
748
- completeList.push(actualSource || source);
749
- }
750
- /**
751
- * 获取当前的TsName
752
- */
753
- get tsName() {
754
- if (this.name) {
755
- let tsName = this.name;
756
- // 匹配所有特殊字符都转为_
757
- tsName = tsName.replace(/\W/g, '_');
758
- if (/^\d/.test(tsName)) {
759
- tsName = `$${tsName}`;
760
- }
761
- return tsName;
762
- }
763
- return '';
764
- }
765
- /**
766
- * 生成json
767
- * @param instance
768
- * @param Ctor
769
- */
770
- genSources(instance, filerFn) {
771
- if (!instance) {
772
- return instance;
773
- }
774
- if (Array.isArray(instance)) {
775
- return instance.map((item) => (item && item._toJSON ? item._toJSON(filerFn) : item));
776
- }
777
- return instance && instance._toJSON ? instance._toJSON(filerFn) : instance;
778
- }
779
- /**
780
- * 实例化一个 JSON
781
- * 由于有 from,只能先实例化父级,再实例化子级
782
- * @param obj
783
- * @param parentNode
784
- * @returns
785
- */
786
- instantiate(source, parentNode, parentKey) {
787
- if (source instanceof BaseNode_1) {
788
- if (!source.parentNode || !source.parentKey) {
789
- source.parentNode = parentNode;
790
- source.parentKey = parentKey;
791
- }
792
- return source;
793
- }
794
- if (source && source.concept && decorators_1.classMap.get(source.concept)) {
795
- const Ctor = decorators_1.classMap.get(source.concept);
796
- const instance = Ctor.from(source, parentNode, parentKey);
797
- if (instance && instance.toStorageJSON)
798
- instance.storageJSON = instance.toStorageJSON();
799
- return instance;
800
- }
801
- return source;
802
- }
803
- /**
804
- * 激活 JSON 内部实例
805
- * @param source
806
- */
807
- instantiateSub(source, parentKey) {
808
- if (!source) {
809
- return;
810
- }
811
- const completeList = [];
812
- let isArray;
813
- // 暂时通过是否有name判断数据是否全
814
- if (Array.isArray(source)) {
815
- isArray = true;
816
- source.forEach((sourceItem) => {
817
- this.handleSource(sourceItem, completeList);
818
- });
819
- }
820
- else {
821
- this.handleSource(source, completeList);
822
- }
823
- const instanceList = completeList.map((item) => this.instantiate(item, this, parentKey));
824
- if (isArray) {
825
- return instanceList;
826
- }
827
- if (Array.isArray(instanceList) && instanceList.length) {
828
- return instanceList[0];
829
- }
830
- }
831
- plainAssign(source) {
832
- this._mutable = true;
833
- const oldId = this.id;
834
- Object.keys(source).forEach((key) => {
835
- const value = source[key];
836
- if (typeof value !== 'object' && typeof value !== 'function')
837
- this[key] = value;
838
- });
839
- this._mutable = false;
840
- }
841
- pick(source, keys = []) {
842
- const obj = {};
843
- keys.forEach((key) => (obj[key] = source[key]));
844
- // 这里统一用 assign,集中处理 id 的问题
845
- // this.assign(obj);
846
- }
847
- /**
848
- * 从对象中深度获取
849
- * @param source
850
- * @param keys
851
- * @example 比如一般后端返回只是添加了个 id
852
- * ```
853
- * this.deepPick(result, ['id'])
854
- */
855
- deepPick(source, keys = []) {
856
- utils.traverse((current) => {
857
- const subSource = current.jsonPath ? (0, lodash_1.at)(source, [current.jsonPath])[0] : source;
858
- const target = current.jsonPath ? (0, lodash_1.at)(this, [current.jsonPath])[0] : this;
859
- if (!target)
860
- return;
861
- const obj = {};
862
- keys.forEach((key) => {
863
- if (subSource.hasOwnProperty(key)) {
864
- obj[key] = subSource[key];
865
- }
866
- });
867
- // 这里统一用 assign,集中处理 id 的问题
868
- target.assign ? target.assign(obj) : Object.assign(target, obj);
869
- }, { node: source }, { mode: 'anyObject' });
870
- }
871
- /**
872
- * 去除循环依赖,转为纯 JSON
873
- * @param parentKey 外面的 key,提供给 JSON.stringify 使用
874
- * @param excludedKeys 需要额外排除的 keys
875
- */
876
- toJSON() {
877
- return this._toJSON();
878
- }
879
- _toJSON(filerFn) {
880
- const propertyMap = (0, decorators_1.getConceptPropertyMap)(this.concept || this.constructor.name);
881
- const source = {};
882
- propertyMap.forEach((property, key) => {
883
- if (property) {
884
- const { objectRef: propertyObjectRef } = property;
885
- if (!propertyObjectRef) {
886
- source[key] = this[key];
887
- }
888
- else {
889
- const sources = this.genSources(this[key], filerFn);
890
- source[key] = sources;
891
- }
892
- }
893
- });
894
- // @ts-ignore
895
- source.concept = this.concept;
896
- return filerFn ? filerFn(source) : source;
897
- }
898
- /**
899
- * 转为单层的 JSON
900
- * @param parentKey 外面的 key,提供给 JSON.stringify 使用
901
- * @param excludedKeys 需要额外排除的 keys
902
- */
903
- toPlainJSON(parentKey, excludedKeys = []) {
904
- const JSON_EXCLUDED_KEYS = new Set(this.JSON_EXCLUDED_KEYS || []); // Object.getPrototypeOf(this).constructor.JSON_EXCLUDED_KEYS || [];
905
- excludedKeys.forEach((key) => JSON_EXCLUDED_KEYS.add(key));
906
- const temp = {};
907
- Object.keys(this).forEach((key) => {
908
- const value = this[key];
909
- if (!JSON_EXCLUDED_KEYS.has(key) && typeof value !== 'object' && typeof value !== 'function')
910
- temp[key] = value;
911
- });
912
- return JSON.parse(JSON.stringify(temp));
913
- }
914
- /**
915
- * 查找引用
916
- */
917
- async findUsage() {
918
- /* override */
919
- }
920
- /**
921
- * 通过当前节点,查找被引用的节点
922
- */
923
- async nodeFindRefNodes() {
924
- /* override */
925
- }
926
- async findReadOnlyLogicUsage() {
927
- /* override */
928
- }
929
- /**
930
- * 重命名
931
- */
932
- async changeName(newValue, updateAll = false) {
933
- /* override */
934
- }
935
- /**
936
- * 准备删除
937
- */
938
- async prepareDelete(cb) {
939
- /* override */
940
- }
941
- /**
942
- * 添加参数准备
943
- */
944
- async addParamsPrepare() {
945
- /* override */
946
- }
947
- /**
948
- * 获取当前节点类型
949
- */
950
- async getCurrentTypeAnnotation() {
951
- /* override */
952
- }
953
- /**
954
- * 获取当前节点的下一级内容
955
- */
956
- getSelectRef(newTypeAnnotation, needNewStructure = false) {
957
- /* override */
958
- }
959
- /**
960
- * 销毁
961
- * Map 中删除点和子节点
962
- */
963
- destroy() {
964
- // utils.traverse((current) => , { node: this }, {
965
- // mode: 'anyObject',
966
- // excludedKeySet: this.JSON_EXCLUDED_KEYS,
967
- // });
968
- }
969
- onChange($event) {
970
- this.emit('change', $event);
971
- }
972
- onCreate($event) {
973
- /* override */
974
- }
975
- onDelete($event) {
976
- /* override */
977
- }
978
- /**
979
- * 移动节点
980
- * @param sourceNode
981
- * @param position
982
- */
983
- moveNode(options) {
984
- const { sourceNode, position } = options;
985
- if (this.concept === 'App') {
986
- return;
987
- }
988
- let actionMsg = `移动${this.constructor.nodeTitle}`;
989
- if (this.name) {
990
- actionMsg += `“${this.name}”`;
991
- }
992
- sourceNode.app.emit('collect:start', {
993
- actionMsg,
994
- });
995
- // 如果是兄弟节点之前的移动
996
- if (position !== 'append' && this.concept !== sourceNode.concept) {
997
- return;
998
- }
999
- // 先删
1000
- this.delete();
1001
- if (position === 'append') {
1002
- let { action } = options;
1003
- if (!action)
1004
- action = `add${this.concept}`;
1005
- const parentNode = sourceNode;
1006
- parentNode[action](this);
1007
- }
1008
- else {
1009
- const parentNode = sourceNode?.parentNode;
1010
- const parentKey = sourceNode?.parentKey || '';
1011
- const list = parentNode[parentKey];
1012
- if (Array.isArray(list)) {
1013
- let index = list.indexOf(sourceNode);
1014
- if (position === 'insertAfter') {
1015
- index += 1;
1016
- }
1017
- Object.assign(this, {
1018
- parentNode,
1019
- parentKey,
1020
- });
1021
- if (this.concept === 'ViewElement')
1022
- this.name = this.getViewElementUniqueName(this.name);
1023
- list.splice(index, 0, this);
1024
- this.create({
1025
- index,
1026
- parentNode,
1027
- parentKey,
1028
- });
1029
- }
1030
- }
1031
- sourceNode.app.emit('collect:end');
1032
- }
1033
- // 其他节点替换本nasl节点
1034
- replaceNode(newNode) {
1035
- const oldNode = this;
1036
- const { parentNode, parentKey, offsetX, offsetY, app } = oldNode;
1037
- const { logic } = oldNode;
1038
- if (!Array.isArray(parentNode[parentKey])) {
1039
- /**
1040
- * match切换分支,需要调用setExpressionWitchCase,补全分支的信息
1041
- */
1042
- if (parentNode.concept === 'Match' && parentKey === 'expression') {
1043
- parentNode.setExpressionWitchCase(newNode);
1044
- return;
1045
- }
1046
- parentNode.update({
1047
- [parentKey]: newNode,
1048
- });
1049
- }
1050
- else {
1051
- app.emit('collect:start', {
1052
- actionMsg: '删除属性变量',
1053
- });
1054
- if (parentNode.concept === 'Logic') {
1055
- if (parentKey === 'body') {
1056
- const expIndex = logic.body.findIndex((item) => item === oldNode);
1057
- logic.insertItemInBodyAt(newNode, expIndex);
1058
- }
1059
- else {
1060
- const expIndex = logic.playground.findIndex((item) => item === oldNode);
1061
- Object.assign(newNode, { offsetX, offsetY });
1062
- logic.insertItemInPlaygroundAt(newNode, expIndex);
1063
- }
1064
- }
1065
- else {
1066
- const expIndex = parentNode[parentKey].findIndex((item) => item === oldNode);
1067
- const firstUpperText = parentKey[0].toUpperCase() + parentKey.slice(1, parentKey.length);
1068
- Object.assign(newNode, { offsetX, offsetY });
1069
- if (parentNode.concept === 'MatchCase') {
1070
- parentKey === 'body' ? parentNode.insertItemInBodyAt(newNode, expIndex) : parentNode.insertLogicItemInPatternsAt(newNode, expIndex);
1071
- }
1072
- else if (parentNode[`insertItemIn${firstUpperText}At`])
1073
- parentNode[`insertItemIn${firstUpperText}At`](newNode, expIndex);
1074
- else
1075
- parentNode.insertItemAt(newNode, expIndex);
1076
- }
1077
- oldNode.delete();
1078
- app.emit('collect:end');
1079
- }
1080
- }
1081
- /**
1082
- * 获取添加时的默认选项
1083
- * @returns
1084
- */
1085
- static getDefaultOptions() {
1086
- return {};
1087
- }
1088
- traverseChildren(cb) {
1089
- function traverse(node) {
1090
- cb(node);
1091
- const propertyMap = (0, decorators_1.getConceptPropertyMap)(node?.concept);
1092
- if (!propertyMap)
1093
- return;
1094
- for (const property of propertyMap.keys()) {
1095
- const child = node[property];
1096
- if (!child)
1097
- continue;
1098
- else if (Array.isArray(child))
1099
- child.forEach((node) => traverse(node));
1100
- else
1101
- traverse(child);
1102
- }
1103
- }
1104
- traverse(this);
1105
- }
1106
- /**
1107
- * 获取当前节点在nasl标注节点上的节点
1108
- */
1109
- getCurrentAnnotatedJSON() {
1110
- return this.__TypeAnnotation;
1111
- }
1112
- /**
1113
- * 获取
1114
- * 当前this上下文 的Source 和 父级文件级别的节点
1115
- */
1116
- getCurrentSource() {
1117
- const node = this;
1118
- let { sourceMap } = node;
1119
- let fileNode = node;
1120
- // 如果没有sourceMap,就继续向上找 ,或者到module结束
1121
- // 如果 节点找到 app 或者module 停止 或者entity找到DataSource为止
1122
- // 如果当前节点是view就不要向上查找了
1123
- while (!sourceMap && fileNode && !(fileNode.parentNode.concept === 'App')) {
1124
- fileNode = fileNode.parentNode;
1125
- sourceMap = fileNode?.sourceMap;
1126
- }
1127
- const currentSource = sourceMap && sourceMap.get(node);
1128
- if (currentSource) {
1129
- return { currentSource, fileNode };
1130
- }
1131
- return { fileNode };
1132
- }
1133
- /**
1134
- * 获取
1135
- * 当前this上下文 的Source 和 父级文件级别的节点
1136
- */
1137
- getFileConceptNode(concept) {
1138
- const node = this;
1139
- let { sourceMap } = node;
1140
- let fileNode = node;
1141
- // 如果没有sourceMap,就继续向上找 ,或者到module结束
1142
- // 如果 节点找到 app 或者module 停止 或者entity找到DataSource为止
1143
- // 如果当前节点是view就不要向上查找了
1144
- while (!sourceMap && fileNode && !(fileNode.parentNode.concept === 'App')) {
1145
- fileNode = fileNode.parentNode;
1146
- sourceMap = fileNode?.sourceMap;
1147
- }
1148
- const arr = [];
1149
- sourceMap &&
1150
- sourceMap.forEach((value, key) => {
1151
- if (key.concept === concept)
1152
- arr.push({ key, value });
1153
- });
1154
- return arr;
1155
- }
1156
- get isTreeLeaf() {
1157
- if (this.concept === 'EntityProperty' ||
1158
- this.concept === 'InterfaceParam' ||
1159
- this.concept === 'Param' ||
1160
- this.concept === 'Return' ||
1161
- this.concept === 'StructureProperty' ||
1162
- this.concept === 'Variable' ||
1163
- this.concept === 'FrontendVariable') {
1164
- if (this.typeAnnotation || (this.__TypeAnnotation && this.parentKey === 'virtualParams')) {
1165
- return !this.hasChildren;
1166
- }
1167
- return true;
1168
- }
1169
- return false;
1170
- }
1171
- get hasChildren() {
1172
- const typeAnnotation = this.typeAnnotation || this.__TypeAnnotation;
1173
- if (typeAnnotation) {
1174
- const { typeKind, typeNamespace, typeName, properties } = typeAnnotation;
1175
- if (typeKind === 'reference' || typeKind === 'generic') {
1176
- if (typeNamespace.endsWith('.enums'))
1177
- return null;
1178
- return [{}];
1179
- }
1180
- if (typeNamespace === 'nasl.core' && ['String', 'Text', 'Email'].includes(typeName)) {
1181
- return [{}];
1182
- }
1183
- if (typeKind === 'anonymousStructure' && properties?.length) {
1184
- return [{}];
1185
- }
1186
- return null;
1187
- }
1188
- return null;
1189
- }
1190
- /**
1191
- * 使用新的 concept 在当前节点生成新的数据
1192
- */
1193
- changeConceptNode(concept) {
1194
- return new Proxy(this, {
1195
- get(target, p, receiver) {
1196
- if (p === 'concept') {
1197
- return concept;
1198
- }
1199
- return target[p];
1200
- },
1201
- });
1202
- }
1203
- collectNodes(input) {
1204
- const pre = typeof input === 'undefined'
1205
- ? (node) => typeof node.concept === 'string'
1206
- : typeof input === 'string'
1207
- ? (node) => node.concept === input
1208
- : input;
1209
- const nodes = [];
1210
- const self = this;
1211
- if (pre(self)) {
1212
- nodes.push(self);
1213
- }
1214
- this.traverseChildren((current) => {
1215
- if (pre(current)) {
1216
- nodes.push(current);
1217
- }
1218
- });
1219
- return nodes;
1220
- }
1221
- };
1222
- exports.BaseNode = BaseNode;
1223
- __decorate([
1224
- (0, decorators_1.excludedInJSON)()
1225
- ], BaseNode.prototype, "_mutable", void 0);
1226
- __decorate([
1227
- (0, decorators_1.excludedInJSON)()
1228
- ], BaseNode.prototype, "_concept", void 0);
1229
- __decorate([
1230
- (0, decorators_1.property)()
1231
- ], BaseNode.prototype, "concept", null);
1232
- __decorate([
1233
- (0, decorators_1.property)()
1234
- ], BaseNode.prototype, "changedTime", void 0);
1235
- __decorate([
1236
- (0, decorators_1.property)()
1237
- ], BaseNode.prototype, "branchName", void 0);
1238
- __decorate([
1239
- (0, decorators_1.property)()
1240
- ], BaseNode.prototype, "workingCopy", void 0);
1241
- __decorate([
1242
- (0, decorators_1.property)()
1243
- ], BaseNode.prototype, "branch", void 0);
1244
- __decorate([
1245
- (0, decorators_1.property)()
1246
- ], BaseNode.prototype, "breakpoint", void 0);
1247
- __decorate([
1248
- (0, decorators_1.circular)()
1249
- ], BaseNode.prototype, "parentNode", void 0);
1250
- __decorate([
1251
- (0, decorators_1.excludedInJSON)()
1252
- ], BaseNode.prototype, "editable", void 0);
1253
- __decorate([
1254
- (0, decorators_1.excludedInJSON)()
1255
- ], BaseNode.prototype, "removable", void 0);
1256
- __decorate([
1257
- (0, decorators_1.excludedInJSON)()
1258
- ], BaseNode.prototype, "editing", void 0);
1259
- __decorate([
1260
- (0, decorators_1.excludedInJSON)()
1261
- ], BaseNode.prototype, "loading", void 0);
1262
- __decorate([
1263
- (0, decorators_1.excludedInJSON)()
1264
- ], BaseNode.prototype, "expanded", void 0);
1265
- __decorate([
1266
- (0, decorators_1.excludedInJSON)()
1267
- ], BaseNode.prototype, "hidden", void 0);
1268
- __decorate([
1269
- (0, decorators_1.excludedInJSON)()
1270
- ], BaseNode.prototype, "pageTreeNodeHidden", void 0);
1271
- __decorate([
1272
- (0, decorators_1.excludedInJSON)()
1273
- ], BaseNode.prototype, "logicTreeNodeHidden", void 0);
1274
- __decorate([
1275
- (0, decorators_1.excludedInJSON)()
1276
- ], BaseNode.prototype, "dataTreeNodeHidden", void 0);
1277
- __decorate([
1278
- (0, decorators_1.excludedInJSON)()
1279
- ], BaseNode.prototype, "processTreeNodeHidden", void 0);
1280
- __decorate([
1281
- (0, decorators_1.excludedInJSON)()
1282
- ], BaseNode.prototype, "logicTreeNodeExpanded", void 0);
1283
- __decorate([
1284
- (0, decorators_1.excludedInJSON)()
1285
- ], BaseNode.prototype, "sourceMap", void 0);
1286
- __decorate([
1287
- (0, decorators_1.excludedInJSON)()
1288
- ], BaseNode.prototype, "isLeaf", void 0);
1289
- __decorate([
1290
- (0, decorators_1.excludedInJSON)()
1291
- ], BaseNode.prototype, "storageJSON", void 0);
1292
- __decorate([
1293
- (0, decorators_1.property)()
1294
- ], BaseNode.prototype, "name", void 0);
1295
- __decorate([
1296
- (0, decorators_1.excludedInJSON)()
1297
- ], BaseNode.prototype, "__TypeAnnotation", void 0);
1298
- __decorate([
1299
- (0, decorators_1.excludedInJSON)()
1300
- ], BaseNode.prototype, "__isCorrectTypeAnnotation", void 0);
1301
- __decorate([
1302
- (0, decorators_1.action)('查找引用')
1303
- ], BaseNode.prototype, "findUsage", null);
1304
- __decorate([
1305
- (0, decorators_1.action)('通过当前节点,查找被引用的节点')
1306
- ], BaseNode.prototype, "nodeFindRefNodes", null);
1307
- __decorate([
1308
- (0, decorators_1.action)('重命名')
1309
- ], BaseNode.prototype, "changeName", null);
1310
- __decorate([
1311
- (0, decorators_1.action)('准备删除')
1312
- ], BaseNode.prototype, "prepareDelete", null);
1313
- __decorate([
1314
- (0, decorators_1.action)('添加参数准备')
1315
- ], BaseNode.prototype, "addParamsPrepare", null);
1316
- __decorate([
1317
- (0, decorators_1.action)('获取当前节点类型')
1318
- ], BaseNode.prototype, "getCurrentTypeAnnotation", null);
1319
- __decorate([
1320
- (0, decorators_1.action)('获取当前节点的下一级内容')
1321
- ], BaseNode.prototype, "getSelectRef", null);
1322
- exports.BaseNode = BaseNode = BaseNode_1 = __decorate([
1323
- sentry_1.sentryMonitorNaslNode
1324
- ], BaseNode);
1325
- exports.default = BaseNode;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || function (mod) {
25
+ if (mod && mod.__esModule) return mod;
26
+ var result = {};
27
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
+ __setModuleDefault(result, mod);
29
+ return result;
30
+ };
31
+ var __importDefault = (this && this.__importDefault) || function (mod) {
32
+ return (mod && mod.__esModule) ? mod : { "default": mod };
33
+ };
34
+ var BaseNode_1;
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.BaseNode = void 0;
37
+ const lodash_1 = require("lodash");
38
+ const uuid_1 = require("uuid");
39
+ const map_1 = require("../service/storage/map");
40
+ const utils = __importStar(require("../utils"));
41
+ const EventEmitter_1 = require("./EventEmitter");
42
+ const decorators_1 = require("../decorators");
43
+ const sentry_1 = require("../sentry");
44
+ const operations_1 = __importDefault(require("../breakpoint/shared/operations"));
45
+ /**
46
+ * 顶点类
47
+ * 属性均为只读,仅在初始化和 load 的情况下可以修改
48
+ */
49
+ let BaseNode = BaseNode_1 = class BaseNode extends EventEmitter_1.EventEmitter {
50
+ static ConceptName = 'BaseNode';
51
+ static inheritanceChain = [];
52
+ /**
53
+ * 可修改标志,内部属性
54
+ * 标记在构造函数结束后是否可修改
55
+ */
56
+ _mutable = true;
57
+ /** 节点类别缓存 */
58
+ _concept;
59
+ /**
60
+ * 概念
61
+ */
62
+ get concept() {
63
+ return this._concept ?? this.constructor.ConceptName;
64
+ }
65
+ set concept(val) {
66
+ console.warn(`[警告] 尽快移除变更 concept 值的操作,下个版本 concept 将会改为只读。\n当前变更:${this.concept} -> ${val},原始节点类别:${this.constructor.ConceptName}`);
67
+ if (val !== this.concept) {
68
+ if (val === this.constructor.ConceptName) {
69
+ delete this._concept;
70
+ }
71
+ else {
72
+ this._concept = val;
73
+ }
74
+ }
75
+ }
76
+ /**
77
+ * toJSON 时需要去除的键,为了避免出现 CircularJSON
78
+ */
79
+ JSON_EXCLUDED_KEYS;
80
+ /**
81
+ * 唯一 Id
82
+ */
83
+ id = (0, uuid_1.v4)().replace(/-/g, '');
84
+ /**
85
+ * 变动时间
86
+ */
87
+ changedTime;
88
+ /**
89
+ * 分支名称
90
+ */
91
+ branchName;
92
+ /**
93
+ * 合并代码相关
94
+ */
95
+ workingCopy;
96
+ branch;
97
+ /**
98
+ * 断点状态
99
+ * undefined ==> 未设置
100
+ * null ==> 已删除
101
+ * 'ENABLED' ==> 启用断点
102
+ * 'DISABLED' ==> 禁用断点
103
+ */
104
+ breakpoint;
105
+ /**
106
+ * 父节点
107
+ */
108
+ parentNode = null;
109
+ parentKey = '';
110
+ /**
111
+ * 是否正在编辑
112
+ * 前端 UI 状态
113
+ */
114
+ editable;
115
+ /**
116
+ * 是否可以删除
117
+ * 前端 UI 状态
118
+ */
119
+ removable;
120
+ /**
121
+ * 是否正在编辑
122
+ * 前端 UI 状态
123
+ */
124
+ editing;
125
+ /**
126
+ * 是否正在请求
127
+ * 前端 UI 状态
128
+ */
129
+ loading;
130
+ /**
131
+ * 节点是否为展开状态
132
+ * 前端 UI 状态
133
+ */
134
+ expanded;
135
+ /**
136
+ * 节点是否显示
137
+ * 前端 UI 状态
138
+ */
139
+ hidden;
140
+ /**
141
+ * 页面树节点是否显示
142
+ * 前端 UI 状态
143
+ */
144
+ pageTreeNodeHidden;
145
+ /**
146
+ * 逻辑树节点是否显示
147
+ * 前端 UI 状态
148
+ */
149
+ logicTreeNodeHidden;
150
+ /**
151
+ * 数据树节点是否显示
152
+ * 前端 UI 状态
153
+ */
154
+ dataTreeNodeHidden;
155
+ /**
156
+ * 数据树节点是否显示
157
+ * 前端 UI 状态
158
+ */
159
+ processTreeNodeHidden;
160
+ /**
161
+ * 数据树节点是否展开
162
+ * 前端 UI 状态
163
+ */
164
+ logicTreeNodeExpanded;
165
+ /**
166
+ * 用于挂 embeddedTS 的 sourceMap
167
+ */
168
+ sourceMap;
169
+ /**
170
+ * 是否为叶子节点
171
+ * 前端 UI 状态
172
+ */
173
+ isLeaf;
174
+ storageJSON;
175
+ /**
176
+ * 当前节点上报错详细信息
177
+ */
178
+ tsErrorDetail;
179
+ name = '';
180
+ /**
181
+ * 当前节点的类型标注
182
+ */
183
+ __TypeAnnotation;
184
+ /**
185
+ * 当前节点的类型标注是不是正确的
186
+ */
187
+ __isCorrectTypeAnnotation;
188
+ /**
189
+ * @param source 需要合并的部分参数
190
+ */
191
+ constructor(source) {
192
+ super();
193
+ if (this.hasOwnProperty('JSON_EXCLUDED_KEYS') && this.JSON_EXCLUDED_KEYS === undefined)
194
+ delete this.JSON_EXCLUDED_KEYS;
195
+ /**
196
+ * 监听action,delete,update事件
197
+ */
198
+ this.on('create', this.genActionListener);
199
+ this.on('delete', this.genActionListener);
200
+ this.on('update', this.genActionListener);
201
+ /**
202
+ * 监听action,delete,update事件
203
+ */
204
+ this.on('create', () => operations_1.default.create(this));
205
+ this.on('delete', () => operations_1.default.delete(this));
206
+ this.on('update', () => operations_1.default.update(this));
207
+ }
208
+ subConstructor(source) {
209
+ const propertyMap = (0, decorators_1.getConceptPropertyMap)(this.concept || this.constructor.name);
210
+ const properties = Array.from(new Set([...Object.keys(this), ...Object.keys(source)])).filter((key) => propertyMap.has(key));
211
+ // 测试时用的标记属性
212
+ if (process.env.NODE_ENV === 'testing') {
213
+ properties.push('__$Selected', '__TypeAnnotation');
214
+ }
215
+ properties.forEach((key) => {
216
+ if (key === 'concept') {
217
+ return;
218
+ }
219
+ const sourceItem = source[key] !== undefined ? source[key] : this[key];
220
+ let property = propertyMap.get(key);
221
+ let objectRefCtor;
222
+ // 测试环境下,类型节点由外部注入,所以需要在初始化的时候必须带上类型节点
223
+ if (process.env.NODE_ENV === 'testing' && key === '__TypeAnnotation' && sourceItem) {
224
+ property = { objectRef: 'TypeAnnotation' };
225
+ }
226
+ try {
227
+ if (property?.objectRef) {
228
+ const arr = property.objectRef.split(' | ');
229
+ for (let i = 0; i < arr.length; i++) {
230
+ objectRefCtor = (0, decorators_1.getConceptConstructor)(arr[i]);
231
+ if (sourceItem instanceof objectRefCtor) {
232
+ sourceItem.parentNode = this;
233
+ sourceItem.parentKey = key;
234
+ break;
235
+ }
236
+ }
237
+ }
238
+ // 数组的情况也在这里做掉了
239
+ const val = objectRefCtor && sourceItem && !(sourceItem instanceof objectRefCtor) ? this.instantiateSub(sourceItem, key) : sourceItem;
240
+ if (val !== undefined) {
241
+ this[key] = val;
242
+ }
243
+ }
244
+ catch (e) {
245
+ // Function has non-object prototype 'undefined' in instanceof check
246
+ if (!e.message.includes('Function has non-object prototype'))
247
+ throw e;
248
+ }
249
+ });
250
+ operations_1.default.create(this);
251
+ // node 环境下需要删除当前节点的 concept 属性
252
+ if (utils.isNode && ('concept' in this) && !this.concept) {
253
+ Reflect.deleteProperty(this, 'concept');
254
+ }
255
+ }
256
+ fixInstantiate() {
257
+ const propertyMap = (0, decorators_1.getConceptPropertyMap)(this.concept ?? this.constructor.name);
258
+ const properties = Object.keys(this).filter((key) => propertyMap.has(key));
259
+ properties.forEach((key) => {
260
+ const property = propertyMap.get(key);
261
+ const sourceItem = this[key];
262
+ const objectRefCtor = property.objectRef && (0, decorators_1.getConceptConstructor)(property.objectRef);
263
+ if (objectRefCtor) {
264
+ if (Array.isArray(sourceItem)) {
265
+ sourceItem.forEach((item, index) => {
266
+ if (item instanceof objectRefCtor) {
267
+ item.parentNode = this;
268
+ item.parentKey = key;
269
+ item.fixInstantiate();
270
+ }
271
+ else {
272
+ sourceItem[index] = this.instantiateSub(item instanceof BaseNode_1 ? item.toJSON() : item, key);
273
+ }
274
+ });
275
+ }
276
+ else if (sourceItem instanceof objectRefCtor) {
277
+ sourceItem.parentNode = this;
278
+ sourceItem.parentKey = key;
279
+ sourceItem.fixInstantiate();
280
+ }
281
+ else {
282
+ this[key] = this.instantiateSub(sourceItem instanceof BaseNode_1 ? sourceItem.toJSON() : sourceItem, key);
283
+ }
284
+ }
285
+ });
286
+ }
287
+ getIndexOfParent() {
288
+ let index = -1;
289
+ const { parentNode } = this;
290
+ if (parentNode) {
291
+ const { parentKey } = this;
292
+ const parentProperty = parentNode[parentKey];
293
+ if (Array.isArray(parentProperty)) {
294
+ index = parentProperty.indexOf(this);
295
+ }
296
+ }
297
+ return index;
298
+ }
299
+ /**
300
+ * 为存储点生成行为监听器
301
+ * @param action
302
+ * @returns
303
+ */
304
+ genActionListener($event) {
305
+ // eventList是要被发送给后端的数据
306
+ if (!$event.eventList) {
307
+ $event.eventList = [];
308
+ }
309
+ if (!$event.eventStop) {
310
+ $event.eventList.push($event);
311
+ }
312
+ $event.originEvent = $event.originEvent || $event;
313
+ this.onChange($event);
314
+ if (this.concept === 'App') {
315
+ this.emit('storage', $event);
316
+ }
317
+ else if (this.parentNode && this.parentNode.emit) {
318
+ const event = {
319
+ action: 'update',
320
+ path: this.parentNode?.getNodePath(false),
321
+ object: {},
322
+ oldObject: {},
323
+ originEvent: $event.originEvent,
324
+ eventList: $event.eventList,
325
+ // eventStop为true后,数据不再存入eventList,就不再会将冒泡数据发送给后端
326
+ eventStop: true,
327
+ };
328
+ this.parentNode?.emit('update', event);
329
+ }
330
+ }
331
+ createNode({ parentNode, parentKey, index }) {
332
+ if (parentNode) {
333
+ const property = parentNode[parentKey];
334
+ if (Array.isArray(property) && index !== -1) {
335
+ property.splice(index, 0, this);
336
+ }
337
+ else {
338
+ parentNode[parentKey] = this;
339
+ }
340
+ this.parentNode = parentNode;
341
+ this.parentKey = parentKey;
342
+ this.create({
343
+ index,
344
+ parentKey,
345
+ });
346
+ }
347
+ }
348
+ toTemplateJSON() {
349
+ return this._toJSON((source) => {
350
+ delete source.id;
351
+ return source;
352
+ });
353
+ }
354
+ /**
355
+ * 创建节点
356
+ */
357
+ create(parentParams) {
358
+ if (process.env.NODE_ENV === 'development') {
359
+ console.log('[创建节点]', this?.name, this);
360
+ }
361
+ this.emit('create', {
362
+ action: 'create',
363
+ path: this.getNodePath(true),
364
+ object: this.toJSON(),
365
+ ...parentParams,
366
+ oldObject: null,
367
+ });
368
+ }
369
+ /**
370
+ * 如果有父节点,则删除节点,在添加时调用
371
+ */
372
+ ensureDelete() {
373
+ // 批量赋值因为连线的问题需要特殊处理一下.
374
+ if (this.parentNode?.concept === 'SelectMembers') {
375
+ this.parentNode.ensureDelete();
376
+ return;
377
+ }
378
+ if (this.concept === 'SelectMembers' && this.parentNode) {
379
+ const node = this.parentNode;
380
+ node.changeLinesLocation(this);
381
+ }
382
+ if (this.parentNode && this.parentKey) {
383
+ const path = this.getNodePath(false);
384
+ const parentParams = this._delete();
385
+ if (parentParams && parentParams.index !== -1) {
386
+ if (Array.isArray(this.parentNode[this.parentKey])) {
387
+ this.emit('delete', {
388
+ action: 'delete',
389
+ path,
390
+ object: null,
391
+ ...parentParams,
392
+ });
393
+ }
394
+ else {
395
+ const parentPath = this.parentNode.getNodePath(false);
396
+ this.parentNode.emit('update', {
397
+ action: 'update',
398
+ path: parentPath,
399
+ object: {
400
+ [this.parentKey]: null,
401
+ },
402
+ oldObject: {
403
+ [this.parentKey]: this.toJSON(),
404
+ },
405
+ });
406
+ }
407
+ }
408
+ }
409
+ }
410
+ /**
411
+ * 删除节点
412
+ */
413
+ delete() {
414
+ if (this.parentNode?.concept === 'Match' && this.parentKey === 'expression') {
415
+ this.parentNode.setExpressionWitchCase(null);
416
+ return;
417
+ }
418
+ // 批量赋值因为连线的问题需要特殊处理一下.
419
+ if (this.parentNode?.concept === 'SelectMembers') {
420
+ const node = this.parentNode;
421
+ node.delete();
422
+ return;
423
+ }
424
+ if (this.concept === 'SelectMembers') {
425
+ const node = this.parentNode;
426
+ node.changeLinesLocation(this);
427
+ }
428
+ // 自定义连接器下的namespace删除的时候需要同时删除对应的logic
429
+ if (this.concept === 'Namespace' && this.parentNode.concept === 'Connector') {
430
+ this.logics.forEach(logic => logic?.delete());
431
+ }
432
+ const useIndex = ['BindEvent', 'Identifier'].includes(this.concept);
433
+ const path = this.getNodePath(useIndex);
434
+ const parentParams = this._delete();
435
+ if (parentParams && parentParams.index !== -1) {
436
+ if (Array.isArray(this.parentNode[this.parentKey])) {
437
+ if (process.env.NODE_ENV === 'development') {
438
+ console.log('[删除节点]', this?.name, this);
439
+ }
440
+ this.emit('delete', {
441
+ action: 'delete',
442
+ path,
443
+ object: null,
444
+ ...parentParams,
445
+ });
446
+ }
447
+ else {
448
+ const parentPath = this.parentNode.getNodePath(false);
449
+ this.parentNode.emit('update', {
450
+ action: 'update',
451
+ path: parentPath,
452
+ object: {
453
+ [this.parentKey]: null,
454
+ },
455
+ oldObject: {
456
+ [this.parentKey]: this.toJSON(),
457
+ },
458
+ });
459
+ }
460
+ }
461
+ }
462
+ /**
463
+ * 更新节点
464
+ */
465
+ update({ field, ...object }) {
466
+ const path = this.getNodePath(false);
467
+ // 更新前的旧的对象
468
+ const oldObject = {};
469
+ // 更新后的新对象
470
+ const newObject = {};
471
+ const riskList = [];
472
+ for (const key in object) {
473
+ if (key === 'concept') {
474
+ continue;
475
+ }
476
+ if (Object.prototype.hasOwnProperty.call(object, key)) {
477
+ // 旧对象收集
478
+ this.collectOldObject({
479
+ oldObject,
480
+ key
481
+ });
482
+ // 新对象收集
483
+ this.collectNewObject({
484
+ newObject,
485
+ object,
486
+ key,
487
+ riskList
488
+ });
489
+ }
490
+ }
491
+ // 更新实例上的属性
492
+ this.updateInstance(newObject);
493
+ if (process.env.NODE_ENV === 'development') {
494
+ console.log('[更新节点]', 'path:', path, 'oldObject:', oldObject, 'newObject:', newObject);
495
+ }
496
+ this.emit('update', {
497
+ action: 'update',
498
+ path,
499
+ object: newObject,
500
+ oldObject,
501
+ field,
502
+ riskList,
503
+ });
504
+ }
505
+ // 旧对象收集
506
+ collectOldObject(params) {
507
+ const { oldObject, key } = params || {};
508
+ const oldProperty = this[key] ?? null;
509
+ oldObject[key] = oldProperty;
510
+ if (Array.isArray(oldProperty)) {
511
+ oldObject[key] = oldProperty.map((item) => {
512
+ let propertyItem = item ?? null;
513
+ if (item instanceof BaseNode_1) {
514
+ propertyItem = item.toJSON();
515
+ }
516
+ return propertyItem;
517
+ });
518
+ }
519
+ else if (oldProperty instanceof BaseNode_1) {
520
+ oldObject[key] = oldProperty.toJSON();
521
+ }
522
+ }
523
+ // 新对象收集
524
+ collectNewObject(params) {
525
+ const { newObject, object, key, riskList } = params || {};
526
+ const propertyMap = (0, decorators_1.getConceptPropertyMap)(this.concept ?? this.constructor.name);
527
+ const property = propertyMap.get(key);
528
+ if (property) {
529
+ const objProperty = object[key] ?? null;
530
+ const propertyConcept = property?.objectRef;
531
+ // 在定义中该属性是否为数组
532
+ const propertyIsArray = property?.isArray;
533
+ const propertyDefaultValue = property?.defaultValue;
534
+ if (propertyIsArray && (!Array.isArray(objProperty) && objProperty != propertyDefaultValue)) {
535
+ riskList?.push(`将Nasl节点“${this.concept}”上声明为数组的属性“${key}”赋值为“${objProperty}”`);
536
+ }
537
+ if (propertyConcept) {
538
+ if (Array.isArray(objProperty)) {
539
+ newObject[key] = objProperty.map((objItem) => {
540
+ return this.ensureDefined({
541
+ object: objItem,
542
+ concept: propertyConcept,
543
+ riskList
544
+ });
545
+ });
546
+ }
547
+ else {
548
+ newObject[key] = this.ensureDefined({
549
+ object: objProperty,
550
+ concept: propertyConcept,
551
+ riskList
552
+ });
553
+ }
554
+ }
555
+ else {
556
+ newObject[key] = objProperty;
557
+ }
558
+ }
559
+ }
560
+ // 确保属性都是定义过的
561
+ ensureDefined(params) {
562
+ const { object, concept, riskList } = params || {};
563
+ if (!object) {
564
+ return object;
565
+ }
566
+ const newObject = {};
567
+ const actualConcept = object?.concept || concept;
568
+ if (actualConcept) {
569
+ const propertyMap = (0, decorators_1.getConceptPropertyMap)(actualConcept);
570
+ for (const key in object) {
571
+ const property = propertyMap.get(key);
572
+ if (property) {
573
+ const objProperty = object[key] ?? null;
574
+ const propertyConcept = property?.objectRef;
575
+ // 在定义中该属性是否为数组
576
+ const propertyIsArray = property?.isArray;
577
+ const propertyDefaultValue = property?.defaultValue;
578
+ if (propertyIsArray && (!Array.isArray(objProperty) && objProperty != propertyDefaultValue)) {
579
+ riskList?.push(`将Nasl节点“${actualConcept}”上声明为数组的属性“${key}”赋值为“${objProperty}”`);
580
+ }
581
+ if (propertyConcept) {
582
+ if (Array.isArray(objProperty)) {
583
+ newObject[key] = objProperty.map((objItem) => {
584
+ return this.ensureDefined({
585
+ object: objItem,
586
+ concept: propertyConcept,
587
+ riskList,
588
+ });
589
+ });
590
+ }
591
+ else {
592
+ newObject[key] = this.ensureDefined({
593
+ object: objProperty,
594
+ concept: propertyConcept,
595
+ riskList
596
+ });
597
+ }
598
+ }
599
+ else {
600
+ newObject[key] = objProperty;
601
+ }
602
+ }
603
+ }
604
+ newObject.concept = actualConcept;
605
+ }
606
+ return newObject;
607
+ }
608
+ // 更新实例上的属性
609
+ updateInstance(object) {
610
+ for (const key in object) {
611
+ if (key === 'concept') {
612
+ continue;
613
+ }
614
+ const property = object[key] ?? null;
615
+ this[key] = property;
616
+ const objectRefCtor = (0, decorators_1.getConceptConstructor)(property?.concept);
617
+ if (Array.isArray(property)) {
618
+ this[key] = property.map((item) => {
619
+ let propertyItem = item ?? null;
620
+ const propertyObjectRefCtor = (0, decorators_1.getConceptConstructor)(item?.concept);
621
+ if (propertyObjectRefCtor?.from) {
622
+ propertyItem = propertyObjectRefCtor.from(item, this, key);
623
+ }
624
+ return propertyItem;
625
+ });
626
+ }
627
+ else if (objectRefCtor?.from) {
628
+ this[key] = objectRefCtor.from(property, this, key);
629
+ }
630
+ }
631
+ }
632
+ _delete() {
633
+ /* override */
634
+ return {
635
+ propertyName: '',
636
+ index: -1,
637
+ object: null,
638
+ oldObject: this,
639
+ };
640
+ }
641
+ static from(source, parentNode, parentKey) {
642
+ // 有一些继承的情况
643
+ const Ctor = decorators_1.classMap.get(source?.concept) || this;
644
+ if (Ctor && source instanceof Ctor) {
645
+ if (parentNode) {
646
+ source.parentNode = parentNode;
647
+ }
648
+ if (parentKey) {
649
+ source.parentKey = parentKey;
650
+ }
651
+ return source;
652
+ }
653
+ if (Ctor) {
654
+ const instance = new Ctor();
655
+ if (parentNode) {
656
+ instance.parentNode = parentNode;
657
+ }
658
+ if (parentKey) {
659
+ instance.parentKey = parentKey;
660
+ }
661
+ instance.subConstructor({
662
+ ...source,
663
+ concept: source?.concept ?? this?.prototype?.concept ?? Ctor.ConceptName ?? Ctor.name,
664
+ parentNode,
665
+ });
666
+ return instance;
667
+ }
668
+ }
669
+ get nodePath() {
670
+ return this.getNodePath(false);
671
+ }
672
+ getNodePath(useIndex) {
673
+ let node = this;
674
+ let useIndexKeys = [];
675
+ if (Array.isArray(useIndex)) {
676
+ useIndexKeys = useIndex;
677
+ useIndex = false;
678
+ }
679
+ let isNodeSelf = true;
680
+ const pathArr = [];
681
+ while (node) {
682
+ let path = '';
683
+ const { parentNode } = node;
684
+ if (parentNode) {
685
+ const { parentKey } = node;
686
+ path = parentKey;
687
+ const parentProperty = parentNode[parentKey];
688
+ if (Array.isArray(parentProperty)) {
689
+ const { name } = node;
690
+ // 如果存在同名节点,使用下标来表示NodePath
691
+ const siblingNode = name
692
+ ? parentProperty.find((child) => {
693
+ // 因为proxy的关系,导致两边的引用不相同,所以这里需要判断id
694
+ return child?.name === name && child !== node && child?.id !== node?.id;
695
+ })
696
+ : null;
697
+ if (siblingNode || !name || (useIndex && isNodeSelf) || useIndexKeys.includes(node.concept)) {
698
+ const index = parentProperty.findIndex((item) => {
699
+ if (item === node) {
700
+ return true;
701
+ }
702
+ return item?.id && item?.id === node?.id;
703
+ });
704
+ path += `[${index}]`;
705
+ }
706
+ else {
707
+ path += `[name=${name}]`;
708
+ }
709
+ }
710
+ pathArr.unshift(path);
711
+ }
712
+ node = parentNode;
713
+ isNodeSelf = false;
714
+ }
715
+ pathArr.unshift('app');
716
+ return pathArr.join('.');
717
+ }
718
+ /**
719
+ * 上层节点
720
+ */
721
+ get upperNode() {
722
+ // eslint-disable-next-line consistent-this
723
+ let _upperNode = this;
724
+ while (!!_upperNode && _upperNode.concept === this.concept) {
725
+ _upperNode = _upperNode.parentNode;
726
+ }
727
+ return _upperNode;
728
+ }
729
+ /**
730
+ * 根节点
731
+ */
732
+ get rootNode() {
733
+ return this.getAncestor('App');
734
+ }
735
+ getAncestor(concept) {
736
+ let { upperNode } = this;
737
+ while (upperNode && upperNode.concept && ((upperNode.concept !== concept)
738
+ && (!upperNode.constructor.inheritanceChain?.includes(concept)))) {
739
+ upperNode = upperNode.upperNode;
740
+ }
741
+ return upperNode;
742
+ }
743
+ /**
744
+ *
745
+ * @param source
746
+ * @param Ctor
747
+ * @param completeList
748
+ * @param idsList
749
+ */
750
+ handleSource(source, completeList) {
751
+ const { id, concept } = source || {};
752
+ const actualSource = source instanceof BaseNode_1 ? source : (0, map_1.getSourceFromMap)(id, concept);
753
+ completeList.push(actualSource || source);
754
+ }
755
+ /**
756
+ * 获取当前的TsName
757
+ */
758
+ get tsName() {
759
+ if (this.name) {
760
+ let tsName = this.name;
761
+ // 匹配所有特殊字符都转为_
762
+ tsName = tsName.replace(/\W/g, '_');
763
+ if (/^\d/.test(tsName)) {
764
+ tsName = `$${tsName}`;
765
+ }
766
+ return tsName;
767
+ }
768
+ return '';
769
+ }
770
+ /**
771
+ * 生成json
772
+ * @param instance
773
+ * @param Ctor
774
+ */
775
+ genSources(instance, filerFn) {
776
+ if (!instance) {
777
+ return instance;
778
+ }
779
+ if (Array.isArray(instance)) {
780
+ return instance.map((item) => (item && item._toJSON ? item._toJSON(filerFn) : item));
781
+ }
782
+ return instance && instance._toJSON ? instance._toJSON(filerFn) : instance;
783
+ }
784
+ /**
785
+ * 实例化一个 JSON
786
+ * 由于有 from,只能先实例化父级,再实例化子级
787
+ * @param obj
788
+ * @param parentNode
789
+ * @returns
790
+ */
791
+ instantiate(source, parentNode, parentKey) {
792
+ if (source instanceof BaseNode_1) {
793
+ if (!source.parentNode || !source.parentKey) {
794
+ source.parentNode = parentNode;
795
+ source.parentKey = parentKey;
796
+ }
797
+ return source;
798
+ }
799
+ if (source && source.concept && decorators_1.classMap.get(source.concept)) {
800
+ const Ctor = decorators_1.classMap.get(source.concept);
801
+ const instance = Ctor.from(source, parentNode, parentKey);
802
+ if (instance && instance.toStorageJSON)
803
+ instance.storageJSON = instance.toStorageJSON();
804
+ return instance;
805
+ }
806
+ return source;
807
+ }
808
+ /**
809
+ * 激活 JSON 内部实例
810
+ * @param source
811
+ */
812
+ instantiateSub(source, parentKey) {
813
+ if (!source) {
814
+ return;
815
+ }
816
+ const completeList = [];
817
+ let isArray;
818
+ // 暂时通过是否有name判断数据是否全
819
+ if (Array.isArray(source)) {
820
+ isArray = true;
821
+ source.forEach((sourceItem) => {
822
+ this.handleSource(sourceItem, completeList);
823
+ });
824
+ }
825
+ else {
826
+ this.handleSource(source, completeList);
827
+ }
828
+ const instanceList = completeList.map((item) => this.instantiate(item, this, parentKey));
829
+ if (isArray) {
830
+ return instanceList;
831
+ }
832
+ if (Array.isArray(instanceList) && instanceList.length) {
833
+ return instanceList[0];
834
+ }
835
+ }
836
+ plainAssign(source) {
837
+ this._mutable = true;
838
+ const oldId = this.id;
839
+ Object.keys(source).forEach((key) => {
840
+ const value = source[key];
841
+ if (typeof value !== 'object' && typeof value !== 'function')
842
+ this[key] = value;
843
+ });
844
+ this._mutable = false;
845
+ }
846
+ pick(source, keys = []) {
847
+ const obj = {};
848
+ keys.forEach((key) => (obj[key] = source[key]));
849
+ // 这里统一用 assign,集中处理 id 的问题
850
+ // this.assign(obj);
851
+ }
852
+ /**
853
+ * 从对象中深度获取
854
+ * @param source
855
+ * @param keys
856
+ * @example 比如一般后端返回只是添加了个 id
857
+ * ```
858
+ * this.deepPick(result, ['id'])
859
+ */
860
+ deepPick(source, keys = []) {
861
+ utils.traverse((current) => {
862
+ const subSource = current.jsonPath ? (0, lodash_1.at)(source, [current.jsonPath])[0] : source;
863
+ const target = current.jsonPath ? (0, lodash_1.at)(this, [current.jsonPath])[0] : this;
864
+ if (!target)
865
+ return;
866
+ const obj = {};
867
+ keys.forEach((key) => {
868
+ if (subSource.hasOwnProperty(key)) {
869
+ obj[key] = subSource[key];
870
+ }
871
+ });
872
+ // 这里统一用 assign,集中处理 id 的问题
873
+ target.assign ? target.assign(obj) : Object.assign(target, obj);
874
+ }, { node: source }, { mode: 'anyObject' });
875
+ }
876
+ /**
877
+ * 去除循环依赖,转为纯 JSON
878
+ * @param parentKey 外面的 key,提供给 JSON.stringify 使用
879
+ * @param excludedKeys 需要额外排除的 keys
880
+ */
881
+ toJSON() {
882
+ return this._toJSON();
883
+ }
884
+ _toJSON(filerFn) {
885
+ const propertyMap = (0, decorators_1.getConceptPropertyMap)(this.concept || this.constructor.name);
886
+ const source = {};
887
+ propertyMap.forEach((property, key) => {
888
+ if (property) {
889
+ const { objectRef: propertyObjectRef } = property;
890
+ if (!propertyObjectRef) {
891
+ source[key] = this[key];
892
+ }
893
+ else {
894
+ const sources = this.genSources(this[key], filerFn);
895
+ source[key] = sources;
896
+ }
897
+ }
898
+ });
899
+ // @ts-ignore
900
+ source.concept = this.concept;
901
+ return filerFn ? filerFn(source) : source;
902
+ }
903
+ /**
904
+ * 转为单层的 JSON
905
+ * @param parentKey 外面的 key,提供给 JSON.stringify 使用
906
+ * @param excludedKeys 需要额外排除的 keys
907
+ */
908
+ toPlainJSON(parentKey, excludedKeys = []) {
909
+ const JSON_EXCLUDED_KEYS = new Set(this.JSON_EXCLUDED_KEYS || []); // Object.getPrototypeOf(this).constructor.JSON_EXCLUDED_KEYS || [];
910
+ excludedKeys.forEach((key) => JSON_EXCLUDED_KEYS.add(key));
911
+ const temp = {};
912
+ Object.keys(this).forEach((key) => {
913
+ const value = this[key];
914
+ if (!JSON_EXCLUDED_KEYS.has(key) && typeof value !== 'object' && typeof value !== 'function')
915
+ temp[key] = value;
916
+ });
917
+ return JSON.parse(JSON.stringify(temp));
918
+ }
919
+ /**
920
+ * 查找引用
921
+ */
922
+ async findUsage() {
923
+ /* override */
924
+ }
925
+ /**
926
+ * 通过当前节点,查找被引用的节点
927
+ */
928
+ async nodeFindRefNodes() {
929
+ /* override */
930
+ }
931
+ async findReadOnlyLogicUsage() {
932
+ /* override */
933
+ }
934
+ /**
935
+ * 重命名
936
+ */
937
+ async changeName(newValue, updateAll = false) {
938
+ /* override */
939
+ }
940
+ /**
941
+ * 准备删除
942
+ */
943
+ async prepareDelete(cb) {
944
+ /* override */
945
+ }
946
+ /**
947
+ * 添加参数准备
948
+ */
949
+ async addParamsPrepare() {
950
+ /* override */
951
+ }
952
+ /**
953
+ * 获取当前节点类型
954
+ */
955
+ async getCurrentTypeAnnotation() {
956
+ /* override */
957
+ }
958
+ /**
959
+ * 获取当前节点的下一级内容
960
+ */
961
+ getSelectRef(newTypeAnnotation, needNewStructure = false) {
962
+ /* override */
963
+ }
964
+ /**
965
+ * 销毁
966
+ * 从 Map 中删除点和子节点
967
+ */
968
+ destroy() {
969
+ // utils.traverse((current) => , { node: this }, {
970
+ // mode: 'anyObject',
971
+ // excludedKeySet: this.JSON_EXCLUDED_KEYS,
972
+ // });
973
+ }
974
+ onChange($event) {
975
+ this.emit('change', $event);
976
+ }
977
+ onCreate($event) {
978
+ /* override */
979
+ }
980
+ onDelete($event) {
981
+ /* override */
982
+ }
983
+ /**
984
+ * 移动节点
985
+ * @param sourceNode
986
+ * @param position
987
+ */
988
+ moveNode(options) {
989
+ const { sourceNode, position } = options;
990
+ if (this.concept === 'App') {
991
+ return;
992
+ }
993
+ let actionMsg = `移动${this.constructor.nodeTitle}`;
994
+ if (this.name) {
995
+ actionMsg += `“${this.name}”`;
996
+ }
997
+ sourceNode.app.emit('collect:start', {
998
+ actionMsg,
999
+ });
1000
+ // 如果是兄弟节点之前的移动
1001
+ if (position !== 'append' && this.concept !== sourceNode.concept) {
1002
+ return;
1003
+ }
1004
+ // 先删
1005
+ this.delete();
1006
+ if (position === 'append') {
1007
+ let { action } = options;
1008
+ if (!action)
1009
+ action = `add${this.concept}`;
1010
+ const parentNode = sourceNode;
1011
+ parentNode[action](this);
1012
+ }
1013
+ else {
1014
+ const parentNode = sourceNode?.parentNode;
1015
+ const parentKey = sourceNode?.parentKey || '';
1016
+ const list = parentNode[parentKey];
1017
+ if (Array.isArray(list)) {
1018
+ let index = list.indexOf(sourceNode);
1019
+ if (position === 'insertAfter') {
1020
+ index += 1;
1021
+ }
1022
+ Object.assign(this, {
1023
+ parentNode,
1024
+ parentKey,
1025
+ });
1026
+ if (this.concept === 'ViewElement')
1027
+ this.name = this.getViewElementUniqueName(this.name);
1028
+ list.splice(index, 0, this);
1029
+ this.create({
1030
+ index,
1031
+ parentNode,
1032
+ parentKey,
1033
+ });
1034
+ }
1035
+ }
1036
+ sourceNode.app.emit('collect:end');
1037
+ }
1038
+ // 其他节点替换本nasl节点
1039
+ replaceNode(newNode) {
1040
+ const oldNode = this;
1041
+ const { parentNode, parentKey, offsetX, offsetY, app } = oldNode;
1042
+ const { logic } = oldNode;
1043
+ if (!Array.isArray(parentNode[parentKey])) {
1044
+ /**
1045
+ * match切换分支,需要调用setExpressionWitchCase,补全分支的信息
1046
+ */
1047
+ if (parentNode.concept === 'Match' && parentKey === 'expression') {
1048
+ parentNode.setExpressionWitchCase(newNode);
1049
+ return;
1050
+ }
1051
+ parentNode.update({
1052
+ [parentKey]: newNode,
1053
+ });
1054
+ }
1055
+ else {
1056
+ app.emit('collect:start', {
1057
+ actionMsg: '删除属性变量',
1058
+ });
1059
+ if (parentNode.concept === 'Logic') {
1060
+ if (parentKey === 'body') {
1061
+ const expIndex = logic.body.findIndex((item) => item === oldNode);
1062
+ logic.insertItemInBodyAt(newNode, expIndex);
1063
+ }
1064
+ else {
1065
+ const expIndex = logic.playground.findIndex((item) => item === oldNode);
1066
+ Object.assign(newNode, { offsetX, offsetY });
1067
+ logic.insertItemInPlaygroundAt(newNode, expIndex);
1068
+ }
1069
+ }
1070
+ else {
1071
+ const expIndex = parentNode[parentKey].findIndex((item) => item === oldNode);
1072
+ const firstUpperText = parentKey[0].toUpperCase() + parentKey.slice(1, parentKey.length);
1073
+ Object.assign(newNode, { offsetX, offsetY });
1074
+ if (parentNode.concept === 'MatchCase') {
1075
+ parentKey === 'body' ? parentNode.insertItemInBodyAt(newNode, expIndex) : parentNode.insertLogicItemInPatternsAt(newNode, expIndex);
1076
+ }
1077
+ else if (parentNode[`insertItemIn${firstUpperText}At`])
1078
+ parentNode[`insertItemIn${firstUpperText}At`](newNode, expIndex);
1079
+ else
1080
+ parentNode.insertItemAt(newNode, expIndex);
1081
+ }
1082
+ oldNode.delete();
1083
+ app.emit('collect:end');
1084
+ }
1085
+ }
1086
+ // 查找当前节点所有引用并进行同步更新
1087
+ async updateRelyFileNode(app) {
1088
+ let relyfileNode = [];
1089
+ try {
1090
+ // 获取old接口的依赖放到一起更新,可以让使用方重新生成内容
1091
+ relyfileNode = await app.naslServer.findCallLogicFileRef(this.parentNode);
1092
+ }
1093
+ catch (err) {
1094
+ console.log('更新对应引用方失败', err);
1095
+ }
1096
+ // 如果依赖项有值,只要是为了触发更新,为了重新取到引用生成代码
1097
+ if (relyfileNode.length) {
1098
+ relyfileNode.forEach((fileNode) => {
1099
+ app.naslServer?.embeddedTSEmitter.emit('change', {
1100
+ value: [
1101
+ {
1102
+ originEvent: {
1103
+ action: 'update',
1104
+ target: fileNode,
1105
+ }
1106
+ }
1107
+ ]
1108
+ });
1109
+ });
1110
+ }
1111
+ }
1112
+ /**
1113
+ * 获取添加时的默认选项
1114
+ * @returns
1115
+ */
1116
+ static getDefaultOptions() {
1117
+ return {};
1118
+ }
1119
+ /**
1120
+ * 迭代所有属性
1121
+ *
1122
+ * @description 是所有属性!!不是所有子节点!!
1123
+ */
1124
+ traverseChildren(cb) {
1125
+ function traverse(node) {
1126
+ cb(node);
1127
+ const propertyMap = (0, decorators_1.getConceptPropertyMap)(node?.concept);
1128
+ if (!propertyMap)
1129
+ return;
1130
+ for (const property of propertyMap.keys()) {
1131
+ const child = node[property];
1132
+ if (!child)
1133
+ continue;
1134
+ else if (Array.isArray(child))
1135
+ child.forEach((node) => traverse(node));
1136
+ else
1137
+ traverse(child);
1138
+ }
1139
+ }
1140
+ traverse(this);
1141
+ }
1142
+ /**
1143
+ * 迭代所有子节点
1144
+ *
1145
+ * @description 严格迭代所有子节点!排除属性!
1146
+ */
1147
+ traverseStrictChildren(cb) {
1148
+ const isNode = (node) => {
1149
+ return Boolean(node) && typeof node === 'object' && ('concept' in node) && typeof node.concept === 'string';
1150
+ };
1151
+ this.traverseChildren((el) => {
1152
+ if (isNode(el)) {
1153
+ cb(el);
1154
+ }
1155
+ });
1156
+ }
1157
+ /**
1158
+ * 获取当前节点在nasl标注节点上的节点
1159
+ */
1160
+ getCurrentAnnotatedJSON() {
1161
+ return this.__TypeAnnotation;
1162
+ }
1163
+ /**
1164
+ * 获取
1165
+ * 当前this上下文 的Source 和 父级文件级别的节点
1166
+ */
1167
+ getCurrentSource() {
1168
+ const node = this;
1169
+ let { sourceMap } = node;
1170
+ let fileNode = node;
1171
+ // 如果没有sourceMap,就继续向上找 ,或者到module结束
1172
+ // 如果 节点找到 app 或者module 停止 或者entity找到DataSource为止
1173
+ // 如果当前节点是view就不要向上查找了
1174
+ while (!sourceMap && fileNode && !(fileNode.parentNode.concept === 'App')) {
1175
+ fileNode = fileNode.parentNode;
1176
+ sourceMap = fileNode?.sourceMap;
1177
+ }
1178
+ const currentSource = sourceMap && sourceMap.get(node);
1179
+ if (currentSource) {
1180
+ return { currentSource, fileNode };
1181
+ }
1182
+ return { fileNode };
1183
+ }
1184
+ /**
1185
+ * 获取
1186
+ * 当前this上下文 的Source 和 父级文件级别的节点
1187
+ */
1188
+ getFileConceptNode(concept) {
1189
+ const node = this;
1190
+ let { sourceMap } = node;
1191
+ let fileNode = node;
1192
+ // 如果没有sourceMap,就继续向上找 ,或者到module结束
1193
+ // 如果 节点找到 app 或者module 停止 或者entity找到DataSource为止
1194
+ // 如果当前节点是view就不要向上查找了
1195
+ while (!sourceMap && fileNode && !(fileNode.parentNode.concept === 'App')) {
1196
+ fileNode = fileNode.parentNode;
1197
+ sourceMap = fileNode?.sourceMap;
1198
+ }
1199
+ const arr = [];
1200
+ sourceMap &&
1201
+ sourceMap.forEach((value, key) => {
1202
+ if (key.concept === concept)
1203
+ arr.push({ key, value });
1204
+ });
1205
+ return arr;
1206
+ }
1207
+ get isTreeLeaf() {
1208
+ if (this.concept === 'EntityProperty' ||
1209
+ this.concept === 'InterfaceParam' ||
1210
+ this.concept === 'Param' ||
1211
+ this.concept === 'Return' ||
1212
+ this.concept === 'StructureProperty' ||
1213
+ this.concept === 'Variable' ||
1214
+ this.concept === 'FrontendVariable') {
1215
+ if (this.typeAnnotation || (this.__TypeAnnotation && this.parentKey === 'virtualParams')) {
1216
+ return !this.hasChildren;
1217
+ }
1218
+ return true;
1219
+ }
1220
+ return false;
1221
+ }
1222
+ get hasChildren() {
1223
+ const typeAnnotation = this.typeAnnotation || this.__TypeAnnotation;
1224
+ if (typeAnnotation) {
1225
+ const { typeKind, typeNamespace, typeName, properties } = typeAnnotation;
1226
+ if (typeKind === 'reference' || typeKind === 'generic') {
1227
+ if (typeNamespace.endsWith('.enums'))
1228
+ return null;
1229
+ return [{}];
1230
+ }
1231
+ if (typeNamespace === 'nasl.core' && ['String', 'Text', 'Email'].includes(typeName)) {
1232
+ return [{}];
1233
+ }
1234
+ if (typeKind === 'anonymousStructure' && properties?.length) {
1235
+ return [{}];
1236
+ }
1237
+ return null;
1238
+ }
1239
+ return null;
1240
+ }
1241
+ /**
1242
+ * 使用新的 concept 在当前节点生成新的数据
1243
+ */
1244
+ changeConceptNode(concept) {
1245
+ return new Proxy(this, {
1246
+ get(target, p, receiver) {
1247
+ if (p === 'concept') {
1248
+ return concept;
1249
+ }
1250
+ return target[p];
1251
+ },
1252
+ });
1253
+ }
1254
+ collectNodes(input) {
1255
+ const pre = typeof input === 'undefined'
1256
+ ? (node) => typeof node?.concept === 'string'
1257
+ : typeof input === 'string'
1258
+ ? (node) => node?.concept === input
1259
+ : input;
1260
+ const nodes = [];
1261
+ const self = this;
1262
+ if (pre(self)) {
1263
+ nodes.push(self);
1264
+ }
1265
+ this.traverseChildren((current) => {
1266
+ if (pre(current)) {
1267
+ nodes.push(current);
1268
+ }
1269
+ });
1270
+ return nodes;
1271
+ }
1272
+ };
1273
+ __decorate([
1274
+ (0, decorators_1.excludedInJSON)()
1275
+ ], BaseNode.prototype, "_mutable", void 0);
1276
+ __decorate([
1277
+ (0, decorators_1.excludedInJSON)()
1278
+ ], BaseNode.prototype, "_concept", void 0);
1279
+ __decorate([
1280
+ (0, decorators_1.property)()
1281
+ ], BaseNode.prototype, "concept", null);
1282
+ __decorate([
1283
+ (0, decorators_1.property)()
1284
+ ], BaseNode.prototype, "changedTime", void 0);
1285
+ __decorate([
1286
+ (0, decorators_1.property)()
1287
+ ], BaseNode.prototype, "branchName", void 0);
1288
+ __decorate([
1289
+ (0, decorators_1.property)()
1290
+ ], BaseNode.prototype, "workingCopy", void 0);
1291
+ __decorate([
1292
+ (0, decorators_1.property)()
1293
+ ], BaseNode.prototype, "branch", void 0);
1294
+ __decorate([
1295
+ (0, decorators_1.property)()
1296
+ ], BaseNode.prototype, "breakpoint", void 0);
1297
+ __decorate([
1298
+ (0, decorators_1.circular)()
1299
+ ], BaseNode.prototype, "parentNode", void 0);
1300
+ __decorate([
1301
+ (0, decorators_1.excludedInJSON)()
1302
+ ], BaseNode.prototype, "editable", void 0);
1303
+ __decorate([
1304
+ (0, decorators_1.excludedInJSON)()
1305
+ ], BaseNode.prototype, "removable", void 0);
1306
+ __decorate([
1307
+ (0, decorators_1.excludedInJSON)()
1308
+ ], BaseNode.prototype, "editing", void 0);
1309
+ __decorate([
1310
+ (0, decorators_1.excludedInJSON)()
1311
+ ], BaseNode.prototype, "loading", void 0);
1312
+ __decorate([
1313
+ (0, decorators_1.excludedInJSON)()
1314
+ ], BaseNode.prototype, "expanded", void 0);
1315
+ __decorate([
1316
+ (0, decorators_1.excludedInJSON)()
1317
+ ], BaseNode.prototype, "hidden", void 0);
1318
+ __decorate([
1319
+ (0, decorators_1.excludedInJSON)()
1320
+ ], BaseNode.prototype, "pageTreeNodeHidden", void 0);
1321
+ __decorate([
1322
+ (0, decorators_1.excludedInJSON)()
1323
+ ], BaseNode.prototype, "logicTreeNodeHidden", void 0);
1324
+ __decorate([
1325
+ (0, decorators_1.excludedInJSON)()
1326
+ ], BaseNode.prototype, "dataTreeNodeHidden", void 0);
1327
+ __decorate([
1328
+ (0, decorators_1.excludedInJSON)()
1329
+ ], BaseNode.prototype, "processTreeNodeHidden", void 0);
1330
+ __decorate([
1331
+ (0, decorators_1.excludedInJSON)()
1332
+ ], BaseNode.prototype, "logicTreeNodeExpanded", void 0);
1333
+ __decorate([
1334
+ (0, decorators_1.excludedInJSON)()
1335
+ ], BaseNode.prototype, "sourceMap", void 0);
1336
+ __decorate([
1337
+ (0, decorators_1.excludedInJSON)()
1338
+ ], BaseNode.prototype, "isLeaf", void 0);
1339
+ __decorate([
1340
+ (0, decorators_1.excludedInJSON)()
1341
+ ], BaseNode.prototype, "storageJSON", void 0);
1342
+ __decorate([
1343
+ (0, decorators_1.property)()
1344
+ ], BaseNode.prototype, "name", void 0);
1345
+ __decorate([
1346
+ (0, decorators_1.excludedInJSON)()
1347
+ ], BaseNode.prototype, "__TypeAnnotation", void 0);
1348
+ __decorate([
1349
+ (0, decorators_1.excludedInJSON)()
1350
+ ], BaseNode.prototype, "__isCorrectTypeAnnotation", void 0);
1351
+ __decorate([
1352
+ (0, decorators_1.action)('查找引用')
1353
+ ], BaseNode.prototype, "findUsage", null);
1354
+ __decorate([
1355
+ (0, decorators_1.action)('通过当前节点,查找被引用的节点')
1356
+ ], BaseNode.prototype, "nodeFindRefNodes", null);
1357
+ __decorate([
1358
+ (0, decorators_1.action)('重命名')
1359
+ ], BaseNode.prototype, "changeName", null);
1360
+ __decorate([
1361
+ (0, decorators_1.action)('准备删除')
1362
+ ], BaseNode.prototype, "prepareDelete", null);
1363
+ __decorate([
1364
+ (0, decorators_1.action)('添加参数准备')
1365
+ ], BaseNode.prototype, "addParamsPrepare", null);
1366
+ __decorate([
1367
+ (0, decorators_1.action)('获取当前节点类型')
1368
+ ], BaseNode.prototype, "getCurrentTypeAnnotation", null);
1369
+ __decorate([
1370
+ (0, decorators_1.action)('获取当前节点的下一级内容')
1371
+ ], BaseNode.prototype, "getSelectRef", null);
1372
+ BaseNode = BaseNode_1 = __decorate([
1373
+ sentry_1.sentryMonitorNaslNode
1374
+ ], BaseNode);
1375
+ exports.BaseNode = BaseNode;
1376
+ exports.default = BaseNode;
1326
1377
  //# sourceMappingURL=BaseNode.js.map