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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (774) hide show
  1. package/out/automate/upgrader/2.20.js +1 -1
  2. package/out/automate/upgrader/2.20.js.map +1 -1
  3. package/out/bak/translator.js +11 -15
  4. package/out/bak/translator.js.map +1 -1
  5. package/out/breakpoint/generator/AfterStartNode.js +3 -1
  6. package/out/breakpoint/generator/AfterStartNode.js.map +1 -1
  7. package/out/breakpoint/generator/BeforeEndNode.js.map +1 -1
  8. package/out/breakpoint/generator/BreakpointNode.d.ts +1 -0
  9. package/out/breakpoint/generator/BreakpointNode.js +48 -15
  10. package/out/breakpoint/generator/BreakpointNode.js.map +1 -1
  11. package/out/breakpoint/generator/CallbackNode.d.ts +4 -0
  12. package/out/breakpoint/generator/CallbackNode.js +22 -0
  13. package/out/breakpoint/generator/CallbackNode.js.map +1 -0
  14. package/out/breakpoint/generator/FragmentNode.d.ts +4 -0
  15. package/out/breakpoint/generator/FragmentNode.js +18 -0
  16. package/out/breakpoint/generator/FragmentNode.js.map +1 -0
  17. package/out/breakpoint/generator/index.js +25 -4
  18. package/out/breakpoint/generator/index.js.map +1 -1
  19. package/out/breakpoint/shared/constants.d.ts +3 -0
  20. package/out/breakpoint/shared/constants.js +6 -1
  21. package/out/breakpoint/shared/constants.js.map +1 -1
  22. package/out/breakpoint/shared/operations.js.map +1 -1
  23. package/out/breakpoint/shared/socket.d.ts +1 -1
  24. package/out/breakpoint/shared/socket.js +36 -7
  25. package/out/breakpoint/shared/socket.js.map +1 -1
  26. package/out/breakpoint/shared/utils.d.ts +2 -0
  27. package/out/breakpoint/shared/utils.js +15 -2
  28. package/out/breakpoint/shared/utils.js.map +1 -1
  29. package/out/breakpoint/store/core.d.ts +48 -2
  30. package/out/breakpoint/store/core.js +58 -32
  31. package/out/breakpoint/store/core.js.map +1 -1
  32. package/out/breakpoint/store/dock.js +1 -1
  33. package/out/breakpoint/store/dock.js.map +1 -1
  34. package/out/common/BaseNode.d.ts +1 -1
  35. package/out/common/BaseNode.js +105 -51
  36. package/out/common/BaseNode.js.map +1 -1
  37. package/out/common/Command.d.ts +13 -2
  38. package/out/common/Command.js +37 -9
  39. package/out/common/Command.js.map +1 -1
  40. package/out/common/EventEmitter.js.map +1 -1
  41. package/out/common/Messager.d.ts +3 -3
  42. package/out/common/Messager.js +6 -7
  43. package/out/common/Messager.js.map +1 -1
  44. package/out/common/asyncFuncMap.js.map +1 -1
  45. package/out/concepts/Abort__.js +6 -5
  46. package/out/concepts/Abort__.js.map +1 -1
  47. package/out/concepts/Anchor__.d.ts +4 -3
  48. package/out/concepts/Anchor__.js +24 -7
  49. package/out/concepts/Anchor__.js.map +1 -1
  50. package/out/concepts/AnonymousFunction__.d.ts +22 -21
  51. package/out/concepts/AnonymousFunction__.js +48 -22
  52. package/out/concepts/AnonymousFunction__.js.map +1 -1
  53. package/out/concepts/App__.d.ts +421 -247
  54. package/out/concepts/App__.js +286 -54
  55. package/out/concepts/App__.js.map +1 -1
  56. package/out/concepts/Argument__.d.ts +4 -3
  57. package/out/concepts/Argument__.js +42 -11
  58. package/out/concepts/Argument__.js.map +1 -1
  59. package/out/concepts/Assignee__.d.ts +45 -45
  60. package/out/concepts/Assignee__.js +15 -15
  61. package/out/concepts/Assignee__.js.map +1 -1
  62. package/out/concepts/AssignmentLine__.js +6 -5
  63. package/out/concepts/AssignmentLine__.js.map +1 -1
  64. package/out/concepts/Assignment__.d.ts +7 -6
  65. package/out/concepts/Assignment__.js +40 -22
  66. package/out/concepts/Assignment__.js.map +1 -1
  67. package/out/concepts/Attribute__.d.ts +3 -3
  68. package/out/concepts/Attribute__.js +8 -7
  69. package/out/concepts/Attribute__.js.map +1 -1
  70. package/out/concepts/AuthInterface__.js +4 -3
  71. package/out/concepts/AuthInterface__.js.map +1 -1
  72. package/out/concepts/AuthLogicForCallInterface__.d.ts +15 -15
  73. package/out/concepts/AuthLogicForCallInterface__.js +46 -27
  74. package/out/concepts/AuthLogicForCallInterface__.js.map +1 -1
  75. package/out/concepts/AuthLogic__.js +27 -13
  76. package/out/concepts/AuthLogic__.js.map +1 -1
  77. package/out/concepts/BackendVariable__.d.ts +5 -5
  78. package/out/concepts/BackendVariable__.js +23 -26
  79. package/out/concepts/BackendVariable__.js.map +1 -1
  80. package/out/concepts/Backend__.d.ts +18 -18
  81. package/out/concepts/Backend__.js +13 -13
  82. package/out/concepts/Backend__.js.map +1 -1
  83. package/out/concepts/BatchAssignment__.d.ts +34 -33
  84. package/out/concepts/BatchAssignment__.js +83 -43
  85. package/out/concepts/BatchAssignment__.js.map +1 -1
  86. package/out/concepts/BinaryExpression__.d.ts +7 -6
  87. package/out/concepts/BinaryExpression__.js +60 -24
  88. package/out/concepts/BinaryExpression__.js.map +1 -1
  89. package/out/concepts/BindAttribute__.d.ts +37 -37
  90. package/out/concepts/BindAttribute__.js +101 -48
  91. package/out/concepts/BindAttribute__.js.map +1 -1
  92. package/out/concepts/BindDirective__.d.ts +13 -13
  93. package/out/concepts/BindDirective__.js +23 -21
  94. package/out/concepts/BindDirective__.js.map +1 -1
  95. package/out/concepts/BindEvent__.d.ts +28 -28
  96. package/out/concepts/BindEvent__.js +99 -48
  97. package/out/concepts/BindEvent__.js.map +1 -1
  98. package/out/concepts/BindStyle__.d.ts +14 -15
  99. package/out/concepts/BindStyle__.js +16 -16
  100. package/out/concepts/BindStyle__.js.map +1 -1
  101. package/out/concepts/BooleanLiteral__.d.ts +1 -0
  102. package/out/concepts/BooleanLiteral__.js +12 -5
  103. package/out/concepts/BooleanLiteral__.js.map +1 -1
  104. package/out/concepts/CallAuthInterface__.d.ts +15 -15
  105. package/out/concepts/CallAuthInterface__.js +23 -22
  106. package/out/concepts/CallAuthInterface__.js.map +1 -1
  107. package/out/concepts/CallConnector__.d.ts +11 -9
  108. package/out/concepts/CallConnector__.js +79 -36
  109. package/out/concepts/CallConnector__.js.map +1 -1
  110. package/out/concepts/CallFunction__.d.ts +17 -16
  111. package/out/concepts/CallFunction__.js +95 -63
  112. package/out/concepts/CallFunction__.js.map +1 -1
  113. package/out/concepts/CallInterface__.d.ts +9 -8
  114. package/out/concepts/CallInterface__.js +71 -30
  115. package/out/concepts/CallInterface__.js.map +1 -1
  116. package/out/concepts/CallLogic__.d.ts +20 -19
  117. package/out/concepts/CallLogic__.js +155 -52
  118. package/out/concepts/CallLogic__.js.map +1 -1
  119. package/out/concepts/CallQueryComponent__.d.ts +51 -51
  120. package/out/concepts/CallQueryComponent__.js +66 -63
  121. package/out/concepts/CallQueryComponent__.js.map +1 -1
  122. package/out/concepts/Comment__.d.ts +1 -0
  123. package/out/concepts/Comment__.js +13 -6
  124. package/out/concepts/Comment__.js.map +1 -1
  125. package/out/concepts/CompletionProperty__.d.ts +3 -3
  126. package/out/concepts/CompletionProperty__.js +8 -7
  127. package/out/concepts/CompletionProperty__.js.map +1 -1
  128. package/out/concepts/ConfigGroup__.d.ts +15 -15
  129. package/out/concepts/ConfigGroup__.js +9 -9
  130. package/out/concepts/ConfigGroup__.js.map +1 -1
  131. package/out/concepts/ConfigPropertyValue__.js +4 -3
  132. package/out/concepts/ConfigPropertyValue__.js.map +1 -1
  133. package/out/concepts/ConfigProperty__.d.ts +15 -15
  134. package/out/concepts/ConfigProperty__.js +10 -10
  135. package/out/concepts/ConfigProperty__.js.map +1 -1
  136. package/out/concepts/Configuration__.d.ts +15 -15
  137. package/out/concepts/Configuration__.js +9 -9
  138. package/out/concepts/Configuration__.js.map +1 -1
  139. package/out/concepts/Connection__.d.ts +166 -0
  140. package/out/concepts/Connection__.js +332 -0
  141. package/out/concepts/Connection__.js.map +1 -0
  142. package/out/concepts/ConnectorTrigger__.js +4 -3
  143. package/out/concepts/ConnectorTrigger__.js.map +1 -1
  144. package/out/concepts/Connector__.d.ts +66 -66
  145. package/out/concepts/Connector__.js +16 -15
  146. package/out/concepts/Connector__.js.map +1 -1
  147. package/out/concepts/Constant__.d.ts +3 -3
  148. package/out/concepts/Constant__.js +8 -7
  149. package/out/concepts/Constant__.js.map +1 -1
  150. package/out/concepts/DataElement__.d.ts +3 -3
  151. package/out/concepts/DataElement__.js +6 -5
  152. package/out/concepts/DataElement__.js.map +1 -1
  153. package/out/concepts/DataSource__.d.ts +15 -15
  154. package/out/concepts/DataSource__.js +55 -39
  155. package/out/concepts/DataSource__.js.map +1 -1
  156. package/out/concepts/DatabaseTypeAnnotation__.js +4 -3
  157. package/out/concepts/DatabaseTypeAnnotation__.js.map +1 -1
  158. package/out/concepts/Destination__.d.ts +12 -11
  159. package/out/concepts/Destination__.js +93 -36
  160. package/out/concepts/Destination__.js.map +1 -1
  161. package/out/concepts/End__.js +15 -13
  162. package/out/concepts/End__.js.map +1 -1
  163. package/out/concepts/EntityIndex__.d.ts +1 -1
  164. package/out/concepts/EntityIndex__.js +6 -5
  165. package/out/concepts/EntityIndex__.js.map +1 -1
  166. package/out/concepts/EntityProperty__.d.ts +8 -7
  167. package/out/concepts/EntityProperty__.js +39 -24
  168. package/out/concepts/EntityProperty__.js.map +1 -1
  169. package/out/concepts/Entity__.d.ts +31 -30
  170. package/out/concepts/Entity__.js +40 -16
  171. package/out/concepts/Entity__.js.map +1 -1
  172. package/out/concepts/EnumItem__.d.ts +1 -0
  173. package/out/concepts/EnumItem__.js +12 -5
  174. package/out/concepts/EnumItem__.js.map +1 -1
  175. package/out/concepts/Enum__.d.ts +9 -8
  176. package/out/concepts/Enum__.js +24 -11
  177. package/out/concepts/Enum__.js.map +1 -1
  178. package/out/concepts/Event__.d.ts +15 -15
  179. package/out/concepts/Event__.js +6 -5
  180. package/out/concepts/Event__.js.map +1 -1
  181. package/out/concepts/ExternalDestination__.d.ts +6 -6
  182. package/out/concepts/ExternalDestination__.js +12 -11
  183. package/out/concepts/ExternalDestination__.js.map +1 -1
  184. package/out/concepts/ForEachStatement__.d.ts +25 -24
  185. package/out/concepts/ForEachStatement__.js +101 -36
  186. package/out/concepts/ForEachStatement__.js.map +1 -1
  187. package/out/concepts/FrontendLibrary__.d.ts +30 -30
  188. package/out/concepts/FrontendLibrary__.js +12 -13
  189. package/out/concepts/FrontendLibrary__.js.map +1 -1
  190. package/out/concepts/FrontendVariable__.js +4 -3
  191. package/out/concepts/FrontendVariable__.js.map +1 -1
  192. package/out/concepts/Frontend__.d.ts +64 -65
  193. package/out/concepts/Frontend__.js +23 -27
  194. package/out/concepts/Frontend__.js.map +1 -1
  195. package/out/concepts/Function__.d.ts +64 -63
  196. package/out/concepts/Function__.js +49 -21
  197. package/out/concepts/Function__.js.map +1 -1
  198. package/out/concepts/Identifier__.js +37 -31
  199. package/out/concepts/Identifier__.js.map +1 -1
  200. package/out/concepts/IfStatement__.d.ts +20 -19
  201. package/out/concepts/IfStatement__.js +64 -34
  202. package/out/concepts/IfStatement__.js.map +1 -1
  203. package/out/concepts/Integration__.d.ts +3 -3
  204. package/out/concepts/Integration__.js +8 -7
  205. package/out/concepts/Integration__.js.map +1 -1
  206. package/out/concepts/InterfaceParam__.d.ts +3 -3
  207. package/out/concepts/InterfaceParam__.js +7 -6
  208. package/out/concepts/InterfaceParam__.js.map +1 -1
  209. package/out/concepts/Interface__.d.ts +33 -33
  210. package/out/concepts/Interface__.js +19 -20
  211. package/out/concepts/Interface__.js.map +1 -1
  212. package/out/concepts/JSBlock__.d.ts +1 -0
  213. package/out/concepts/JSBlock__.js +12 -5
  214. package/out/concepts/JSBlock__.js.map +1 -1
  215. package/out/concepts/JavaLogic__.js +10 -9
  216. package/out/concepts/JavaLogic__.js.map +1 -1
  217. package/out/concepts/LogicItem__.d.ts +6 -0
  218. package/out/concepts/LogicItem__.js +14 -5
  219. package/out/concepts/LogicItem__.js.map +1 -1
  220. package/out/concepts/Logic__.d.ts +80 -79
  221. package/out/concepts/Logic__.js +204 -58
  222. package/out/concepts/Logic__.js.map +1 -1
  223. package/out/concepts/MatchCase__.d.ts +39 -38
  224. package/out/concepts/MatchCase__.js +122 -37
  225. package/out/concepts/MatchCase__.js.map +1 -1
  226. package/out/concepts/Match__.d.ts +13 -11
  227. package/out/concepts/Match__.js +128 -60
  228. package/out/concepts/Match__.js.map +1 -1
  229. package/out/concepts/MemberExpression__.d.ts +7 -6
  230. package/out/concepts/MemberExpression__.js +52 -22
  231. package/out/concepts/MemberExpression__.js.map +1 -1
  232. package/out/concepts/MicroApp__.js +4 -3
  233. package/out/concepts/MicroApp__.js.map +1 -1
  234. package/out/concepts/Module__.d.ts +239 -155
  235. package/out/concepts/Module__.js +139 -33
  236. package/out/concepts/Module__.js.map +1 -1
  237. package/out/concepts/MsgTriggerEvent__.d.ts +15 -15
  238. package/out/concepts/MsgTriggerEvent__.js +6 -5
  239. package/out/concepts/MsgTriggerEvent__.js.map +1 -1
  240. package/out/concepts/MsgTriggerLauncher__.d.ts +23 -15
  241. package/out/concepts/MsgTriggerLauncher__.js +24 -5
  242. package/out/concepts/MsgTriggerLauncher__.js.map +1 -1
  243. package/out/concepts/Namespace__.d.ts +180 -180
  244. package/out/concepts/Namespace__.js +33 -34
  245. package/out/concepts/Namespace__.js.map +1 -1
  246. package/out/concepts/NewComposite__.d.ts +49 -48
  247. package/out/concepts/NewComposite__.js +164 -49
  248. package/out/concepts/NewComposite__.js.map +1 -1
  249. package/out/concepts/NewList__.d.ts +19 -18
  250. package/out/concepts/NewList__.js +29 -12
  251. package/out/concepts/NewList__.js.map +1 -1
  252. package/out/concepts/NewMap__.d.ts +34 -33
  253. package/out/concepts/NewMap__.js +81 -72
  254. package/out/concepts/NewMap__.js.map +1 -1
  255. package/out/concepts/New__.js +6 -5
  256. package/out/concepts/New__.js.map +1 -1
  257. package/out/concepts/NullLiteral__.js +6 -5
  258. package/out/concepts/NullLiteral__.js.map +1 -1
  259. package/out/concepts/NumericLiteral__.d.ts +4 -3
  260. package/out/concepts/NumericLiteral__.js +15 -8
  261. package/out/concepts/NumericLiteral__.js.map +1 -1
  262. package/out/concepts/OqlQueryComponent__.d.ts +4 -3
  263. package/out/concepts/OqlQueryComponent__.js +25 -16
  264. package/out/concepts/OqlQueryComponent__.js.map +1 -1
  265. package/out/concepts/OverriddenLogic__.d.ts +79 -79
  266. package/out/concepts/OverriddenLogic__.js +79 -58
  267. package/out/concepts/OverriddenLogic__.js.map +1 -1
  268. package/out/concepts/Param__.d.ts +6 -5
  269. package/out/concepts/Param__.js +66 -29
  270. package/out/concepts/Param__.js.map +1 -1
  271. package/out/concepts/Point__.js +4 -3
  272. package/out/concepts/Point__.js.map +1 -1
  273. package/out/concepts/ProcessComponent__.d.ts +30 -30
  274. package/out/concepts/ProcessComponent__.js +8 -7
  275. package/out/concepts/ProcessComponent__.js.map +1 -1
  276. package/out/concepts/ProcessElement__.d.ts +96 -96
  277. package/out/concepts/ProcessElement__.js +34 -34
  278. package/out/concepts/ProcessElement__.js.map +1 -1
  279. package/out/concepts/ProcessOutcome__.js +6 -5
  280. package/out/concepts/ProcessOutcome__.js.map +1 -1
  281. package/out/concepts/ProcessOutcomes__.js +6 -5
  282. package/out/concepts/ProcessOutcomes__.js.map +1 -1
  283. package/out/concepts/Process__.d.ts +75 -75
  284. package/out/concepts/Process__.js +33 -30
  285. package/out/concepts/Process__.js.map +1 -1
  286. package/out/concepts/QueryAggregateExpression__.d.ts +3 -3
  287. package/out/concepts/QueryAggregateExpression__.js +8 -7
  288. package/out/concepts/QueryAggregateExpression__.js.map +1 -1
  289. package/out/concepts/QueryFieldExpression__.js +7 -6
  290. package/out/concepts/QueryFieldExpression__.js.map +1 -1
  291. package/out/concepts/QueryFromExpression__.d.ts +8 -8
  292. package/out/concepts/QueryFromExpression__.js +8 -7
  293. package/out/concepts/QueryFromExpression__.js.map +1 -1
  294. package/out/concepts/QueryGroupByExpression__.d.ts +3 -3
  295. package/out/concepts/QueryGroupByExpression__.js +9 -10
  296. package/out/concepts/QueryGroupByExpression__.js.map +1 -1
  297. package/out/concepts/QueryJoinExpression__.d.ts +23 -23
  298. package/out/concepts/QueryJoinExpression__.js +11 -10
  299. package/out/concepts/QueryJoinExpression__.js.map +1 -1
  300. package/out/concepts/QueryLimitExpression__.d.ts +6 -6
  301. package/out/concepts/QueryLimitExpression__.js +9 -8
  302. package/out/concepts/QueryLimitExpression__.js.map +1 -1
  303. package/out/concepts/QueryOrderByExpression__.d.ts +6 -6
  304. package/out/concepts/QueryOrderByExpression__.js +9 -8
  305. package/out/concepts/QueryOrderByExpression__.js.map +1 -1
  306. package/out/concepts/QuerySelectExpression__.d.ts +30 -30
  307. package/out/concepts/QuerySelectExpression__.js +9 -8
  308. package/out/concepts/QuerySelectExpression__.js.map +1 -1
  309. package/out/concepts/Rect__.js +4 -3
  310. package/out/concepts/Rect__.js.map +1 -1
  311. package/out/concepts/Return__.d.ts +4 -3
  312. package/out/concepts/Return__.js +37 -18
  313. package/out/concepts/Return__.js.map +1 -1
  314. package/out/concepts/Role__.js +9 -9
  315. package/out/concepts/Role__.js.map +1 -1
  316. package/out/concepts/SelectMembers__.d.ts +18 -18
  317. package/out/concepts/SelectMembers__.js +10 -9
  318. package/out/concepts/SelectMembers__.js.map +1 -1
  319. package/out/concepts/Slot__.d.ts +3 -3
  320. package/out/concepts/Slot__.js +6 -5
  321. package/out/concepts/Slot__.js.map +1 -1
  322. package/out/concepts/SqlQueryComponent__.d.ts +4 -3
  323. package/out/concepts/SqlQueryComponent__.js +21 -12
  324. package/out/concepts/SqlQueryComponent__.js.map +1 -1
  325. package/out/concepts/Start__.js +6 -5
  326. package/out/concepts/Start__.js.map +1 -1
  327. package/out/concepts/StringInterpolation__.d.ts +16 -15
  328. package/out/concepts/StringInterpolation__.js +37 -14
  329. package/out/concepts/StringInterpolation__.js.map +1 -1
  330. package/out/concepts/StringLiteral__.d.ts +1 -0
  331. package/out/concepts/StringLiteral__.js +13 -8
  332. package/out/concepts/StringLiteral__.js.map +1 -1
  333. package/out/concepts/StructureProperty__.d.ts +4 -3
  334. package/out/concepts/StructureProperty__.js +22 -9
  335. package/out/concepts/StructureProperty__.js.map +1 -1
  336. package/out/concepts/Structure__.d.ts +31 -30
  337. package/out/concepts/Structure__.js +27 -15
  338. package/out/concepts/Structure__.js.map +1 -1
  339. package/out/concepts/SwitchCase__.d.ts +12 -11
  340. package/out/concepts/SwitchCase__.js +69 -31
  341. package/out/concepts/SwitchCase__.js.map +1 -1
  342. package/out/concepts/SwitchStatement__.d.ts +9 -8
  343. package/out/concepts/SwitchStatement__.js +27 -7
  344. package/out/concepts/SwitchStatement__.js.map +1 -1
  345. package/out/concepts/Theme__.js +4 -3
  346. package/out/concepts/Theme__.js.map +1 -1
  347. package/out/concepts/Transactional__.js +4 -3
  348. package/out/concepts/Transactional__.js.map +1 -1
  349. package/out/concepts/TriggerEvent__.d.ts +15 -15
  350. package/out/concepts/TriggerEvent__.js +6 -5
  351. package/out/concepts/TriggerEvent__.js.map +1 -1
  352. package/out/concepts/TriggerLauncher__.d.ts +15 -10
  353. package/out/concepts/TriggerLauncher__.js +54 -32
  354. package/out/concepts/TriggerLauncher__.js.map +1 -1
  355. package/out/concepts/TypeAnnotation__.d.ts +28 -27
  356. package/out/concepts/TypeAnnotation__.js +144 -124
  357. package/out/concepts/TypeAnnotation__.js.map +1 -1
  358. package/out/concepts/TypeParam__.d.ts +1 -0
  359. package/out/concepts/TypeParam__.js +12 -5
  360. package/out/concepts/TypeParam__.js.map +1 -1
  361. package/out/concepts/UnaryExpression__.d.ts +4 -3
  362. package/out/concepts/UnaryExpression__.js +31 -20
  363. package/out/concepts/UnaryExpression__.js.map +1 -1
  364. package/out/concepts/Unparsed__.d.ts +1 -0
  365. package/out/concepts/Unparsed__.js +12 -5
  366. package/out/concepts/Unparsed__.js.map +1 -1
  367. package/out/concepts/UseComponent__.js +4 -3
  368. package/out/concepts/UseComponent__.js.map +1 -1
  369. package/out/concepts/ValidationRule__.d.ts +14 -14
  370. package/out/concepts/ValidationRule__.js +19 -17
  371. package/out/concepts/ValidationRule__.js.map +1 -1
  372. package/out/concepts/Variable__.d.ts +4 -3
  373. package/out/concepts/Variable__.js +39 -23
  374. package/out/concepts/Variable__.js.map +1 -1
  375. package/out/concepts/ViewBlock__.js +4 -3
  376. package/out/concepts/ViewBlock__.js.map +1 -1
  377. package/out/concepts/ViewComponent__.d.ts +90 -90
  378. package/out/concepts/ViewComponent__.js +16 -15
  379. package/out/concepts/ViewComponent__.js.map +1 -1
  380. package/out/concepts/ViewElement__.d.ts +91 -86
  381. package/out/concepts/ViewElement__.js +218 -146
  382. package/out/concepts/ViewElement__.js.map +1 -1
  383. package/out/concepts/View__.d.ts +92 -92
  384. package/out/concepts/View__.js +135 -60
  385. package/out/concepts/View__.js.map +1 -1
  386. package/out/concepts/WhileStatement__.d.ts +12 -11
  387. package/out/concepts/WhileStatement__.js +46 -23
  388. package/out/concepts/WhileStatement__.js.map +1 -1
  389. package/out/concepts/index__.d.ts +2 -1
  390. package/out/concepts/index__.js +2 -1
  391. package/out/concepts/index__.js.map +1 -1
  392. package/out/concepts/types__.d.ts +2 -1
  393. package/out/decorators/index.d.ts +1 -1
  394. package/out/decorators/index.js +20 -7
  395. package/out/decorators/index.js.map +1 -1
  396. package/out/decorators/promise.d.ts +7 -0
  397. package/out/decorators/promise.js +28 -0
  398. package/out/decorators/promise.js.map +1 -0
  399. package/out/enums/KEYWORDS.js.map +1 -1
  400. package/out/enums/LEVEL_NAME_MAP.js.map +1 -1
  401. package/out/generator/compileComponent.js.map +1 -1
  402. package/out/generator/genBundleFiles.d.ts +4 -1
  403. package/out/generator/genBundleFiles.js +15 -11
  404. package/out/generator/genBundleFiles.js.map +1 -1
  405. package/out/generator/genHash.js.map +1 -1
  406. package/out/generator/genMetaData.js +12 -8
  407. package/out/generator/genMetaData.js.map +1 -1
  408. package/out/generator/genReleaseBody.js +33 -35
  409. package/out/generator/genReleaseBody.js.map +1 -1
  410. package/out/generator/microApp.js +2 -1
  411. package/out/generator/microApp.js.map +1 -1
  412. package/out/generator/permission.js +16 -14
  413. package/out/generator/permission.js.map +1 -1
  414. package/out/generator/styleReplacer.js +4 -7
  415. package/out/generator/styleReplacer.js.map +1 -1
  416. package/out/index.d.ts +0 -2
  417. package/out/index.js +0 -3
  418. package/out/index.js.map +1 -1
  419. package/out/manager/diagnostic.d.ts +1 -1
  420. package/out/manager/diagnostic.js.map +1 -1
  421. package/out/manager/stepRecorder.js +13 -9
  422. package/out/manager/stepRecorder.js.map +1 -1
  423. package/out/natural/RequirementAnalyzer.d.ts +22 -0
  424. package/out/natural/RequirementAnalyzer.js +196 -0
  425. package/out/natural/RequirementAnalyzer.js.map +1 -0
  426. package/out/natural/RequirementExecutor.d.ts +51 -0
  427. package/out/natural/RequirementExecutor.js +692 -0
  428. package/out/natural/RequirementExecutor.js.map +1 -0
  429. package/out/natural/componentData.d.ts +31 -0
  430. package/out/natural/componentData.js +85 -0
  431. package/out/natural/componentData.js.map +1 -0
  432. package/out/natural/genNaturalTS.d.ts +3 -0
  433. package/out/natural/genNaturalTS.js +76 -0
  434. package/out/natural/genNaturalTS.js.map +1 -0
  435. package/out/natural/index.d.ts +4 -0
  436. package/out/natural/index.js +21 -0
  437. package/out/natural/index.js.map +1 -0
  438. package/out/natural/knowledgeMap.d.ts +4 -0
  439. package/out/natural/knowledgeMap.js +40 -0
  440. package/out/natural/knowledgeMap.js.map +1 -0
  441. package/out/natural/naslStdlibMap.d.ts +2 -0
  442. package/out/natural/naslStdlibMap.js +26 -0
  443. package/out/natural/naslStdlibMap.js.map +1 -0
  444. package/out/natural/transformTSCode.d.ts +7 -0
  445. package/out/natural/transformTSCode.js +760 -0
  446. package/out/natural/transformTSCode.js.map +1 -0
  447. package/out/sentry/index.d.ts +2 -1
  448. package/out/sentry/index.js.map +1 -1
  449. package/out/server/createUiTs.js +28 -16
  450. package/out/server/createUiTs.js.map +1 -1
  451. package/out/server/entity2LogicNamespace.js +24 -22
  452. package/out/server/entity2LogicNamespace.js.map +1 -1
  453. package/out/server/event.js.map +1 -1
  454. package/out/server/extendBaseNode.js +55 -70
  455. package/out/server/extendBaseNode.js.map +1 -1
  456. package/out/server/formatTsUtils.js +46 -50
  457. package/out/server/formatTsUtils.js.map +1 -1
  458. package/out/server/getConnector.d.ts +3 -3
  459. package/out/server/getConnector.js +7 -8
  460. package/out/server/getConnector.js.map +1 -1
  461. package/out/server/getExtensionModules.js +2 -2
  462. package/out/server/getExtensionModules.js.map +1 -1
  463. package/out/server/getFunctions.js.map +1 -1
  464. package/out/server/getInterfaces.js.map +1 -1
  465. package/out/server/getLogging.js.map +1 -1
  466. package/out/server/getLogics.d.ts +1 -1
  467. package/out/server/getLogics.js +34 -16
  468. package/out/server/getLogics.js.map +1 -1
  469. package/out/server/getMemberIdentifier.js +13 -10
  470. package/out/server/getMemberIdentifier.js.map +1 -1
  471. package/out/server/getProcessComponents.js.map +1 -1
  472. package/out/server/getProcesses.js +21 -29
  473. package/out/server/getProcesses.js.map +1 -1
  474. package/out/server/getScope.js.map +1 -1
  475. package/out/server/getValidates.js.map +1 -1
  476. package/out/server/index.js +0 -1
  477. package/out/server/index.js.map +1 -1
  478. package/out/server/naslServer.d.ts +99 -94
  479. package/out/server/naslServer.js +485 -465
  480. package/out/server/naslServer.js.map +1 -1
  481. package/out/server/naslStdlibMap.js +4 -2
  482. package/out/server/naslStdlibMap.js.map +1 -1
  483. package/out/server/process2LogicNamespace.js.map +1 -1
  484. package/out/server/translator.d.ts +1 -1
  485. package/out/server/translator.js +52 -47
  486. package/out/server/translator.js.map +1 -1
  487. package/out/service/storage/init.d.ts +15 -1
  488. package/out/service/storage/init.js +65 -56
  489. package/out/service/storage/init.js.map +1 -1
  490. package/out/templator/genCallComponentLogic.js +1 -2
  491. package/out/templator/genCallComponentLogic.js.map +1 -1
  492. package/out/templator/genCreateBlock.js +13 -8
  493. package/out/templator/genCreateBlock.js.map +1 -1
  494. package/out/templator/genCurdEditMultipleKeyBlock.js +19 -10
  495. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  496. package/out/templator/genCurdMultipleKeyBlock.js +22 -26
  497. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  498. package/out/templator/genEditTableBlock.js +11 -12
  499. package/out/templator/genEditTableBlock.js.map +1 -1
  500. package/out/templator/genEnumSelectBlock.js +1 -1
  501. package/out/templator/genEnumSelectBlock.js.map +1 -1
  502. package/out/templator/genGetBlock.js +2 -2
  503. package/out/templator/genGetBlock.js.map +1 -1
  504. package/out/templator/genGridViewBlock.js +10 -14
  505. package/out/templator/genGridViewBlock.js.map +1 -1
  506. package/out/templator/genListViewBlock.js +4 -7
  507. package/out/templator/genListViewBlock.js.map +1 -1
  508. package/out/templator/genQueryComponent.js +22 -15
  509. package/out/templator/genQueryComponent.js.map +1 -1
  510. package/out/templator/genSelectBlock.js +12 -33
  511. package/out/templator/genSelectBlock.js.map +1 -1
  512. package/out/templator/genTableBlock.js +8 -10
  513. package/out/templator/genTableBlock.js.map +1 -1
  514. package/out/templator/genUpdateBlock.js +12 -7
  515. package/out/templator/genUpdateBlock.js.map +1 -1
  516. package/out/templator/index.d.ts +4 -2
  517. package/out/templator/index.js +2 -2
  518. package/out/templator/index.js.map +1 -1
  519. package/out/templator/utils.d.ts +2 -2
  520. package/out/templator/utils.js +21 -22
  521. package/out/templator/utils.js.map +1 -1
  522. package/out/translator/index.js +27 -28
  523. package/out/translator/index.js.map +1 -1
  524. package/out/utils/index.d.ts +2 -1
  525. package/out/utils/index.js +8 -14
  526. package/out/utils/index.js.map +1 -1
  527. package/out/utils/logger.js.map +1 -1
  528. package/out/utils/sortTsString.js +3 -1
  529. package/out/utils/sortTsString.js.map +1 -1
  530. package/out/utils/string.js +8 -11
  531. package/out/utils/string.js.map +1 -1
  532. package/out/utils/time-slicing.d.ts +41 -0
  533. package/out/utils/time-slicing.js +81 -0
  534. package/out/utils/time-slicing.js.map +1 -0
  535. package/out/utils/traverse.js +4 -6
  536. package/out/utils/traverse.js.map +1 -1
  537. package/package.json +11 -7
  538. package/sandbox/stdlib/nasl.auth.ts +49 -46
  539. package/sandbox/stdlib/nasl.http.ts +29 -31
  540. package/sandbox/stdlib/nasl.ui.definition.ts +13 -1
  541. package/sandbox-natural/stdlib/nasl.core.ts +36 -0
  542. package/sandbox-natural/stdlib/nasl.oql.ts +8 -0
  543. package/sandbox-natural/stdlib/nasl.ui.ts +56 -0
  544. package/sandbox-natural/stdlib/nasl.util.ts +26 -0
  545. package/sandbox-natural/tsconfig.json +12 -0
  546. package/src/automate/upgrader/2.20.js +1 -1
  547. package/src/bak/translator.js +92 -99
  548. package/src/breakpoint/generator/AfterStartNode.ts +19 -17
  549. package/src/breakpoint/generator/BeforeEndNode.ts +17 -17
  550. package/src/breakpoint/generator/BreakpointNode.ts +243 -195
  551. package/src/breakpoint/generator/CallbackNode.ts +20 -0
  552. package/src/breakpoint/generator/FragmentNode.ts +14 -0
  553. package/src/breakpoint/generator/index.ts +107 -80
  554. package/src/breakpoint/shared/constants.ts +59 -53
  555. package/src/breakpoint/shared/operations.ts +6 -6
  556. package/src/breakpoint/shared/socket.ts +277 -223
  557. package/src/breakpoint/shared/utils.ts +166 -146
  558. package/src/breakpoint/store/core.ts +326 -297
  559. package/src/breakpoint/store/dock.ts +103 -103
  560. package/src/breakpoint/types/index.d.ts +11 -11
  561. package/src/common/BaseNode.ts +1102 -1024
  562. package/src/common/Command.ts +46 -16
  563. package/src/common/ComponentAPI.ts +72 -72
  564. package/src/common/EventEmitter.ts +80 -76
  565. package/src/common/Messager.ts +223 -224
  566. package/src/common/asyncFuncMap.ts +12 -12
  567. package/src/concepts/Abort__.ts +53 -60
  568. package/src/concepts/Anchor__.ts +158 -149
  569. package/src/concepts/AnonymousFunction__.ts +584 -551
  570. package/src/concepts/App__.ts +4278 -3671
  571. package/src/concepts/Argument__.ts +234 -210
  572. package/src/concepts/Assignee__.ts +680 -656
  573. package/src/concepts/AssignmentLine__.ts +80 -84
  574. package/src/concepts/Assignment__.ts +275 -264
  575. package/src/concepts/Attribute__.ts +183 -184
  576. package/src/concepts/AuthInterface__.ts +61 -63
  577. package/src/concepts/AuthLogicForCallInterface__.ts +540 -511
  578. package/src/concepts/AuthLogic__.ts +210 -194
  579. package/src/concepts/BackendVariable__.ts +414 -415
  580. package/src/concepts/Backend__.ts +317 -303
  581. package/src/concepts/BatchAssignment__.ts +987 -939
  582. package/src/concepts/BinaryExpression__.ts +370 -341
  583. package/src/concepts/BindAttribute__.ts +1057 -1007
  584. package/src/concepts/BindDirective__.ts +540 -542
  585. package/src/concepts/BindEvent__.ts +992 -911
  586. package/src/concepts/BindStyle__.ts +442 -451
  587. package/src/concepts/BooleanLiteral__.ts +89 -90
  588. package/src/concepts/CallAuthInterface__.ts +458 -433
  589. package/src/concepts/CallConnector__.ts +209 -164
  590. package/src/concepts/CallFunction__.ts +600 -600
  591. package/src/concepts/CallInterface__.ts +752 -721
  592. package/src/concepts/CallLogic__.ts +1324 -1200
  593. package/src/concepts/CallQueryComponent__.ts +1580 -1501
  594. package/src/concepts/Comment__.ts +69 -68
  595. package/src/concepts/CompletionProperty__.ts +250 -255
  596. package/src/concepts/ConfigGroup__.ts +312 -296
  597. package/src/concepts/ConfigPropertyValue__.ts +92 -93
  598. package/src/concepts/ConfigProperty__.ts +374 -357
  599. package/src/concepts/Configuration__.ts +288 -276
  600. package/src/concepts/Connection__.ts +426 -0
  601. package/src/concepts/ConnectorTrigger__.ts +146 -142
  602. package/src/concepts/Connector__.ts +1090 -1048
  603. package/src/concepts/Constant__.ts +226 -219
  604. package/src/concepts/DataElement__.ts +108 -115
  605. package/src/concepts/DataSource__.ts +508 -472
  606. package/src/concepts/DatabaseTypeAnnotation__.ts +53 -59
  607. package/src/concepts/Destination__.ts +808 -746
  608. package/src/concepts/End__.ts +85 -89
  609. package/src/concepts/EntityIndex__.ts +206 -202
  610. package/src/concepts/EntityProperty__.ts +825 -791
  611. package/src/concepts/Entity__.ts +921 -864
  612. package/src/concepts/EnumItem__.ts +133 -125
  613. package/src/concepts/Enum__.ts +347 -337
  614. package/src/concepts/Event__.ts +305 -292
  615. package/src/concepts/ExternalDestination__.ts +269 -280
  616. package/src/concepts/ForEachStatement__.ts +583 -531
  617. package/src/concepts/FrontendLibrary__.ts +507 -485
  618. package/src/concepts/FrontendVariable__.ts +44 -49
  619. package/src/concepts/Frontend__.ts +1239 -1187
  620. package/src/concepts/Function__.ts +1110 -1045
  621. package/src/concepts/Identifier__.ts +276 -272
  622. package/src/concepts/IfStatement__.ts +467 -436
  623. package/src/concepts/Integration__.ts +136 -137
  624. package/src/concepts/InterfaceParam__.ts +239 -238
  625. package/src/concepts/Interface__.ts +969 -948
  626. package/src/concepts/JSBlock__.ts +83 -83
  627. package/src/concepts/JavaLogic__.ts +101 -106
  628. package/src/concepts/LogicItem__.ts +307 -237
  629. package/src/concepts/Logic__.ts +2301 -2088
  630. package/src/concepts/MatchCase__.ts +886 -779
  631. package/src/concepts/Match__.ts +728 -659
  632. package/src/concepts/MemberExpression__.ts +330 -311
  633. package/src/concepts/MicroApp__.ts +91 -97
  634. package/src/concepts/Module__.ts +2590 -2278
  635. package/src/concepts/MsgTriggerEvent__.ts +297 -281
  636. package/src/concepts/MsgTriggerLauncher__.ts +286 -256
  637. package/src/concepts/Namespace__.ts +2579 -2466
  638. package/src/concepts/NewComposite__.ts +1487 -1350
  639. package/src/concepts/NewList__.ts +464 -450
  640. package/src/concepts/NewMap__.ts +691 -674
  641. package/src/concepts/New__.ts +42 -49
  642. package/src/concepts/NullLiteral__.ts +66 -72
  643. package/src/concepts/NumericLiteral__.ts +169 -169
  644. package/src/concepts/OqlQueryComponent__.ts +282 -279
  645. package/src/concepts/OverriddenLogic__.ts +2142 -2097
  646. package/src/concepts/Param__.ts +500 -442
  647. package/src/concepts/Point__.ts +53 -59
  648. package/src/concepts/ProcessComponent__.ts +497 -475
  649. package/src/concepts/ProcessElement__.ts +1852 -1780
  650. package/src/concepts/ProcessOutcome__.ts +59 -64
  651. package/src/concepts/ProcessOutcomes__.ts +59 -64
  652. package/src/concepts/Process__.ts +1491 -1428
  653. package/src/concepts/QueryAggregateExpression__.ts +135 -142
  654. package/src/concepts/QueryFieldExpression__.ts +138 -142
  655. package/src/concepts/QueryFromExpression__.ts +246 -254
  656. package/src/concepts/QueryGroupByExpression__.ts +130 -136
  657. package/src/concepts/QueryJoinExpression__.ts +441 -438
  658. package/src/concepts/QueryLimitExpression__.ts +159 -166
  659. package/src/concepts/QueryOrderByExpression__.ts +173 -180
  660. package/src/concepts/QuerySelectExpression__.ts +464 -439
  661. package/src/concepts/Rect__.ts +73 -79
  662. package/src/concepts/Return__.ts +366 -345
  663. package/src/concepts/Role__.ts +146 -147
  664. package/src/concepts/SelectMembers__.ts +358 -350
  665. package/src/concepts/Slot__.ts +152 -153
  666. package/src/concepts/SqlQueryComponent__.ts +230 -228
  667. package/src/concepts/Start__.ts +45 -52
  668. package/src/concepts/StringInterpolation__.ts +323 -296
  669. package/src/concepts/StringLiteral__.ts +113 -115
  670. package/src/concepts/StructureProperty__.ts +306 -295
  671. package/src/concepts/Structure__.ts +615 -578
  672. package/src/concepts/SwitchCase__.ts +326 -290
  673. package/src/concepts/SwitchStatement__.ts +236 -229
  674. package/src/concepts/Theme__.ts +64 -68
  675. package/src/concepts/Transactional__.ts +159 -153
  676. package/src/concepts/TriggerEvent__.ts +285 -274
  677. package/src/concepts/TriggerLauncher__.ts +232 -196
  678. package/src/concepts/TypeAnnotation__.ts +1049 -1011
  679. package/src/concepts/TypeParam__.ts +48 -50
  680. package/src/concepts/UnaryExpression__.ts +163 -153
  681. package/src/concepts/Unparsed__.ts +81 -82
  682. package/src/concepts/UseComponent__.ts +53 -59
  683. package/src/concepts/ValidationRule__.ts +524 -544
  684. package/src/concepts/Variable__.ts +419 -397
  685. package/src/concepts/ViewBlock__.ts +58 -64
  686. package/src/concepts/ViewComponent__.ts +1323 -1261
  687. package/src/concepts/ViewElement__.ts +2538 -2350
  688. package/src/concepts/View__.ts +2447 -2268
  689. package/src/concepts/WhileStatement__.ts +293 -272
  690. package/src/concepts/index__.ts +2 -1
  691. package/src/concepts/types__.ts +123 -121
  692. package/src/decorators/index.ts +75 -77
  693. package/src/decorators/promise.ts +28 -0
  694. package/src/enums/KEYWORDS.ts +1228 -1228
  695. package/src/enums/LEVEL_NAME_MAP.ts +24 -24
  696. package/src/generator/compileComponent.ts +10 -10
  697. package/src/generator/genBundleFiles.ts +300 -291
  698. package/src/generator/genHash.ts +2 -2
  699. package/src/generator/genMetaData.ts +280 -261
  700. package/src/generator/genReleaseBody.ts +312 -291
  701. package/src/generator/icestark.ts +1 -1
  702. package/src/generator/microApp.ts +17 -20
  703. package/src/generator/permission.ts +227 -218
  704. package/src/generator/qiankun.ts +1 -1
  705. package/src/generator/styleReplacer.ts +28 -31
  706. package/src/index.ts +0 -3
  707. package/src/manager/diagnostic.ts +84 -82
  708. package/src/manager/stepRecorder.ts +106 -94
  709. package/src/natural/RequirementAnalyzer.ts +208 -0
  710. package/src/natural/RequirementExecutor.ts +685 -0
  711. package/src/natural/componentData.ts +81 -0
  712. package/src/natural/genNaturalTS.ts +77 -0
  713. package/src/natural/index.ts +4 -0
  714. package/src/natural/knowledgeMap.ts +39 -0
  715. package/src/natural/naslStdlibMap.ts +24 -0
  716. package/src/natural/transformTSCode.ts +692 -0
  717. package/src/sentry/index.ts +109 -104
  718. package/src/server/createUiTs.ts +190 -184
  719. package/src/server/entity2LogicNamespace.ts +379 -359
  720. package/src/server/event.js +145 -145
  721. package/src/server/extendBaseNode.ts +461 -456
  722. package/src/server/formatTsUtils.ts +712 -713
  723. package/src/server/getConnector.ts +33 -33
  724. package/src/server/getExtensionModules.ts +23 -22
  725. package/src/server/getFunctions.ts +6 -6
  726. package/src/server/getInterfaces.ts +38 -37
  727. package/src/server/getLogging.ts +1 -1
  728. package/src/server/getLogics.ts +390 -344
  729. package/src/server/getMemberIdentifier.ts +286 -281
  730. package/src/server/getProcessComponents.ts +2 -2
  731. package/src/server/getProcesses.ts +548 -534
  732. package/src/server/getScope.ts +51 -51
  733. package/src/server/getValidates.ts +3 -3
  734. package/src/server/index.ts +29 -30
  735. package/src/server/naslServer.ts +4302 -4225
  736. package/src/server/naslStdlibMap.ts +43 -41
  737. package/src/server/process2LogicNamespace.ts +97 -97
  738. package/src/server/translator.ts +740 -746
  739. package/src/service/storage/init.ts +761 -728
  740. package/src/templator/genCallComponentLogic.ts +14 -15
  741. package/src/templator/genCreateBlock.ts +257 -229
  742. package/src/templator/genCurdEditMultipleKeyBlock.ts +332 -316
  743. package/src/templator/genCurdMultipleKeyBlock.ts +501 -473
  744. package/src/templator/genEditTableBlock.ts +192 -182
  745. package/src/templator/genEnumSelectBlock.ts +13 -7
  746. package/src/templator/genGetBlock.ts +57 -55
  747. package/src/templator/genGridViewBlock.ts +191 -201
  748. package/src/templator/genListViewBlock.ts +59 -64
  749. package/src/templator/genQueryComponent.ts +337 -287
  750. package/src/templator/genSelectBlock.ts +276 -285
  751. package/src/templator/genTableBlock.ts +157 -160
  752. package/src/templator/genUpdateBlock.ts +269 -255
  753. package/src/templator/index.ts +4 -4
  754. package/src/templator/utils.ts +490 -464
  755. package/src/translator/index.ts +84 -84
  756. package/src/translator/lsp.ts +22 -22
  757. package/src/translator/tsp.ts +6 -6
  758. package/src/utils/index.ts +115 -117
  759. package/src/utils/logger.ts +3 -4
  760. package/src/utils/sortTsString.ts +34 -32
  761. package/src/utils/string.ts +47 -48
  762. package/src/utils/time-slicing.ts +109 -0
  763. package/src/utils/traverse.ts +114 -126
  764. package/test/concepts/match/__snapshots__/toEmbeddedTS.spec.ts.snap +66 -0
  765. package/test/concepts/match/__snapshots__/toJS.spec.ts.snap +40 -0
  766. package/test/concepts/match/constant.ts +5 -0
  767. package/test/concepts/match/fixtures/isExpression.json +259 -0
  768. package/test/concepts/match/fixtures/lastBodyIf.json +268 -0
  769. package/test/concepts/match/fixtures/noExpression.json +176 -0
  770. package/test/concepts/match/toEmbeddedTS.spec.ts +14 -0
  771. package/test/concepts/match/toJS.spec.ts +14 -0
  772. package/test/setup.ts +2 -1
  773. package/ts-worker/src/index.js +0 -2
  774. package/tsconfig.json +21 -21
