@lcap/nasl 3.5.0-alpha.1 → 3.5.0-beta.2

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 (571) hide show
  1. package/out/bak/translator.js +119 -39
  2. package/out/bak/translator.js.map +1 -1
  3. package/out/breakpoint/generator/BreakpointNode.d.ts +3 -0
  4. package/out/breakpoint/generator/BreakpointNode.js +9 -0
  5. package/out/breakpoint/generator/BreakpointNode.js.map +1 -1
  6. package/out/breakpoint/generator/CallbackNode.js +15 -0
  7. package/out/breakpoint/generator/CallbackNode.js.map +1 -1
  8. package/out/breakpoint/shared/constants.js +1 -0
  9. package/out/breakpoint/shared/constants.js.map +1 -1
  10. package/out/breakpoint/shared/utils.js +12 -6
  11. package/out/breakpoint/shared/utils.js.map +1 -1
  12. package/out/common/BaseNode.d.ts +1 -0
  13. package/out/common/BaseNode.js +23 -34
  14. package/out/common/BaseNode.js.map +1 -1
  15. package/out/concepts/App__.d.ts +51 -51
  16. package/out/concepts/App__.js +87 -92
  17. package/out/concepts/App__.js.map +1 -1
  18. package/out/concepts/BackendVariable__.js +10 -2
  19. package/out/concepts/BackendVariable__.js.map +1 -1
  20. package/out/concepts/BinaryExpression__.d.ts +2 -0
  21. package/out/concepts/BinaryExpression__.js +4 -0
  22. package/out/concepts/BinaryExpression__.js.map +1 -1
  23. package/out/concepts/BindAttribute__.js +16 -6
  24. package/out/concepts/BindAttribute__.js.map +1 -1
  25. package/out/concepts/BindDirective__.d.ts +1 -0
  26. package/out/concepts/BindDirective__.js +19 -4
  27. package/out/concepts/BindDirective__.js.map +1 -1
  28. package/out/concepts/BindEvent__.d.ts +3 -1
  29. package/out/concepts/BindEvent__.js +38 -13
  30. package/out/concepts/BindEvent__.js.map +1 -1
  31. package/out/concepts/BusinessComponent__.d.ts +637 -0
  32. package/out/concepts/BusinessComponent__.js +1892 -0
  33. package/out/concepts/BusinessComponent__.js.map +1 -0
  34. package/out/concepts/BusinessLogic__.d.ts +38 -0
  35. package/out/concepts/BusinessLogic__.js +358 -0
  36. package/out/concepts/BusinessLogic__.js.map +1 -0
  37. package/out/concepts/CallEvent__.d.ts +97 -0
  38. package/out/concepts/CallEvent__.js +263 -0
  39. package/out/concepts/CallEvent__.js.map +1 -0
  40. package/out/concepts/CallFunction__.d.ts +2 -0
  41. package/out/concepts/CallFunction__.js +14 -2
  42. package/out/concepts/CallFunction__.js.map +1 -1
  43. package/out/concepts/CallInterface__.d.ts +2 -0
  44. package/out/concepts/CallInterface__.js +5 -1
  45. package/out/concepts/CallInterface__.js.map +1 -1
  46. package/out/concepts/CallLogic__.d.ts +5 -2
  47. package/out/concepts/CallLogic__.js +43 -50
  48. package/out/concepts/CallLogic__.js.map +1 -1
  49. package/out/concepts/Constant__.js +7 -6
  50. package/out/concepts/Constant__.js.map +1 -1
  51. package/out/concepts/Destination__.js +2 -2
  52. package/out/concepts/Destination__.js.map +1 -1
  53. package/out/concepts/End__.js +2 -1
  54. package/out/concepts/End__.js.map +1 -1
  55. package/out/concepts/Event__.d.ts +10 -0
  56. package/out/concepts/Event__.js +49 -0
  57. package/out/concepts/Event__.js.map +1 -1
  58. package/out/concepts/FrontendType__.d.ts +308 -0
  59. package/out/concepts/FrontendType__.js +605 -0
  60. package/out/concepts/FrontendType__.js.map +1 -0
  61. package/out/concepts/Frontend__.d.ts +0 -88
  62. package/out/concepts/Frontend__.js +1 -143
  63. package/out/concepts/Frontend__.js.map +1 -1
  64. package/out/concepts/Identifier__.d.ts +5 -0
  65. package/out/concepts/Identifier__.js +19 -9
  66. package/out/concepts/Identifier__.js.map +1 -1
  67. package/out/concepts/LogicItem__.d.ts +1 -1
  68. package/out/concepts/LogicItem__.js.map +1 -1
  69. package/out/concepts/Logic__.d.ts +3 -1
  70. package/out/concepts/Logic__.js +16 -13
  71. package/out/concepts/Logic__.js.map +1 -1
  72. package/out/concepts/MemberExpression__.d.ts +1 -1
  73. package/out/concepts/MemberExpression__.js +3 -3
  74. package/out/concepts/MemberExpression__.js.map +1 -1
  75. package/out/concepts/NewComposite__.d.ts +2 -0
  76. package/out/concepts/NewComposite__.js +4 -0
  77. package/out/concepts/NewComposite__.js.map +1 -1
  78. package/out/concepts/NewList__.d.ts +2 -0
  79. package/out/concepts/NewList__.js +4 -0
  80. package/out/concepts/NewList__.js.map +1 -1
  81. package/out/concepts/NewMap__.d.ts +2 -0
  82. package/out/concepts/NewMap__.js +4 -0
  83. package/out/concepts/NewMap__.js.map +1 -1
  84. package/out/concepts/ParamWithGroup__.d.ts +39 -0
  85. package/out/concepts/ParamWithGroup__.js +85 -0
  86. package/out/concepts/ParamWithGroup__.js.map +1 -0
  87. package/out/concepts/Param__.js +11 -3
  88. package/out/concepts/Param__.js.map +1 -1
  89. package/out/concepts/Return__.js +17 -9
  90. package/out/concepts/Return__.js.map +1 -1
  91. package/out/concepts/TypeAnnotation__.js.map +1 -1
  92. package/out/concepts/Variable__.js +17 -8
  93. package/out/concepts/Variable__.js.map +1 -1
  94. package/out/concepts/ViewElement__.d.ts +17 -1
  95. package/out/concepts/ViewElement__.js +141 -15
  96. package/out/concepts/ViewElement__.js.map +1 -1
  97. package/out/concepts/View__.js +4 -4
  98. package/out/concepts/View__.js.map +1 -1
  99. package/out/concepts/index__.d.ts +5 -0
  100. package/out/concepts/index__.js +5 -0
  101. package/out/concepts/index__.js.map +1 -1
  102. package/out/concepts/utils/asserts.d.ts +258 -3
  103. package/out/concepts/utils/asserts.js +351 -13
  104. package/out/concepts/utils/asserts.js.map +1 -1
  105. package/out/concepts/utils/quick-info.d.ts +13 -0
  106. package/out/concepts/utils/quick-info.js +51 -0
  107. package/out/concepts/utils/quick-info.js.map +1 -0
  108. package/out/concepts/utils/types.d.ts +20 -3
  109. package/out/generator/genBundleFiles.js +25 -11
  110. package/out/generator/genBundleFiles.js.map +1 -1
  111. package/out/generator/genReleaseBody.js +12 -3
  112. package/out/generator/genReleaseBody.js.map +1 -1
  113. package/out/generator/permission.js +3 -3
  114. package/out/generator/permission.js.map +1 -1
  115. package/out/server/extendBaseNode.js +6 -4
  116. package/out/server/extendBaseNode.js.map +1 -1
  117. package/out/server/getLogics.js +62 -27
  118. package/out/server/getLogics.js.map +1 -1
  119. package/out/server/getMemberIdentifier.js +6 -1
  120. package/out/server/getMemberIdentifier.js.map +1 -1
  121. package/out/server/naslServer.js +26 -59
  122. package/out/server/naslServer.js.map +1 -1
  123. package/out/server/translator.js +6 -1
  124. package/out/server/translator.js.map +1 -1
  125. package/out/service/storage/init.js +1 -2
  126. package/out/service/storage/init.js.map +1 -1
  127. package/out/templator/genCreateBlock.js +6 -6
  128. package/out/templator/genCreateBlock.js.map +1 -1
  129. package/out/templator/genCurdEditMultipleKeyBlock.js +16 -16
  130. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  131. package/out/templator/genCurdMultipleKeyBlock.js +36 -36
  132. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  133. package/out/templator/genGetBlock.js +4 -4
  134. package/out/templator/genGetBlock.js.map +1 -1
  135. package/out/templator/genGridViewBlock.js +12 -12
  136. package/out/templator/genGridViewBlock.js.map +1 -1
  137. package/out/templator/genListViewBlock.js +4 -4
  138. package/out/templator/genListViewBlock.js.map +1 -1
  139. package/out/templator/genSelectBlock.js +3 -3
  140. package/out/templator/genSelectBlock.js.map +1 -1
  141. package/out/templator/genTableBlock.js +10 -10
  142. package/out/templator/genTableBlock.js.map +1 -1
  143. package/out/templator/genUpdateBlock.js +8 -8
  144. package/out/templator/genUpdateBlock.js.map +1 -1
  145. package/out/templator/utils.d.ts +2 -2
  146. package/out/templator/utils.js.map +1 -1
  147. package/out/translator/utils.d.ts +2 -2
  148. package/out/translator/utils.js +0 -18
  149. package/out/translator/utils.js.map +1 -1
  150. package/out/utils/i18nInfo.js +7 -2
  151. package/out/utils/i18nInfo.js.map +1 -1
  152. package/package.json +1 -1
  153. package/src/bak/translator.js +121 -43
  154. package/src/breakpoint/generator/BreakpointNode.ts +12 -0
  155. package/src/breakpoint/generator/CallbackNode.ts +17 -0
  156. package/src/breakpoint/shared/constants.ts +1 -0
  157. package/src/breakpoint/shared/utils.ts +13 -8
  158. package/src/common/BaseNode.ts +22 -34
  159. package/src/concepts/App__.ts +140 -146
  160. package/src/concepts/BackendVariable__.ts +10 -2
  161. package/src/concepts/BinaryExpression__.ts +5 -1
  162. package/src/concepts/BindAttribute__.ts +15 -6
  163. package/src/concepts/BindDirective__.ts +19 -4
  164. package/src/concepts/BindEvent__.ts +40 -12
  165. package/src/concepts/BusinessComponent__.ts +2659 -0
  166. package/src/concepts/BusinessLogic__.ts +376 -0
  167. package/src/concepts/CallEvent__.ts +334 -0
  168. package/src/concepts/CallFunction__.ts +15 -2
  169. package/src/concepts/CallInterface__.ts +6 -1
  170. package/src/concepts/CallLogic__.ts +50 -58
  171. package/src/concepts/Constant__.ts +5 -7
  172. package/src/concepts/Destination__.ts +2 -2
  173. package/src/concepts/End__.ts +1 -0
  174. package/src/concepts/Event__.ts +57 -0
  175. package/src/concepts/FrontendType__.ts +919 -0
  176. package/src/concepts/Frontend__.ts +3 -251
  177. package/src/concepts/Identifier__.ts +29 -13
  178. package/src/concepts/LogicItem__.ts +1 -0
  179. package/src/concepts/Logic__.ts +21 -14
  180. package/src/concepts/MemberExpression__.ts +3 -3
  181. package/src/concepts/NewComposite__.ts +5 -5
  182. package/src/concepts/NewList__.ts +6 -2
  183. package/src/concepts/NewMap__.ts +6 -3
  184. package/src/concepts/ParamWithGroup__.ts +101 -0
  185. package/src/concepts/Param__.ts +11 -3
  186. package/src/concepts/Return__.ts +15 -12
  187. package/src/concepts/TypeAnnotation__.ts +1 -1
  188. package/src/concepts/Variable__.ts +17 -9
  189. package/src/concepts/ViewElement__.ts +164 -31
  190. package/src/concepts/View__.ts +6 -4
  191. package/src/concepts/index__.ts +5 -0
  192. package/src/concepts/utils/asserts.ts +367 -4
  193. package/src/concepts/utils/quick-info.ts +64 -0
  194. package/src/concepts/utils/types.ts +28 -0
  195. package/src/generator/genBundleFiles.ts +33 -15
  196. package/src/generator/genReleaseBody.ts +14 -3
  197. package/src/generator/permission.ts +8 -6
  198. package/src/server/extendBaseNode.ts +22 -20
  199. package/src/server/getLogics.ts +79 -41
  200. package/src/server/getMemberIdentifier.ts +7 -1
  201. package/src/server/naslServer.ts +28 -57
  202. package/src/server/translator.ts +7 -1
  203. package/src/service/storage/init.ts +1 -2
  204. package/src/templator/genCreateBlock.ts +6 -6
  205. package/src/templator/genCurdEditMultipleKeyBlock.ts +16 -16
  206. package/src/templator/genCurdMultipleKeyBlock.ts +36 -36
  207. package/src/templator/genGetBlock.ts +4 -4
  208. package/src/templator/genGridViewBlock.ts +12 -12
  209. package/src/templator/genListViewBlock.ts +4 -4
  210. package/src/templator/genSelectBlock.ts +3 -3
  211. package/src/templator/genTableBlock.ts +10 -10
  212. package/src/templator/genUpdateBlock.ts +8 -8
  213. package/src/templator/utils.ts +2 -2
  214. package/src/translator/utils.ts +2 -22
  215. package/src/utils/i18nInfo.ts +7 -2
  216. package/test/concepts/binary-expression/__snapshots__/getQuickInfoOffset.spec.ts.snap +25 -0
  217. package/test/concepts/binary-expression/getQuickInfoOffset.spec.ts +19 -0
  218. package/test/concepts/call-function/__snapshots__/getQuickInfoOffset.spec.ts.snap +41 -0
  219. package/test/concepts/call-function/fixtures/from-string.json +68 -59
  220. package/test/concepts/call-function/fixtures/to-string-global-tz.json +67 -58
  221. package/test/concepts/call-function/fixtures/to-string-no-tz.json +57 -48
  222. package/test/concepts/call-function/fixtures/to-string-user-tz.json +69 -60
  223. package/test/concepts/call-function/fixtures/to-string-utc-tz.json +69 -60
  224. package/test/concepts/call-function/getQuickInfoOffset.spec.ts +19 -0
  225. package/test/concepts/call-interface/__snapshots__/getQuickInfoOffset.spec.ts.snap +86 -0
  226. package/test/concepts/call-interface/__snapshots__/toEmbeddedTS.spec.ts.snap +3 -3
  227. package/test/concepts/call-interface/fixtures/only-interface.json +81 -72
  228. package/test/concepts/call-interface/fixtures/with-body-complex-argument.json +223 -214
  229. package/test/concepts/call-interface/fixtures/with-body-no-argument.json +85 -76
  230. package/test/concepts/call-interface/fixtures/with-body-simple-argument.json +100 -91
  231. package/test/concepts/call-interface/fixtures/with-headers-no-argument.json +88 -79
  232. package/test/concepts/call-interface/fixtures/with-headers.json +90 -81
  233. package/test/concepts/call-interface/fixtures/with-query-no-argument.json +88 -79
  234. package/test/concepts/call-interface/fixtures/with-query.json +90 -81
  235. package/test/concepts/call-interface/getQuickInfoOffset.spec.ts +19 -0
  236. package/test/concepts/call-logic/__snapshots__/getQuickInfoOffset.spec.ts.snap +4 -2
  237. package/test/concepts/call-logic/fixtures/entries-get-with-arguments.json +104 -95
  238. package/test/concepts/call-logic/fixtures/entries-update-with-arguments.json +209 -200
  239. package/test/concepts/call-logic/fixtures/global-logic-argument-no-expression.json +97 -88
  240. package/test/concepts/call-logic/fixtures/global-logic-argument-some-expression.json +124 -115
  241. package/test/concepts/call-logic/fixtures/json-deserialize.json +120 -111
  242. package/test/concepts/call-logic/fixtures/json-serialize-with-string.json +124 -115
  243. package/test/concepts/call-logic/fixtures/json-serialize.json +124 -115
  244. package/test/concepts/call-logic/fixtures/view-buildin-logic-with-argument.json +91 -82
  245. package/test/concepts/call-logic/fixtures/view-component-logic-no-argument.json +88 -79
  246. package/test/concepts/call-logic/fixtures/view-component-with-validation.json +144 -135
  247. package/test/concepts/call-logic/getQuickInfoOffset.spec.ts +2 -7
  248. package/test/concepts/identifier/fixtures/view-variable.json +145 -136
  249. package/test/concepts/new-composite/__snapshots__/getQuickInfoOffset.spec.ts.snap +104 -0
  250. package/test/concepts/new-composite/__snapshots__/toEmbeddedTS.spec.ts.snap +97 -0
  251. package/test/concepts/new-composite/__snapshots__/toJS.spec.ts.snap +43 -0
  252. package/test/concepts/new-composite/constant.ts +5 -0
  253. package/test/concepts/new-composite/fixtures/nested-transform.json +241 -0
  254. package/test/concepts/new-composite/fixtures/nested.json +146 -0
  255. package/test/concepts/new-composite/fixtures/normal.json +63 -0
  256. package/test/concepts/new-composite/getQuickInfoOffset.spec.ts +19 -0
  257. package/test/concepts/new-composite/toEmbeddedTS.spec.ts +15 -0
  258. package/test/concepts/new-composite/toJS.spec.ts +14 -0
  259. package/test/concepts/new-list/__snapshots__/getQuickInfoOffset.spec.ts.snap +165 -0
  260. package/test/concepts/new-list/__snapshots__/toEmbeddedTS.spec.ts.snap +207 -0
  261. package/test/concepts/new-list/__snapshots__/toJS.spec.ts.snap +63 -0
  262. package/test/concepts/new-list/constant.ts +5 -0
  263. package/test/concepts/new-list/fixtures/nested-map.json +117 -0
  264. package/test/concepts/new-list/fixtures/nested-tranform.json +140 -0
  265. package/test/concepts/new-list/fixtures/nested.json +107 -0
  266. package/test/concepts/new-list/fixtures/normal.json +95 -0
  267. package/test/concepts/new-list/getQuickInfoOffset.spec.ts +19 -0
  268. package/test/concepts/new-list/toEmbeddedTS.spec.ts +15 -0
  269. package/test/concepts/new-list/toJS.spec.ts +14 -0
  270. package/test/concepts/new-map/__snapshots__/getQuickInfoOffset.spec.ts.snap +115 -0
  271. package/test/concepts/new-map/__snapshots__/toEmbeddedTS.spec.ts.snap +192 -0
  272. package/test/concepts/new-map/__snapshots__/toJS.spec.ts.snap +54 -0
  273. package/test/concepts/new-map/constant.ts +5 -0
  274. package/test/concepts/new-map/fixtures/nested-transform.json +169 -0
  275. package/test/concepts/new-map/fixtures/nested.json +141 -0
  276. package/test/concepts/new-map/fixtures/normal.json +101 -0
  277. package/test/concepts/new-map/getQuickInfoOffset.spec.ts +19 -0
  278. package/test/concepts/new-map/toEmbeddedTS.spec.ts +15 -0
  279. package/test/concepts/new-map/toJS.spec.ts +14 -0
  280. package/test/concepts/utils.ts +17 -0
  281. package/test/concepts/view-element/__snapshots__/toVue.spec.ts.snap +1 -1
  282. package/test/concepts/view-element/fixtures/default-login.json +221 -212
  283. package/test/concepts/view-element/fixtures/default-not-found.json +183 -174
  284. package/test/concepts/view-element/fixtures/with-role-auth.json +91 -82
  285. package/test/concepts/view-element/fixtures/with-table.json +1894 -1885
  286. package/test/concepts/view-element/toVue.spec.ts +1 -0
  287. package/.nyc_output/b920244d-8d01-4e76-be5a-95132217c5a1.json +0 -1
  288. package/.nyc_output/processinfo/b920244d-8d01-4e76-be5a-95132217c5a1.json +0 -1
  289. package/.nyc_output/processinfo/index.json +0 -1
  290. package/coverage/base.css +0 -224
  291. package/coverage/block-navigation.js +0 -87
  292. package/coverage/favicon.png +0 -0
  293. package/coverage/index.html +0 -461
  294. package/coverage/prettify.css +0 -1
  295. package/coverage/prettify.js +0 -2
  296. package/coverage/sort-arrow-sprite.png +0 -0
  297. package/coverage/sorter.js +0 -196
  298. package/coverage/src/automate/engine/index.html +0 -116
  299. package/coverage/src/automate/engine/utils.js.html +0 -1414
  300. package/coverage/src/bak/index.html +0 -116
  301. package/coverage/src/bak/translator.js.html +0 -631
  302. package/coverage/src/breakpoint/generator/AfterStartNode.ts.html +0 -175
  303. package/coverage/src/breakpoint/generator/BeforeEndNode.ts.html +0 -169
  304. package/coverage/src/breakpoint/generator/BreakpointNode.ts.html +0 -1246
  305. package/coverage/src/breakpoint/generator/CallbackNode.ts.html +0 -145
  306. package/coverage/src/breakpoint/generator/index.html +0 -176
  307. package/coverage/src/breakpoint/generator/index.ts.html +0 -508
  308. package/coverage/src/breakpoint/index.html +0 -116
  309. package/coverage/src/breakpoint/index.ts.html +0 -94
  310. package/coverage/src/breakpoint/shared/constants.ts.html +0 -436
  311. package/coverage/src/breakpoint/shared/index.html +0 -176
  312. package/coverage/src/breakpoint/shared/index.ts.html +0 -94
  313. package/coverage/src/breakpoint/shared/operations.ts.html +0 -160
  314. package/coverage/src/breakpoint/shared/socket.ts.html +0 -1297
  315. package/coverage/src/breakpoint/shared/utils.ts.html +0 -1087
  316. package/coverage/src/breakpoint/store/core.ts.html +0 -1600
  317. package/coverage/src/breakpoint/store/dock.ts.html +0 -733
  318. package/coverage/src/breakpoint/store/index.html +0 -146
  319. package/coverage/src/breakpoint/store/index.ts.html +0 -91
  320. package/coverage/src/common/BaseNode.ts.html +0 -4081
  321. package/coverage/src/common/Command.ts.html +0 -310
  322. package/coverage/src/common/EventEmitter.ts.html +0 -373
  323. package/coverage/src/common/Messager.ts.html +0 -820
  324. package/coverage/src/common/asyncFuncMap.ts.html +0 -127
  325. package/coverage/src/common/index.html +0 -191
  326. package/coverage/src/common/index.ts.html +0 -94
  327. package/coverage/src/concepts/Abort__.ts.html +0 -331
  328. package/coverage/src/concepts/Anchor__.ts.html +0 -667
  329. package/coverage/src/concepts/AnonymousFunction__.ts.html +0 -2092
  330. package/coverage/src/concepts/App__.ts.html +0 -13651
  331. package/coverage/src/concepts/Argument__.ts.html +0 -907
  332. package/coverage/src/concepts/Assignee__.ts.html +0 -2317
  333. package/coverage/src/concepts/AssignmentLine__.ts.html +0 -430
  334. package/coverage/src/concepts/Assignment__.ts.html +0 -1174
  335. package/coverage/src/concepts/Attribute__.ts.html +0 -919
  336. package/coverage/src/concepts/AuthInterface__.ts.html +0 -370
  337. package/coverage/src/concepts/AuthLogicForCallInterface__.ts.html +0 -2011
  338. package/coverage/src/concepts/AuthLogic__.ts.html +0 -793
  339. package/coverage/src/concepts/BackendVariable__.ts.html +0 -1690
  340. package/coverage/src/concepts/Backend__.ts.html +0 -1192
  341. package/coverage/src/concepts/BatchAssignment__.ts.html +0 -3376
  342. package/coverage/src/concepts/BinaryExpression__.ts.html +0 -1468
  343. package/coverage/src/concepts/BindAttribute__.ts.html +0 -3931
  344. package/coverage/src/concepts/BindDirective__.ts.html +0 -2002
  345. package/coverage/src/concepts/BindEvent__.ts.html +0 -3487
  346. package/coverage/src/concepts/BindStyle__.ts.html +0 -1645
  347. package/coverage/src/concepts/BooleanLiteral__.ts.html +0 -421
  348. package/coverage/src/concepts/CallAuthInterface__.ts.html +0 -1642
  349. package/coverage/src/concepts/CallConnector__.ts.html +0 -925
  350. package/coverage/src/concepts/CallFunction__.ts.html +0 -2164
  351. package/coverage/src/concepts/CallInterface__.ts.html +0 -2776
  352. package/coverage/src/concepts/CallLogic__.ts.html +0 -4693
  353. package/coverage/src/concepts/CallQueryComponent__.ts.html +0 -5419
  354. package/coverage/src/concepts/Comment__.ts.html +0 -397
  355. package/coverage/src/concepts/CompletionProperty__.ts.html +0 -946
  356. package/coverage/src/concepts/ConfigGroup__.ts.html +0 -1132
  357. package/coverage/src/concepts/ConfigPropertyValue__.ts.html +0 -427
  358. package/coverage/src/concepts/ConfigProperty__.ts.html +0 -1375
  359. package/coverage/src/concepts/Configuration__.ts.html +0 -1054
  360. package/coverage/src/concepts/Connection__.ts.html +0 -1387
  361. package/coverage/src/concepts/ConnectorTrigger__.ts.html +0 -598
  362. package/coverage/src/concepts/Connector__.ts.html +0 -4390
  363. package/coverage/src/concepts/Constant__.ts.html +0 -1123
  364. package/coverage/src/concepts/DataSource__.ts.html +0 -1798
  365. package/coverage/src/concepts/DatabaseTypeAnnotation__.ts.html +0 -334
  366. package/coverage/src/concepts/DefaultValue__.ts.html +0 -946
  367. package/coverage/src/concepts/Destination__.ts.html +0 -2761
  368. package/coverage/src/concepts/End__.ts.html +0 -436
  369. package/coverage/src/concepts/EntityIndex__.ts.html +0 -799
  370. package/coverage/src/concepts/EntityProperty__.ts.html +0 -2866
  371. package/coverage/src/concepts/Entity__.ts.html +0 -3070
  372. package/coverage/src/concepts/EnumItem__.ts.html +0 -553
  373. package/coverage/src/concepts/Enum__.ts.html +0 -1258
  374. package/coverage/src/concepts/Event__.ts.html +0 -1111
  375. package/coverage/src/concepts/ExternalDestination__.ts.html +0 -1060
  376. package/coverage/src/concepts/ForEachStatement__.ts.html +0 -2023
  377. package/coverage/src/concepts/FrontendLibrary__.ts.html +0 -1762
  378. package/coverage/src/concepts/FrontendVariable__.ts.html +0 -292
  379. package/coverage/src/concepts/Frontend__.ts.html +0 -4078
  380. package/coverage/src/concepts/Function__.ts.html +0 -3718
  381. package/coverage/src/concepts/Identifier__.ts.html +0 -1060
  382. package/coverage/src/concepts/IfStatement__.ts.html +0 -1636
  383. package/coverage/src/concepts/Integration__.ts.html +0 -1273
  384. package/coverage/src/concepts/InterfaceParam__.ts.html +0 -1258
  385. package/coverage/src/concepts/Interface__.ts.html +0 -3463
  386. package/coverage/src/concepts/JSBlock__.ts.html +0 -424
  387. package/coverage/src/concepts/JavaLogic__.ts.html +0 -463
  388. package/coverage/src/concepts/LogicItem__.ts.html +0 -1174
  389. package/coverage/src/concepts/Logic__.ts.html +0 -7732
  390. package/coverage/src/concepts/MatchCase__.ts.html +0 -2974
  391. package/coverage/src/concepts/Match__.ts.html +0 -2494
  392. package/coverage/src/concepts/MemberExpression__.ts.html +0 -1744
  393. package/coverage/src/concepts/MicroApp__.ts.html +0 -439
  394. package/coverage/src/concepts/Module__.ts.html +0 -9385
  395. package/coverage/src/concepts/MsgTriggerEvent__.ts.html +0 -1072
  396. package/coverage/src/concepts/MsgTriggerLauncher__.ts.html +0 -1045
  397. package/coverage/src/concepts/Namespace__.ts.html +0 -8221
  398. package/coverage/src/concepts/NewComposite__.ts.html +0 -4765
  399. package/coverage/src/concepts/NewList__.ts.html +0 -1702
  400. package/coverage/src/concepts/NewMap__.ts.html +0 -2470
  401. package/coverage/src/concepts/New__.ts.html +0 -289
  402. package/coverage/src/concepts/NullLiteral__.ts.html +0 -352
  403. package/coverage/src/concepts/NumericLiteral__.ts.html +0 -697
  404. package/coverage/src/concepts/OqlQueryComponent__.ts.html +0 -1237
  405. package/coverage/src/concepts/OverriddenLogic__.ts.html +0 -6970
  406. package/coverage/src/concepts/Param__.ts.html +0 -1798
  407. package/coverage/src/concepts/Point__.ts.html +0 -334
  408. package/coverage/src/concepts/ProcessComponent__.ts.html +0 -1717
  409. package/coverage/src/concepts/ProcessElement__.ts.html +0 -6187
  410. package/coverage/src/concepts/ProcessOutcome__.ts.html +0 -355
  411. package/coverage/src/concepts/ProcessOutcomes__.ts.html +0 -355
  412. package/coverage/src/concepts/Process__.ts.html +0 -5071
  413. package/coverage/src/concepts/QueryAggregateExpression__.ts.html +0 -589
  414. package/coverage/src/concepts/QueryFieldExpression__.ts.html +0 -586
  415. package/coverage/src/concepts/QueryFromExpression__.ts.html +0 -937
  416. package/coverage/src/concepts/QueryGroupByExpression__.ts.html +0 -580
  417. package/coverage/src/concepts/QueryJoinExpression__.ts.html +0 -1606
  418. package/coverage/src/concepts/QueryLimitExpression__.ts.html +0 -664
  419. package/coverage/src/concepts/QueryOrderByExpression__.ts.html +0 -706
  420. package/coverage/src/concepts/QuerySelectExpression__.ts.html +0 -1741
  421. package/coverage/src/concepts/Rect__.ts.html +0 -376
  422. package/coverage/src/concepts/Return__.ts.html +0 -1471
  423. package/coverage/src/concepts/Role__.ts.html +0 -604
  424. package/coverage/src/concepts/SelectMembers__.ts.html +0 -1279
  425. package/coverage/src/concepts/Slot__.ts.html +0 -649
  426. package/coverage/src/concepts/SqlQueryComponent__.ts.html +0 -1003
  427. package/coverage/src/concepts/Start__.ts.html +0 -307
  428. package/coverage/src/concepts/StringInterpolation__.ts.html +0 -1156
  429. package/coverage/src/concepts/StringLiteral__.ts.html +0 -508
  430. package/coverage/src/concepts/StructureProperty__.ts.html +0 -1300
  431. package/coverage/src/concepts/Structure__.ts.html +0 -2182
  432. package/coverage/src/concepts/SwitchCase__.ts.html +0 -1204
  433. package/coverage/src/concepts/SwitchStatement__.ts.html +0 -904
  434. package/coverage/src/concepts/Theme__.ts.html +0 -361
  435. package/coverage/src/concepts/Transactional__.ts.html +0 -631
  436. package/coverage/src/concepts/TriggerEvent__.ts.html +0 -1039
  437. package/coverage/src/concepts/TriggerLauncher__.ts.html +0 -778
  438. package/coverage/src/concepts/TypeAnnotation__.ts.html +0 -3832
  439. package/coverage/src/concepts/TypeParam__.ts.html +0 -322
  440. package/coverage/src/concepts/UnaryExpression__.ts.html +0 -730
  441. package/coverage/src/concepts/Unparsed__.ts.html +0 -397
  442. package/coverage/src/concepts/UseComponent__.ts.html +0 -334
  443. package/coverage/src/concepts/ValidationRule__.ts.html +0 -1876
  444. package/coverage/src/concepts/Variable__.ts.html +0 -1705
  445. package/coverage/src/concepts/ViewBlock__.ts.html +0 -355
  446. package/coverage/src/concepts/ViewComponent__.ts.html +0 -4327
  447. package/coverage/src/concepts/ViewElement__.ts.html +0 -8992
  448. package/coverage/src/concepts/View__.ts.html +0 -9019
  449. package/coverage/src/concepts/WhileStatement__.ts.html +0 -1105
  450. package/coverage/src/concepts/basics/stdlib/index.html +0 -356
  451. package/coverage/src/concepts/basics/stdlib/index.ts.html +0 -208
  452. package/coverage/src/concepts/basics/stdlib/nasl.auth.ts.html +0 -565
  453. package/coverage/src/concepts/basics/stdlib/nasl.browser.ts.html +0 -517
  454. package/coverage/src/concepts/basics/stdlib/nasl.collection.ts.html +0 -226
  455. package/coverage/src/concepts/basics/stdlib/nasl.configuration.ts.html +0 -172
  456. package/coverage/src/concepts/basics/stdlib/nasl.core.ts.html +0 -214
  457. package/coverage/src/concepts/basics/stdlib/nasl.event.ts.html +0 -145
  458. package/coverage/src/concepts/basics/stdlib/nasl.http.ts.html +0 -589
  459. package/coverage/src/concepts/basics/stdlib/nasl.interface.ts.html +0 -214
  460. package/coverage/src/concepts/basics/stdlib/nasl.io.ts.html +0 -229
  461. package/coverage/src/concepts/basics/stdlib/nasl.logging.ts.html +0 -268
  462. package/coverage/src/concepts/basics/stdlib/nasl.process.ts.html +0 -1999
  463. package/coverage/src/concepts/basics/stdlib/nasl.ui.ts.html +0 -3259
  464. package/coverage/src/concepts/basics/stdlib/nasl.util.ts.html +0 -6955
  465. package/coverage/src/concepts/basics/stdlib/nasl.validation.ts.html +0 -1768
  466. package/coverage/src/concepts/basics/stdlib/reference2TypeAnnotationList.ts.html +0 -163
  467. package/coverage/src/concepts/basics/stdlib/timeZone.ts.html +0 -664
  468. package/coverage/src/concepts/basics/types/coreTypeList.ts.html +0 -121
  469. package/coverage/src/concepts/basics/types/index.html +0 -131
  470. package/coverage/src/concepts/basics/types/index.ts.html +0 -160
  471. package/coverage/src/concepts/index.html +0 -1976
  472. package/coverage/src/concepts/index.ts.html +0 -103
  473. package/coverage/src/concepts/index__.ts.html +0 -454
  474. package/coverage/src/config.ts.html +0 -325
  475. package/coverage/src/decorators/index.html +0 -131
  476. package/coverage/src/decorators/index.ts.html +0 -583
  477. package/coverage/src/decorators/promise.ts.html +0 -169
  478. package/coverage/src/eventBus.ts.html +0 -100
  479. package/coverage/src/generator/compileComponent.ts.html +0 -142
  480. package/coverage/src/generator/genBundleFiles.ts.html +0 -1828
  481. package/coverage/src/generator/genHash.ts.html +0 -124
  482. package/coverage/src/generator/genMetaData.ts.html +0 -1084
  483. package/coverage/src/generator/genReleaseBody.ts.html +0 -1282
  484. package/coverage/src/generator/icestark.ts.html +0 -220
  485. package/coverage/src/generator/index.html +0 -266
  486. package/coverage/src/generator/index.ts.html +0 -106
  487. package/coverage/src/generator/microApp.ts.html +0 -172
  488. package/coverage/src/generator/permission.ts.html +0 -1036
  489. package/coverage/src/generator/qiankun.ts.html +0 -232
  490. package/coverage/src/generator/styleReplacer.ts.html +0 -199
  491. package/coverage/src/index.html +0 -146
  492. package/coverage/src/index.ts.html +0 -124
  493. package/coverage/src/manager/diagnostic.ts.html +0 -442
  494. package/coverage/src/manager/index.html +0 -131
  495. package/coverage/src/manager/stepRecorder.ts.html +0 -457
  496. package/coverage/src/natural/genNaturalTS.ts.html +0 -355
  497. package/coverage/src/natural/index.html +0 -161
  498. package/coverage/src/natural/index.ts.html +0 -91
  499. package/coverage/src/natural/naslStdlibMap.ts.html +0 -157
  500. package/coverage/src/natural/transformTSCode.ts.html +0 -2707
  501. package/coverage/src/sentry/index.html +0 -116
  502. package/coverage/src/sentry/index.ts.html +0 -676
  503. package/coverage/src/server/createUiTs.ts.html +0 -919
  504. package/coverage/src/server/entity2LogicNamespace.ts.html +0 -1294
  505. package/coverage/src/server/event.js.html +0 -526
  506. package/coverage/src/server/extendBaseNode.ts.html +0 -1762
  507. package/coverage/src/server/formatTsUtils.ts.html +0 -2689
  508. package/coverage/src/server/getConnector.ts.html +0 -316
  509. package/coverage/src/server/getExtensionModules.ts.html +0 -178
  510. package/coverage/src/server/getFunctions.ts.html +0 -133
  511. package/coverage/src/server/getInterfaces.ts.html +0 -229
  512. package/coverage/src/server/getLogging.ts.html +0 -100
  513. package/coverage/src/server/getLogics.ts.html +0 -1363
  514. package/coverage/src/server/getMemberIdentifier.ts.html +0 -1606
  515. package/coverage/src/server/getProcessComponents.ts.html +0 -112
  516. package/coverage/src/server/getProcesses.ts.html +0 -2023
  517. package/coverage/src/server/getValidates.ts.html +0 -115
  518. package/coverage/src/server/index.html +0 -401
  519. package/coverage/src/server/index.ts.html +0 -229
  520. package/coverage/src/server/naslServer.ts.html +0 -14356
  521. package/coverage/src/server/naslStdlibMap.ts.html +0 -241
  522. package/coverage/src/server/process2LogicNamespace.ts.html +0 -454
  523. package/coverage/src/server/translator.ts.html +0 -2566
  524. package/coverage/src/service/creator/add.configs.js.html +0 -397
  525. package/coverage/src/service/creator/errHandles.js.html +0 -304
  526. package/coverage/src/service/creator/index.html +0 -146
  527. package/coverage/src/service/creator/index.js.html +0 -352
  528. package/coverage/src/service/datasource/api.js.html +0 -118
  529. package/coverage/src/service/datasource/index.html +0 -131
  530. package/coverage/src/service/datasource/index.js.html +0 -103
  531. package/coverage/src/service/logic/api.js.html +0 -109
  532. package/coverage/src/service/logic/index.html +0 -131
  533. package/coverage/src/service/logic/index.js.html +0 -103
  534. package/coverage/src/service/storage/api.js.html +0 -202
  535. package/coverage/src/service/storage/index.html +0 -206
  536. package/coverage/src/service/storage/index.ts.html +0 -103
  537. package/coverage/src/service/storage/init.ts.html +0 -3721
  538. package/coverage/src/service/storage/jsoner.ts.html +0 -502
  539. package/coverage/src/service/storage/map.ts.html +0 -256
  540. package/coverage/src/service/storage/service.ts.html +0 -331
  541. package/coverage/src/service/storage/storagePoint.ts.html +0 -304
  542. package/coverage/src/templator/genCallComponentLogic.ts.html +0 -163
  543. package/coverage/src/templator/genCreateBlock.ts.html +0 -1093
  544. package/coverage/src/templator/genCurdEditMultipleKeyBlock.ts.html +0 -1609
  545. package/coverage/src/templator/genCurdMultipleKeyBlock.ts.html +0 -2254
  546. package/coverage/src/templator/genEditTableBlock.ts.html +0 -1021
  547. package/coverage/src/templator/genEnumSelectBlock.ts.html +0 -178
  548. package/coverage/src/templator/genGetBlock.ts.html +0 -451
  549. package/coverage/src/templator/genGridViewBlock.ts.html +0 -1114
  550. package/coverage/src/templator/genListViewBlock.ts.html +0 -475
  551. package/coverage/src/templator/genQueryComponent.ts.html +0 -1207
  552. package/coverage/src/templator/genSelectBlock.ts.html +0 -1243
  553. package/coverage/src/templator/genTableBlock.ts.html +0 -973
  554. package/coverage/src/templator/genUpdateBlock.ts.html +0 -1192
  555. package/coverage/src/templator/index.html +0 -326
  556. package/coverage/src/templator/index.ts.html +0 -154
  557. package/coverage/src/templator/utils.ts.html +0 -1861
  558. package/coverage/src/translator/constant.ts.html +0 -106
  559. package/coverage/src/translator/index.html +0 -146
  560. package/coverage/src/translator/index.ts.html +0 -94
  561. package/coverage/src/translator/utils.ts.html +0 -436
  562. package/coverage/src/utils/cookie.ts.html +0 -265
  563. package/coverage/src/utils/env.ts.html +0 -91
  564. package/coverage/src/utils/index.html +0 -236
  565. package/coverage/src/utils/index.ts.html +0 -694
  566. package/coverage/src/utils/logger.ts.html +0 -145
  567. package/coverage/src/utils/sortTsString.ts.html +0 -187
  568. package/coverage/src/utils/string.ts.html +0 -400
  569. package/coverage/src/utils/time-slicing.ts.html +0 -418
  570. package/coverage/src/utils/traverse.ts.html +0 -568
  571. package/coverage/src/utils/window.ts.html +0 -112
