@lcap/nasl 1.0.0-alpha.7 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/out/automate/engine/index.d.ts +3 -0
  2. package/out/automate/engine/index.js +513 -0
  3. package/out/automate/engine/index.js.map +1 -0
  4. package/out/automate/engine/utils.d.ts +24 -0
  5. package/out/automate/engine/utils.js +363 -0
  6. package/out/automate/engine/utils.js.map +1 -0
  7. package/out/common/BaseNode.d.ts +20 -0
  8. package/out/common/BaseNode.js +219 -81
  9. package/out/common/BaseNode.js.map +1 -1
  10. package/out/concepts/App__.d.ts +18 -1
  11. package/out/concepts/App__.js +75 -35
  12. package/out/concepts/App__.js.map +1 -1
  13. package/out/concepts/Argument__.d.ts +5 -1
  14. package/out/concepts/Argument__.js +21 -3
  15. package/out/concepts/Argument__.js.map +1 -1
  16. package/out/concepts/Assignee__.d.ts +190 -0
  17. package/out/concepts/Assignee__.js +264 -0
  18. package/out/concepts/Assignee__.js.map +1 -0
  19. package/out/concepts/Assignment__.js +5 -0
  20. package/out/concepts/Assignment__.js.map +1 -1
  21. package/out/concepts/BinaryExpression__.js +8 -7
  22. package/out/concepts/BinaryExpression__.js.map +1 -1
  23. package/out/concepts/BindAttribute__.d.ts +19 -0
  24. package/out/concepts/BindAttribute__.js +54 -9
  25. package/out/concepts/BindAttribute__.js.map +1 -1
  26. package/out/concepts/BindDirective__.js +22 -2
  27. package/out/concepts/BindDirective__.js.map +1 -1
  28. package/out/concepts/BindEvent__.d.ts +2 -2
  29. package/out/concepts/BindEvent__.js +67 -34
  30. package/out/concepts/BindEvent__.js.map +1 -1
  31. package/out/concepts/BooleanLiteral__.d.ts +2 -0
  32. package/out/concepts/BooleanLiteral__.js +10 -0
  33. package/out/concepts/BooleanLiteral__.js.map +1 -1
  34. package/out/concepts/CallFunction__.js +41 -23
  35. package/out/concepts/CallFunction__.js.map +1 -1
  36. package/out/concepts/CallInterface__.d.ts +5 -0
  37. package/out/concepts/CallInterface__.js +238 -31
  38. package/out/concepts/CallInterface__.js.map +1 -1
  39. package/out/concepts/CallLogic__.d.ts +4 -4
  40. package/out/concepts/CallLogic__.js +110 -53
  41. package/out/concepts/CallLogic__.js.map +1 -1
  42. package/out/concepts/CallQueryComponent__.d.ts +7 -1
  43. package/out/concepts/CallQueryComponent__.js +44 -25
  44. package/out/concepts/CallQueryComponent__.js.map +1 -1
  45. package/out/concepts/Comment__.js +6 -2
  46. package/out/concepts/Comment__.js.map +1 -1
  47. package/out/concepts/CompletionProperty__.d.ts +3 -1
  48. package/out/concepts/CompletionProperty__.js +2 -0
  49. package/out/concepts/CompletionProperty__.js.map +1 -1
  50. package/out/concepts/ConfigGroup__.js +2 -2
  51. package/out/concepts/ConfigGroup__.js.map +1 -1
  52. package/out/concepts/ConfigProperty__.js +2 -2
  53. package/out/concepts/ConfigProperty__.js.map +1 -1
  54. package/out/concepts/Configuration__.js +2 -2
  55. package/out/concepts/Configuration__.js.map +1 -1
  56. package/out/concepts/Constant__.d.ts +1 -0
  57. package/out/concepts/Constant__.js +14 -0
  58. package/out/concepts/Constant__.js.map +1 -1
  59. package/out/concepts/Destination__.d.ts +12 -0
  60. package/out/concepts/Destination__.js +94 -18
  61. package/out/concepts/Destination__.js.map +1 -1
  62. package/out/concepts/End__.js +9 -1
  63. package/out/concepts/End__.js.map +1 -1
  64. package/out/concepts/EntityProperty__.d.ts +11 -0
  65. package/out/concepts/EntityProperty__.js +73 -5
  66. package/out/concepts/EntityProperty__.js.map +1 -1
  67. package/out/concepts/Entity__.d.ts +4 -1
  68. package/out/concepts/Entity__.js +37 -15
  69. package/out/concepts/Entity__.js.map +1 -1
  70. package/out/concepts/Enum__.d.ts +4 -0
  71. package/out/concepts/Enum__.js +18 -10
  72. package/out/concepts/Enum__.js.map +1 -1
  73. package/out/concepts/Event__.js +2 -2
  74. package/out/concepts/Event__.js.map +1 -1
  75. package/out/concepts/ForEachStatement__.js +9 -13
  76. package/out/concepts/ForEachStatement__.js.map +1 -1
  77. package/out/concepts/Function__.js +9 -9
  78. package/out/concepts/Function__.js.map +1 -1
  79. package/out/concepts/Identifier__.d.ts +3 -0
  80. package/out/concepts/Identifier__.js +76 -29
  81. package/out/concepts/Identifier__.js.map +1 -1
  82. package/out/concepts/IfStatement__.js +4 -4
  83. package/out/concepts/IfStatement__.js.map +1 -1
  84. package/out/concepts/InterfaceParam__.d.ts +6 -4
  85. package/out/concepts/InterfaceParam__.js +52 -19
  86. package/out/concepts/InterfaceParam__.js.map +1 -1
  87. package/out/concepts/Interface__.d.ts +42 -30
  88. package/out/concepts/Interface__.js +131 -15
  89. package/out/concepts/Interface__.js.map +1 -1
  90. package/out/concepts/JSBlock__.d.ts +1 -0
  91. package/out/concepts/JSBlock__.js +3 -0
  92. package/out/concepts/JSBlock__.js.map +1 -1
  93. package/out/concepts/LogicItem__.d.ts +2 -1
  94. package/out/concepts/LogicItem__.js +14 -0
  95. package/out/concepts/LogicItem__.js.map +1 -1
  96. package/out/concepts/Logic__.d.ts +16 -1
  97. package/out/concepts/Logic__.js +176 -33
  98. package/out/concepts/Logic__.js.map +1 -1
  99. package/out/concepts/MemberExpression__.d.ts +2 -0
  100. package/out/concepts/MemberExpression__.js +49 -12
  101. package/out/concepts/MemberExpression__.js.map +1 -1
  102. package/out/concepts/Module__.d.ts +126 -120
  103. package/out/concepts/Module__.js +28 -18
  104. package/out/concepts/Module__.js.map +1 -1
  105. package/out/concepts/Namespace__.d.ts +5 -1
  106. package/out/concepts/Namespace__.js +36 -25
  107. package/out/concepts/Namespace__.js.map +1 -1
  108. package/out/concepts/NullLiteral__.d.ts +3 -0
  109. package/out/concepts/NullLiteral__.js +11 -1
  110. package/out/concepts/NullLiteral__.js.map +1 -1
  111. package/out/concepts/NumericLiteral__.d.ts +1 -1
  112. package/out/concepts/NumericLiteral__.js +17 -6
  113. package/out/concepts/NumericLiteral__.js.map +1 -1
  114. package/out/concepts/Param__.d.ts +7 -3
  115. package/out/concepts/Param__.js +57 -28
  116. package/out/concepts/Param__.js.map +1 -1
  117. package/out/concepts/ProcessComponent__.js +4 -4
  118. package/out/concepts/ProcessComponent__.js.map +1 -1
  119. package/out/concepts/ProcessElement__.d.ts +0 -4
  120. package/out/concepts/ProcessElement__.js +112 -49
  121. package/out/concepts/ProcessElement__.js.map +1 -1
  122. package/out/concepts/ProcessOutcome__.js +1 -1
  123. package/out/concepts/ProcessOutcome__.js.map +1 -1
  124. package/out/concepts/Process__.d.ts +7 -1
  125. package/out/concepts/Process__.js +77 -81
  126. package/out/concepts/Process__.js.map +1 -1
  127. package/out/concepts/QueryAggregateExpression__.js +1 -1
  128. package/out/concepts/QueryAggregateExpression__.js.map +1 -1
  129. package/out/concepts/QueryFromExpression__.js +2 -2
  130. package/out/concepts/QueryFromExpression__.js.map +1 -1
  131. package/out/concepts/QueryJoinExpression__.js +4 -4
  132. package/out/concepts/QueryJoinExpression__.js.map +1 -1
  133. package/out/concepts/QueryLimitExpression__.js +3 -3
  134. package/out/concepts/QueryLimitExpression__.js.map +1 -1
  135. package/out/concepts/QuerySelectExpression__.js +2 -2
  136. package/out/concepts/QuerySelectExpression__.js.map +1 -1
  137. package/out/concepts/Return__.d.ts +4 -1
  138. package/out/concepts/Return__.js +67 -21
  139. package/out/concepts/Return__.js.map +1 -1
  140. package/out/concepts/Role__.d.ts +4 -0
  141. package/out/concepts/Role__.js +13 -4
  142. package/out/concepts/Role__.js.map +1 -1
  143. package/out/concepts/SqlQueryComponent__.js +2 -2
  144. package/out/concepts/SqlQueryComponent__.js.map +1 -1
  145. package/out/concepts/StringLiteral__.d.ts +1 -1
  146. package/out/concepts/StringLiteral__.js +21 -31
  147. package/out/concepts/StringLiteral__.js.map +1 -1
  148. package/out/concepts/StructureProperty__.d.ts +5 -4
  149. package/out/concepts/StructureProperty__.js +55 -26
  150. package/out/concepts/StructureProperty__.js.map +1 -1
  151. package/out/concepts/Structure__.d.ts +44 -30
  152. package/out/concepts/Structure__.js +42 -10
  153. package/out/concepts/Structure__.js.map +1 -1
  154. package/out/concepts/SwitchCase__.js +4 -4
  155. package/out/concepts/SwitchCase__.js.map +1 -1
  156. package/out/concepts/SwitchStatement__.js +2 -2
  157. package/out/concepts/SwitchStatement__.js.map +1 -1
  158. package/out/concepts/TypeAnnotation__.d.ts +5 -5
  159. package/out/concepts/TypeAnnotation__.js +74 -20
  160. package/out/concepts/TypeAnnotation__.js.map +1 -1
  161. package/out/concepts/UnaryExpression__.js +10 -8
  162. package/out/concepts/UnaryExpression__.js.map +1 -1
  163. package/out/concepts/Unparsed__.js +1 -1
  164. package/out/concepts/Unparsed__.js.map +1 -1
  165. package/out/concepts/ValidationRule__.d.ts +1 -0
  166. package/out/concepts/ValidationRule__.js +48 -13
  167. package/out/concepts/ValidationRule__.js.map +1 -1
  168. package/out/concepts/Variable__.d.ts +10 -1
  169. package/out/concepts/Variable__.js +70 -18
  170. package/out/concepts/Variable__.js.map +1 -1
  171. package/out/concepts/ViewComponent__.js +10 -10
  172. package/out/concepts/ViewComponent__.js.map +1 -1
  173. package/out/concepts/ViewElement__.d.ts +17 -11
  174. package/out/concepts/ViewElement__.js +299 -201
  175. package/out/concepts/ViewElement__.js.map +1 -1
  176. package/out/concepts/View__.d.ts +12 -13
  177. package/out/concepts/View__.js +106 -103
  178. package/out/concepts/View__.js.map +1 -1
  179. package/out/concepts/WhileStatement__.js +3 -3
  180. package/out/concepts/WhileStatement__.js.map +1 -1
  181. package/out/concepts/basics/stdlib/index.js +4 -1
  182. package/out/concepts/basics/stdlib/index.js.map +1 -1
  183. package/out/concepts/basics/stdlib/{nasl.validate.d.ts → nasl.auth.d.ts} +0 -0
  184. package/out/concepts/basics/stdlib/nasl.auth.js +30 -0
  185. package/out/concepts/basics/stdlib/nasl.auth.js.map +1 -0
  186. package/out/concepts/basics/stdlib/nasl.browser copy.d.ts +3 -0
  187. package/out/concepts/basics/stdlib/nasl.browser copy.js +70 -0
  188. package/out/concepts/basics/stdlib/nasl.browser copy.js.map +1 -0
  189. package/out/concepts/basics/stdlib/nasl.browser.d.ts +3 -0
  190. package/out/concepts/basics/stdlib/nasl.browser.js +41 -0
  191. package/out/concepts/basics/stdlib/nasl.browser.js.map +1 -0
  192. package/out/concepts/basics/stdlib/nasl.configuration.d.ts +3 -0
  193. package/out/concepts/basics/stdlib/nasl.configuration.js +25 -0
  194. package/out/concepts/basics/stdlib/nasl.configuration.js.map +1 -0
  195. package/out/concepts/basics/stdlib/nasl.ui.js +20 -0
  196. package/out/concepts/basics/stdlib/nasl.ui.js.map +1 -1
  197. package/out/concepts/basics/stdlib/nasl.util.js +149 -13
  198. package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
  199. package/out/concepts/basics/stdlib/nasl.validation.js +54 -20
  200. package/out/concepts/basics/stdlib/nasl.validation.js.map +1 -1
  201. package/out/concepts/basics/types/coreTypeList.js +11 -10
  202. package/out/concepts/basics/types/coreTypeList.js.map +1 -1
  203. package/out/concepts/index__.d.ts +1 -0
  204. package/out/concepts/index__.js +1 -0
  205. package/out/concepts/index__.js.map +1 -1
  206. package/out/config.d.ts +1 -2
  207. package/out/config.js +1 -2
  208. package/out/config.js.map +1 -1
  209. package/out/enums/KEYWORDS.d.ts +3 -0
  210. package/out/enums/KEYWORDS.js +1208 -0
  211. package/out/enums/KEYWORDS.js.map +1 -0
  212. package/out/enums/LEVEL_NAME_MAP.d.ts +26 -0
  213. package/out/enums/LEVEL_NAME_MAP.js +30 -0
  214. package/out/enums/LEVEL_NAME_MAP.js.map +1 -0
  215. package/out/eventBus.d.ts +3 -0
  216. package/out/eventBus.js +7 -0
  217. package/out/eventBus.js.map +1 -0
  218. package/out/generator/genBundleFiles.d.ts +7 -2
  219. package/out/generator/genBundleFiles.js +168 -27
  220. package/out/generator/genBundleFiles.js.map +1 -1
  221. package/out/generator/genMetaData.d.ts +20 -20
  222. package/out/generator/genMetaData.js +50 -15
  223. package/out/generator/genMetaData.js.map +1 -1
  224. package/out/index.d.ts +2 -0
  225. package/out/index.js +2 -0
  226. package/out/index.js.map +1 -1
  227. package/out/manager/diagnostic.d.ts +1 -1
  228. package/out/server/createUiTs.d.ts +1 -0
  229. package/out/server/createUiTs.js +49 -5
  230. package/out/server/createUiTs.js.map +1 -1
  231. package/out/server/entity2LogicNamespace.js +38 -23
  232. package/out/server/entity2LogicNamespace.js.map +1 -1
  233. package/out/server/getExtensionModules.js +2 -0
  234. package/out/server/getExtensionModules.js.map +1 -1
  235. package/out/server/getFunctions.d.ts +1 -0
  236. package/out/server/getFunctions.js +7 -1
  237. package/out/server/getFunctions.js.map +1 -1
  238. package/out/server/getLogics.js +63 -18
  239. package/out/server/getLogics.js.map +1 -1
  240. package/out/server/getMemberIdentifier.d.ts +16 -1
  241. package/out/server/getMemberIdentifier.js +279 -36
  242. package/out/server/getMemberIdentifier.js.map +1 -1
  243. package/out/server/getProcesses.d.ts +6 -1
  244. package/out/server/getProcesses.js +243 -1
  245. package/out/server/getProcesses.js.map +1 -1
  246. package/out/server/getScope.d.ts +11 -0
  247. package/out/server/getScope.js +45 -0
  248. package/out/server/getScope.js.map +1 -0
  249. package/out/server/index.js +4 -0
  250. package/out/server/index.js.map +1 -1
  251. package/out/server/naslServer.d.ts +30 -53
  252. package/out/server/naslServer.js +682 -363
  253. package/out/server/naslServer.js.map +1 -1
  254. package/out/server/process2LogicNamespace.d.ts +10 -0
  255. package/out/server/process2LogicNamespace.js +29 -1
  256. package/out/server/process2LogicNamespace.js.map +1 -1
  257. package/out/server/translator.d.ts +22 -3
  258. package/out/server/translator.js +367 -123
  259. package/out/server/translator.js.map +1 -1
  260. package/out/service/creator/add.configs.d.ts +1 -0
  261. package/out/service/creator/add.configs.js +68 -0
  262. package/out/service/creator/add.configs.js.map +1 -0
  263. package/out/service/creator/errHandles.d.ts +18 -0
  264. package/out/service/creator/errHandles.js +60 -0
  265. package/out/service/creator/errHandles.js.map +1 -0
  266. package/out/service/creator/index.d.ts +1 -0
  267. package/out/service/creator/index.js +72 -0
  268. package/out/service/creator/index.js.map +1 -0
  269. package/out/service/storage/api.d.ts +18 -0
  270. package/out/service/storage/api.js +17 -0
  271. package/out/service/storage/api.js.map +1 -0
  272. package/out/service/storage/init.js +200 -37
  273. package/out/service/storage/init.js.map +1 -1
  274. package/out/service/storage/service.d.ts +2 -0
  275. package/out/service/storage/service.js +10 -0
  276. package/out/service/storage/service.js.map +1 -0
  277. package/out/service/storage/storagePoint.d.ts +1 -14
  278. package/out/service/storage/storagePoint.js +16 -16
  279. package/out/service/storage/storagePoint.js.map +1 -1
  280. package/out/templator/genCreateBlock.js +6 -6
  281. package/out/templator/genCreateBlock.js.map +1 -1
  282. package/out/templator/genCurdEditMultipleKeyBlock.js +13 -17
  283. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  284. package/out/templator/genCurdMultipleKeyBlock.js +11 -11
  285. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  286. package/out/templator/genEditTableBlock.js +5 -5
  287. package/out/templator/genEditTableBlock.js.map +1 -1
  288. package/out/templator/genEnumSelectBlock.js +2 -2
  289. package/out/templator/genEnumSelectBlock.js.map +1 -1
  290. package/out/templator/genGetBlock.js +5 -3
  291. package/out/templator/genGetBlock.js.map +1 -1
  292. package/out/templator/genGridViewBlock.d.ts +3 -1
  293. package/out/templator/genGridViewBlock.js +61 -6
  294. package/out/templator/genGridViewBlock.js.map +1 -1
  295. package/out/templator/genQueryComponent.d.ts +2 -0
  296. package/out/templator/genQueryComponent.js +27 -14
  297. package/out/templator/genQueryComponent.js.map +1 -1
  298. package/out/templator/genTableBlock.d.ts +1 -1
  299. package/out/templator/genTableBlock.js +4 -5
  300. package/out/templator/genTableBlock.js.map +1 -1
  301. package/out/templator/genUpdateBlock.js +9 -10
  302. package/out/templator/genUpdateBlock.js.map +1 -1
  303. package/out/templator/utils.d.ts +13 -4
  304. package/out/templator/utils.js +8 -4
  305. package/out/templator/utils.js.map +1 -1
  306. package/out/test/fixtures/env.js +0 -1
  307. package/out/test/fixtures/env.js.map +1 -1
  308. package/out/test/units/page/Element.spec.js +3 -3
  309. package/out/test/units/page/Element.spec.js.map +1 -1
  310. package/out/test/units/temp/temp.spec.js +1 -1
  311. package/out/test/units/temp/temp.spec.js.map +1 -1
  312. package/out/utils/index.d.ts +6 -0
  313. package/out/utils/index.js +20 -1
  314. package/out/utils/index.js.map +1 -1
  315. package/package.json +2 -1
  316. package/src/automate/engine/index.js +118 -38
  317. package/src/automate/engine/utils.js +49 -19
  318. package/src/common/BaseNode.ts +229 -81
  319. package/src/concepts/App__.ts +77 -37
  320. package/src/concepts/Argument__.ts +23 -3
  321. package/src/concepts/Assignee__.ts +437 -0
  322. package/src/concepts/Assignment__.ts +4 -1
  323. package/src/concepts/BinaryExpression__.ts +9 -7
  324. package/src/concepts/BindAttribute__.ts +68 -8
  325. package/src/concepts/BindDirective__.ts +21 -2
  326. package/src/concepts/BindEvent__.ts +67 -35
  327. package/src/concepts/BooleanLiteral__.ts +8 -0
  328. package/src/concepts/CallFunction__.ts +42 -25
  329. package/src/concepts/CallInterface__.ts +236 -26
  330. package/src/concepts/CallLogic__.ts +114 -86
  331. package/src/concepts/CallQueryComponent__.ts +35 -20
  332. package/src/concepts/Comment__.ts +6 -2
  333. package/src/concepts/CompletionProperty__.ts +5 -1
  334. package/src/concepts/ConfigGroup__.ts +2 -2
  335. package/src/concepts/ConfigProperty__.ts +2 -2
  336. package/src/concepts/Configuration__.ts +2 -2
  337. package/src/concepts/Constant__.ts +12 -0
  338. package/src/concepts/Destination__.ts +92 -20
  339. package/src/concepts/End__.ts +8 -1
  340. package/src/concepts/EntityProperty__.ts +69 -5
  341. package/src/concepts/Entity__.ts +40 -23
  342. package/src/concepts/Enum__.ts +16 -11
  343. package/src/concepts/Event__.ts +2 -2
  344. package/src/concepts/ForEachStatement__.ts +14 -19
  345. package/src/concepts/Function__.ts +9 -9
  346. package/src/concepts/Identifier__.ts +82 -33
  347. package/src/concepts/IfStatement__.ts +4 -4
  348. package/src/concepts/InterfaceParam__.ts +51 -21
  349. package/src/concepts/Interface__.ts +166 -46
  350. package/src/concepts/JSBlock__.ts +4 -0
  351. package/src/concepts/LogicItem__.ts +16 -1
  352. package/src/concepts/Logic__.ts +183 -36
  353. package/src/concepts/MemberExpression__.ts +57 -13
  354. package/src/concepts/Module__.ts +176 -140
  355. package/src/concepts/Namespace__.ts +37 -25
  356. package/src/concepts/NullLiteral__.ts +8 -1
  357. package/src/concepts/NumericLiteral__.ts +17 -6
  358. package/src/concepts/Param__.ts +58 -30
  359. package/src/concepts/ProcessComponent__.ts +4 -4
  360. package/src/concepts/ProcessElement__.ts +138 -39
  361. package/src/concepts/ProcessOutcome__.ts +1 -1
  362. package/src/concepts/Process__.ts +81 -94
  363. package/src/concepts/QueryAggregateExpression__.ts +1 -1
  364. package/src/concepts/QueryFromExpression__.ts +2 -2
  365. package/src/concepts/QueryJoinExpression__.ts +4 -4
  366. package/src/concepts/QueryLimitExpression__.ts +3 -12
  367. package/src/concepts/QuerySelectExpression__.ts +2 -2
  368. package/src/concepts/Return__.ts +62 -23
  369. package/src/concepts/Role__.ts +11 -4
  370. package/src/concepts/SqlQueryComponent__.ts +2 -2
  371. package/src/concepts/StringLiteral__.ts +20 -31
  372. package/src/concepts/StructureProperty__.ts +50 -25
  373. package/src/concepts/Structure__.ts +75 -41
  374. package/src/concepts/SwitchCase__.ts +4 -4
  375. package/src/concepts/SwitchStatement__.ts +2 -2
  376. package/src/concepts/TypeAnnotation__.ts +71 -18
  377. package/src/concepts/UnaryExpression__.ts +10 -8
  378. package/src/concepts/Unparsed__.ts +1 -1
  379. package/src/concepts/ValidationRule__.ts +44 -14
  380. package/src/concepts/Variable__.ts +69 -19
  381. package/src/concepts/ViewComponent__.ts +10 -10
  382. package/src/concepts/ViewElement__.ts +297 -199
  383. package/src/concepts/View__.ts +114 -107
  384. package/src/concepts/WhileStatement__.ts +4 -4
  385. package/src/concepts/basics/stdlib/index.ts +4 -2
  386. package/src/concepts/basics/stdlib/nasl.auth.ts +26 -0
  387. package/src/concepts/basics/stdlib/nasl.browser.ts +37 -0
  388. package/src/concepts/basics/stdlib/nasl.configuration.ts +21 -0
  389. package/src/concepts/basics/stdlib/nasl.ui.ts +20 -1
  390. package/src/concepts/basics/stdlib/nasl.util.ts +151 -13
  391. package/src/concepts/basics/stdlib/nasl.validation.ts +45 -11
  392. package/src/concepts/basics/types/coreTypeList.ts +11 -10
  393. package/src/concepts/index__.ts +1 -0
  394. package/src/config.ts +1 -2
  395. package/src/enums/KEYWORDS.ts +1206 -0
  396. package/src/{terms → enums}/LEVEL_NAME_MAP.ts +0 -0
  397. package/src/eventBus.ts +5 -0
  398. package/src/generator/genBundleFiles.ts +192 -40
  399. package/src/generator/genMetaData.ts +72 -21
  400. package/src/index.ts +2 -0
  401. package/src/manager/diagnostic.ts +1 -1
  402. package/src/server/createUiTs.ts +50 -8
  403. package/src/server/entity2LogicNamespace.ts +41 -25
  404. package/src/server/getExtensionModules.ts +2 -0
  405. package/src/server/getFunctions.ts +6 -0
  406. package/src/server/getLogics.ts +66 -19
  407. package/src/server/getMemberIdentifier.ts +276 -39
  408. package/src/server/getProcesses.ts +248 -4
  409. package/src/server/getScope.ts +50 -0
  410. package/src/server/index.ts +12 -1
  411. package/src/server/naslServer.ts +689 -389
  412. package/src/server/process2LogicNamespace.ts +30 -2
  413. package/src/server/translator.ts +423 -128
  414. package/src/service/config/index.js +1 -1
  415. package/src/service/creator/errHandles.js +5 -2
  416. package/src/service/creator/index.js +0 -6
  417. package/src/service/storage/api.js +14 -0
  418. package/src/service/storage/init.ts +204 -47
  419. package/src/service/storage/service.ts +6 -0
  420. package/src/service/storage/storagePoint.ts +16 -16
  421. package/src/templator/genCreateBlock.ts +6 -6
  422. package/src/templator/genCurdEditMultipleKeyBlock.ts +29 -30
  423. package/src/templator/genCurdMultipleKeyBlock.ts +11 -11
  424. package/src/templator/genEditTableBlock.ts +5 -5
  425. package/src/templator/genEnumSelectBlock.ts +2 -2
  426. package/src/templator/genGetBlock.ts +6 -8
  427. package/src/templator/genGridViewBlock.ts +59 -9
  428. package/src/templator/genQueryComponent.ts +39 -28
  429. package/src/templator/genTableBlock.ts +5 -9
  430. package/src/templator/genUpdateBlock.ts +9 -11
  431. package/src/templator/utils.ts +9 -6
  432. package/src/test/fixtures/env.ts +0 -2
  433. package/src/test/units/page/Element.spec.ts +3 -3
  434. package/src/test/units/temp/temp.spec.ts +1 -1
  435. package/src/utils/index.ts +19 -0
  436. package/out/concepts/basics/stdlib/nasl.validate.js +0 -527
  437. package/out/concepts/basics/stdlib/nasl.validate.js.map +0 -1
  438. package/out/data/Module.d.ts +0 -34
  439. package/out/data/Module.js +0 -53
  440. package/out/data/Module.js.map +0 -1
  441. package/src/automate/engine/index.d.ts +0 -3