@@ -1,26 +1,25 @@
1
+ import { v4 as uuidv4 } from 'uuid';
1
2
  import LogicItem from './LogicItem__';
2
3
  import Namespace from './Namespace__';
3
4
  import { TranslatorState, shiftState, withSourceMap, indent, createCompilerState } from '../translator';
4
- import { ElementToVueOptions } from './ViewElement__';
5
+ import ViewElement, { ElementToVueOptions } from './ViewElement__';
5
6
  import { elementsEventsMap } from '../server/createUiTs';
6
7
  import Param from './Param__';
7
8
  import TypeAnnotation from './TypeAnnotation__';
8
9
  import Process from './Process__';
9
10
 
10
- //================================================================================
11
+ //= ===============================================================================
11
12
  // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
12
13
  // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
13
- //================================================================================
14
+ //= ===============================================================================
14
15
  import { EventPayload, Params } from '../common/EventEmitter';
15
16
  import { concept, excludedInJSON, property } from '../decorators';
16
17
 
17
18
  import * as utils from '../utils';
18
- import { v4 as uuidv4 } from 'uuid';
19
19
  import BaseNode from '../common/BaseNode';
20
20
  import classMap from '../common/classMap';
21
21
  import Logic from './Logic__';
22
22
  import Argument from './Argument__';
