@lcap/nasl 1.0.0-alpha.9 → 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 +116 -39
  317. package/src/automate/engine/utils.js +49 -19
  318. package/src/common/BaseNode.ts +215 -71
  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 -23
  327. package/src/concepts/BooleanLiteral__.ts +8 -0
  328. package/src/concepts/CallFunction__.ts +38 -21
  329. package/src/concepts/CallInterface__.ts +236 -26
  330. package/src/concepts/CallLogic__.ts +114 -86
  331. package/src/concepts/CallQueryComponent__.ts +23 -15
  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 +101 -17
  339. package/src/concepts/End__.ts +8 -1
  340. package/src/concepts/EntityProperty__.ts +58 -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 +83 -32
  347. package/src/concepts/IfStatement__.ts +4 -4
  348. package/src/concepts/InterfaceParam__.ts +52 -16
  349. package/src/concepts/Interface__.ts +128 -14
  350. package/src/concepts/JSBlock__.ts +4 -0
  351. package/src/concepts/LogicItem__.ts +16 -1
  352. package/src/concepts/Logic__.ts +173 -35
  353. package/src/concepts/MemberExpression__.ts +58 -14
  354. package/src/concepts/Module__.ts +27 -16
  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 +56 -15
  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 -15
  369. package/src/concepts/Role__.ts +5 -4
  370. package/src/concepts/SqlQueryComponent__.ts +2 -2
  371. package/src/concepts/StringLiteral__.ts +20 -31
  372. package/src/concepts/StructureProperty__.ts +50 -18
  373. package/src/concepts/Structure__.ts +30 -8
  374. package/src/concepts/SwitchCase__.ts +4 -4
  375. package/src/concepts/SwitchStatement__.ts +2 -2
  376. package/src/concepts/TypeAnnotation__.ts +58 -15
  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 +63 -14
  381. package/src/concepts/ViewComponent__.ts +10 -10
  382. package/src/concepts/ViewElement__.ts +285 -162
  383. package/src/concepts/View__.ts +116 -70
  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 -11
  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 +182 -30
  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 +45 -7
  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 +233 -63
  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 +685 -387
  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 +198 -45
  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