@@ -0,0 +1,1892 @@
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 BusinessComponent_1;
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.BusinessComponent = void 0;
37
+ const time_slicing_1 = require("../utils/time-slicing");
38
+ const translator_1 = require("../translator");
39
+ const translator_2 = __importDefault(require("../bak/translator"));
40
+ const PAGE_COMPONENT_INCLUDE_TAG_MAP = {
41
+ 'u-list-view': {
42
+ 'page-size': {
43
+ value: 'size',
44
+ label: '分页大小',
45
+ },
46
+ 'page-number': {
47
+ value: 'page',
48
+ label: '当前页数',
49
+ },
50
+ 'data-source': {
51
+ value: 'data',
52
+ label: '数据',
53
+ },
54
+ },
55
+ 'u-grid-view': {
56
+ 'page-size': {
57
+ value: 'size',
58
+ label: '分页大小',
59
+ },
60
+ 'page-number': {
61
+ value: 'page',
62
+ label: '当前页数',
63
+ },
64
+ 'data-source': {
65
+ value: 'data',
66
+ label: '数据',
67
+ },
68
+ },
69
+ 'u-list-components': {
70
+ 'data-source': {
71
+ value: 'data',
72
+ label: '数据',
73
+ },
74
+ },
75
+ 'u-table-view': {
76
+ 'page-size': {
77
+ value: 'size',
78
+ label: '分页大小',
79
+ },
80
+ 'page-number': {
81
+ value: 'page',
82
+ label: '当前页数',
83
+ },
84
+ sorting: {
85
+ value: 'sort',
86
+ label: '排序属性',
87
+ },
88
+ value: {
89
+ value: 'value',
90
+ label: '单选选中值',
91
+ },
92
+ values: {
93
+ value: 'values',
94
+ label: '多选选中值',
95
+ },
96
+ 'data-source': {
97
+ value: 'data',
98
+ label: '数据',
99
+ },
100
+ },
101
+ 'u-radios': {
102
+ value: {
103
+ value: 'value',
104
+ label: '选中值',
105
+ },
106
+ 'data-source': {
107
+ value: 'data',
108
+ label: '数据',
109
+ },
110
+ },
111
+ 'u-checkboxes': {
112
+ value: {
113
+ value: 'value',
114
+ label: '选中值',
115
+ },
116
+ 'data-source': {
117
+ value: 'data',
118
+ label: '数据',
119
+ },
120
+ },
121
+ 'u-select': {
122
+ value: {
123
+ value: 'value',
124
+ label: '选中值',
125
+ },
126
+ 'data-source': {
127
+ value: 'data',
128
+ label: '数据',
129
+ },
130
+ opened: {
131
+ value: 'opened',
132
+ label: '弹出状态',
133
+ },
134
+ 'page-size': {
135
+ value: 'size',
136
+ label: '分页大小',
137
+ },
138
+ 'page-number': {
139
+ value: 'page',
140
+ label: '当前页数',
141
+ },
142
+ },
143
+ 'u-cascader': {
144
+ value: {
145
+ value: 'value',
146
+ label: '选中值',
147
+ },
148
+ 'data-source': {
149
+ value: 'data',
150
+ label: '数据',
151
+ },
152
+ },
153
+ 'u-tree-select-new': {
154
+ value: {
155
+ value: 'value',
156
+ label: '选中值',
157
+ },
158
+ 'data-source': {
159
+ value: 'data',
160
+ label: '数据',
161
+ },
162
+ },
163
+ 'van-radio-group': {
164
+ value: {
165
+ value: 'value',
166
+ label: '选中值',
167
+ },
168
+ 'data-source': {
169
+ value: 'data',
170
+ label: '数据',
171
+ },
172
+ },
173
+ 'van-checkbox-group': {
174
+ value: {
175
+ value: 'value',
176
+ label: '选中值',
177
+ },
178
+ 'data-source': {
179
+ value: 'data',
180
+ label: '数据',
181
+ },
182
+ },
183
+ 'van-pickerson': {
184
+ pvalue: {
185
+ value: 'value',
186
+ label: '选中值',
187
+ },
188
+ 'data-source': {
189
+ value: 'data',
190
+ label: '数据',
191
+ },
192
+ 'page-size': {
193
+ value: 'size',
194
+ label: '分页大小',
195
+ },
196
+ 'page-number': {
197
+ value: 'page',
198
+ label: '当前页数',
199
+ },
200
+ },
201
+ 'van-cascader': {
202
+ value: {
203
+ value: 'value',
204
+ label: '选中值',
205
+ },
206
+ 'data-source': {
207
+ value: 'data',
208
+ label: '数据',
209
+ },
210
+ },
211
+ 'van-list-view': {
212
+ 'page-size': {
213
+ value: 'size',
214
+ label: '分页大小',
215
+ },
216
+ 'page-number': {
217
+ value: 'page',
218
+ label: '当前页数',
219
+ },
220
+ 'data-source': {
221
+ value: 'data',
222
+ label: '数据',
223
+ },
224
+ },
225
+ 'van-grid-view': {
226
+ 'page-size': {
227
+ value: 'size',
228
+ label: '分页大小',
229
+ },
230
+ 'page-number': {
231
+ value: 'page',
232
+ label: '当前页数',
233
+ },
234
+ 'data-source': {
235
+ value: 'data',
236
+ label: '数据',
237
+ },
238
+ },
239
+ 'van-for-components': {
240
+ 'data-source': {
241
+ value: 'data',
242
+ label: '数据',
243
+ },
244
+ },
245
+ };
246
+ const getBranchCopyUniCode = () => window?.BranchCopyUniCode;
247
+ const removedViewElementCache = {}; // 临时记录删除的页面元素计数的最大值
248
+ const decorators_1 = require("../decorators");
249
+ const utils = __importStar(require("../utils"));
250
+ const asserts = __importStar(require("./utils/asserts"));
251
+ const BaseNode_1 = __importDefault(require("../common/BaseNode"));
252
+ /**
253
+ * 业务组件
254
+ */
255
+ let BusinessComponent = BusinessComponent_1 = class BusinessComponent extends BaseNode_1.default {
256
+ /**
257
+ * @param source 需要合并的部分参数
258
+ */
259
+ constructor(source) {
260
+ source = Object.assign({}, BusinessComponent_1.getDefaultOptions(), source);
261
+ super(source);
262
+ /**
263
+ * 组件事件列表
264
+ */
265
+ this.events = [];
266
+ /**
267
+ * 参数分组列表
268
+ */
269
+ this.params = [];
270
+ /**
271
+ * 变量列表
272
+ */
273
+ this.variables = [];
274
+ /**
275
+ * 元素绑定事件列表
276
+ */
277
+ this.bindEvents = [];
278
+ /**
279
+ * 业务组件逻辑列表
280
+ */
281
+ this.logics = [];
282
+ /**
283
+ * 页面元素列表
284
+ */
285
+ this.elements = [];
286
+ /**
287
+ * 获取当前业务组件下所有elements上bindEvents下的logic
288
+ */
289
+ this.elementLogicRoot = [];
290
+ this.existingViewElement = new Set();
291
+ super.subConstructor(source);
292
+ }
293
+ static from(source, parentNode, parentKey) {
294
+ return super.from(source, parentNode, parentKey);
295
+ }
296
+ /**
297
+ * 从父级删除该节点
298
+ * @internal
299
+ */
300
+ _delete() {
301
+ let params = null;
302
+ if (this.parentNode) {
303
+ params = this.parentNode?.__removeBusinessComponent?.(this);
304
+ }
305
+ return params;
306
+ }
307
+ /**
308
+ * 设置业务组件名称
309
+ */
310
+ setName(name) {
311
+ const object = {
312
+ name,
313
+ };
314
+ this.update({
315
+ ...object,
316
+ field: 'name',
317
+ });
318
+ }
319
+ /**
320
+ * 设置业务组件标题
321
+ */
322
+ setTitle(title) {
323
+ const object = {
324
+ title,
325
+ };
326
+ this.update({
327
+ ...object,
328
+ });
329
+ }
330
+ /**
331
+ * 设置业务组件描述
332
+ */
333
+ setDescription(description) {
334
+ const object = {
335
+ description,
336
+ };
337
+ this.update({
338
+ ...object,
339
+ });
340
+ }
341
+ /**
342
+ * 设置icon
343
+ */
344
+ setIcon(icon) {
345
+ const object = {
346
+ icon,
347
+ };
348
+ this.update({
349
+ ...object,
350
+ });
351
+ }
352
+ getEventExistingNames(excludedList = []) {
353
+ const excludedSet = new Set(excludedList);
354
+ return (this.events || []).filter((item) => !excludedSet.has(item)).map((item) => item?.name);
355
+ }
356
+ getEventUniqueName(name = 'event1') {
357
+ return utils.unique(name, this.getEventExistingNames(), undefined, false);
358
+ }
359
+ _insertEventAt(options, index) {
360
+ const eventOptions = {};
361
+ const relationOptions = { parentNode: this, parentKey: 'events' };
362
+ const Event = (0, decorators_1.getConceptConstructor)('Event');
363
+ let event;
364
+ if (!options) {
365
+ event = Event.from({
366
+ ...eventOptions,
367
+ name: this.getEventUniqueName(),
368
+ }, this, 'events');
369
+ }
370
+ else if (typeof options === 'string') {
371
+ event = Event.from({
372
+ ...eventOptions,
373
+ name: options,
374
+ }, this, 'events');
375
+ }
376
+ else if (asserts.isEvent(options)) {
377
+ options.ensureDelete(); // 同一实例不支持多处存在
378
+ event = options;
379
+ Object.assign(event, relationOptions);
380
+ }
381
+ else {
382
+ event = Event.from({
383
+ ...eventOptions,
384
+ ...options,
385
+ }, this, 'events');
386
+ }
387
+ this.events.splice(index, 0, event);
388
+ return event;
389
+ }
390
+ insertEventAt(options, index) {
391
+ const node = this._insertEventAt(options, index);
392
+ node.create({
393
+ index,
394
+ parentNode: this,
395
+ parentKey: 'events',
396
+ });
397
+ return node;
398
+ }
399
+ _addEvent(options) {
400
+ const index = this.events.length;
401
+ return this._insertEventAt(options, index);
402
+ }
403
+ addEvent(options) {
404
+ const node = this._addEvent(options);
405
+ const index = this.events.indexOf(node);
406
+ node.create({
407
+ index,
408
+ parentNode: this,
409
+ parentKey: 'events',
410
+ });
411
+ return node;
412
+ }
413
+ getParamUniqueName(name = 'param1') {
414
+ return utils.unique(name, this.getVarExistingNames(), undefined, false);
415
+ }
416
+ _insertParamAt(options, index) {
417
+ const paramOptions = {};
418
+ const relationOptions = { parentNode: this, parentKey: 'params' };
419
+ const ParamWithGroup = (0, decorators_1.getConceptConstructor)('ParamWithGroup');
420
+ let param;
421
+ if (!options) {
422
+ param = ParamWithGroup.from({
423
+ ...paramOptions,
424
+ name: this.getParamUniqueName(),
425
+ }, this, 'params');
426
+ }
427
+ else if (typeof options === 'string') {
428
+ param = ParamWithGroup.from({
429
+ ...paramOptions,
430
+ name: options,
431
+ }, this, 'params');
432
+ }
433
+ else if (asserts.isParamWithGroup(options)) {
434
+ options.ensureDelete(); // 同一实例不支持多处存在
435
+ param = options;
436
+ Object.assign(param, relationOptions);
437
+ }
438
+ else {
439
+ param = ParamWithGroup.from({
440
+ ...paramOptions,
441
+ ...options,
442
+ }, this, 'params');
443
+ }
444
+ this.params.splice(index, 0, param);
445
+ return param;
446
+ }
447
+ insertParamAt(options, index) {
448
+ const node = this._insertParamAt(options, index);
449
+ node.create({
450
+ index,
451
+ parentNode: this,
452
+ parentKey: 'params',
453
+ });
454
+ return node;
455
+ }
456
+ _addParam(options) {
457
+ const index = this.params.length;
458
+ return this._insertParamAt(options, index);
459
+ }
460
+ addParam(options) {
461
+ const node = this._addParam(options);
462
+ const index = this.params.indexOf(node);
463
+ node.create({
464
+ index,
465
+ parentNode: this,
466
+ parentKey: 'params',
467
+ });
468
+ return node;
469
+ }
470
+ getVariableUniqueName(name = 'variable1') {
471
+ return utils.unique(name, this.getVarExistingNames(), undefined, false);
472
+ }
473
+ _insertVariableAt(options, index) {
474
+ const variableOptions = {};
475
+ const relationOptions = { parentNode: this, parentKey: 'variables' };
476
+ const Variable = (0, decorators_1.getConceptConstructor)('Variable');
477
+ let variable;
478
+ if (!options) {
479
+ variable = Variable.from({
480
+ ...variableOptions,
481
+ name: this.getVariableUniqueName(),
482
+ }, this, 'variables');
483
+ }
484
+ else if (typeof options === 'string') {
485
+ variable = Variable.from({
486
+ ...variableOptions,
487
+ name: options,
488
+ }, this, 'variables');
489
+ }
490
+ else if (asserts.isVariable(options)) {
491
+ options.ensureDelete(); // 同一实例不支持多处存在
492
+ variable = options;
493
+ Object.assign(variable, relationOptions);
494
+ }
495
+ else {
496
+ variable = Variable.from({
497
+ ...variableOptions,
498
+ ...options,
499
+ }, this, 'variables');
500
+ }
501
+ this.variables.splice(index, 0, variable);
502
+ return variable;
503
+ }
504
+ insertVariableAt(options, index) {
505
+ const node = this._insertVariableAt(options, index);
506
+ node.create({
507
+ index,
508
+ parentNode: this,
509
+ parentKey: 'variables',
510
+ });
511
+ return node;
512
+ }
513
+ _addVariable(options) {
514
+ const index = this.variables.length;
515
+ return this._insertVariableAt(options, index);
516
+ }
517
+ addVariable(options) {
518
+ const node = this._addVariable(options);
519
+ const index = this.variables.indexOf(node);
520
+ node.create({
521
+ index,
522
+ parentNode: this,
523
+ parentKey: 'variables',
524
+ });
525
+ return node;
526
+ }
527
+ getBindEventExistingNames(excludedList = []) {
528
+ const excludedSet = new Set(excludedList);
529
+ return (this.bindEvents || []).filter((item) => !excludedSet.has(item)).map((item) => item?.name);
530
+ }
531
+ getBindEventUniqueName(name = 'bindEvent1') {
532
+ return utils.unique(name, this.getBindEventExistingNames(), undefined, false);
533
+ }
534
+ _insertBindEventAt(options, index) {
535
+ const bindEventOptions = {};
536
+ const relationOptions = { parentNode: this, parentKey: 'bindEvents' };
537
+ const BindEvent = (0, decorators_1.getConceptConstructor)('BindEvent');
538
+ let bindEvent;
539
+ if (!options) {
540
+ bindEvent = BindEvent.from({
541
+ ...bindEventOptions,
542
+ name: this.getBindEventUniqueName(),
543
+ }, this, 'bindEvents');
544
+ }
545
+ else if (typeof options === 'string') {
546
+ bindEvent = BindEvent.from({
547
+ ...bindEventOptions,
548
+ name: options,
549
+ }, this, 'bindEvents');
550
+ }
551
+ else if (asserts.isBindEvent(options)) {
552
+ options.ensureDelete(); // 同一实例不支持多处存在
553
+ bindEvent = options;
554
+ Object.assign(bindEvent, relationOptions);
555
+ }
556
+ else {
557
+ bindEvent = BindEvent.from({
558
+ ...bindEventOptions,
559
+ ...options,
560
+ }, this, 'bindEvents');
561
+ }
562
+ this.bindEvents.splice(index, 0, bindEvent);
563
+ return bindEvent;
564
+ }
565
+ insertBindEventAt(options, index) {
566
+ const node = this._insertBindEventAt(options, index);
567
+ node.create({
568
+ index,
569
+ parentNode: this,
570
+ parentKey: 'bindEvents',
571
+ });
572
+ return node;
573
+ }
574
+ _addBindEvent(options) {
575
+ const index = this.bindEvents.length;
576
+ return this._insertBindEventAt(options, index);
577
+ }
578
+ addBindEvent(options) {
579
+ const node = this._addBindEvent(options);
580
+ const index = this.bindEvents.indexOf(node);
581
+ node.create({
582
+ index,
583
+ parentNode: this,
584
+ parentKey: 'bindEvents',
585
+ });
586
+ return node;
587
+ }
588
+ getLogicExistingNames(excludedList = []) {
589
+ const excludedSet = new Set(excludedList);
590
+ return (this.logics || []).filter((item) => !excludedSet.has(item)).map((item) => item?.name);
591
+ }
592
+ getLogicUniqueName(name = 'logic1') {
593
+ return utils.unique(name, this.getLogicExistingNames(), undefined, false);
594
+ }
595
+ _insertLogicAt(options, index) {
596
+ const logicOptions = {};
597
+ const relationOptions = { parentNode: this, parentKey: 'logics' };
598
+ const BusinessLogic = (0, decorators_1.getConceptConstructor)('BusinessLogic');
599
+ let logic;
600
+ if (!options) {
601
+ logic = BusinessLogic.from({
602
+ ...logicOptions,
603
+ name: this.getLogicUniqueName(),
604
+ }, this, 'logics');
605
+ }
606
+ else if (typeof options === 'string') {
607
+ logic = BusinessLogic.from({
608
+ ...logicOptions,
609
+ name: options,
610
+ }, this, 'logics');
611
+ }
612
+ else if (asserts.isBusinessLogic(options)) {
613
+ options.ensureDelete(); // 同一实例不支持多处存在
614
+ logic = options;
615
+ Object.assign(logic, relationOptions);
616
+ }
617
+ else {
618
+ logic = BusinessLogic.from({
619
+ ...logicOptions,
620
+ ...options,
621
+ }, this, 'logics');
622
+ }
623
+ this.logics.splice(index, 0, logic);
624
+ return logic;
625
+ }
626
+ insertLogicAt(options, index) {
627
+ const node = this._insertLogicAt(options, index);
628
+ node.create({
629
+ index,
630
+ parentNode: this,
631
+ parentKey: 'logics',
632
+ });
633
+ return node;
634
+ }
635
+ _addLogic(options) {
636
+ const index = this.logics.length;
637
+ return this._insertLogicAt(options, index);
638
+ }
639
+ addLogic(options) {
640
+ const node = this._addLogic(options);
641
+ const index = this.logics.indexOf(node);
642
+ node.create({
643
+ index,
644
+ parentNode: this,
645
+ parentKey: 'logics',
646
+ });
647
+ return node;
648
+ }
649
+ _insertViewElementAt(options, index) {
650
+ const viewElementOptions = {};
651
+ const relationOptions = { parentNode: this, parentKey: 'elements' };
652
+ const ViewElement = (0, decorators_1.getConceptConstructor)('ViewElement');
653
+ let viewElement;
654
+ if (!options) {
655
+ viewElement = ViewElement.from({
656
+ ...viewElementOptions,
657
+ name: this.getViewElementUniqueName(),
658
+ }, this, 'elements');
659
+ }
660
+ else if (typeof options === 'string') {
661
+ viewElement = ViewElement.from({
662
+ ...viewElementOptions,
663
+ name: options,
664
+ }, this, 'elements');
665
+ }
666
+ else if (asserts.isViewElement(options)) {
667
+ options.ensureDelete(); // 同一实例不支持多处存在
668
+ viewElement = options;
669
+ Object.assign(viewElement, relationOptions);
670
+ }
671
+ else {
672
+ viewElement = ViewElement.from({
673
+ ...viewElementOptions,
674
+ ...options,
675
+ }, this, 'elements');
676
+ }
677
+ this.elements.splice(index, 0, viewElement);
678
+ return viewElement;
679
+ }
680
+ insertViewElementAt(options, index) {
681
+ const node = this._insertViewElementAt(options, index);
682
+ node.create({
683
+ index,
684
+ parentNode: this,
685
+ parentKey: 'elements',
686
+ });
687
+ return node;
688
+ }
689
+ _addViewElement(options) {
690
+ const index = this.elements.length;
691
+ return this._insertViewElementAt(options, index);
692
+ }
693
+ addViewElement(options) {
694
+ const node = this._addViewElement(options);
695
+ const index = this.elements.indexOf(node);
696
+ node.create({
697
+ index,
698
+ parentNode: this,
699
+ parentKey: 'elements',
700
+ });
701
+ return node;
702
+ }
703
+ removeEvent(options) {
704
+ let event;
705
+ if (typeof options === 'string') {
706
+ event = this.events.find((item) => item.name === options);
707
+ if (!event) {
708
+ throw new Error('找不到组件事件 ' + options);
709
+ }
710
+ }
711
+ else {
712
+ event = options;
713
+ }
714
+ return event.delete();
715
+ }
716
+ __removeEvent(event) {
717
+ const parentKey = event.parentKey;
718
+ const params = {
719
+ parentNode: this,
720
+ parentKey,
721
+ index: -1,
722
+ object: null,
723
+ oldObject: event,
724
+ };
725
+ if (parentKey) {
726
+ params.parentKey = parentKey;
727
+ // @ts-ignore
728
+ const t = this.__v_raw || this;
729
+ // @ts-ignore
730
+ const n = event.__v_raw || event;
731
+ if (Array.isArray(t[parentKey])) {
732
+ // @ts-ignore
733
+ const index = t[parentKey].findIndex((el) => (el.__v_raw || el) === n);
734
+ ~index && this[parentKey].splice(index, 1);
735
+ params.index = index;
736
+ }
737
+ else {
738
+ const q = t[parentKey];
739
+ if ((q.__v_raw || q) === n) {
740
+ params.index = 0;
741
+ this[parentKey] = undefined;
742
+ }
743
+ }
744
+ }
745
+ return params;
746
+ }
747
+ removeParam(options) {
748
+ let param;
749
+ if (typeof options === 'string') {
750
+ param = this.params.find((item) => item.name === options);
751
+ if (!param) {
752
+ throw new Error('找不到参数分组 ' + options);
753
+ }
754
+ }
755
+ else {
756
+ param = options;
757
+ }
758
+ return param.delete();
759
+ }
760
+ __removeParam(param) {
761
+ const parentKey = param.parentKey;
762
+ const params = {
763
+ parentNode: this,
764
+ parentKey,
765
+ index: -1,
766
+ object: null,
767
+ oldObject: param,
768
+ };
769
+ if (parentKey) {
770
+ params.parentKey = parentKey;
771
+ // @ts-ignore
772
+ const t = this.__v_raw || this;
773
+ // @ts-ignore
774
+ const n = param.__v_raw || param;
775
+ if (Array.isArray(t[parentKey])) {
776
+ // @ts-ignore
777
+ const index = t[parentKey].findIndex((el) => (el.__v_raw || el) === n);
778
+ ~index && this[parentKey].splice(index, 1);
779
+ params.index = index;
780
+ }
781
+ else {
782
+ const q = t[parentKey];
783
+ if ((q.__v_raw || q) === n) {
784
+ params.index = 0;
785
+ this[parentKey] = undefined;
786
+ }
787
+ }
788
+ }
789
+ return params;
790
+ }
791
+ removeVariable(options) {
792
+ let variable;
793
+ if (typeof options === 'string') {
794
+ variable = this.variables.find((item) => item.name === options);
795
+ if (!variable) {
796
+ throw new Error('找不到变量 ' + options);
797
+ }
798
+ }
799
+ else {
800
+ variable = options;
801
+ }
802
+ return variable.delete();
803
+ }
804
+ __removeVariable(variable) {
805
+ const parentKey = variable.parentKey;
806
+ const params = {
807
+ parentNode: this,
808
+ parentKey,
809
+ index: -1,
810
+ object: null,
811
+ oldObject: variable,
812
+ };
813
+ if (parentKey) {
814
+ params.parentKey = parentKey;
815
+ // @ts-ignore
816
+ const t = this.__v_raw || this;
817
+ // @ts-ignore
818
+ const n = variable.__v_raw || variable;
819
+ if (Array.isArray(t[parentKey])) {
820
+ // @ts-ignore
821
+ const index = t[parentKey].findIndex((el) => (el.__v_raw || el) === n);
822
+ ~index && this[parentKey].splice(index, 1);
823
+ params.index = index;
824
+ }
825
+ else {
826
+ const q = t[parentKey];
827
+ if ((q.__v_raw || q) === n) {
828
+ params.index = 0;
829
+ this[parentKey] = undefined;
830
+ }
831
+ }
832
+ }
833
+ return params;
834
+ }
835
+ removeBindEvent(options) {
836
+ let bindEvent;
837
+ if (typeof options === 'string') {
838
+ bindEvent = this.bindEvents.find((item) => item.name === options);
839
+ if (!bindEvent) {
840
+ throw new Error('找不到元素绑定事件 ' + options);
841
+ }
842
+ }
843
+ else {
844
+ bindEvent = options;
845
+ }
846
+ return bindEvent.delete();
847
+ }
848
+ __removeBindEvent(bindEvent) {
849
+ const parentKey = bindEvent.parentKey;
850
+ const params = {
851
+ parentNode: this,
852
+ parentKey,
853
+ index: -1,
854
+ object: null,
855
+ oldObject: bindEvent,
856
+ };
857
+ if (parentKey) {
858
+ params.parentKey = parentKey;
859
+ // @ts-ignore
860
+ const t = this.__v_raw || this;
861
+ // @ts-ignore
862
+ const n = bindEvent.__v_raw || bindEvent;
863
+ if (Array.isArray(t[parentKey])) {
864
+ // @ts-ignore
865
+ const index = t[parentKey].findIndex((el) => (el.__v_raw || el) === n);
866
+ ~index && this[parentKey].splice(index, 1);
867
+ params.index = index;
868
+ }
869
+ else {
870
+ const q = t[parentKey];
871
+ if ((q.__v_raw || q) === n) {
872
+ params.index = 0;
873
+ this[parentKey] = undefined;
874
+ }
875
+ }
876
+ }
877
+ return params;
878
+ }
879
+ removeLogic(options) {
880
+ let logic;
881
+ if (typeof options === 'string') {
882
+ logic = this.logics.find((item) => item.name === options);
883
+ if (!logic) {
884
+ throw new Error('找不到业务组件逻辑 ' + options);
885
+ }
886
+ }
887
+ else {
888
+ logic = options;
889
+ }
890
+ return logic.delete();
891
+ }
892
+ __removeLogic(logic) {
893
+ const parentKey = logic.parentKey;
894
+ const params = {
895
+ parentNode: this,
896
+ parentKey,
897
+ index: -1,
898
+ object: null,
899
+ oldObject: logic,
900
+ };
901
+ if (parentKey) {
902
+ params.parentKey = parentKey;
903
+ // @ts-ignore
904
+ const t = this.__v_raw || this;
905
+ // @ts-ignore
906
+ const n = logic.__v_raw || logic;
907
+ if (Array.isArray(t[parentKey])) {
908
+ // @ts-ignore
909
+ const index = t[parentKey].findIndex((el) => (el.__v_raw || el) === n);
910
+ ~index && this[parentKey].splice(index, 1);
911
+ params.index = index;
912
+ }
913
+ else {
914
+ const q = t[parentKey];
915
+ if ((q.__v_raw || q) === n) {
916
+ params.index = 0;
917
+ this[parentKey] = undefined;
918
+ }
919
+ }
920
+ }
921
+ return params;
922
+ }
923
+ removeViewElement(options) {
924
+ let viewElement;
925
+ if (typeof options === 'string') {
926
+ viewElement = this.elements.find((item) => item.name === options);
927
+ if (!viewElement) {
928
+ throw new Error('找不到页面元素 ' + options);
929
+ }
930
+ }
931
+ else {
932
+ viewElement = options;
933
+ }
934
+ return viewElement.delete();
935
+ }
936
+ __removeViewElement(viewElement) {
937
+ const parentKey = viewElement.parentKey;
938
+ const params = {
939
+ parentNode: this,
940
+ parentKey,
941
+ index: -1,
942
+ object: null,
943
+ oldObject: viewElement,
944
+ };
945
+ if (parentKey) {
946
+ params.parentKey = parentKey;
947
+ // @ts-ignore
948
+ const t = this.__v_raw || this;
949
+ // @ts-ignore
950
+ const n = viewElement.__v_raw || viewElement;
951
+ if (Array.isArray(t[parentKey])) {
952
+ // @ts-ignore
953
+ const index = t[parentKey].findIndex((el) => (el.__v_raw || el) === n);
954
+ ~index && this[parentKey].splice(index, 1);
955
+ params.index = index;
956
+ }
957
+ else {
958
+ const q = t[parentKey];
959
+ if ((q.__v_raw || q) === n) {
960
+ params.index = 0;
961
+ this[parentKey] = undefined;
962
+ }
963
+ }
964
+ }
965
+ return params;
966
+ }
967
+ //================================================================================
968
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
969
+ // 自动生成的代码已结束。下面可以手动编写。
970
+ //================================================================================
971
+ static getDefaultOptions() {
972
+ return {
973
+ title: '业务组件',
974
+ };
975
+ }
976
+ getNamespace() {
977
+ if (this.parentNode && this.parentNode.getNamespace) {
978
+ const parentNamespace = this.parentNode.getNamespace();
979
+ const parentName = this.parentNode.name;
980
+ const arr = [parentNamespace];
981
+ if (this.parentNode.concept !== 'App' && parentName) {
982
+ arr.push(parentName);
983
+ }
984
+ return `${arr.join('.')}.businessComponents`;
985
+ }
986
+ throw new Error('无法获取命名空间,请设置 parentNode!');
987
+ }
988
+ getTsNamespace() {
989
+ const parentNodeNamespace = this.getNamespace();
990
+ let tsCalleeNamespace = parentNodeNamespace.replace(/\.[0-9]/g, (m) => m.replace('.', '.$'));
991
+ tsCalleeNamespace = tsCalleeNamespace.replace(/-/g, '_');
992
+ return tsCalleeNamespace;
993
+ }
994
+ getElementLogicRoot() {
995
+ const Param = (0, decorators_1.getConceptConstructor)('Param');
996
+ const logics = [];
997
+ // 页面上的绑定的事件
998
+ this.bindEvents.forEach((bindEvent) => {
999
+ bindEvent.logics.forEach((logic) => {
1000
+ // 键盘事件
1001
+ if (['keydown', 'keyup'].includes(bindEvent.name)) {
1002
+ logic.virtualParams = [
1003
+ Param.from({
1004
+ name: 'event',
1005
+ typeAnnotation: null,
1006
+ }, logic, 'virtualParams'),
1007
+ ];
1008
+ }
1009
+ // 生命周期没有event
1010
+ logics.push(logic);
1011
+ });
1012
+ });
1013
+ this.elements.forEach((item) => {
1014
+ utils.traverse((current) => {
1015
+ current.node.bindEvents.forEach((bindEvent) => {
1016
+ bindEvent.logics.forEach((logic) => {
1017
+ if (logic.name.startsWith('__')) {
1018
+ return;
1019
+ }
1020
+ // 绑定参数才有 event 的 current
1021
+ logic.virtualParams = bindEvent.getContextRenderLogicParams(logic);
1022
+ logics.push(logic);
1023
+ });
1024
+ });
1025
+ }, { node: item });
1026
+ });
1027
+ if (logics.length) {
1028
+ const expanded = (this.elementLogicRoot.length && this.elementLogicRoot[0].expanded) || false;
1029
+ this.elementLogicRoot = [
1030
+ {
1031
+ concept: 'elementLogicRoot',
1032
+ expanded,
1033
+ children: logics,
1034
+ },
1035
+ ];
1036
+ }
1037
+ else {
1038
+ this.elementLogicRoot = [];
1039
+ }
1040
+ }
1041
+ getVarExistingNames(excludedList = []) {
1042
+ const excludedSet = new Set(excludedList);
1043
+ const varList = [];
1044
+ if (Array.isArray(this.params)) {
1045
+ varList.push(...this.params);
1046
+ }
1047
+ if (Array.isArray(this.variables)) {
1048
+ varList.push(...this.variables);
1049
+ }
1050
+ if (Array.isArray(this.logics)) {
1051
+ this.logics.forEach((logic) => {
1052
+ varList.push(logic);
1053
+ if (Array.isArray(logic.params)) {
1054
+ varList.push(...logic.params);
1055
+ }
1056
+ if (Array.isArray(logic.returns)) {
1057
+ varList.push(...logic.returns);
1058
+ }
1059
+ if (Array.isArray(logic.variables)) {
1060
+ varList.push(...logic.variables);
1061
+ }
1062
+ });
1063
+ }
1064
+ // 事件逻辑的变量不允许和页面逻辑下的重复
1065
+ if (Array.isArray(this.elementLogicRoot) && this.elementLogicRoot.length) {
1066
+ this.elementLogicRoot[0]?.children.forEach((logic) => {
1067
+ if (Array.isArray(logic.variables)) {
1068
+ varList.push(...logic.variables);
1069
+ }
1070
+ });
1071
+ }
1072
+ return varList.filter((item) => !excludedSet.has(item)).map((item) => item.name);
1073
+ }
1074
+ // 收集已经存在的ViewElement
1075
+ collectExistingViewElementName(excludedList = []) {
1076
+ const excludedSet = new Set(excludedList);
1077
+ this.elements.forEach((element) => {
1078
+ utils.traverse(({ node }) => {
1079
+ if (!excludedSet.has(node)) {
1080
+ this.existingViewElement.add(node.name);
1081
+ }
1082
+ }, {
1083
+ node: element,
1084
+ });
1085
+ });
1086
+ }
1087
+ // 获取当前业务组件的所有组件的名字
1088
+ getViewElementExistingNames(excludedList = []) {
1089
+ if (!this.existingViewElement.size) {
1090
+ this.collectExistingViewElementName();
1091
+ }
1092
+ return Array.from(this.existingViewElement);
1093
+ }
1094
+ getViewElementUniqueNameOld(name = 'viewElement1') {
1095
+ this.collectExistingViewElementName();
1096
+ const viewElementUniqueName = utils.unique(name, this.existingViewElement);
1097
+ this.existingViewElement.add(viewElementUniqueName);
1098
+ return viewElementUniqueName;
1099
+ }
1100
+ getViewElementUniqueName(name = 'viewElement_1') {
1101
+ this.collectExistingViewElementName();
1102
+ const BranchCopyUniCode = getBranchCopyUniCode();
1103
+ let newName = name;
1104
+ const prefix = name.replace(/\d*$/, '');
1105
+ if (BranchCopyUniCode && prefix.indexOf(`_${BranchCopyUniCode}_`) === -1) {
1106
+ newName = name.replace(/\d*$/, (m) => `_${BranchCopyUniCode}_${m}`);
1107
+ }
1108
+ // 主分支无 BranchCopyUniCode
1109
+ if (!BranchCopyUniCode && prefix.at(-1) !== '_') {
1110
+ newName = name.replace(/\d*$/, (m) => `_${m}`);
1111
+ }
1112
+ const newPrefix = newName.replace(/\d*$/, '');
1113
+ const newPrefixNum = removedViewElementCache?.[newPrefix] ? removedViewElementCache[newPrefix] : 1;
1114
+ const startNum = newPrefixNum < Number.MAX_SAFE_INTEGER ? newPrefixNum + 1 : BigInt(newPrefixNum) + BigInt(1);
1115
+ const viewElementUniqueName = utils.uniqueMax(newName, this.existingViewElement, removedViewElementCache?.[newPrefix] ? startNum : newPrefixNum);
1116
+ this.existingViewElement.add(viewElementUniqueName);
1117
+ return viewElementUniqueName;
1118
+ }
1119
+ // 获取当前element,铺平
1120
+ elementsMethods(elements, allMethods, parentNodeNames) {
1121
+ if (elements) {
1122
+ elements.forEach((item) => {
1123
+ const { bindAttrs = [], name } = item;
1124
+ const isDataSource = bindAttrs.some((attr) => attr.name === 'data-source');
1125
+ const isInclude = parentNodeNames.includes(name);
1126
+ allMethods.push(item);
1127
+ if (item.children) {
1128
+ if (isDataSource) {
1129
+ if (isInclude) {
1130
+ this.elementsMethods(item.children, allMethods, parentNodeNames);
1131
+ }
1132
+ }
1133
+ else {
1134
+ this.elementsMethods(item.children, allMethods, parentNodeNames);
1135
+ }
1136
+ }
1137
+ });
1138
+ }
1139
+ }
1140
+ mergeBlock({ code, nodePath, position, cb }) {
1141
+ const ViewElement = (0, decorators_1.getConceptConstructor)('ViewElement');
1142
+ const Logic = (0, decorators_1.getConceptConstructor)('Logic');
1143
+ const ParamWithGroup = (0, decorators_1.getConceptConstructor)('ParamWithGroup');
1144
+ const Variable = (0, decorators_1.getConceptConstructor)('Variable');
1145
+ const BindEvent = (0, decorators_1.getConceptConstructor)('BindEvent');
1146
+ const Structure = (0, decorators_1.getConceptConstructor)('Structure');
1147
+ const template = utils.sliceTagContent(code, 'template');
1148
+ let targetNode = this.getAncestor('App')?.findNodeByPath(nodePath);
1149
+ let parentNode = position === 'append' ? targetNode : targetNode.parentNode;
1150
+ const definitionStr = utils.sliceTagContent(code, 'definition') || '{}';
1151
+ const definition = JSON.parse(definitionStr);
1152
+ let node = null;
1153
+ if (template) {
1154
+ node = ViewElement.fromHTML(template, {
1155
+ view: this,
1156
+ definition,
1157
+ });
1158
+ if (!parentNode) {
1159
+ return;
1160
+ }
1161
+ if (position === 'append') {
1162
+ parentNode.addViewElement(node);
1163
+ cb && cb(parentNode, node);
1164
+ }
1165
+ else {
1166
+ const index = targetNode.getIndexOfParent();
1167
+ if (position === 'insertBefore') {
1168
+ parentNode.insertViewElementAt(node, index);
1169
+ }
1170
+ else if (position === 'insertAfter') {
1171
+ parentNode.insertViewElementAt(node, index + 1);
1172
+ }
1173
+ }
1174
+ }
1175
+ // 服务端逻辑
1176
+ if (Array.isArray(definition.logics)) {
1177
+ definition.logics.forEach((logicOption) => {
1178
+ const logic = Logic.from({
1179
+ ...logicOption,
1180
+ }, this.rootNode, 'logics');
1181
+ this.rootNode.addLogic(logic);
1182
+ });
1183
+ }
1184
+ // 全局结构体
1185
+ if (Array.isArray(definition.structures)) {
1186
+ definition.structures.forEach((structureOption) => {
1187
+ const structure = Structure.from({
1188
+ ...structureOption,
1189
+ }, this.rootNode, 'structures');
1190
+ this.rootNode.addStructure(structure);
1191
+ });
1192
+ }
1193
+ // 页面入参
1194
+ if (Array.isArray(definition.viewParams)) {
1195
+ definition.viewParams.forEach((paramsOption) => {
1196
+ const param = ParamWithGroup.from({
1197
+ ...paramsOption,
1198
+ }, this, 'params');
1199
+ this._addParam(param);
1200
+ param.addParamsPrepare();
1201
+ });
1202
+ }
1203
+ // 页面变量
1204
+ if (Array.isArray(definition.viewVariables)) {
1205
+ definition.viewVariables.forEach((variableOption) => {
1206
+ const variable = Variable.from({
1207
+ ...variableOption,
1208
+ }, this, 'variables');
1209
+ this.addVariable(variable);
1210
+ });
1211
+ }
1212
+ // 页面事件
1213
+ if (Array.isArray(definition.viewBindEvents)) {
1214
+ definition.viewBindEvents.forEach((eventOption) => {
1215
+ const newLogic = definition.viewLogics.find((logic) => eventOption.calleeName === logic.name);
1216
+ const bindEvent = this.bindEvents.find((currentEventItem) => currentEventItem.name === eventOption.name);
1217
+ // 如果没有event对象就先新增一个,如果已经有了就在内部添加logic
1218
+ if (!bindEvent) {
1219
+ const event = BindEvent.from({
1220
+ ...eventOption,
1221
+ calleeName: '',
1222
+ logics: [newLogic],
1223
+ }, this, 'events');
1224
+ this.addBindEvent(event);
1225
+ }
1226
+ else {
1227
+ bindEvent.addLogic(newLogic);
1228
+ }
1229
+ });
1230
+ }
1231
+ return node;
1232
+ }
1233
+ onChange($event) {
1234
+ this.emit('change', $event);
1235
+ }
1236
+ /**
1237
+ * 转换成设计器中使用的 Vue template 内容
1238
+ * @param options
1239
+ */
1240
+ genDesignerVueTemplate(options) {
1241
+ return this.elements
1242
+ .map((element) => `${element.toDesignerVue({
1243
+ isRoot: true,
1244
+ asCompontent: options?.asCompontent,
1245
+ })}\n`)
1246
+ .join('');
1247
+ }
1248
+ get frontendType() {
1249
+ return this.getAncestor('FrontendType');
1250
+ }
1251
+ get path() {
1252
+ return `/${this.frontendType?.kind}/${this.name}`;
1253
+ }
1254
+ get slotElems() {
1255
+ const slotElems = [];
1256
+ this.elements.forEach((element) => {
1257
+ utils.traverse(({ node }) => {
1258
+ if (node.tag === 'slot') {
1259
+ slotElems.push(node);
1260
+ }
1261
+ }, {
1262
+ node: element,
1263
+ });
1264
+ });
1265
+ return slotElems;
1266
+ }
1267
+ /**
1268
+ * 生成宿主语言的文件路径
1269
+ * @param name 一般不用传,用于 rename
1270
+ */
1271
+ getEmbeddedFilePath(name = this.name) {
1272
+ return `/embedded/${this.rootNode?.name || this.parentNode.name}/frontendTypes/${this.getAncestor('FrontendType')?.name}/${name}.ts`;
1273
+ }
1274
+ *toEmbeddedTSFile() {
1275
+ let code = `namespace ${this.getTsNamespace()} {\n`;
1276
+ const state = (0, translator_1.createCompilerState)(code, {
1277
+ tabSize: 1,
1278
+ });
1279
+ try {
1280
+ code += yield* this.toEmbeddedTS(state);
1281
+ }
1282
+ catch (err) {
1283
+ code += '';
1284
+ console.log(err);
1285
+ }
1286
+ code += '}\n';
1287
+ return {
1288
+ code,
1289
+ filePath: this.getEmbeddedFilePath(),
1290
+ sourceMap: state.sourceMap,
1291
+ };
1292
+ }
1293
+ getAncestorViewElementsWithDataSource(logic) {
1294
+ let element = logic;
1295
+ const viewElements = [];
1296
+ while (element) {
1297
+ if (element.concept &&
1298
+ element.concept === 'ViewElement' &&
1299
+ element.bindAttrs.find((bAttr) => bAttr.name === 'data-source')) {
1300
+ viewElements.push(element);
1301
+ }
1302
+ element = element.parentNode;
1303
+ }
1304
+ return viewElements;
1305
+ }
1306
+ *handleCurrentItemCode(code, logic) {
1307
+ const viewElementsWithDataSource = this.getAncestorViewElementsWithDataSource(logic);
1308
+ yield* (0, time_slicing_1.wrapForEachToGenerator)(viewElementsWithDataSource, function* wrapForEach(viewElement, index) {
1309
+ const currentIndex = viewElementsWithDataSource.length - 1 - index;
1310
+ const currentItemCode = `current${currentIndex === 0 ? '' : currentIndex}.item`;
1311
+ if (code.includes(currentItemCode)) {
1312
+ const dataSource = viewElement.bindAttrs.find((bAttr) => bAttr.name === 'data-source');
1313
+ if (dataSource) {
1314
+ const businessComponent = viewElement.getAncestor('BusinessComponent');
1315
+ const dataSourceTS = yield* dataSource.expression.toEmbeddedTS();
1316
+ const logic = businessComponent.logics.find((logic) => logic.name === dataSourceTS);
1317
+ if (logic) {
1318
+ code = code.replaceAll(currentItemCode, `nasl.ui.getCurrentItemType(${dataSourceTS}(${logic.params.map(() => 'null').join(',')}))`);
1319
+ }
1320
+ else {
1321
+ const variable = businessComponent.variables.find((variable) => variable.name === dataSourceTS);
1322
+ code = code.replaceAll(currentItemCode, `nasl.ui.getCurrentItemType(${variable ? variable.name : dataSourceTS})`);
1323
+ }
1324
+ }
1325
+ }
1326
+ });
1327
+ return code;
1328
+ }
1329
+ removeExistingViewElement(viewElement) {
1330
+ if (this.existingViewElement.has(viewElement.name)) {
1331
+ this.existingViewElement.delete(viewElement.name);
1332
+ }
1333
+ const prefix = viewElement?.name.replace(/\d*$/, '');
1334
+ let lastDigit = viewElement?.name.match(/\d+$/)?.[0];
1335
+ if (lastDigit === undefined)
1336
+ return;
1337
+ //@ts-ignore
1338
+ lastDigit = lastDigit < Number.MAX_SAFE_INTEGER ? parseInt(lastDigit) : BigInt(lastDigit);
1339
+ if (removedViewElementCache?.[prefix]) {
1340
+ //@ts-ignore
1341
+ if (lastDigit > removedViewElementCache[prefix])
1342
+ //@ts-ignore
1343
+ removedViewElementCache[prefix] = lastDigit;
1344
+ }
1345
+ else {
1346
+ //@ts-ignore
1347
+ removedViewElementCache[prefix] = lastDigit;
1348
+ }
1349
+ }
1350
+ *getRightCode(code, assignment, rightNode) {
1351
+ code = code.replaceAll('\n', ' ');
1352
+ const logic = assignment.logic;
1353
+ const logicRtn = logic?.returns[0];
1354
+ // 调用接口,参数替换成 null
1355
+ if (asserts.isCallInterface(rightNode)) {
1356
+ const { _interface } = rightNode.getModuleInterface();
1357
+ return _interface
1358
+ ? `${rightNode.tsCalleeKey}(${_interface.params.map(() => 'null').join(',')})`
1359
+ : null;
1360
+ }
1361
+ // 调用服务端逻辑,参数替换成 null
1362
+ if (asserts.isCallLogic(rightNode) && rightNode.calleeNamespace === 'app.logics') {
1363
+ const calleeName = rightNode?.calleeName;
1364
+ const calleeLogic = this.getAncestor('App').logics.find((l) => l.name === calleeName);
1365
+ return calleeLogic ? `app.logics.${calleeName}(${calleeLogic.params.map(() => 'null').join(',')})` : null;
1366
+ }
1367
+ // view 局部变量,申明提升前增加判断,使用 logic 内的 result 直接替换成对应 logic,logic 内部变量替换成 null
1368
+ if (logicRtn && code.includes(logicRtn.name)) {
1369
+ if (code === logicRtn.name)
1370
+ return `${logic.name}(${logic.params.map(() => 'null').join(',')})`;
1371
+ code = this.handleReplaceCode(code, logicRtn.name, `${logic.name}(${logic.params.map(() => 'null').join(',')})`);
1372
+ logic.params.forEach((param) => {
1373
+ if (code.includes(param.name))
1374
+ code = this.handleReplaceCode(code, param.name, 'null');
1375
+ });
1376
+ logic.variables.forEach((variable) => {
1377
+ if (code.includes(variable.name))
1378
+ code = this.handleReplaceCode(code, variable.name, 'null');
1379
+ });
1380
+ return code;
1381
+ }
1382
+ // 处理 current.item、current1.item 等数据
1383
+ if (/current(\d)*\.item/.test(code)) {
1384
+ code = yield* this.handleCurrentItemCode(code, logic);
1385
+ return code;
1386
+ }
1387
+ // 直接赋值 logic 内局部变量、输入参数直接提示系统无法推断类型
1388
+ const useLogicVar = logic.params.find((param) => code.includes(param.name)) ||
1389
+ logic.variables.find((variable) => code.includes(variable.name));
1390
+ return useLogicVar ? 'null' : code;
1391
+ }
1392
+ handleReplaceCode(code, variable, replaceCode) {
1393
+ return code.replace(/\S+/g, ($1) => {
1394
+ if ($1 === `${variable},`)
1395
+ return `${replaceCode},`;
1396
+ if ($1 === variable)
1397
+ return replaceCode;
1398
+ let fnCode = $1;
1399
+ if ($1.startsWith(`${variable}.`))
1400
+ fnCode = $1.replaceAll(`${variable}.`, `${replaceCode}.`);
1401
+ if ($1.startsWith(`${variable},`))
1402
+ fnCode = $1.replaceAll(`${variable},`, `${replaceCode},`);
1403
+ if ($1.includes(`(${variable},`))
1404
+ fnCode = $1.replaceAll(`(${variable},`, `(${replaceCode},`);
1405
+ if ($1.includes(`(${variable}.`))
1406
+ fnCode = $1.replaceAll(`(${variable}.`, `(${replaceCode}.`);
1407
+ if ($1.includes(`(${variable})`))
1408
+ fnCode = $1.replaceAll(`(${variable})`, `(${replaceCode})`);
1409
+ if ($1.includes(`,${variable},`))
1410
+ fnCode = $1.replaceAll(`,${variable},`, `,${replaceCode},`);
1411
+ if ($1.includes(`,${variable}.`))
1412
+ fnCode = $1.replaceAll(`,${variable}.`, `,${replaceCode}.`);
1413
+ if ($1.includes(`,${variable})`))
1414
+ fnCode = $1.replaceAll(`,${variable})`, `,${replaceCode})`);
1415
+ return fnCode;
1416
+ });
1417
+ }
1418
+ // 获取当前element,铺平
1419
+ elementsAttrs(elements, componentList) {
1420
+ if (elements) {
1421
+ elements.forEach((item) => {
1422
+ if (PAGE_COMPONENT_INCLUDE_TAG_MAP?.[item.tag]) {
1423
+ componentList.push(item);
1424
+ }
1425
+ if (item.children.length > 0) {
1426
+ this.elementsAttrs(item.children, componentList);
1427
+ }
1428
+ });
1429
+ }
1430
+ }
1431
+ elementsAttrsAll(elements, componentListExtra) {
1432
+ if (elements) {
1433
+ elements.forEach((item) => {
1434
+ if (!PAGE_COMPONENT_INCLUDE_TAG_MAP?.[item.tag]) {
1435
+ componentListExtra.push(item);
1436
+ }
1437
+ if (item.children.length > 0) {
1438
+ this.elementsAttrsAll(item.children, componentListExtra);
1439
+ }
1440
+ });
1441
+ }
1442
+ }
1443
+ *toEmbeddedTS(state = (0, translator_1.createCompilerState)()) {
1444
+ const self = this;
1445
+ // 获取虚拟logic的参数和内容
1446
+ // 用作展示和tots查找引用
1447
+ self.getElementLogicRoot();
1448
+ let code = `export class ${self.tsName} extends nasl.ui.VueComponent {\n`;
1449
+ // 需要类型推导的局部变量/返回值需要调整申明顺序
1450
+ code += `constructor(
1451
+ options?: {
1452
+ [propname: string]: any,
1453
+ bindAttr?: {
1454
+ __NASLIF?: nasl.core.Boolean,
1455
+ `;
1456
+ if (Array.isArray(self.params)) {
1457
+ yield* (0, time_slicing_1.wrapForEachToGenerator)(self.params, function* warpForEachGenerator(param, index) {
1458
+ code += `${param.name}?: `;
1459
+ code += yield* param.typeAnnotation.toEmbeddedTS((0, translator_1.shiftState)(state, code));
1460
+ code += ',\n';
1461
+ });
1462
+ }
1463
+ code += `
1464
+ },
1465
+ slotDefault?: () => Array<any>,
1466
+ }) {
1467
+ super();\n`;
1468
+ // 绑定事件
1469
+ if (Array.isArray(self.bindEvents)) {
1470
+ yield* (0, time_slicing_1.wrapForEachToGenerator)(self.bindEvents, function* warpForEachGenerator(event) {
1471
+ code += yield* event.toEmbeddedTS((0, translator_1.shiftState)(state, code, {
1472
+ tabSize: state?.tabSize || 0,
1473
+ }), true);
1474
+ code += '\n';
1475
+ });
1476
+ }
1477
+ code += `\n}`;
1478
+ // 自定义事件的定义
1479
+ if (Array.isArray(self.events) && self.events.length) {
1480
+ code += (0, translator_1.indent)((state?.tabSize || 0) + 1);
1481
+ yield* (0, time_slicing_1.wrapForEachToGenerator)(self.events, function* warpForEachGenerator(event) {
1482
+ code += yield* event.toEmbeddedTS((0, translator_1.shiftState)(state, code, {
1483
+ tabSize: (state?.tabSize || 0) + 2,
1484
+ }));
1485
+ code += '\n';
1486
+ });
1487
+ code += (0, translator_1.indent)((state?.tabSize || 0) + 1);
1488
+ }
1489
+ // 逻辑
1490
+ if (Array.isArray(self.logics) && self.logics.length) {
1491
+ code += (0, translator_1.indent)((state?.tabSize || 0) + 1);
1492
+ yield* (0, time_slicing_1.wrapForEachToGenerator)(self.logics, function* warpForEachGenerator(logic) {
1493
+ code += yield* logic.toEmbeddedTS((0, translator_1.shiftState)(state, code, {
1494
+ tabSize: (state?.tabSize || 0) + 2,
1495
+ }), 'noExport');
1496
+ code += '\n';
1497
+ });
1498
+ code += (0, translator_1.indent)((state?.tabSize || 0) + 1);
1499
+ }
1500
+ // render函数
1501
+ code += `\n${(0, translator_1.indent)((state?.tabSize || 0) + 1)}`;
1502
+ code += `__render(`;
1503
+ code += `){\n`;
1504
+ code += (0, translator_1.indent)(state?.tabSize || 0);
1505
+ // elements 元素
1506
+ if (Array.isArray(self.elements)) {
1507
+ // 生成嵌套式的内容
1508
+ yield* (0, time_slicing_1.wrapForEachToGenerator)(self.elements, function* warpForEachGenerator(element) {
1509
+ code += yield* element.toEmbeddedTS((0, translator_1.shiftState)(state, code, {
1510
+ tabSize: (state?.tabSize || 0) + 3,
1511
+ }));
1512
+ code += '\n';
1513
+ });
1514
+ }
1515
+ code += `\n${(0, translator_1.indent)((state?.tabSize || 0) + 1)}}\n`;
1516
+ if (Array.isArray(self.params)) {
1517
+ code += `${(0, translator_1.indent)((state?.tabSize || 0) + 1)}$destination(options: {`;
1518
+ yield* (0, time_slicing_1.wrapForEachToGenerator)(self.params, function* warpForEachGenerator(param, index) {
1519
+ code += `${param.name}?: `;
1520
+ code += yield* param.typeAnnotation.toEmbeddedTS((0, translator_1.shiftState)(state, code));
1521
+ code += ', ';
1522
+ });
1523
+ // 锚点
1524
+ code += `_anchor?: nasl.core.String`;
1525
+ code += '}){}\n';
1526
+ }
1527
+ code += `${(0, translator_1.indent)(state?.tabSize || 0)}}\n`;
1528
+ // elements类型声明定义
1529
+ code += `interface __elements {\n`;
1530
+ // 生成所有的name和类型定义
1531
+ yield* (0, time_slicing_1.wrapForEachToGenerator)(self.elements, function* warpForEachGenerator(element) {
1532
+ code += yield* element.toEmbeddedTSDefinition((0, translator_1.shiftState)(state, code, {
1533
+ tabSize: (state?.tabSize || 0) + 1,
1534
+ }));
1535
+ });
1536
+ code += `${(0, translator_1.indent)((state?.tabSize || 0) + 1)}}\n`;
1537
+ code += `let __elements: __elements;\n`;
1538
+ if (Array.isArray(self.elements)) {
1539
+ code += `${(0, translator_1.indent)((state?.tabSize || 0) + 1)}interface `;
1540
+ code += `__elements_completionProperty {\n`;
1541
+ const componentList = [];
1542
+ self.elementsAttrs(self.elements, componentList);
1543
+ const variableList = [];
1544
+ yield* (0, time_slicing_1.wrapForEachToGenerator)(self.elements, function* warpForEachGenerator(item) {
1545
+ code += yield* item.toEmbeddedTSVariableDefinition((0, translator_1.shiftState)(state, code, { inline: true }), variableList);
1546
+ });
1547
+ code += (0, translator_1.indent)((state?.tabSize || 0) + 1) + `}\n`;
1548
+ code += (0, translator_1.indent)((state?.tabSize || 0) + 1);
1549
+ code += `let __elements_completionProperty: __elements_completionProperty;\n`;
1550
+ code += (0, translator_1.indent)((state?.tabSize || 0) + 1);
1551
+ code += `let __elements_variable_function = {\n`;
1552
+ yield* (0, time_slicing_1.wrapForEachToGenerator)(self.elements, function* warpForEachGenerator(item) {
1553
+ code += yield* item.toEmbeddedTSVariableFunctionDefinition((0, translator_1.shiftState)(state, code, { inline: true }));
1554
+ });
1555
+ code += (0, translator_1.indent)((state?.tabSize || 0) + 1) + `}\n`;
1556
+ code += (0, translator_1.indent)((state?.tabSize || 0) + 1);
1557
+ code += `let __elements_stashFunctionVariable = {\n`;
1558
+ yield* (0, time_slicing_1.wrapForEachToGenerator)(variableList, function* warpForEachGenerator(item) {
1559
+ code += (0, translator_1.indent)((state?.tabSize || 0) + 2);
1560
+ code += `${item}`;
1561
+ });
1562
+ code += (0, translator_1.indent)((state?.tabSize || 0) + 1) + `}\n`;
1563
+ }
1564
+ const advanceMap = new Map();
1565
+ yield* self.traverseChildrenGenerator(function* traverseChildrenGenerator(el) {
1566
+ if (el && (asserts.isBatchAssignment(el) || (asserts.isAssignment(el) && el.left?.name))) {
1567
+ if (asserts.isAssignment(el)) {
1568
+ const advanceVar = self.variables?.find((variable) => !variable.typeAnnotation && el.left?.name === variable.name);
1569
+ if (advanceVar && !advanceMap.get(advanceVar)) {
1570
+ advanceMap.set(advanceVar, el);
1571
+ }
1572
+ }
1573
+ else if (asserts.isBatchAssignment(el)) {
1574
+ yield* (0, time_slicing_1.wrapForEachToGenerator)(el.assignmentLines, function* warpForEachGenerator({ leftIndex }) {
1575
+ const leftCode = leftIndex.length === 1
1576
+ ? yield* el.left?.expression?.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true })) ??
1577
+ (0, time_slicing_1.returnOrigin)('')
1578
+ : yield* el.left?.members[leftIndex[1]]?.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true })) ??
1579
+ (0, time_slicing_1.returnOrigin)('');
1580
+ const advanceVar = self.variables?.find((variable) => !variable.typeAnnotation && leftCode === variable.name);
1581
+ if (advanceVar && !advanceMap.get(advanceVar)) {
1582
+ advanceMap.set(advanceVar, el);
1583
+ }
1584
+ });
1585
+ }
1586
+ }
1587
+ });
1588
+ // 用来储存默认值翻译结构是__IDENTIFIER__或者__IDENTIFIER__()的节点
1589
+ const IDENTIFIERMAP = new Set();
1590
+ if (Array.isArray(self.params)) {
1591
+ yield* (0, time_slicing_1.wrapForEachToGenerator)(self.params, function* warpForEachGenerator(param) {
1592
+ code += `let ${(0, translator_1.indent)((state?.tabSize || 0) + 1)}`;
1593
+ code += yield* param.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true }));
1594
+ code += ';\n';
1595
+ });
1596
+ }
1597
+ if (Array.isArray(self.variables)) {
1598
+ yield* (0, time_slicing_1.wrapForEachToGenerator)(self.variables, function* warpForEachGenerator(variable) {
1599
+ const ts = yield* variable.defaultValue?.toEmbeddedTS?.() ?? (0, time_slicing_1.returnOrigin)('');
1600
+ if (['__IDENTIFIER__', '__IDENTIFIER__()'].includes(ts)) {
1601
+ IDENTIFIERMAP.add(variable);
1602
+ }
1603
+ if (!advanceMap.get(variable)) {
1604
+ code += `let ${(0, translator_1.indent)((state?.tabSize || 0) + 1)}`;
1605
+ code += yield* variable.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true }));
1606
+ code += ';\n';
1607
+ }
1608
+ });
1609
+ }
1610
+ yield* (0, time_slicing_1.wrapIteratorToGenerator)(advanceMap.entries(), function* warpForEachGenerator([variable, assignment]) {
1611
+ // 有默认值的用默认值来推导类型, 但是如果是__IDENTIFIER__或者__IDENTIFIER__(),就不需要默认值来推导了
1612
+ if (variable.defaultValue?.expression && !IDENTIFIERMAP.has(variable)) {
1613
+ code += `let ${(0, translator_1.indent)((state?.tabSize || 0) + 1)}`;
1614
+ code += yield* variable.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true }));
1615
+ return;
1616
+ }
1617
+ code += `${(0, translator_1.indent)((state?.tabSize || 0) + 1)}// @ts-ignore\n`;
1618
+ code += `let ${(0, translator_1.indent)((state?.tabSize || 0) + 1)}`;
1619
+ code += yield* variable.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true }));
1620
+ code += ' = ';
1621
+ if (asserts.isBatchAssignment(assignment)) {
1622
+ yield* (0, time_slicing_1.wrapForEachToGenerator)(assignment.assignmentLines, function* warpForEachGenerator({ leftIndex, rightIndex }) {
1623
+ const leftCode = leftIndex.length === 1
1624
+ ? yield* assignment.left.expression.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true }))
1625
+ : yield* assignment.left.members[leftIndex[1]]?.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true })) ??
1626
+ (0, time_slicing_1.returnOrigin)('');
1627
+ if (leftCode === variable.name) {
1628
+ const rightNode = rightIndex.length === 1
1629
+ ? assignment.rights[rightIndex[0]]?.expression
1630
+ : assignment.rights[rightIndex[0]]?.members[rightIndex[1]];
1631
+ const rightCode = yield* rightNode?.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true })) ??
1632
+ (0, time_slicing_1.returnOrigin)('');
1633
+ code += yield* self.getRightCode(rightCode, assignment, rightNode);
1634
+ }
1635
+ });
1636
+ }
1637
+ else {
1638
+ let rightCode = '';
1639
+ // 因为右侧枚举要赋值就得new 一下;
1640
+ if (assignment.right &&
1641
+ asserts.isIdentifier(assignment.right) &&
1642
+ assignment.right.namespace &&
1643
+ assignment.right.namespace.endsWith('enums')) {
1644
+ rightCode += 'new ';
1645
+ }
1646
+ rightCode +=
1647
+ assignment.right && assignment.right.toEmbeddedTS
1648
+ ? yield* assignment.right.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true }))
1649
+ : '__RIGHT__';
1650
+ code += yield* self.getRightCode(rightCode, assignment, assignment.right);
1651
+ }
1652
+ code += ';\n';
1653
+ });
1654
+ /* 默认值草稿区 ---------------------------*/
1655
+ code += `${(0, translator_1.indent)((state?.tabSize || 0) + 1)}function __playground(){\n`;
1656
+ /* 参数的默认值是__IDENTIFIER__或者__IDENTIFIER__()时不赋默认值,但是需要ts翻译出来进行报错校验 */
1657
+ for (const node of IDENTIFIERMAP.values()) {
1658
+ code += `${(0, translator_1.indent)((state?.tabSize || 0) + 2)}`;
1659
+ code += yield* node.defaultValue.toEmbeddedTS((0, translator_1.shiftState)(state, code, { inline: true }));
1660
+ code += '; ';
1661
+ }
1662
+ code += '\n';
1663
+ code += `${(0, translator_1.indent)((state?.tabSize || 0) + 2)}return\n`;
1664
+ function* setPlaygroundCode(arr, name) {
1665
+ if (arr.length) {
1666
+ code += `${(0, translator_1.indent)((state?.tabSize || 0) + 1)}/* -----以下是 ${name} 的默认值草稿------ */\n`;
1667
+ }
1668
+ for (const item1 of arr) {
1669
+ for (const item of item1.defaultValue?.playground ?? []) {
1670
+ code += yield* item.toEmbeddedTS((0, translator_1.shiftState)(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1671
+ code += ';\n';
1672
+ }
1673
+ }
1674
+ }
1675
+ yield* setPlaygroundCode(self.variables, 'variables');
1676
+ yield* setPlaygroundCode(self.params, 'params');
1677
+ code += `${(0, translator_1.indent)((state?.tabSize || 0) + 1)}}\n`;
1678
+ return code;
1679
+ }
1680
+ /**
1681
+ * 转换成 VueOptions
1682
+ * @TODO 后面 template 可以优化成 render 函数
1683
+ */
1684
+ toVueOptions(options) {
1685
+ return {
1686
+ template: this.genVueTemplate(options),
1687
+ script: this.genScript(),
1688
+ };
1689
+ }
1690
+ genVueTemplate(options) {
1691
+ return this.elements?.map((element) => `${element?.toVue(options)}\n`).join('');
1692
+ }
1693
+ getViewBindEvents() {
1694
+ const bindEvents = [];
1695
+ // 页面上的绑定的事件
1696
+ this.bindEvents.forEach((bindEvent) => {
1697
+ bindEvents.push(bindEvent);
1698
+ });
1699
+ this.elements.forEach((item) => {
1700
+ utils.traverse((current) => {
1701
+ current.node.bindEvents.forEach((bindEvent) => {
1702
+ bindEvents.push(bindEvent);
1703
+ });
1704
+ }, { node: item });
1705
+ });
1706
+ return bindEvents;
1707
+ }
1708
+ // 获取页面上需要替换的表达式
1709
+ getViewExpressions() {
1710
+ const bindExpressions = [];
1711
+ this.elements.forEach((item) => {
1712
+ utils.traverse((current) => {
1713
+ const { node } = current;
1714
+ const playgroundNodePath = (node?.nodePath || '').split('.').find((nodePathNode) => {
1715
+ return nodePathNode.match(/(.+)\[.+\]/)?.[1] === 'playground';
1716
+ });
1717
+ if (!playgroundNodePath) {
1718
+ //// 处理三种情况
1719
+ //if (
1720
+ // ['BindAttribute', 'BindDirective', 'BindStyle'].includes(node.concept)
1721
+ // && node.needReplaceWithIdentifier
1722
+ //) {
1723
+ // bindExpressions.push(node);
1724
+ //}
1725
+ if (node?.concept === 'Match') {
1726
+ bindExpressions.push(node);
1727
+ }
1728
+ }
1729
+ }, {
1730
+ node: item,
1731
+ }, {
1732
+ mode: 'anyObject',
1733
+ depthFirst: true,
1734
+ excludedKeySet: new Set([
1735
+ 'bindEvents',
1736
+ 'parentNode',
1737
+ 'sourceMap',
1738
+ 'storageJSON',
1739
+ 'tsErrorDetail',
1740
+ 'NaslAnnotatedJSON',
1741
+ 'calledFrom',
1742
+ '_events',
1743
+ '_collectingList',
1744
+ '_historyList',
1745
+ ]),
1746
+ });
1747
+ });
1748
+ return bindExpressions;
1749
+ }
1750
+ /**
1751
+ * 生成 Vue 中需要的 JS 代码
1752
+ * @TODO 这一版先做成 componentOptions 式的,后面再美化
1753
+ */
1754
+ genScript() {
1755
+ const componentList = [];
1756
+ const componentListExtra = [];
1757
+ this.elementsAttrs(this.elements, componentList);
1758
+ this.elementsAttrsAll(this.elements, componentListExtra);
1759
+ const definition = {
1760
+ params: this.params,
1761
+ variables: this.variables,
1762
+ logics: this.logics,
1763
+ events: this.bindEvents,
1764
+ title: this.title,
1765
+ viewBindEvents: this.getViewBindEvents(),
1766
+ viewExpressions: this.getViewExpressions(),
1767
+ elements: componentList,
1768
+ elementsAll: componentListExtra,
1769
+ };
1770
+ let code = '';
1771
+ const keyboardEventMixinCode = `const keyboardEventMixin = {
1772
+ mounted() {
1773
+ document.addEventListener('keydown', this.onKeyDown);
1774
+ document.addEventListener('keyup', this.onKeyUp);
1775
+ },
1776
+ beforeDestory() {
1777
+ document.removeEventListener('keydown', this.onKeyDown);
1778
+ document.removeEventListener('keyup', this.onKeyUp);
1779
+ },
1780
+ methods: {
1781
+ async onKeyDown(e) {
1782
+ ${this.bindEvents
1783
+ .filter((event) => ['keydown'].includes(event.name))
1784
+ .map((event) => `await this.${event.view.name}_${event.name}(e);`)
1785
+ .join('\n')}
1786
+ },
1787
+ async onKeyUp(e) {
1788
+ ${this.bindEvents
1789
+ .filter((event) => ['keyup'].includes(event.name))
1790
+ .map((event) => `await this.${event.view.name}_${event.name}(e);`)
1791
+ .join('\n')}
1792
+ }
1793
+ }
1794
+ };\n`;
1795
+ code += keyboardEventMixinCode;
1796
+ code += 'export default {\n';
1797
+ code += 'mixins: [';
1798
+ const mixins = [];
1799
+ // 键盘事件mixin
1800
+ mixins.push('keyboardEventMixin');
1801
+ code += mixins.join(',');
1802
+ code += '],';
1803
+ code += (0, translator_2.default)(definition, this);
1804
+ code += '};\n';
1805
+ return code;
1806
+ }
1807
+ // 生成预览的模板
1808
+ genPreviewTemplate() {
1809
+ return `<template>
1810
+ <bs-${this.name}>
1811
+ ${this.slotElems.map((slotElem) => {
1812
+ const slotName = slotElem.name;
1813
+ return `<template #${slotName}></template>`;
1814
+ }).join('')}
1815
+ </bs-${this.name}>
1816
+ </template>`;
1817
+ }
1818
+ };
1819
+ /** 类名 */
1820
+ BusinessComponent.ConceptName = 'BusinessComponent';
1821
+ /** 继承链 */
1822
+ BusinessComponent.inheritanceChain = ['BaseNode'];
1823
+ __decorate([
1824
+ (0, decorators_1.property)('concept')
1825
+ ], BusinessComponent.prototype, "concept", void 0);
1826
+ __decorate([
1827
+ (0, decorators_1.property)()
1828
+ ], BusinessComponent.prototype, "name", void 0);
1829
+ __decorate([
1830
+ (0, decorators_1.property)()
1831
+ ], BusinessComponent.prototype, "title", void 0);
1832
+ __decorate([
1833
+ (0, decorators_1.property)()
1834
+ ], BusinessComponent.prototype, "description", void 0);
1835
+ __decorate([
1836
+ (0, decorators_1.property)({
1837
+ objectRef: 'Event',
1838
+ isArray: true,
1839
+ defaultValue: [],
1840
+ })
1841
+ ], BusinessComponent.prototype, "events", void 0);
1842
+ __decorate([
1843
+ (0, decorators_1.property)({
1844
+ objectRef: 'ParamWithGroup',
1845
+ isArray: true,
1846
+ defaultValue: [],
1847
+ })
1848
+ ], BusinessComponent.prototype, "params", void 0);
1849
+ __decorate([
1850
+ (0, decorators_1.property)({
1851
+ objectRef: 'Variable',
1852
+ isArray: true,
1853
+ defaultValue: [],
1854
+ })
1855
+ ], BusinessComponent.prototype, "variables", void 0);
1856
+ __decorate([
1857
+ (0, decorators_1.property)({
1858
+ objectRef: 'BindEvent',
1859
+ isArray: true,
1860
+ defaultValue: [],
1861
+ })
1862
+ ], BusinessComponent.prototype, "bindEvents", void 0);
1863
+ __decorate([
1864
+ (0, decorators_1.property)({
1865
+ objectRef: 'BusinessLogic',
1866
+ isArray: true,
1867
+ defaultValue: [],
1868
+ })
1869
+ ], BusinessComponent.prototype, "logics", void 0);
1870
+ __decorate([
1871
+ (0, decorators_1.property)({
1872
+ objectRef: 'ViewElement',
1873
+ isArray: true,
1874
+ defaultValue: [],
1875
+ })
1876
+ ], BusinessComponent.prototype, "elements", void 0);
1877
+ __decorate([
1878
+ (0, decorators_1.property)()
1879
+ ], BusinessComponent.prototype, "icon", void 0);
1880
+ __decorate([
1881
+ translator_1.withSourceMapGenerator
1882
+ ], BusinessComponent.prototype, "toEmbeddedTS", null);
1883
+ BusinessComponent = BusinessComponent_1 = __decorate([
1884
+ (0, decorators_1.concept)('业务组件')
1885
+ ], BusinessComponent);
1886
+ exports.BusinessComponent = BusinessComponent;
1887
+ exports.default = BusinessComponent;
1888
+ //================================================================================
1889
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
1890
+ // 自动生成的代码已结束。下面可以手动编写。
1891
+ //================================================================================
1892
+ //# sourceMappingURL=BusinessComponent__.js.map