23
- import ViewElement from './ViewElement__';
24
23
  import View from './View__';
25
24
  import Module from './Module__';
26
25
  import App from './App__';
@@ -31,967 +30,1049 @@ import Frontend from './Frontend__';
31
30
  */
32
31
  @concept('元素绑定事件')
33
32
  export class BindEvent extends BaseNode {
34
- /**
35
- * 产品概念
36
- */
37
- @property()
38
- concept: 'BindEvent' = 'BindEvent';
39
-
40
- /**
41
- * 元素绑定事件名称
42
- */
43
- @property()
44
- name: string = undefined;
45
-
46
- /**
47
- * 逻辑列表
48
- */
49
- @property('Logic')
50
- logics: Array<Logic> = [];
51
-
52
- /**
53
- * calleeNamespace
54
- */
55
- @property()
56
- calleeNamespace: string = undefined;
57
-
58
- /**
59
- * calleeName
60
- */
61
- @property()
62
- calleeName: string = undefined;
63
-
64
- /**
65
- * 实际参数
66
- */
67
- @property('Argument')
68
- arguments: Array<Argument> = [];
69
-
70
- /**
71
- * 祖先 ViewElement
72
- */
73
- get element() {
74
- return this.getAncestor('ViewElement') as ViewElement;
33
+ /**
34
+ * 产品概念
35
+ */
36
+ @property()
37
+ concept: 'BindEvent' = 'BindEvent';
38
+
39
+ /**
40
+ * 元素绑定事件名称
41
+ */
42
+ @property()
43
+ name: string = undefined;
44
+
45
+ /**
46
+ * 逻辑列表
47
+ */
48
+ @property('Logic')
49
+ logics: Array<Logic> = [];
50
+
51
+ /**
52
+ * calleeNamespace
53
+ */
54
+ @property()
55
+ calleeNamespace: string = undefined;
56
+
57
+ /**
58
+ * calleeName
59
+ */
60
+ @property()
61
+ calleeName: string = undefined;
62
+
63
+ /**
64
+ * 实际参数
65
+ */
66
+ @property('Argument')
67
+ arguments: Array<Argument> = [];
68
+
69
+ /**
70
+ * 祖先 ViewElement
71
+ */
72
+ get element() {
73
+ return this.getAncestor('ViewElement') as ViewElement;
74
+ }
75
+
76
+ /**
77
+ * 祖先 View
78
+ */
79
+ get view() {
80
+ return this.getAncestor('View') as View;
81
+ }
82
+
83
+ /**
84
+ * 祖先 Module
85
+ */
86
+ get module() {
87
+ return this.getAncestor('Module') as Module;
88
+ }
89
+
90
+ /**
91
+ * 祖先 App
92
+ */
93
+ get app() {
94
+ return this.getAncestor('App') as App;
95
+ }
96
+
97
+ /**
98
+ * 祖先 Frontend
99
+ */
100
+ get frontend() {
101
+ return this.getAncestor('Frontend') as Frontend;
102
+ }
103
+
104
+ /**
105
+ * @param source 需要合并的部分参数
106
+ */
107
+ constructor(source?: Partial<BindEvent>) {
108
+ // @ts-ignore
109
+ source = { ...BindEvent.getDefaultOptions(), ...source };
110
+ super(source);
111
+ super.subConstructor(source);
112
+ }
113
+
114
+ getClassName() {
115
+ return 'BindEvent';
116
+ }
117
+
118
+ static from(source: any, parentNode?: any, parentKey?: string): BindEvent {
119
+ return super.from(source, parentNode, parentKey) as BindEvent;
120
+ }
121
+
122
+ /**
123
+ * 从父级删除该节点
124
+ * @internal
125
+ */
126
+ _delete() {
127
+ let params: Params = null;
128
+ if (this.parentNode) {
129
+ params = (this.parentNode as any)?.__removeBindEvent?.(this);
75
130
  }
76
- /**
77
- * 祖先 View
78
- */
79
- get view() {
80
- return this.getAncestor('View') as View;
131
+ return params;
132
+ }
133
+
134
+ /**
135
+ * 设置元素绑定事件名称
136
+ */
137
+ setName(name: string) {
138
+ const object = {
139
+ name,
140
+ };
141
+ this.update({
142
+ ...object,
143
+ field: 'name',
144
+ });
145
+ }
146
+
147
+ /**
148
+ * 设置calleeNamespace
149
+ */
150
+ setCalleeNamespace(calleeNamespace: string) {
151
+ const object = {
152
+ calleeNamespace,
153
+ };
154
+ this.update({
155
+ ...object,
156
+ });
157
+ }
158
+
159
+ /**
160
+ * 设置calleeName
161
+ */
162
+ setCalleeName(calleeName: string) {
163
+ const object = {
164
+ calleeName,
165
+ };
166
+ this.update({
167
+ ...object,
168
+ });
169
+ }
170
+
171
+ getLogicExistingNames(excludedList: Array<Logic> = []) {
172
+ const excludedSet = new Set(excludedList);
173
+ return ((this.logics as Logic[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
174
+ }
175
+
176
+ getLogicUniqueName(name = 'logic1') {
177
+ return utils.unique(name, this.getLogicExistingNames(), undefined, true);
178
+ }
179
+
180
+ /**
181
+ * 插入逻辑
182
+ * @internal
183
+ * @param name 逻辑名称,如果不填会自动生成一个唯一名称
184
+ */
185
+ _insertLogicAt(name: string, index: number): Logic;
186
+
187
+ /**
188
+ * 插入逻辑
189
+ * @internal
190
+ * @param logicOptions 逻辑参数
191
+ */
192
+ _insertLogicAt(logicOptions: Partial<Logic>, index: number): Logic;
193
+
194
+ /**
195
+ * 插入逻辑
196
+ * @internal
197
+ * @param logic 已有的逻辑实例
198
+ */
199
+ _insertLogicAt(logic: Logic, index: number): Logic;
200
+
201
+ _insertLogicAt(options: string | Partial<Logic> | Logic, index: number) {
202
+ const logicOptions: any = {};
203
+ const relationOptions = { parentNode: this, parentKey: 'logics' };
204
+ let logic: Logic;
205
+ if (!options) {
206
+ logic = Logic.from(
207
+ {
208
+ ...logicOptions,
209
+ name: this.getLogicUniqueName(),
210
+ },
211
+ this,
212
+ 'logics'
213
+ );
214
+ } else if (typeof options === 'string') {
215
+ logic = Logic.from(
216
+ {
217
+ ...logicOptions,
218
+ name: options,
219
+ },
220
+ this,
221
+ 'logics'
222
+ );
223
+ } else if (options instanceof Logic) {
224
+ options.ensureDelete(); // 同一实例不支持多处存在
225
+ logic = options;
226
+ Object.assign(logic, relationOptions);
227
+ } else {
228
+ logic = Logic.from(
229
+ {
230
+ ...logicOptions,
231
+ ...options,
232
+ },
233
+ this,
234
+ 'logics'
235
+ );
81
236
  }
82
- /**
83
- * 祖先 Module
84
- */
85
- get module() {
86
- return this.getAncestor('Module') as Module;
237
+ this.logics.splice(index, 0, logic);
238
+ return logic;
239
+ }
240
+
241
+ /**
242
+ * 插入逻辑
243
+ * @param name 逻辑名称,如果不填会自动生成一个唯一名称
244
+ */
245
+ insertLogicAt(name: string, index: number): Logic;
246
+
247
+ /**
248
+ * 插入逻辑
249
+ * @param logicOptions 逻辑参数
250
+ */
251
+ insertLogicAt(logicOptions: Partial<Logic>, index: number): Logic;
252
+
253
+ /**
254
+ * 插入逻辑
255
+ * @param logic 已有的逻辑实例
256
+ */
257
+ insertLogicAt(logic: Logic, index: number): Logic;
258
+
259
+ insertLogicAt(options: string | Partial<Logic> | Logic, index: number) {
260
+ const node = this._insertLogicAt(options as any, index);
261
+ node.create({
262
+ index,
263
+ parentNode: this,
264
+ parentKey: 'logics',
265
+ });
266
+ return node;
267
+ }
268
+
269
+ /**
270
+ * 添加逻辑
271
+ * @internal
272
+ * @param name 逻辑名称,如果不填会自动生成一个唯一名称
273
+ */
274
+ _addLogic(name?: string): Logic;
275
+
276
+ /**
277
+ * 添加逻辑
278
+ * @internal
279
+ * @param logicOptions 逻辑参数
280
+ */
281
+ _addLogic(logicOptions: Partial<Logic>): Logic;
282
+
283
+ /**
284
+ * 添加逻辑
285
+ * @internal
286
+ * @param logic 已有的逻辑实例
287
+ */
288
+ _addLogic(logic: Logic): Logic;
289
+
290
+ _addLogic(options?: string | Partial<Logic> | Logic) {
291
+ const index = 0;
292
+ return this._insertLogicAt(options as any, index);
293
+ }
294
+
295
+ /**
296
+ * 添加逻辑
297
+ * @internal
298
+ * @param name 逻辑名称,如果不填会自动生成一个唯一名称
299
+ */
300
+ addLogic(name?: string): Logic;
301
+
302
+ /**
303
+ * 添加逻辑
304
+ * @param logicOptions 逻辑参数
305
+ */
306
+ addLogic(logicOptions: Partial<Logic>): Logic;
307
+
308
+ /**
309
+ * 添加逻辑
310
+ * @param logic 已有的逻辑实例
311
+ */
312
+ addLogic(logic: Logic): Logic;
313
+
314
+ addLogic(options?: string | Partial<Logic> | Logic) {
315
+ const node = this._addLogic(options as any);
316
+ const index = this.logics.indexOf(node);
317
+ node.create({
318
+ index,
319
+ parentNode: this,
320
+ parentKey: 'logics',
321
+ });
322
+ return node;
323
+ }
324
+
325
+ /**
326
+ * 插入实际参数
327
+ * @internal
328
+ * @param argumentOptions 实际参数参数
329
+ */
330
+ _insertArgumentAt(argumentOptions: Partial<Argument>, index: number): Argument;
331
+
332
+ /**
333
+ * 插入实际参数
334
+ * @internal
335
+ * @param argument 已有的实际参数实例
336
+ */
337
+ _insertArgumentAt(argument: Argument, index: number): Argument;
338
+
339
+ _insertArgumentAt(options: Partial<Argument> | Argument, index: number) {
340
+ const argumentOptions: any = {};
341
+ const relationOptions = { parentNode: this, parentKey: 'arguments' };
342
+ let argument: Argument;
343
+ if (options instanceof Argument) {
344
+ options.ensureDelete(); // 同一实例不支持多处存在
345
+ argument = options;
346
+ Object.assign(argument, relationOptions);
347
+ } else {
348
+ argument = Argument.from(
349
+ {
350
+ ...argumentOptions,
351
+ ...options,
352
+ },
353
+ this,
354
+ 'arguments'
355
+ );
87
356
  }
88
- /**
89
- * 祖先 App
90
- */
91
- get app() {
92
- return this.getAncestor('App') as App;
357
+ this.arguments.splice(index, 0, argument);
358
+ return argument;
359
+ }
360
+
361
+ /**
362
+ * 插入实际参数
363
+ * @param argumentOptions 实际参数参数
364
+ */
365
+ insertArgumentAt(argumentOptions: Partial<Argument>, index: number): Argument;
366
+
367
+ /**
368
+ * 插入实际参数
369
+ * @param argument 已有的实际参数实例
370
+ */
371
+ insertArgumentAt(argument: Argument, index: number): Argument;
372
+
373
+ insertArgumentAt(options: Partial<Argument> | Argument, index: number) {
374
+ const node = this._insertArgumentAt(options as any, index);
375
+ node.create({
376
+ index,
377
+ parentNode: this,
378
+ parentKey: 'arguments',
379
+ });
380
+ return node;
381
+ }
382
+
383
+ /**
384
+ * 添加实际参数
385
+ * @internal
386
+ * @param argumentOptions 实际参数参数
387
+ */
388
+ _addArgument(argumentOptions: Partial<Argument>): Argument;
389
+
390
+ /**
391
+ * 添加实际参数
392
+ * @internal
393
+ * @param argument 已有的实际参数实例
394
+ */
395
+ _addArgument(argument: Argument): Argument;
396
+
397
+ _addArgument(options?: Partial<Argument> | Argument) {
398
+ const index = this.arguments.length;
399
+ return this._insertArgumentAt(options as any, index);
400
+ }
401
+
402
+ /**
403
+ * 添加实际参数
404
+ * @param argumentOptions 实际参数参数
405
+ */
406
+ addArgument(argumentOptions: Partial<Argument>): Argument;
407
+
408
+ /**
409
+ * 添加实际参数
410
+ * @param argument 已有的实际参数实例
411
+ */
412
+ addArgument(argument: Argument): Argument;
413
+
414
+ addArgument(options?: Partial<Argument> | Argument) {
415
+ const node = this._addArgument(options as any);
416
+ const index = this.arguments.indexOf(node);
417
+ node.create({
418
+ index,
419
+ parentNode: this,
420
+ parentKey: 'arguments',
421
+ });
422
+ return node;
423
+ }
424
+
425
+ /**
426
+ * 删除逻辑
427
+ * @param name 逻辑名称
428
+ */
429
+ removeLogic(name: string): void;
430
+
431
+ /**
432
+ * 删除逻辑
433
+ * @param logic 已有的逻辑实例
434
+ */
435
+ removeLogic(logic: Logic): void;
436
+
437
+ removeLogic(options: string | Logic) {
438
+ let logic: Logic;
439
+ if (typeof options === 'string') {
440
+ logic = (this.logics as Logic[]).find((item) => item.name === options);
441
+ if (!logic) {
442
+ throw new Error(`找不到逻辑 ${options}`);
443
+ }
444
+ } else {
445
+ logic = options;
93
446
  }
94
- /**
95
- * 祖先 Frontend
96
- */
97
- get frontend() {
98
- return this.getAncestor('Frontend') as Frontend;
447
+ return logic.delete();
448
+ }
449
+
450
+ __removeLogic(logic: Logic) {
451
+ const { parentKey } = logic;
452
+ const params: Params = {
453
+ parentNode: this,
454
+ parentKey,
455
+ index: -1,
456
+ object: null,
457
+ oldObject: logic,
458
+ };
459
+ if (parentKey) {
460
+ params.parentKey = parentKey;
461
+ if (Array.isArray((this as any)[parentKey])) {
462
+ const index = (this as any)[parentKey].indexOf(logic);
463
+ ~index && (this as any)[parentKey].splice(index, 1);
464
+ params.index = index;
465
+ } else if ((this as any)[parentKey] === logic) {
466
+ params.index = 0;
467
+ (this as any)[parentKey] = undefined;
468
+ }
99
469
  }
100
-
101
- /**
102
- * @param source 需要合并的部分参数
103
- */
104
- constructor(source?: Partial<BindEvent>) {
105
- source = Object.assign({}, BindEvent.getDefaultOptions(), source);
106
- super(source);
107
- super.subConstructor(source);
470
+ return params;
471
+ }
472
+
473
+ /**
474
+ * 删除实际参数
475
+ * @param argument 已有的实际参数实例
476
+ */
477
+ removeArgument(argument: Argument): void;
478
+
479
+ removeArgument(options: Argument) {
480
+ const argument: Argument = options;
481
+ return argument.delete();
482
+ }
483
+
484
+ __removeLogicItem(logicItem: LogicItem) {
485
+ const { parentKey } = logicItem;
486
+ const params: Params = {
487
+ parentNode: this,
488
+ parentKey,
489
+ index: -1,
490
+ object: null,
491
+ oldObject: logicItem,
492
+ };
493
+ if (parentKey) {
494
+ params.parentKey = parentKey;
495
+ if (Array.isArray((this as any)[parentKey])) {
496
+ const index = (this as any)[parentKey].indexOf(logicItem);
497
+ ~index && (this as any)[parentKey].splice(index, 1);
498
+ params.index = index;
499
+ } else if ((this as any)[parentKey] === logicItem) {
500
+ params.index = 0;
501
+ (this as any)[parentKey] = undefined;
502
+ }
108
503
  }
109
- getClassName() {
110
- return 'BindEvent';
504
+ return params;
505
+ }
506
+
507
+ //= ===============================================================================
508
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
509
+ // 自动生成的代码已结束。下面可以手动编写。
510
+ //= ===============================================================================
511
+ get process() {
512
+ return this.getAncestor('Process') as Process;
513
+ }
514
+
515
+ get tsCalleeNamespace() {
516
+ if (this.calleeNamespace) {
517
+ let tsCalleeNamespace = this.calleeNamespace;
518
+ tsCalleeNamespace = tsCalleeNamespace.replace(/\.[0-9]/g, (m) => m.replace('.', '.$'));
519
+ tsCalleeNamespace = tsCalleeNamespace.replace(/-/g, '_');
520
+ return tsCalleeNamespace;
111
521
  }
522
+ return '';
523
+ }
112
524
 
113
- static from(source: any, parentNode?: any, parentKey?: string): BindEvent {
114
- return super.from(source, parentNode, parentKey) as BindEvent;
525
+ get calleeKey(): string {
526
+ const { tsCalleeNamespace } = this;
527
+ if (!tsCalleeNamespace) {
528
+ return `${this.calleeName}`;
115
529
  }
116
-
117
- /**
118
- * 从父级删除该节点
119
- * @internal
120
- */
121
- _delete() {
122
- let params: Params = null;
123
- if (this.parentNode) {
124
- params = (this.parentNode as any)?.__removeBindEvent?.(this);
125
- }
126
- return params;
530
+ // elements单独处理相对路径,和后缀的问题
531
+ if (tsCalleeNamespace.startsWith('elements') && tsCalleeNamespace.endsWith('logics')) {
532
+ const methodName = tsCalleeNamespace.substring(0, tsCalleeNamespace.length - '.logics'.length);
533
+ return `__${methodName}.${this.calleeName}`;
127
534
  }
128
- /**
129
- * 设置元素绑定事件名称
130
- */
131
- setName(name: string) {
132
- const object = {
133
- name,
134
- };
135
- this.update({
136
- ...object,
137
- field: 'name',
138
- });
535
+ return `${tsCalleeNamespace}.${this.calleeName}`;
536
+ }
537
+
538
+ // 用于展示的value
539
+ get randerValue() {
540
+ const randerNameSpace = this.tsCalleeNamespace;
541
+ if (!randerNameSpace) {
542
+ return `${this.calleeName}`;
139
543
  }
140
-
141
- /**
142
- * 设置calleeNamespace
143
- */
144
- setCalleeNamespace(calleeNamespace: string) {
145
- const object = {
146
- calleeNamespace,
147
- };
148
- this.update({
149
- ...object,
150
- });
151
- }
152
-
153
- /**
154
- * 设置calleeName
155
- */
156
- setCalleeName(calleeName: string) {
157
- const object = {
158
- calleeName,
159
- };
160
- this.update({
161
- ...object,
162
- });
163
- }
164
-
165
- getLogicExistingNames(excludedList: Array<Logic> = []) {
166
- const excludedSet = new Set(excludedList);
167
- return ((this.logics as Logic[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
168
- }
169
- getLogicUniqueName(name = 'logic1') {
170
- return utils.unique(name, this.getLogicExistingNames(), undefined, true);
171
- }
172
-
173
- /**
174
- * 插入逻辑
175
- * @internal
176
- * @param name 逻辑名称,如果不填会自动生成一个唯一名称
177
- */
178
- _insertLogicAt(name: string, index: number): Logic;
179
-
180
- /**
181
- * 插入逻辑
182
- * @internal
183
- * @param logicOptions 逻辑参数
184
- */
185
- _insertLogicAt(logicOptions: Partial<Logic>, index: number): Logic;
186
-
187
- /**
188
- * 插入逻辑
189
- * @internal
190
- * @param logic 已有的逻辑实例
191
- */
192
- _insertLogicAt(logic: Logic, index: number): Logic;
193
-
194
- _insertLogicAt(options: string | Partial<Logic> | Logic, index: number) {
195
- const logicOptions: any = {};
196
- const relationOptions = { parentNode: this, parentKey: 'logics' };
197
- let logic: Logic;
198
- if (!options) {
199
- logic = Logic.from({
200
- ...logicOptions,
201
- name: this.getLogicUniqueName(),
202
- }, this, 'logics');
203
- } else if (typeof options === 'string') {
204
- logic = Logic.from({
205
- ...logicOptions,
206
- name: options,
207
- }, this, 'logics');
208
- } else if (options instanceof Logic) {
209
- options.ensureDelete(); // 同一实例不支持多处存在
210
- logic = options;
211
- Object.assign(logic, relationOptions);
212
- } else {
213
- logic = Logic.from({
214
- ...logicOptions,
215
- ...options,
216
- }, this, 'logics');
217
- }
218
- this.logics.splice(index, 0, logic);
219
- return logic;
544
+ // elements单独处理相对路径,和后缀的问题
545
+ if (randerNameSpace.startsWith('elements') && randerNameSpace.endsWith('logics')) {
546
+ const methodName = randerNameSpace.substring('elements.'.length, randerNameSpace.length);
547
+ return `$refs.${methodName}.${this.calleeName}`;
220
548
  }
549
+ return `${randerNameSpace}.${this.calleeName}`;
550
+ }
551
+
552
+ // 绑定事件转驼峰
553
+ toHump = (name: string) => (name ? name.replace(/\-(\w)/g, (all, letter) => letter.toUpperCase()) : '');
554
+
555
+ toJS(state?: TranslatorState): string {
556
+ // shiftState(state, code)
557
+ let code = `async ${this.getViewEventName()} (`;
558
+ const params = this.getContextLogicParams();
559
+ code += params.map((item: Param) => item.name).toString();
560
+ code += ') { \n';
561
+ this.logics.forEach((logic) => {
562
+ code += logic.toJS(shiftState(state, code), 'IIFE');
563
+ });
564
+ code += '}\n';
565
+ return code;
566
+ }
567
+
568
+ @withSourceMap()
569
+ toEmbeddedTS(state?: TranslatorState, isPageCycle?: Boolean): string {
570
+ // 如果有绑定的事件名
571
+ let code = ``;
572
+ if (isPageCycle) {
573
+ if (['keydown', 'keyup'].includes(this.name)) {
574
+ code = `const ${this.toHump(this.name) || '__IDENTIFIER__'} = (event: `;
575
+ code += this.getEventTypeString();
576
+ code += ') => [\n';
577
+ this.logics.forEach((logic) => {
578
+ // 一些默认的逻辑不翻译 排除掉
579
+ if (logic.name.startsWith('__')) {
580
+ return;
581
+ }
582
+ if (logic.view) {
583
+ const logicName = logic.name;
584
+ if ((logic.parentNode as BindEvent)?.element) {
585
+ logic.name = `__${logic.view.name}${(logic.parentNode as BindEvent).element.name}${logic.name}`;
586
+ }
221
587
 
222
- /**
223
- * 插入逻辑
224
- * @param name 逻辑名称,如果不填会自动生成一个唯一名称
225
- */
226
- insertLogicAt(name: string, index: number): Logic;
227
-
228
- /**
229
- * 插入逻辑
230
- * @param logicOptions 逻辑参数
231
- */
232
- insertLogicAt(logicOptions: Partial<Logic>, index: number): Logic;
233
-
234
- /**
235
- * 插入逻辑
236
- * @param logic 已有的逻辑实例
237
- */
238
- insertLogicAt(logic: Logic, index: number): Logic;
239
-
240
- insertLogicAt(options: string | Partial<Logic> | Logic, index: number) {
241
- const node = this._insertLogicAt(options as any, index);
242
- node.create({
243
- index,
244
- parentNode: this,
245
- parentKey: 'logics',
588
+ logic.name = logic.name.replace(/-/g, '');
589
+ try {
590
+ code += logic.toEmbeddedTS(
591
+ shiftState(state, code, {
592
+ tabSize: (state?.tabSize || 0) + 2,
593
+ }),
594
+ 'noExport'
595
+ );
596
+ } finally {
597
+ // 翻译logic可能出错
598
+ logic.name = logicName;
599
+ }
600
+ } else {
601
+ code += logic.toEmbeddedTS(
602
+ shiftState(state, code, {
603
+ tabSize: (state?.tabSize || 0) + 2,
604
+ }),
605
+ 'noExport'
606
+ );
607
+ }
608
+
609
+ code += indent(state?.tabSize || 0);
610
+ code += ',\n';
246
611
  });
247
- return node;
248
- }
249
-
250
- /**
251
- * 添加逻辑
252
- * @internal
253
- * @param name 逻辑名称,如果不填会自动生成一个唯一名称
254
- */
255
- _addLogic(name?: string): Logic;
256
-
257
- /**
258
- * 添加逻辑
259
- * @internal
260
- * @param logicOptions 逻辑参数
261
- */
262
- _addLogic(logicOptions: Partial<Logic>): Logic;
263
-
264
- /**
265
- * 添加逻辑
266
- * @internal
267
- * @param logic 已有的逻辑实例
268
- */
269
- _addLogic(logic: Logic): Logic;
270
-
271
- _addLogic(options?: string | Partial<Logic> | Logic) {
272
- const index = 0;
273
- return this._insertLogicAt(options as any, index);
274
- }
275
-
276
- /**
277
- * 添加逻辑
278
- * @internal
279
- * @param name 逻辑名称,如果不填会自动生成一个唯一名称
280
- */
281
- addLogic(name?: string): Logic;
282
-
283
- /**
284
- * 添加逻辑
285
- * @param logicOptions 逻辑参数
286
- */
287
- addLogic(logicOptions: Partial<Logic>): Logic;
288
-
289
- /**
290
- * 添加逻辑
291
- * @param logic 已有的逻辑实例
292
- */
293
- addLogic(logic: Logic): Logic;
294
-
295
- addLogic(options?: string | Partial<Logic> | Logic) {
296
- const node = this._addLogic(options as any);
297
- const index = this.logics.indexOf(node);
298
- node.create({
299
- index,
300
- parentNode: this,
301
- parentKey: 'logics',
612
+ code += '];\n';
613
+ } else {
614
+ this.logics.forEach((logic, index) => {
615
+ const logicName = logic.name;
616
+ logic.name = logic.view.name + logic.name + index;
617
+ code += logic.toEmbeddedTS(
618
+ shiftState(state, code, {
619
+ tabSize: (state?.tabSize || 0) + 2,
620
+ }),
621
+ 'noExport'
622
+ );
623
+ code += indent(state?.tabSize || 0);
624
+ code += `${logic.name}();\n`;
625
+ logic.name = logicName;
302
626
  });
303
- return node;
627
+ }
628
+ return code;
304
629
  }
305
630
 
306
-
307
-
308
-
309
-
310
-
311
- /**
312
- * 插入实际参数
313
- * @internal
314
- * @param argumentOptions 实际参数参数
315
- */
316
- _insertArgumentAt(argumentOptions: Partial<Argument>, index: number): Argument;
317
-
318
- /**
319
- * 插入实际参数
320
- * @internal
321
- * @param argument 已有的实际参数实例
322
- */
323
- _insertArgumentAt(argument: Argument, index: number): Argument;
324
-
325
- _insertArgumentAt(options: Partial<Argument> | Argument, index: number) {
326
- const argumentOptions: any = {};
327
- const relationOptions = { parentNode: this, parentKey: 'arguments' };
328
- let argument: Argument;
329
- if (options instanceof Argument) {
330
- options.ensureDelete(); // 同一实例不支持多处存在
331
- argument = options;
332
- Object.assign(argument, relationOptions);
333
- } else {
334
- argument = Argument.from({
335
- ...argumentOptions,
336
- ...options,
337
- }, this, 'arguments');
631
+ code = `${this.toHump(this.name) || '__IDENTIFIER__'}: (event: `;
632
+
633
+ // event的类型
634
+ code += this.getEventTypeString();
635
+
636
+ code += ') => [\n';
637
+ this.logics.forEach((logic) => {
638
+ // 一些默认的逻辑不翻译 排除掉
639
+ if (logic.name.startsWith('__')) {
640
+ return;
641
+ }
642
+ if (logic.view) {
643
+ const logicName = logic.name;
644
+ if ((logic.parentNode as BindEvent)?.element) {
645
+ logic.name = `__${logic.view.name}${(logic.parentNode as BindEvent).element.name}${logic.name}`;
338
646
  }
339
- this.arguments.splice(index, 0, argument);
340
- return argument;
341
- }
342
647
 
343
-
344
-
345
- /**
346
- * 插入实际参数
347
- * @param argumentOptions 实际参数参数
348
- */
349
- insertArgumentAt(argumentOptions: Partial<Argument>, index: number): Argument;
350
-
351
- /**
352
- * 插入实际参数
353
- * @param argument 已有的实际参数实例
354
- */
355
- insertArgumentAt(argument: Argument, index: number): Argument;
356
-
357
- insertArgumentAt(options: Partial<Argument> | Argument, index: number) {
358
- const node = this._insertArgumentAt(options as any, index);
359
- node.create({
360
- index,
361
- parentNode: this,
362
- parentKey: 'arguments',
363
- });
364
- return node;
365
- }
366
-
367
-
368
-
369
- /**
370
- * 添加实际参数
371
- * @internal
372
- * @param argumentOptions 实际参数参数
373
- */
374
- _addArgument(argumentOptions: Partial<Argument>): Argument;
375
-
376
- /**
377
- * 添加实际参数
378
- * @internal
379
- * @param argument 已有的实际参数实例
380
- */
381
- _addArgument(argument: Argument): Argument;
382
-
383
- _addArgument(options?: Partial<Argument> | Argument) {
384
- const index = this.arguments.length;
385
- return this._insertArgumentAt(options as any, index);
386
- }
387
-
388
-
389
-
390
- /**
391
- * 添加实际参数
392
- * @param argumentOptions 实际参数参数
393
- */
394
- addArgument(argumentOptions: Partial<Argument>): Argument;
395
-
396
- /**
397
- * 添加实际参数
398
- * @param argument 已有的实际参数实例
399
- */
400
- addArgument(argument: Argument): Argument;
401
-
402
- addArgument(options?: Partial<Argument> | Argument) {
403
- const node = this._addArgument(options as any);
404
- const index = this.arguments.indexOf(node);
405
- node.create({
406
- index,
407
- parentNode: this,
408
- parentKey: 'arguments',
409
- });
410
- return node;
411
- }
412
-
413
-
414
-
415
-
416
- /**
417
- * 删除逻辑
418
- * @param name 逻辑名称
419
- */
420
- removeLogic(name: string): void;
421
-
422
- /**
423
- * 删除逻辑
424
- * @param logic 已有的逻辑实例
425
- */
426
- removeLogic(logic: Logic): void;
427
-
428
- removeLogic(options: string | Logic) {
429
- let logic: Logic;
430
- if (typeof options === 'string') {
431
- logic = (this.logics as Logic[]).find((item) => item.name === options);
432
- if (!logic) {
433
- throw new Error('找不到逻辑 ' + options);
434
- }
435
- } else {
436
- logic = options;
648
+ logic.name = logic.name.replace(/-/g, '');
649
+ try {
650
+ code += logic.toEmbeddedTS(
651
+ shiftState(state, code, {
652
+ tabSize: (state?.tabSize || 0) + 2,
653
+ }),
654
+ 'noExport'
655
+ );
656
+ } finally {
657
+ // 翻译logic可能出错
658
+ logic.name = logicName;
437
659
  }
438
- return logic.delete();
660
+ } else {
661
+ code += logic.toEmbeddedTS(
662
+ shiftState(state, code, {
663
+ tabSize: (state?.tabSize || 0) + 2,
664
+ }),
665
+ 'noExport'
666
+ );
667
+ }
668
+
669
+ code += indent(state?.tabSize || 0);
670
+ code += ',\n';
671
+ });
672
+ if (this.view) code += '],\n';
673
+ else code += ']\n';
674
+ return code;
675
+ }
676
+
677
+ @withSourceMap()
678
+ toNaturalTS(state?: TranslatorState, isPageCycle?: Boolean): string {
679
+ // 如果有绑定的事件名
680
+ let code = ``;
681
+ if (isPageCycle) {
682
+ this.logics.forEach((logic, index) => {
683
+ const logicName = `on_view_${logic.name}${index}`;
684
+ // logic.name = logic.view.name + logic.name + index;
685
+ code += logic.toNaturalTS(shiftState(state, code, {
686
+ tabSize: state.tabSize,
687
+ }), 'noExport', logicName);
688
+
689
+ // logic.name = logicName;
690
+ // code += indent(state.tabSize);
691
+ // code += `${logicName}();\n`;
692
+ });
693
+ return code;
439
694
  }
440
-
441
- __removeLogic(logic: Logic) {
442
- const parentKey = logic.parentKey;
443
- const params: Params = {
444
- parentNode: this,
445
- parentKey,
446
- index: -1,
447
- object: null,
448
- oldObject: logic,
449
- };
450
- if (parentKey) {
451
- params.parentKey = parentKey;
452
- if (Array.isArray((this as any)[parentKey])) {
453
- const index = (this as any)[parentKey].indexOf(logic);
454
- ~index && (this as any)[parentKey].splice(index, 1);
455
- params.index = index;
456
- } else if ((this as any)[parentKey] === logic) {
457
- params.index = 0;
458
- (this as any)[parentKey] = undefined;
459
- }
695
+ // code = `${this.toHump(this.name) || '__IDENTIFIER__'}: (event: `;
696
+
697
+ // event的类型
698
+ // code += this.getEventTypeString();
699
+
700
+ // code += ') => [\n';
701
+ this.logics.forEach((logic) => {
702
+ // 一些默认的逻辑不翻译 排除掉
703
+ if (logic.name.startsWith('__')) {
704
+ return;
705
+ }
706
+ if (logic.view) {
707
+ const logicName = logic.name;
708
+ logic.name = `on_${(logic.parentNode as BindEvent).element.name}_${logic.name}`;
709
+ // logic.name = '__' + logic.view.name + (logic.parentNode as BindEvent).element.name + logic.name;
710
+ logic.name = logic.name.replace(/-/g, '');
711
+ try {
712
+ code += logic.toNaturalTS(shiftState(state, code, {
713
+ tabSize: state.tabSize,
714
+ }), 'noExport');
715
+ } finally {
716
+ // 翻译logic可能出错
717
+ logic.name = logicName;
460
718
  }
461
- return params;
462
- }
463
-
464
-
465
-
466
- /**
467
- * 删除实际参数
468
- * @param argument 已有的实际参数实例
469
- */
470
- removeArgument(argument: Argument): void;
471
-
472
- removeArgument(options: Argument) {
473
- const argument: Argument = options;
474
- return argument.delete();
719
+ } else {
720
+ code += logic.toNaturalTS(shiftState(state, code, {
721
+ tabSize: state.tabSize,
722
+ }), 'noExport');
723
+ }
724
+
725
+ code += indent(state.tabSize);
726
+ // code += ',\n';
727
+ });
728
+ // if (this.view)
729
+ // code += '],\n';
730
+ // else
731
+ // code += ']\n';
732
+ return code;
733
+ }
734
+
735
+ getEventTypeString() {
736
+ let code = '';
737
+ if (!Object.keys(elementsEventsMap).length) return;
738
+ // 已有的点击事件,已知类型的,就直接取值
739
+ if (
740
+ ['click', 'dblclick', 'contextmenu', 'mousedown', 'mouseup', 'mouseenter', 'mouseleave', 'focus', 'blur', 'keydown', 'keyup'].includes(
741
+ this.name
742
+ )
743
+ ) {
744
+ const eventInfo = elementsEventsMap[this.name];
745
+ const ref = eventInfo.params[0].schema.$ref;
746
+ const type = ref.replace('#/systemTypes/', 'nasl.ui.');
747
+ code = `${type}`;
748
+ } else {
749
+ code = 'nasl.ui.BaseEvent';
475
750
  }
476
751
 
477
- __removeLogicItem(logicItem: LogicItem) {
478
- const parentKey = logicItem.parentKey;
479
- const params: Params = {
480
- parentNode: this,
481
- parentKey,
482
- index: -1,
483
- object: null,
484
- oldObject: logicItem,
485
- };
486
- if (parentKey) {
487
- params.parentKey = parentKey;
488
- if (Array.isArray((this as any)[parentKey])) {
489
- const index = (this as any)[parentKey].indexOf(logicItem);
490
- ~index && (this as any)[parentKey].splice(index, 1);
491
- params.index = index;
492
- } else if ((this as any)[parentKey] === logicItem) {
493
- params.index = 0;
494
- (this as any)[parentKey] = undefined;
495
- }
752
+ // 组件上自己有类型的就覆盖掉,没有就用上面的类型
753
+ if (this.element && elementsEventsMap[`${this.element.tag}-${this.name}`]) {
754
+ const pageInfo = elementsEventsMap[`${this.element.tag}-${this.name}`];
755
+ const refParam = pageInfo.params && pageInfo.params.find((item: any) => item.schema);
756
+ if (refParam) {
757
+ const ref = refParam.schema.$ref;
758
+ let type = '';
759
+ if (ref.includes('systemTypes')) {
760
+ // 不要删除,用于转换类型
761
+ type = ref.replace('#/systemTypes/', 'nasl.ui.');
762
+ } else if (ref.includes('basicTypes')) {
763
+ // 不要删除,用于转换类型
764
+ type = ref.replace('#/basicTypes/', 'nasl.core.');
496
765
  }
497
- return params;
498
- }
499
-
500
- //================================================================================
501
- // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
502
- // 自动生成的代码已结束。下面可以手动编写。
503
- //================================================================================
504
- get process() {
505
- return this.getAncestor('Process') as Process;
766
+ code = `${type}`;
767
+ }
506
768
  }
507
-
508
- get tsCalleeNamespace() {
509
- if (this.calleeNamespace) {
510
- let tsCalleeNamespace = this.calleeNamespace;
511
- tsCalleeNamespace = tsCalleeNamespace.replace(/\.[0-9]/g, (m) => m.replace('.', '.$'));
512
- tsCalleeNamespace = tsCalleeNamespace.replace(/-/g, '_');
513
- return tsCalleeNamespace;
514
- }
515
- return '';
769
+ return code;
770
+ }
771
+
772
+ // @withSourceMap()
773
+ // toObjectTS(state?: TranslatorState): string {
774
+ // let code = '';
775
+ // if (this.name) {
776
+ // code = `function ${this.name || '__IDENTIFIER__'} () {\n`;
777
+ // code += indent((state?.tabSize || 0) + 1);
778
+ // code += `${this.calleeKey}()`;
779
+ // code += '\n';
780
+ // code += indent((state?.tabSize || 0));
781
+ // code += '};\n';
782
+ // }
783
+ // return code;
784
+ // }
785
+
786
+ /**
787
+ * 设置callee
788
+ */
789
+ setCallee(logic: Logic) {
790
+ let calleeNamespace = logic.getNamespace();
791
+ if (logic.parentNode instanceof View) {
792
+ calleeNamespace = '';
516
793
  }
517
-
518
- get calleeKey(): string {
519
- const tsCalleeNamespace = this.tsCalleeNamespace;
520
- if (!tsCalleeNamespace) {
521
- return `${this.calleeName}`;
522
- }
523
- // elements单独处理相对路径,和后缀的问题
524
- if (tsCalleeNamespace.startsWith('elements') && tsCalleeNamespace.endsWith('logics')) {
525
- const methodName = tsCalleeNamespace.substring(0, tsCalleeNamespace.length - '.logics'.length);
526
- return '__' + methodName + `.${this.calleeName}`;
527
- }
528
- return `${tsCalleeNamespace}.${this.calleeName}`;
794
+ const object = {
795
+ calleeNamespace,
796
+ calleeName: logic.name,
797
+ };
798
+ this.update({
799
+ ...object,
800
+ });
801
+ }
802
+
803
+ getNamespace(ns: string) {
804
+ if (this.view) return `${this.view.getNamespace()}.${this.view.name}.bindEvents.${this.name}.logics`;
805
+ if (this.parentNode && (this.parentNode as Namespace).getNamespace) {
806
+ const parentNamespace = (this.parentNode as Namespace).getNamespace();
807
+ const parentName = this.parentNode.name;
808
+ const arr = [parentNamespace];
809
+ if (this.parentNode.concept !== 'App' && parentName) {
810
+ arr.push(parentName);
811
+ }
812
+ return `${arr.join('.')}.${ns || 'bindEvent'}`;
529
813
  }
530
- // 用于展示的value
531
- get randerValue() {
532
- const randerNameSpace = this.tsCalleeNamespace;
533
- if (!randerNameSpace) {
534
- return '' + this.calleeName;
535
- }
536
- // elements单独处理相对路径,和后缀的问题
537
- if (randerNameSpace.startsWith('elements') && randerNameSpace.endsWith('logics')) {
538
- const methodName = randerNameSpace.substring('elements.'.length, randerNameSpace.length);
539
- return '$refs.' + methodName + `.${this.calleeName}`;
814
+ throw new Error('无法获取命名空间,请设置 parentNode!');
815
+ }
816
+
817
+ /**
818
+ * 转换成 Vue 的模板格式
819
+ */
820
+ toVue(options?: ElementToVueOptions) {
821
+ let code = '';
822
+ if (this.logics?.length) {
823
+ code += `@${this.name}="`;
824
+ const argsList: string[] = [];
825
+ if (this.logics?.length) {
826
+ let parent = this.parentNode;
827
+ let index = 0;
828
+ while (parent && parent.concept !== 'View') {
829
+ if ((parent as ViewElement).slotScope) {
830
+ argsList.unshift(index === 0 ? 'current' : `current${index}`);
831
+ index++;
832
+ }
833
+ parent = parent.parentNode;
540
834
  }
541
- return `${randerNameSpace}.${this.calleeName}`;
542
- }
543
- // 绑定事件转驼峰
544
- toHump = (name: string) => (name ? name.replace(/\-(\w)/g, (all, letter) => letter.toUpperCase()) : '');
545
-
546
- toJS(state?: TranslatorState): string {
547
- // shiftState(state, code)
548
- let code = `async ${this.getViewEventName()} (`;
549
- const params = this.getContextLogicParams();
550
- code += params.map((item: Param) => item.name).toString();
551
- code += ') { \n';
552
- this.logics.forEach((logic) => {
553
- code += logic.toJS(shiftState(state, code), 'IIFE');
554
- });
555
- code += '}\n';
556
- return code;
835
+ argsList.unshift('$event');
836
+ }
837
+ code += this.getViewEventName();
838
+
839
+ code += '(';
840
+ argsList.forEach((arg, index) => {
841
+ code += arg;
842
+ if (index !== argsList.length - 1) code += ', ';
843
+ });
844
+ code += ')';
845
+
846
+ code += `"`;
557
847
  }
558
848
 
559
- @withSourceMap()
560
- toEmbeddedTS(state?: TranslatorState, isPageCycle?: Boolean): string {
561
- // 如果有绑定的事件名
562
- let code = ``;
563
- if (isPageCycle) {
564
- if (['keydown', 'keyup'].includes(this.name)) {
565
- code = `const ${this.toHump(this.name) || '__IDENTIFIER__'} = (event: `;
566
- code += this.getEventTypeString();
567
- code += ') => [\n';
568
- this.logics.forEach((logic) => {
569
- // 一些默认的逻辑不翻译 排除掉
570
- if (logic.name.startsWith('__')) {
571
- return;
572
- }
573
- if (logic.view) {
574
- const logicName = logic.name;
575
- if ((logic.parentNode as BindEvent)?.element) {
576
- logic.name = '__' + logic.view.name + (logic.parentNode as BindEvent).element.name + logic.name;
577
- }
578
-
579
- logic.name = logic.name.replace(/-/g, '');
580
- try {
581
- code += logic.toEmbeddedTS(shiftState(state, code, {
582
- tabSize: (state?.tabSize || 0) + 2,
583
- }), 'noExport');
584
- } finally {
585
- // 翻译logic可能出错
586
- logic.name = logicName;
587
- }
588
- } else {
589
- code += logic.toEmbeddedTS(shiftState(state, code, {
590
- tabSize: (state?.tabSize || 0) + 2,
591
- }), 'noExport');
592
- }
593
-
594
- code += indent((state?.tabSize || 0));
595
- code += ',\n';
596
- });
597
- code += '];\n';
598
- } else {
599
- this.logics.forEach((logic, index) => {
600
- const logicName = logic.name;
601
- logic.name = logic.view.name + logic.name + index;
602
- code += logic.toEmbeddedTS(shiftState(state, code, {
603
- tabSize: (state?.tabSize || 0) + 2,
604
- }), 'noExport');
605
- code += indent((state?.tabSize || 0));
606
- code += `${logic.name}();\n`;
607
- logic.name = logicName;
608
- });
609
- }
610
- return code;
849
+ return code;
850
+ }
851
+
852
+ // 获取bindEvent上的logic的参数从上文获取
853
+ getContextLogicParams() {
854
+ const argsList: string[] = [];
855
+ if (this.logics?.length) {
856
+ let parent = this.parentNode;
857
+ let index = 0;
858
+ while (parent && parent.concept !== 'View') {
859
+ if ((parent as ViewElement).slotScope) {
860
+ argsList.unshift(index === 0 ? 'current' : `current${index}`);
861
+ index++;
611
862
  }
612
-
613
- code = `${this.toHump(this.name) || '__IDENTIFIER__'}: (event: `;
614
-
615
- // event的类型
616
- code += this.getEventTypeString();
617
-
618
- code += ') => [\n';
619
- this.logics.forEach((logic) => {
620
- // 一些默认的逻辑不翻译 排除掉
621
- if (logic.name.startsWith('__')) {
622
- return;
623
- }
624
- if (logic.view) {
625
- const logicName = logic.name;
626
- if ((logic.parentNode as BindEvent)?.element) {
627
- logic.name = '__' + logic.view.name + (logic.parentNode as BindEvent).element.name + logic.name;
628
- }
629
-
630
- logic.name = logic.name.replace(/-/g, '');
631
- try {
632
- code += logic.toEmbeddedTS(shiftState(state, code, {
633
- tabSize: (state?.tabSize || 0) + 2,
634
- }), 'noExport');
635
- } finally {
636
- // 翻译logic可能出错
637
- logic.name = logicName;
638
- }
639
- } else {
640
- code += logic.toEmbeddedTS(shiftState(state, code, {
641
- tabSize: (state?.tabSize || 0) + 2,
642
- }), 'noExport');
643
- }
644
-
645
- code += indent((state?.tabSize || 0));
646
- code += ',\n';
647
- });
648
- if (this.view)
649
- code += '],\n';
650
- else
651
- code += ']\n';
652
- return code;
863
+ parent = parent.parentNode;
864
+ }
865
+ argsList.unshift('event');
653
866
  }
654
-
655
- getEventTypeString() {
656
- let code = '';
657
- if (!Object.keys(elementsEventsMap).length)
658
- return;
659
- // 已有的点击事件,已知类型的,就直接取值
660
- if (['click', 'dblclick', 'contextmenu', 'mousedown', 'mouseup', 'mouseenter', 'mouseleave', 'focus', 'blur', 'keydown', 'keyup'].includes(this.name)) {
661
- const eventInfo = elementsEventsMap[this.name];
662
- const ref = eventInfo.params[0].schema.$ref;
663
- const type = ref.replace('#/systemTypes/', 'nasl.ui.');
664
- code = `${type}`;
665
- } else {
666
- code = 'nasl.ui.BaseEvent';
667
- }
668
-
669
- // 组件上自己有类型的就覆盖掉,没有就用上面的类型
670
- if (this.element && elementsEventsMap[`${this.element.tag}-${this.name}`]) {
671
- const pageInfo = elementsEventsMap[`${this.element.tag}-${this.name}`];
672
- const refParam = pageInfo.params && pageInfo.params.find((item: any) => item.schema);
673
- if (refParam) {
674
- const ref = refParam.schema.$ref;
675
- let type = '';
676
- if (ref.includes('systemTypes')) {
677
- // 不要删除,用于转换类型
678
- type = ref.replace('#/systemTypes/', 'nasl.ui.');
679
- } else if (ref.includes('basicTypes')) {
680
- // 不要删除,用于转换类型
681
- type = ref.replace('#/basicTypes/', 'nasl.core.');
682
- }
683
- code = `${type}`;
684
- }
867
+ return argsList.map((name: string) => new Param({ name }));
868
+ }
869
+
870
+ // 获取bindEvent上的logic的参数从上文获取
871
+ getContextRenderLogicParams(logic: Logic) {
872
+ const argsList: Param[] = [];
873
+ const { virtualParams } = logic;
874
+ if (this.logics?.length) {
875
+ let parent = this.parentNode;
876
+ let index = 0;
877
+ const event = Param.from({ name: 'event', typeAnnotation: null }, logic, 'virtualParams');
878
+ argsList.push(event);
879
+ while (parent && parent.concept !== 'View') {
880
+ if ((parent as ViewElement).slotScope) {
881
+ const param = Param.from({ name: index === 0 ? 'current' : `current${index}`, typeAnnotation: null }, logic, 'virtualParams');
882
+ argsList.push(param);
883
+ index++;
685
884
  }
686
- return code;
885
+ parent = parent.parentNode;
886
+ }
687
887
  }
688
-
689
- // @withSourceMap()
690
- // toObjectTS(state?: TranslatorState): string {
691
- // let code = '';
692
- // if (this.name) {
693
- // code = `function ${this.name || '__IDENTIFIER__'} () {\n`;
694
- // code += indent((state?.tabSize || 0) + 1);
695
- // code += `${this.calleeKey}()`;
696
- // code += '\n';
697
- // code += indent((state?.tabSize || 0));
698
- // code += '};\n';
699
- // }
700
- // return code;
701
- // }
702
-
703
- /**
704
- * 设置callee
705
- */
706
- setCallee(logic: Logic) {
707
- let calleeNamespace = logic.getNamespace();
708
- if (logic.parentNode instanceof View) {
709
- calleeNamespace = '';
888
+ let haveDifference = false;
889
+ // 如果长度一样
890
+ if (virtualParams.length === argsList.length) {
891
+ // 那就看一下每一项的名字是不是变了
892
+ for (let i = 0; i < virtualParams.length; i++) {
893
+ if (virtualParams[i].name !== argsList[i].name) {
894
+ haveDifference = true;
895
+ break;
710
896
  }
711
- const object = {
712
- calleeNamespace,
713
- calleeName: logic.name,
714
- };
715
- this.update({
716
- ...object,
717
- });
897
+ }
898
+ // 如果变了, 输出新的
899
+ if (haveDifference) {
900
+ return argsList;
901
+ }
902
+ // 如果没变,输出旧的不让树组件刷新
903
+ return virtualParams;
718
904
  }
719
-
720
- getNamespace(ns: string) {
721
- if (this.view)
722
- return `${this.view.getNamespace()}.${this.view.name}.bindEvents.${this.name}.logics`;
723
- if (this.parentNode && (this.parentNode as Namespace).getNamespace) {
724
- const parentNamespace = (this.parentNode as Namespace).getNamespace();
725
- const parentName = this.parentNode.name;
726
- const arr = [parentNamespace];
727
- if (this.parentNode.concept !== 'App' && parentName) {
728
- arr.push(parentName);
729
- }
730
- return `${arr.join('.')}.${ns || 'bindEvent'}`;
731
- } else
732
- throw new Error('无法获取命名空间,请设置 parentNode!');
905
+ // 长度啥的都不一样,就输出新的
906
+ return argsList;
907
+ }
908
+
909
+ getPageViewEventChineseName() {
910
+ const parent = this.parentNode;
911
+ const suffixRE = /时|前|后$/;
912
+ if (parent instanceof View) {
913
+ const event = elementsEventsMap[this.name];
914
+
915
+ if (['keydown', 'keyup'].includes(event.name)) {
916
+ return `“${parent.title || parent.name}”页面${event.title}`;
917
+ }
918
+
919
+ const cap = suffixRE.exec(event?.title);
920
+ if (cap) return `${event.title.replace(suffixRE, '')}“${parent.title || parent.name}”页面${cap[0]}`;
921
+ return `${event.title}“${parent.title || parent.name}”页面`;
733
922
  }
734
- /**
735
- * 转换成 Vue 的模板格式
736
- */
737
- toVue(options?: ElementToVueOptions) {
738
- let code = '';
739
- if (this.logics?.length) {
740
- code += `@${this.name}="`;
741
- const argsList: string[] = [];
742
- if (this.logics?.length) {
743
- let parent = this.parentNode;
744
- let index = 0;
745
- while (parent && parent.concept !== 'View') {
746
- if ((parent as ViewElement).slotScope) {
747
- argsList.unshift(index === 0 ? 'current' : 'current' + index);
748
- index++;
749
- }
750
- parent = parent.parentNode;
751
- }
752
- argsList.unshift('$event');
753
- }
754
- code += this.getViewEventName();
755
-
756
- code += '(';
757
- argsList.forEach((arg, index) => {
758
- code += arg;
759
- if (index !== argsList.length - 1)
760
- code += ', ';
761
- });
762
- code += ')';
763
-
764
- code += `"`;
923
+ if (parent instanceof ViewElement) {
924
+ const eventName = `${parent.tag}-${this.name}`;
925
+ if (elementsEventsMap[eventName]) {
926
+ const event = elementsEventsMap[eventName];
927
+
928
+ let title = '';
929
+ const textChild = parent.children.find((item) => item.tag === 'u-text');
930
+ if (textChild) {
931
+ const bindAttr = textChild.bindAttrs.find((bindAttr) => bindAttr.name === 'text' || bindAttr.name === 'title' || bindAttr.name === 'label');
932
+ if (bindAttr && bindAttr.type === 'string') title = bindAttr.value;
933
+ } else {
934
+ const bindAttr = parent.bindAttrs.find((bindAttr) => bindAttr.name === 'text' || bindAttr.name === 'title' || bindAttr.name === 'label');
935
+ if (bindAttr && bindAttr.type === 'string') title = bindAttr.value;
765
936
  }
766
937
 
767
- return code;
768
- }
769
-
770
- // 获取bindEvent上的logic的参数从上文获取
771
- getContextLogicParams() {
772
- const argsList: string[] = [];
773
- if (this.logics?.length) {
774
- let parent = this.parentNode;
775
- let index = 0;
776
- while (parent && parent.concept !== 'View') {
777
- if ((parent as ViewElement).slotScope) {
778
- argsList.unshift(index === 0 ? 'current' : 'current' + index);
779
- index++;
780
- }
781
- parent = parent.parentNode;
782
- }
783
- argsList.unshift('event');
938
+ const cap = suffixRE.exec(event?.title);
939
+ if (cap) return `${event.title.replace(suffixRE, '')}${title ? `“${title}”` : ''}${parent.name}${cap[0]}`;
940
+ return `${event.title}${title ? `“${title}”` : ''}${parent.name}`;
941
+ }
942
+ if (['click', 'dblclick', 'contextmenu', 'mousedown', 'mouseup', 'mouseenter', 'mouseleave', 'focus', 'blur'].includes(this.name)) {
943
+ const event = elementsEventsMap[this.name];
944
+
945
+ let title = '';
946
+ const textChild = parent.children.find((item) => item.tag === 'u-text');
947
+ if (textChild) {
948
+ const bindAttr = textChild.bindAttrs.find((bindAttr) => bindAttr.name === 'text' || bindAttr.name === 'title' || bindAttr.name === 'label');
949
+ if (bindAttr && bindAttr.type === 'string') title = bindAttr.value;
950
+ } else {
951
+ const bindAttr = parent.bindAttrs.find((bindAttr) => bindAttr.name === 'text' || bindAttr.name === 'title' || bindAttr.name === 'label');
952
+ if (bindAttr && bindAttr.type === 'string') title = bindAttr.value;
784
953
  }
785
- return argsList.map((name: string) => new Param({ name }));
786
- }
787
954
 
788
- // 获取bindEvent上的logic的参数从上文获取
789
- getContextRenderLogicParams(logic: Logic) {
790
- const argsList: Param[] = [];
791
- const virtualParams = logic.virtualParams;
792
- if (this.logics?.length) {
793
- let parent = this.parentNode;
794
- let index = 0;
795
- const event = Param.from({ name: 'event', typeAnnotation: null }, logic, 'virtualParams');
796
- argsList.push(event);
797
- while (parent && parent.concept !== 'View') {
798
- if ((parent as ViewElement).slotScope) {
799
- const param = Param.from({ name: index === 0 ? 'current' : 'current' + index, typeAnnotation: null }, logic, 'virtualParams');
800
- argsList.push(param);
801
- index++;
802
- }
803
- parent = parent.parentNode;
804
- }
805
- }
806
- let haveDifference = false;
807
- // 如果长度一样
808
- if (virtualParams.length === argsList.length) {
809
- // 那就看一下每一项的名字是不是变了
810
- for (let i = 0; i < virtualParams.length; i++) {
811
- if (virtualParams[i].name !== argsList[i].name) {
812
- haveDifference = true;
813
- break;
814
- }
815
- }
816
- // 如果变了, 输出新的
817
- if (haveDifference) {
818
- return argsList;
819
- }
820
- // 如果没变,输出旧的不让树组件刷新
821
- return virtualParams;
822
- }
823
- // 长度啥的都不一样,就输出新的
824
- return argsList;
955
+ const cap = suffixRE.exec(event?.title);
956
+ if (cap) return `${event.title.replace(suffixRE, '')}${title ? `“${title}”` : ''}${parent.name}${cap[0]}`;
957
+ return `${event.title}${title ? `“${title}”` : ''}${parent.name}`;
958
+ }
959
+ return `${parent.name}-${this.name}`;
825
960
  }
961
+ }
826
962
 
827
- getPageViewEventChineseName() {
828
- const parent = this.parentNode;
829
- const suffixRE = /时|前|后$/;
830
- if (parent instanceof View) {
831
- const event = elementsEventsMap[this.name];
832
-
833
- if (['keydown', 'keyup'].includes(event.name)) {
834
- return `“${parent.title || parent.name}”页面${event.title}`;
835
- }
836
-
837
- const cap = suffixRE.exec(event?.title);
838
- if (cap)
839
- return `${event.title.replace(suffixRE, '')}“${parent.title || parent.name}”页面${cap[0]}`;
840
- else
841
- return `${event.title}“${parent.title || parent.name}”页面`;
842
- } else if (parent instanceof ViewElement) {
843
- const eventName = `${parent.tag}-${this.name}`;
844
- if (elementsEventsMap[eventName]) {
845
- const event = elementsEventsMap[eventName];
846
-
847
- let title = '';
848
- const textChild = parent.children.find((item) => item.tag === 'u-text');
849
- if (textChild) {
850
- const bindAttr = textChild.bindAttrs.find((bindAttr) => bindAttr.name === 'text' || bindAttr.name === 'title' || bindAttr.name === 'label');
851
- if (bindAttr && bindAttr.type === 'string')
852
- title = bindAttr.value;
853
- } else {
854
- const bindAttr = parent.bindAttrs.find((bindAttr) => bindAttr.name === 'text' || bindAttr.name === 'title' || bindAttr.name === 'label');
855
- if (bindAttr && bindAttr.type === 'string')
856
- title = bindAttr.value;
857
- }
858
-
859
- const cap = suffixRE.exec(event?.title);
860
- if (cap)
861
- return `${event.title.replace(suffixRE, '')}${title ? `“${title}”` : ''}${parent.name}${cap[0]}`;
862
- else
863
- return `${event.title}${title ? `“${title}”` : ''}${parent.name}`;
864
- } else if (['click', 'dblclick', 'contextmenu', 'mousedown', 'mouseup', 'mouseenter', 'mouseleave', 'focus', 'blur'].includes(this.name)) {
865
- const event = elementsEventsMap[this.name];
866
-
867
- let title = '';
868
- const textChild = parent.children.find((item) => item.tag === 'u-text');
869
- if (textChild) {
870
- const bindAttr = textChild.bindAttrs.find((bindAttr) => bindAttr.name === 'text' || bindAttr.name === 'title' || bindAttr.name === 'label');
871
- if (bindAttr && bindAttr.type === 'string')
872
- title = bindAttr.value;
873
- } else {
874
- const bindAttr = parent.bindAttrs.find((bindAttr) => bindAttr.name === 'text' || bindAttr.name === 'title' || bindAttr.name === 'label');
875
- if (bindAttr && bindAttr.type === 'string')
876
- title = bindAttr.value;
877
- }
878
-
879
- const cap = suffixRE.exec(event?.title);
880
- if (cap)
881
- return `${event.title.replace(suffixRE, '')}${title ? `“${title}”` : ''}${parent.name}${cap[0]}`;
882
- else
883
- return `${event.title}${title ? `“${title}”` : ''}${parent.name}`;
884
- }
885
- return `${parent.name}-${this.name}`;
886
- }
963
+ getViewEventChineseName() {
964
+ const parent = this.parentNode;
965
+ if (parent instanceof View) {
966
+ const event = elementsEventsMap[this.name];
967
+ return `${event.title}`;
887
968
  }
888
-
889
- getViewEventChineseName() {
890
- const parent = this.parentNode;
891
- if (parent instanceof View) {
892
- const event = elementsEventsMap[this.name];
893
- return `${event.title}`;
894
- } else if (parent instanceof ViewElement) {
895
- const eventName = `${parent.tag}-${this.name}`;
896
- if (elementsEventsMap[eventName]) {
897
- const event = elementsEventsMap[eventName];
898
- return `${event.title}`;
899
- } else if (['click', 'dblclick', 'contextmenu', 'mousedown', 'mouseup', 'mouseenter', 'mouseleave', 'focus', 'blur'].includes(this.name)) {
900
- const event = elementsEventsMap[this.name];
901
- return `${event.title}`;
902
- }
903
- return `${this.name}`;
904
- }
969
+ if (parent instanceof ViewElement) {
970
+ const eventName = `${parent.tag}-${this.name}`;
971
+ if (elementsEventsMap[eventName]) {
972
+ const event = elementsEventsMap[eventName];
973
+ return `${event.title}`;
974
+ }
975
+ if (['click', 'dblclick', 'contextmenu', 'mousedown', 'mouseup', 'mouseenter', 'mouseleave', 'focus', 'blur'].includes(this.name)) {
976
+ const event = elementsEventsMap[this.name];
977
+ return `${event.title}`;
978
+ }
979
+ return `${this.name}`;
905
980
  }
906
- getViewEventName() {
907
- // 名称规则:组件的名称 + 组件的事件 + 逻辑本身的事件 用下划线链接
908
- const parentNode = this.parentNode;
909
- const newName = this.name.replace(/-/g, '');
910
- if (parentNode instanceof ViewElement) {
911
- return `${parentNode.name}_${newName}`;
912
- } else if (parentNode instanceof View) {
913
- return `${this.view.name}_${newName}`;
914
- } else {
915
- // 这里编译成这个名字了 后续pctemplate 里也得按这个调用?
916
- // 或者说因为会编译在不同的端里 直接 name好了
917
- // return `${this.parentNode.name}_${newName}`;
918
- return newName;
919
- }
981
+ }
982
+
983
+ getViewEventName() {
984
+ // 名称规则:组件的名称 + 组件的事件 + 逻辑本身的事件 用下划线链接
985
+ const { parentNode } = this;
986
+ const newName = this.name.replace(/-/g, '');
987
+ if (parentNode instanceof ViewElement) {
988
+ return `${parentNode.name}_${newName}`;
920
989
  }
921
- toFunction(state?: TranslatorState): string {
922
- // shiftState(state, code)
923
- // 和 toJS一样的 只是下一行增加了 function 关键字
924
- // let code = `async function ${this.getViewEventName()} (`;
925
- let code = `window.${this.getViewEventName()} = async (`;
926
- const params = this.getContextLogicParams();
927
- code += params.map((item: Param) => item.name).toString();
928
- // code += ') { \n';
929
- code += ') => { \n';
930
- this.logics.forEach((logic) => {
931
- code += logic.toJS(shiftState(state, code), 'IIFE');
932
- });
933
- code += '}\n';
934
- return code;
990
+ if (parentNode instanceof View) {
991
+ return `${this.view.name}_${newName}`;
935
992
  }
936
- getTsNamespace() {
937
- if (this.parentNode && (this.parentNode as Namespace).getNamespace) {
938
- const parentNamespace = (this.parentNode as Namespace).getNamespace();
939
- const parentName = this.parentNode.name;
940
- const arr = [parentNamespace];
941
-
942
- if (this.parentNode.concept !== 'App' && parentName) {
943
- arr.push(parentName);
944
- }
945
- return `${arr.join('.')}.bindEvents`;
946
- } else
947
- throw new Error('无法获取命名空间,请设置 parentNode!');
993
+ // 这里编译成这个名字了 后续pctemplate 里也得按这个调用?
994
+ // 或者说因为会编译在不同的端里 直接 name好了
995
+ // return `${this.parentNode.name}_${newName}`;
996
+ return newName;
997
+ }
998
+
999
+ toFunction(state?: TranslatorState): string {
1000
+ // shiftState(state, code)
1001
+ // 和 toJS一样的 只是下一行增加了 function 关键字
1002
+ // let code = `async function ${this.getViewEventName()} (`;
1003
+ let code = `window.${this.getViewEventName()} = async (`;
1004
+ const params = this.getContextLogicParams();
1005
+ code += params.map((item: Param) => item.name).toString();
1006
+ // code += ') { \n';
1007
+ code += ') => { \n';
1008
+ this.logics.forEach((logic) => {
1009
+ code += logic.toJS(shiftState(state, code), 'IIFE');
1010
+ });
1011
+ code += '}\n';
1012
+ return code;
1013
+ }
1014
+
1015
+ getTsNamespace() {
1016
+ if (this.parentNode && (this.parentNode as Namespace).getNamespace) {
1017
+ const parentNamespace = (this.parentNode as Namespace).getNamespace();
1018
+ const parentName = this.parentNode.name;
1019
+ const arr = [parentNamespace];
1020
+
1021
+ if (this.parentNode.concept !== 'App' && parentName) {
1022
+ arr.push(parentName);
1023
+ }
1024
+ return `${arr.join('.')}.bindEvents`;
948
1025
  }
949
- toEmbeddedTSFile() {
950
- let code = `namespace ${this.getTsNamespace()} {\n`;
951
- const state = createCompilerState(code, {
952
- tabSize: 1,
953
- });
954
-
955
- try {
956
- code += this.toEmbeddedTS(state);
957
- } catch (err) {
958
- code += '';
959
- console.log(err);
960
- }
961
-
962
- code += '}\n';
963
-
964
- return {
965
- code,
966
- filePath: this.getEmbeddedFilePath(),
967
- sourceMap: state.sourceMap,
968
- };
1026
+ throw new Error('无法获取命名空间,请设置 parentNode!');
1027
+ }
1028
+
1029
+ toEmbeddedTSFile() {
1030
+ let code = `namespace ${this.getTsNamespace()} {\n`;
1031
+ const state = createCompilerState(code, {
1032
+ tabSize: 1,
1033
+ });
1034
+
1035
+ try {
1036
+ code += this.toEmbeddedTS(state);
1037
+ } catch (err) {
1038
+ code += '';
1039
+ console.log(err);
969
1040
  }
970
- /**
971
- * 生成宿主语言的文件路径
972
- * @param name 一般不用传,用于 rename
973
- */
974
- getEmbeddedFilePath(name = this.name) {
975
- let pathName = name;
976
- let parent = this.parentNode;
977
- if (parent) {
978
- while (parent && parent instanceof View) {
979
- pathName = parent.name + '/' + pathName;
980
- parent = parent.parentNode;
981
- }
982
- }
983
- return `/embedded/${this.app.name}/frontends/${this.frontend.name}/bindEvents/${pathName}.ts`;
1041
+
1042
+ code += '}\n';
1043
+
1044
+ return {
1045
+ code,
1046
+ filePath: this.getEmbeddedFilePath(),
1047
+ sourceMap: state.sourceMap,
1048
+ };
1049
+ }
1050
+
1051
+ /**
1052
+ * 生成宿主语言的文件路径
1053
+ * @param name 一般不用传,用于 rename
1054
+ */
1055
+ getEmbeddedFilePath(name = this.name) {
1056
+ let pathName = name;
1057
+ let parent = this.parentNode;
1058
+ if (parent) {
1059
+ while (parent && parent instanceof View) {
1060
+ pathName = `${parent.name}/${pathName}`;
1061
+ parent = parent.parentNode;
1062
+ }
984
1063
  }
1064
+ return `/embedded/${this.app.name}/frontends/${this.frontend.name}/bindEvents/${pathName}.ts`;
1065
+ }
985
1066
 
986
- //================================================================================
987
- // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
988
- // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
989
- //================================================================================
1067
+ //= ===============================================================================
1068
+ // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
1069
+ // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
1070
+ //= ===============================================================================
990
1071
  }
991
1072
 
992
1073
  classMap.BindEvent = BindEvent;
993
1074
  export default BindEvent;
994
- //================================================================================
1075
+ //= ===============================================================================
995
1076
  // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
996
1077
  // 自动生成的代码已结束。下面可以手动编写。
997
- //================================================================================
1078
+ //= ===============================================================================