@@ -2,14 +2,13 @@
2
2
  // BaseNode,
3
3
  // Module
4
4
  // } from '../../concepts';
5
- const { BaseNode } = require('../../../out/concepts');
6
- const { getConceptMeta } = require('../../../out/decorators/index');
7
-
5
+ import { BaseNode, uiStructures, collectionStructures } from '../../concepts';
6
+ import { getConceptMeta } from '../../decorators/index';
8
7
  /*
9
8
  根据 namespace 字符串来获取 node
10
9
  link: http://nasl.lcap.group/docs/current/semantics/Basics/Namespaces/
11
10
  */
12
- exports.getNodeByNodeCallee = function getNodeByNodeCallee(AppInstance, namespace, callback) {
11
+ export function getNodeByNodeCallee(AppInstance, namespace, callback) {
13
12
  const nodePath = namespace.split('.');
14
13
  const kind = nodePath.shift();
15
14
  let tempPoint;
@@ -21,7 +20,7 @@ exports.getNodeByNodeCallee = function getNodeByNodeCallee(AppInstance, namespac
21
20
  tempPoint = AppInstance.dependencies;
22
21
  state = 2;
23
22
  }
24
- if (kind === 'interfaces') {
23
+ if (kind === 'apis') {
25
24
  tempPoint = AppInstance.interfaceDependencies;
26
25
  state = 2;
27
26
  }
@@ -63,9 +62,19 @@ exports.getNodeByNodeCallee = function getNodeByNodeCallee(AppInstance, namespac
63
62
  }
64
63
  }
65
64
  return tempPoint;
66
- };
65
+ }
67
66
 