- const getNodeByNodeCallee = (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 @@ const getNodeByNodeCallee = (exports.getNodeByNodeCallee = function getNodeByNod
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 @@ const getNodeByNodeCallee = (exports.getNodeByNodeCallee = function getNodeByNod
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
- const tracking = (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 @@ const tracking = (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 @@ const tracking = (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 @@ const tracking = (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 @@ const tracking = (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
- const backtracking = (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 @@ const backtracking = (exports.backtracking = function backtracking({ node, start
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
  * 顶点类
@@ -171,51 +157,51 @@ export class BaseNode extends EventEmitter {
171
157
  const properties = Array.from(new Set([...Object.keys(this), ...Object.keys(source)])).filter((key) => propertyMap.has(key));
172
158
  properties.forEach((key) => {
173
159
  const property = propertyMap.get(key);
174
- 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];
175
161
  const { objectRef: propertyObjectRef } = property;
176
162
  let objectRefCtor;
177
163
  try {
178
164
  if (propertyObjectRef) {
179
165
  objectRefCtor = getConceptConstructor(propertyObjectRef);
180
166
  if (objectRefCtor && sourceItem instanceof objectRefCtor) {
181
- if (!sourceItem.parentNode || !sourceItem.parentKey) {
182
- sourceItem.parentNode = this;
183
- sourceItem.parentKey = key;
184
- }
167
+ sourceItem.parentNode = this;
168
+ sourceItem.parentKey = key;
185
169
  }
186
170
  }
187
- (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;
188
173
  } catch (e) {
189
174
  // Function has non-object prototype 'undefined' in instanceof check
190
175
  if (!e.message.includes('Function has non-object prototype'))
191
176
  throw e;
192
177
  }
193
178
  });
194
- if (config.storage.protocol === 'http' && loadThen[source.concept as 'App' | 'View']) {
195
- const { childNodes } = loadThen[source.concept as 'App' | 'View'] || {};
196
- const queryList = childNodes.map(({ field, concept }) => {
197
- const path = [this.nodePath, field].join('.');
198
- return {
199
- path,
200
- excludes: loadThen[concept as 'App' | 'View'].childNodes.map(({ field }) => field),
201
- };
202
- });
203
- axios
204
- .post('/api/storage/batchQuery', queryList, {
205
- headers: {
206
- appId: this.rootNode?.id || this.id,
207
- },
208
- })
209
- .then((res) =>
210
- res?.data?.result.forEach((sourceItem: any, index: number) => {
211
- const { field, concept } = childNodes[index];
212
- if (!sourceItem || (Array.isArray((this as any)[field]) && !Array.isArray(sourceItem))) {
213
- return;
214
- }
215
- const objectRefCtor = getConceptConstructor(concept);
216
- (this as any)[field] = objectRefCtor ? this.activeInside(sourceItem, objectRefCtor, this, field) : sourceItem;
217
- }));
218
- }
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
+ // }
219
205
  }
220
206
 
221
207
  getIndexOfParent() {
@@ -237,27 +223,28 @@ export class BaseNode extends EventEmitter {
237
223
  * @returns
238
224
  */
239
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;
240
237
  this.onChange($event);
241
238
  if (this.concept === 'App') {
242
239
  this.emit('storage', $event);
243
240
  } else {
244
- if (!$event.eventList) {
245
- $event.eventList = [];
246
- }
247
- if (!$event.eventStop) {
248
- $event.eventList.push($event);
249
- // 页面逻辑需要冒泡到页面
250
- if (['Process', 'View', 'Interface', 'Entity', 'Structure', 'Enum', 'ConfigProperty'].includes(this.concept) || (this.concept === 'Logic' && this.parentNode?.concept !== 'View')) {
251
- $event.eventStop = true;
252
- }
253
- }
254
241
  const event: EventPayload = {
255
242
  action: 'update',
256
243
  path: this.parentNode?.getNodePath(false),
257
244
  object: {},
258
245
  oldObject: {},
259
- originEvent: $event.originEvent || $event,
260
- eventList: $event.eventList || [],
246
+ originEvent: $event.originEvent,
247
+ eventList: $event.eventList,
261
248
  eventStop: $event.eventStop,
262
249
  };
263
250
  this.parentNode?.emit('update', event);
@@ -295,12 +282,44 @@ export class BaseNode extends EventEmitter {
295
282
  this.emit('create', {
296
283
  action: 'create',
297
284
  path: this.getNodePath(true),
298
- object: this,
285
+ object: this.toJSON(),
299
286
  ...parentParams,
300
287
  oldObject: null,
301
288
  });
302
289
  }
303
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
+
304
323
  /**
305
324
  * 删除节点
306
325
  */
@@ -308,12 +327,26 @@ export class BaseNode extends EventEmitter {
308
327
  const path = this.getNodePath(false);
309
328
  const parentParams = this._delete();
310
329
  if (parentParams && parentParams.index !== -1) {
311
- this.emit('delete', {
312
- action: 'delete',
313
- path,
314
- object: null,
315
- ...parentParams,
316
- });
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
+ }
317
350
  }
318
351
  }
319
352
 
@@ -325,8 +358,34 @@ export class BaseNode extends EventEmitter {
325
358
  const oldObject: any = {};
326
359
  for (const key in object) {
327
360
  if (Object.prototype.hasOwnProperty.call(object, key)) {
328
- oldObject[key] = (this as any)[key] ?? null;
329
- (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
+ }
330
389
  }
331
390
  }
332
391
  this.emit('update', {
@@ -334,6 +393,7 @@ export class BaseNode extends EventEmitter {
334
393
  path,
335
394
  object,
336
395
  oldObject,
396
+ field,
337
397
  });
338
398
  }
339
399
 
@@ -449,11 +509,11 @@ export class BaseNode extends EventEmitter {
449
509
  get tsName() {
450
510
  if (this.name) {
451
511
  let tsName = this.name;
512
+ // 匹配所有特殊字符都转为_
513
+ tsName = tsName.replace(/\W/g, '_');
452
514
  if (/^\d/.test(tsName)) {
453
515
  tsName = '$' + tsName;
454
516
  }
455
- // 匹配所有特殊字符都转为_
456
- tsName = tsName.replace(/\W/g, '_');
457
517
  return tsName;
458
518
  }
459
519
  return '';
@@ -492,7 +552,7 @@ export class BaseNode extends EventEmitter {
492
552
  */
493
553
  genSources(instance: BaseNode, filerFn?: (source: Partial<BaseNode>) => {}) {
494
554
  if (!instance) {
495
- return;
555
+ return instance;
496
556
  }
497
557
  if (Array.isArray(instance)) {
498
558
  return instance.map((item) => (item && item._toJSON ? item._toJSON(filerFn) : item));
@@ -621,6 +681,10 @@ export class BaseNode extends EventEmitter {
621
681
  /* override */
622
682
  }
623
683
 
684
+ async findReadOnlyLogicUsage(): Promise<any> {
685
+ /* override */
686
+ }
687
+
624
688
  /**
625
689
  * 重命名
626
690
  */
@@ -644,6 +708,7 @@ export class BaseNode extends EventEmitter {
644
708
  async addParamsPrepare(): Promise<any> {
645
709
  /* override */
646
710
  }
711
+
647
712
  /**
648
713
  * 销毁
649
714
  * 从 Map 中删除点和子节点
@@ -665,6 +730,63 @@ export class BaseNode extends EventEmitter {
665
730
  /* override */
666
731
  }
667
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
+
668
790
  /**
669
791
  * 获取添加时的默认选项
670
792
  * @returns
@@ -672,6 +794,28 @@ export class BaseNode extends EventEmitter {
672
794
  public static getDefaultOptions(): any {
673
795
  return {};
674
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
+ }
675
819
  }
676
820
 
677
821
  export default BaseNode;