68
- const TRACK_TYPE = (exports.TRACK_TYPE = {
67
+ /**
68
+ * 根据 namespace 字符串来获取 node,主要是nasl的ui 和 collection
69
+ */
70
+ export function getNaslNodeByNodeCallee(namespace, typeName) {
71
+ if (namespace === 'nasl.ui') {
72
+ return uiStructures.find((item) => item.name === typeName);
73
+ } else if (namespace === 'nasl.collection') {
74
+ return collectionStructures.find((item) => item.name === typeName);
75
+ }
76
+ }
77
+ export const TRACK_TYPE = {
69
78
  PLAIN: 'plain',
70
79
  PROPERTY: 'property',
71
80
  ARRAY: 'array',
@@ -73,8 +82,11 @@ const TRACK_TYPE = (exports.TRACK_TYPE = {
73
82
  CALLEE_TEMPLATE: 'callee_template',
74
83
  MODULE: 'module',
75
84
  ROLE_TEMPLATE: 'role_template',
85
+ PROPERTY_TEMPLATE: 'property_template',
76
86
  // INTERNAL: 'internal'
77
- });
87
+ };
88
+
89
+ const ENTITY_AS_NAME = 'entityAsName';
78
90
 
79
91
  const BACKTACKING_PROPERTY_NS = {
80
92
  TYPE_NAMESPACE: 'typeNamespace',
@@ -113,15 +125,16 @@ function isBACKTRACKING_IGNORE_NAMESPACE(ns) {
113
125
  return ns.startsWith('nasl') || ns.startsWith('elements');
114
126
  }
115
127
 
116
- const IGNORE_PROPERTY = (exports.IGNORE_PROPERTY = [
128
+ export const IGNORE_PROPERTY = [
117
129
  'uuid', // View 属性
118
130
  'origin', // Entity 属性
119
131
  'changedTime',
120
132
  'branchName',
121
133
  'appId',
122
134
  'isIndex',
123
- 'tableName',
124
- ]);
135
+ // 'tableName',
136
+ // 'columnName',
137
+ ];
125
138
 
126
139
  const ROLE_PROPERTY = 'bindRoles';
127
140
 
@@ -136,7 +149,7 @@ const ROLE_PROPERTY = 'bindRoles';
136
149
  // 'Role',
137
150
  // ];
138
151
 
139
- exports.tracking = function tracking(node, startNode, callback) {
152
+ export function tracking(node, startNode, callback) {
140
153
  const { propertyMap } = getConceptMeta(node.concept);
141
154
  // console.log(propertyMap)
142
155
  for (const p of propertyMap) {
@@ -238,7 +251,7 @@ exports.tracking = function tracking(node, startNode, callback) {
238
251
  relatedPropertyName,
239
252
  AppPropertyName: 'processes',
240
253
  });
241
- return;
254
+ break;
242
255
  }
243
256
 
244
257
  const entity = rootNode.entities.find((e) => e.name === nodeName);
@@ -252,7 +265,7 @@ exports.tracking = function tracking(node, startNode, callback) {
252
265
  relatedPropertyName,
253
266
  AppPropertyName: 'entities',
254
267
  });
255
- return;
268
+ break;
256
269
  }
257
270
  } else {
258
271
  const nsPath = `${ns}.${calleeN}`;
@@ -275,9 +288,26 @@ exports.tracking = function tracking(node, startNode, callback) {
275
288
  case BACKTACKING_PROPERTY.ENTITY_NAMESPACE:
276
289
  case BACKTACKING_PROPERTY.RELATION_NAMESPACE:
277
290
  break;
291
+ case ENTITY_AS_NAME:
292
+ // 现在还不存在 asName 先直接当 Entity 名称来用。
293
+ callback(TRACK_TYPE.PROPERTY_TEMPLATE, propertyName, property, {
294
+ getRelatedVar: () => {
295
+ const queryCom = node.getAncestor('CallQueryComponent');
296
+ if (queryCom) {
297
+ const entities = node.app.entities;
298
+ // entityAsName === entity.name
299
+ return entities.find((e) => e.name === property);
300
+ }
301
+ return null;
302
+ },
303
+ relatedProperty: 'name',
304
+ });
305
+
306
+ break;
307
+
278
308
  default:
279
- if (property !== undefined && property !== null) {
280
- if (objectRef) {
309
+ if (property !== undefined) {
310
+ if (objectRef && property !== null) {
281
311
  callback(TRACK_TYPE.PROPERTY, propertyName, property);
282
312
  } else {
283
313
  callback(TRACK_TYPE.PLAIN, propertyName, property);
@@ -287,7 +317,7 @@ exports.tracking = function tracking(node, startNode, callback) {
287
317
  }
288
318
  }
289
319
  }
290
- };
320
+ }
291
321
 
292
322
  function getAppPropertyName(node) {
293
323
  const { propertyMap } = getConceptMeta('App');
@@ -301,7 +331,7 @@ function getAppPropertyName(node) {
301
331
  return undefined;
302
332
  }
303
333
 
304
- exports.backtracking = function backtracking({ node, startNode, calleeNode, propertyName, relatedPropertyName }, callback) {
334
+ export function backtracking({ node, startNode, calleeNode, propertyName, relatedPropertyName }, callback) {
305
335
  const m = calleeNode.getAncestor('Module');
306
336
  if (m) {
307
337
  callback(TRACK_TYPE.PLAIN, propertyName, node[propertyName]);
@@ -332,4 +362,4 @@ exports.backtracking = function backtracking({ node, startNode, calleeNode, prop
332
362
  relatedPropertyName,
333
363
  AppPropertyName,
334
364
  });
335
- };
365
+ }
@@ -3,7 +3,7 @@ import { v4 as uuidv4 } from 'uuid';
3
3
 
4
4
  import { config } from '../config';
5
5
  import { SourceMap } from '../translator';
6
- import axios from '../service/storage';
6
+ import storageService from '../service/storage/service';
7
7
  import { getSourceFromMap } from '../service/storage/map';
8
8
  import { loadThen } from '../service/storage/storagePoint';
9
9
 
@@ -12,21 +12,7 @@ import * as utils from '../utils';
12
12
  import classMap from '../common/classMap';
13
13
  import { action, circular, excludedInJSON, property, getConceptConstructor, getConceptPropertyMap } from '../decorators';
14
14
  import { Diagnostic } from '../manager/diagnostic';
15
-
16
- /**
17
- * 分割数组
18
- * @param array 原数组
19
- * @param subGroupLength 长度
20
- * @returns
21
- */
22
- function group(array: Array<any>, subGroupLength: number) {
23
- let index = 0;
24
- const newArray = [];
25
- while (index < array.length) {
26
- newArray.push(array.slice(index, (index += subGroupLength)));
27
- }
28
- return newArray;
29
- }
15
+ import { ViewElement } from '..';
30
16
 
31
17
  /**
32
18
  * 顶点类
@@ -168,57 +154,54 @@ export class BaseNode extends EventEmitter {
168
154
  subConstructor(source?: Partial<BaseNode>) {
169
155
  const propertyMap = getConceptPropertyMap(this.constructor.name);
170
156
 
171
- const properties = Array.from(new Set([...Object.keys(this), ...Object.keys(source)])).filter((key) => {
172
- const property = propertyMap.get(key);
173
- return !!property;
174
- });
157
+ const properties = Array.from(new Set([...Object.keys(this), ...Object.keys(source)])).filter((key) => propertyMap.has(key));
175
158
  properties.forEach((key) => {
176
159
  const property = propertyMap.get(key);
177
- const sourceItem = (source as any)[key] || (this as any)[key];
160
+ const sourceItem = (source as any)[key] !== undefined ? (source as any)[key] : (this as any)[key];
178
161
  const { objectRef: propertyObjectRef } = property;
179
162
  let objectRefCtor;
180
163
  try {
181
164
  if (propertyObjectRef) {
182
165
  objectRefCtor = getConceptConstructor(propertyObjectRef);
183
166
  if (objectRefCtor && sourceItem instanceof objectRefCtor) {
184
- if (!sourceItem.parentNode || !sourceItem.parentKey) {
185
- sourceItem.parentNode = this;
186
- sourceItem.parentKey = key;
187
- }
167
+ sourceItem.parentNode = this;
168
+ sourceItem.parentKey = key;
188
169
  }
189
170
  }
190
- (this as any)[key] = objectRefCtor && !(sourceItem instanceof objectRefCtor) ? this.activeInside(sourceItem, objectRefCtor, this, key) : sourceItem;
171
+
172
+ (this as any)[key] = objectRefCtor && sourceItem && !(sourceItem instanceof objectRefCtor) ? this.activeInside(sourceItem, objectRefCtor, this, key) : sourceItem;
191
173
  } catch (e) {
192
174
  // Function has non-object prototype 'undefined' in instanceof check
193
175
  if (!e.message.includes('Function has non-object prototype'))
194
176
  throw e;
195
177
  }
196
178
  });
197
- if (config.storage.protocol === 'http' && loadThen[source.concept as 'App' | 'View']) {
198
- const { childNodes } = loadThen[source.concept as 'App' | 'View'] || {};
199
- const queryList = childNodes.map(({ field, concept }) => {
200
- const path = [this.nodePath, field].join('.');
201
- return {
202
- path,
203
- excludes: loadThen[concept as 'App' | 'View'].childNodes.map(({ field }) => field),
204
- };
205
- });
206
- axios
207
- .post('/api/storage/batchQuery', queryList, {
208
- headers: {
209
- appId: this.rootNode?.id || this.id,
210
- },
211
- })
212
- .then((res) =>
213
- res?.data?.result.forEach((sourceItem: any, index: number) => {
214
- const { field, concept } = childNodes[index];
215
- if (!sourceItem || (Array.isArray((this as any)[field]) && !Array.isArray(sourceItem))) {
216
- return;
217
- }
218
- const objectRefCtor = getConceptConstructor(concept);
219
- (this as any)[field] = objectRefCtor ? this.activeInside(sourceItem, objectRefCtor, this, field) : sourceItem;
220
- }));
221
- }
179
+ // if (config.storage.protocol === 'http' && loadThen[source.concept as 'App' | 'View']) {
180
+ // const { childNodes } = loadThen[source.concept as 'App' | 'View'] || {};
181
+ // const queryList = childNodes.map(({ field, concept }) => {
182
+ // const path = [this.nodePath, field].join('.');
183
+ // return {
184
+ // path,
185
+ // excludes: loadThen[concept as 'App' | 'View'].childNodes.map(({ field }) => field),
186
+ // };
187
+ // });
188
+ // storageService
189
+ // .batchQuery({
190
+ // body: queryList,
191
+ // headers: {
192
+ // appId: this.rootNode?.id || this.id,
193
+ // },
194
+ // })
195
+ // .then((data: any) =>
196
+ // data.forEach((sourceItem: any, index: number) => {
197
+ // const { field, concept } = childNodes[index];
198
+ // if (!sourceItem || (Array.isArray((this as any)[field]) && !Array.isArray(sourceItem))) {
199
+ // return;
200
+ // }
201
+ // const objectRefCtor = getConceptConstructor(concept);
202
+ // (this as any)[field] = objectRefCtor ? this.activeInside(sourceItem, objectRefCtor, this, field) : sourceItem;
203
+ // }));
204
+ // }
222
205
  }
223
206
 
224
207
  getIndexOfParent() {
@@ -240,35 +223,28 @@ export class BaseNode extends EventEmitter {
240
223
  * @returns
241
224
  */
242
225
  genActionListener($event: EventPayload) {
226
+ if (!$event.eventList) {
227
+ $event.eventList = [];
228
+ }
229
+ if (!$event.eventStop) {
230
+ $event.eventList.push($event);
231
+ // 页面逻辑需要冒泡到页面
232
+ if (['App', 'Process', 'View', 'Interface', 'Entity', 'Structure', 'Enum', 'ConfigProperty'].includes(this.concept) || (this.concept === 'Logic' && this.parentNode?.concept !== 'View')) {
233
+ $event.eventStop = true;
234
+ }
235
+ }
236
+ $event.originEvent = $event.originEvent || $event;
243
237
  this.onChange($event);
244
238
  if (this.concept === 'App') {
245
239
  this.emit('storage', $event);
246
240
  } else {
247
- if (!$event.eventList) {
248
- $event.eventList = [];
249
- }
250
- if (!$event.eventStop) {
251
- $event.eventList.push($event);
252
- // 页面逻辑需要冒泡到页面
253
- if ([
254
- 'Process',
255
- 'View',
256
- 'Interface',
257
- 'Entity',
258
- 'Structure',
259
- 'Enum',
260
- 'ConfigProperty',
261
- ].includes(this.concept) || this.concept === 'Logic' && this.parentNode?.concept !== 'View') {
262
- $event.eventStop = true;
263
- }
264
- }
265
241
  const event: EventPayload = {
266
242
  action: 'update',
267
243
  path: this.parentNode?.getNodePath(false),
268
244
  object: {},
269
245
  oldObject: {},
270
- originEvent: $event.originEvent || $event,
271
- eventList: $event.eventList || [],
246
+ originEvent: $event.originEvent,
247
+ eventList: $event.eventList,
272
248
  eventStop: $event.eventStop,
273
249
  };
274
250
  this.parentNode?.emit('update', event);
@@ -306,12 +282,44 @@ export class BaseNode extends EventEmitter {
306
282
  this.emit('create', {
307
283
  action: 'create',
308
284
  path: this.getNodePath(true),
309
- object: this,
285
+ object: this.toJSON(),
310
286
  ...parentParams,
311
287
  oldObject: null,
312
288
  });
313
289
  }
314
290
 
291
+ /**
292
+ * 如果有父节点,则删除节点,在添加时调用
293
+ */
294
+ ensureDelete() {
295
+ if (this.parentNode && this.parentKey) {
296
+ const path = this.getNodePath(false);
297
+ const parentParams = this._delete();
298
+ if (parentParams && parentParams.index !== -1) {
299
+ if (Array.isArray((this.parentNode as any)[this.parentKey])) {
300
+ this.emit('delete', {
301
+ action: 'delete',
302
+ path,
303
+ object: null,
304
+ ...parentParams,
305
+ });
306
+ } else {
307
+ const parentPath = this.parentNode.getNodePath(false);
308
+ this.parentNode.emit('update', {
309
+ action: 'update',
310
+ path: parentPath,
311
+ object: {
312
+ [this.parentKey]: null,
313
+ },
314
+ oldObject: {
315
+ [this.parentKey]: this.toJSON(),
316
+ },
317
+ });
318
+ }
319
+ }
320
+ }
321
+ }
322
+
315
323
  /**
316
324
  * 删除节点
317
325
  */
@@ -319,12 +327,26 @@ export class BaseNode extends EventEmitter {
319
327
  const path = this.getNodePath(false);
320
328
  const parentParams = this._delete();
321
329
  if (parentParams && parentParams.index !== -1) {
322
- this.emit('delete', {
323
- action: 'delete',
324
- path,
325
- object: null,
326
- ...parentParams,
327
- });
330
+ if (Array.isArray((this.parentNode as any)[this.parentKey])) {
331
+ this.emit('delete', {
332
+ action: 'delete',
333
+ path,
334
+ object: null,
335
+ ...parentParams,
336
+ });
337
+ } else {
338
+ const parentPath = this.parentNode.getNodePath(false);
339
+ this.parentNode.emit('update', {
340
+ action: 'update',
341
+ path: parentPath,
342
+ object: {
343
+ [this.parentKey]: null,
344
+ },
345
+ oldObject: {
346
+ [this.parentKey]: this.toJSON(),
347
+ },
348
+ });
349
+ }
328
350
  }
329
351
  }
330
352
 
@@ -336,8 +358,34 @@ export class BaseNode extends EventEmitter {
336
358
  const oldObject: any = {};
337
359
  for (const key in object) {
338
360
  if (Object.prototype.hasOwnProperty.call(object, key)) {
339
- oldObject[key] = (this as any)[key] ?? null;
340
- (this as any)[key] = object[key] ?? null;
361
+ const oldProperty = (this as any)[key] ?? null;
362
+ oldObject[key] = oldProperty;
363
+ if (Array.isArray(oldProperty)) {
364
+ oldObject[key] = oldProperty.map((item) => {
365
+ let propertyItem = item ?? null;
366
+ if (item instanceof BaseNode) {
367
+ propertyItem = item.toJSON();
368
+ }
369
+ return propertyItem;
370
+ });
371
+ } else if (oldProperty instanceof BaseNode) {
372
+ oldObject[key] = oldProperty.toJSON();
373
+ }
374
+ const property = object[key] ?? null;
375
+ (this as any)[key] = property;
376
+ const objectRefCtor = getConceptConstructor(property?.concept);
377
+ if (Array.isArray(property)) {
378
+ (this as any)[key] = property.map((item) => {
379
+ let propertyItem = item ?? null;
380
+ const propertyObjectRefCtor = getConceptConstructor(item?.concept);
381
+ if (propertyObjectRefCtor?.from) {
382
+ propertyItem = (propertyObjectRefCtor as any).from(item, this, key);
383
+ }
384
+ return propertyItem;
385
+ });
386
+ } else if (objectRefCtor?.from) {
387
+ (this as any)[key] = (objectRefCtor as any).from(property, this, key);
388
+ }
341
389
  }
342
390
  }
343
391
  this.emit('update', {
@@ -345,6 +393,7 @@ export class BaseNode extends EventEmitter {
345
393
  path,
346
394
  object,
347
395
  oldObject,
396
+ field,
348
397
  });
349
398
  }
350
399
 
@@ -454,6 +503,21 @@ export class BaseNode extends EventEmitter {
454
503
  completeList.push(actualSource || source);
455
504
  }
456
505
 
506
+ /**
507
+ * 获取当前的TsName
508
+ */
509
+ get tsName() {
510
+ if (this.name) {
511
+ let tsName = this.name;
512
+ // 匹配所有特殊字符都转为_
513
+ tsName = tsName.replace(/\W/g, '_');
514
+ if (/^\d/.test(tsName)) {
515
+ tsName = '$' + tsName;
516
+ }
517
+ return tsName;
518
+ }
519
+ return '';
520
+ }
457
521
  /**
458
522
  * 激活 JSON 内部实例
459
523
  * @param source
@@ -488,7 +552,7 @@ export class BaseNode extends EventEmitter {
488
552
  */
489
553
  genSources(instance: BaseNode, filerFn?: (source: Partial<BaseNode>) => {}) {
490
554
  if (!instance) {
491
- return;
555
+ return instance;
492
556
  }
493
557
  if (Array.isArray(instance)) {
494
558
  return instance.map((item) => (item && item._toJSON ? item._toJSON(filerFn) : item));
@@ -617,6 +681,10 @@ export class BaseNode extends EventEmitter {
617
681
  /* override */
618
682
  }
619
683
 
684
+ async findReadOnlyLogicUsage(): Promise<any> {
685
+ /* override */
686
+ }
687
+
620
688
  /**
621
689
  * 重命名
622
690
  */
@@ -640,6 +708,7 @@ export class BaseNode extends EventEmitter {
640
708
  async addParamsPrepare(): Promise<any> {
641
709
  /* override */
642
710
  }
711
+
643
712
  /**
644
713
  * 销毁
645
714
  * 从 Map 中删除点和子节点
@@ -661,6 +730,63 @@ export class BaseNode extends EventEmitter {
661
730
  /* override */
662
731
  }
663
732
 
733
+ /**
734
+ * 移动节点
735
+ * @param sourceNode
736
+ * @param position
737
+ */
738
+ moveNode(options: {
739
+ sourceNode: BaseNode,
740
+ position: 'append' | 'insertBefore' | 'insertAfter',
741
+ action?: string
742
+ }) {
743
+ const { sourceNode, position } = options;
744
+ if (this.concept === 'App') {
745
+ return;
746
+ }
747
+ let actionMsg = `移动${(this.constructor as any).nodeTitle}`;
748
+ if (this.name) {
749
+ actionMsg += `“${this.name}”`;
750
+ }
751
+ (sourceNode as any).app.emit('collect:start', {
752
+ actionMsg,
753
+ });
754
+ // 如果是兄弟节点之前的移动
755
+ if (position !== 'append' && this.concept !== sourceNode.concept) {
756
+ return;
757
+ }
758
+ // 先删
759
+ this.delete();
760
+ if (position === 'append') {
761
+ let { action } = options;
762
+ if (!action)
763
+ action = `add${this.concept}`;
764
+ const parentNode = sourceNode;
765
+ (parentNode as any)[action](this as any);
766
+ } else {
767
+ const parentNode = sourceNode?.parentNode;
768
+ const parentKey = sourceNode?.parentKey || '';
769
+ const list = (parentNode as any)[parentKey];
770
+ if (Array.isArray(list)) {
771
+ let index = list.indexOf(sourceNode);
772
+ if (position === 'insertAfter') {
773
+ index += 1;
774
+ }
775
+ Object.assign(this, {
776
+ parentNode,
777
+ parentKey,
778
+ });
779
+ list.splice(index, 0, this);
780
+ this.create({
781
+ index,
782
+ parentNode,
783
+ parentKey,
784
+ });
785
+ }
786
+ }
787
+ (sourceNode as any).app.emit('collect:end');
788
+ }
789
+
664
790
  /**
665
791
  * 获取添加时的默认选项
666
792
  * @returns
@@ -668,6 +794,28 @@ export class BaseNode extends EventEmitter {
668
794
  public static getDefaultOptions(): any {
669
795
  return {};
670
796
  }
797
+
798
+ public traverseChildren(cb: (ele: BaseNode) => void): void {
799
+ function traverse(node: BaseNode) {
800
+ cb(node);
801
+
802
+ const propertyMap = getConceptPropertyMap(node.concept);
803
+ if (!propertyMap)
804
+ return;
805
+
806
+ for (const property of propertyMap.keys()) {
807
+ const child = node[property as keyof BaseNode];
808
+ if (!child)
809
+ continue;
810
+ else if (Array.isArray(child))
811
+ child.forEach((node: BaseNode) => traverse(node));
812
+ else
813
+ traverse(child);
814
+ }
815
+ }
816
+
817
+ traverse(this);
818
+ }
671
819
  }
672
820
 
673
821
  export default BaseNode;