@lcap/nasl 3.2.0-beta.3 → 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 (842) hide show
  1. package/out/automate/engine/utils.js +4 -0
  2. package/out/automate/engine/utils.js.map +1 -1
  3. package/out/automate/upgrader/2.20.js +1 -1
  4. package/out/automate/upgrader/2.20.js.map +1 -1
  5. package/out/bak/translator.js +11 -15
  6. package/out/bak/translator.js.map +1 -1
  7. package/out/breakpoint/generator/AfterStartNode.js +3 -1
  8. package/out/breakpoint/generator/AfterStartNode.js.map +1 -1
  9. package/out/breakpoint/generator/BeforeEndNode.js.map +1 -1
  10. package/out/breakpoint/generator/BreakpointNode.d.ts +1 -0
  11. package/out/breakpoint/generator/BreakpointNode.js +48 -15
  12. package/out/breakpoint/generator/BreakpointNode.js.map +1 -1
  13. package/out/breakpoint/generator/CallbackNode.d.ts +4 -0
  14. package/out/breakpoint/generator/CallbackNode.js +22 -0
  15. package/out/breakpoint/generator/CallbackNode.js.map +1 -0
  16. package/out/breakpoint/generator/FragmentNode.d.ts +4 -0
  17. package/out/breakpoint/generator/FragmentNode.js +18 -0
  18. package/out/breakpoint/generator/FragmentNode.js.map +1 -0
  19. package/out/breakpoint/generator/index.js +25 -4
  20. package/out/breakpoint/generator/index.js.map +1 -1
  21. package/out/breakpoint/shared/constants.d.ts +3 -0
  22. package/out/breakpoint/shared/constants.js +6 -1
  23. package/out/breakpoint/shared/constants.js.map +1 -1
  24. package/out/breakpoint/shared/operations.js.map +1 -1
  25. package/out/breakpoint/shared/socket.d.ts +1 -1
  26. package/out/breakpoint/shared/socket.js +36 -7
  27. package/out/breakpoint/shared/socket.js.map +1 -1
  28. package/out/breakpoint/shared/utils.d.ts +2 -0
  29. package/out/breakpoint/shared/utils.js +15 -2
  30. package/out/breakpoint/shared/utils.js.map +1 -1
  31. package/out/breakpoint/store/core.d.ts +48 -2
  32. package/out/breakpoint/store/core.js +58 -32
  33. package/out/breakpoint/store/core.js.map +1 -1
  34. package/out/breakpoint/store/dock.js +1 -1
  35. package/out/breakpoint/store/dock.js.map +1 -1
  36. package/out/common/BaseNode.d.ts +2 -2
  37. package/out/common/BaseNode.js +110 -53
  38. package/out/common/BaseNode.js.map +1 -1
  39. package/out/common/Command.d.ts +13 -2
  40. package/out/common/Command.js +37 -9
  41. package/out/common/Command.js.map +1 -1
  42. package/out/common/EventEmitter.js.map +1 -1
  43. package/out/common/Messager.d.ts +3 -3
  44. package/out/common/Messager.js +6 -7
  45. package/out/common/Messager.js.map +1 -1
  46. package/out/common/asyncFuncMap.js.map +1 -1
  47. package/out/concepts/Abort__.js +6 -5
  48. package/out/concepts/Abort__.js.map +1 -1
  49. package/out/concepts/Anchor__.d.ts +4 -3
  50. package/out/concepts/Anchor__.js +24 -7
  51. package/out/concepts/Anchor__.js.map +1 -1
  52. package/out/concepts/AnonymousFunction__.d.ts +22 -21
  53. package/out/concepts/AnonymousFunction__.js +48 -22
  54. package/out/concepts/AnonymousFunction__.js.map +1 -1
  55. package/out/concepts/App__.d.ts +421 -247
  56. package/out/concepts/App__.js +288 -54
  57. package/out/concepts/App__.js.map +1 -1
  58. package/out/concepts/Argument__.d.ts +4 -3
  59. package/out/concepts/Argument__.js +42 -11
  60. package/out/concepts/Argument__.js.map +1 -1
  61. package/out/concepts/Assignee__.d.ts +45 -45
  62. package/out/concepts/Assignee__.js +15 -15
  63. package/out/concepts/Assignee__.js.map +1 -1
  64. package/out/concepts/AssignmentLine__.js +6 -5
  65. package/out/concepts/AssignmentLine__.js.map +1 -1
  66. package/out/concepts/Assignment__.d.ts +7 -6
  67. package/out/concepts/Assignment__.js +41 -23
  68. package/out/concepts/Assignment__.js.map +1 -1
  69. package/out/concepts/Attribute__.d.ts +3 -3
  70. package/out/concepts/Attribute__.js +8 -7
  71. package/out/concepts/Attribute__.js.map +1 -1
  72. package/out/concepts/AuthInterface__.js +4 -3
  73. package/out/concepts/AuthInterface__.js.map +1 -1
  74. package/out/concepts/AuthLogicForCallInterface__.d.ts +15 -15
  75. package/out/concepts/AuthLogicForCallInterface__.js +46 -27
  76. package/out/concepts/AuthLogicForCallInterface__.js.map +1 -1
  77. package/out/concepts/AuthLogic__.js +27 -13
  78. package/out/concepts/AuthLogic__.js.map +1 -1
  79. package/out/concepts/BackendVariable__.d.ts +5 -5
  80. package/out/concepts/BackendVariable__.js +23 -26
  81. package/out/concepts/BackendVariable__.js.map +1 -1
  82. package/out/concepts/Backend__.d.ts +18 -18
  83. package/out/concepts/Backend__.js +13 -13
  84. package/out/concepts/Backend__.js.map +1 -1
  85. package/out/concepts/BatchAssignment__.d.ts +34 -33
  86. package/out/concepts/BatchAssignment__.js +83 -43
  87. package/out/concepts/BatchAssignment__.js.map +1 -1
  88. package/out/concepts/BinaryExpression__.d.ts +7 -6
  89. package/out/concepts/BinaryExpression__.js +60 -24
  90. package/out/concepts/BinaryExpression__.js.map +1 -1
  91. package/out/concepts/BindAttribute__.d.ts +37 -37
  92. package/out/concepts/BindAttribute__.js +102 -58
  93. package/out/concepts/BindAttribute__.js.map +1 -1
  94. package/out/concepts/BindDirective__.d.ts +13 -13
  95. package/out/concepts/BindDirective__.js +23 -21
  96. package/out/concepts/BindDirective__.js.map +1 -1
  97. package/out/concepts/BindEvent__.d.ts +28 -28
  98. package/out/concepts/BindEvent__.js +150 -57
  99. package/out/concepts/BindEvent__.js.map +1 -1
  100. package/out/concepts/BindStyle__.d.ts +14 -15
  101. package/out/concepts/BindStyle__.js +16 -16
  102. package/out/concepts/BindStyle__.js.map +1 -1
  103. package/out/concepts/BooleanLiteral__.d.ts +1 -0
  104. package/out/concepts/BooleanLiteral__.js +12 -5
  105. package/out/concepts/BooleanLiteral__.js.map +1 -1
  106. package/out/concepts/CallAuthInterface__.d.ts +15 -15
  107. package/out/concepts/CallAuthInterface__.js +23 -22
  108. package/out/concepts/CallAuthInterface__.js.map +1 -1
  109. package/out/concepts/CallConnector__.d.ts +11 -9
  110. package/out/concepts/CallConnector__.js +79 -36
  111. package/out/concepts/CallConnector__.js.map +1 -1
  112. package/out/concepts/CallFunction__.d.ts +17 -16
  113. package/out/concepts/CallFunction__.js +95 -63
  114. package/out/concepts/CallFunction__.js.map +1 -1
  115. package/out/concepts/CallInterface__.d.ts +9 -8
  116. package/out/concepts/CallInterface__.js +109 -80
  117. package/out/concepts/CallInterface__.js.map +1 -1
  118. package/out/concepts/CallLogic__.d.ts +24 -20
  119. package/out/concepts/CallLogic__.js +209 -162
  120. package/out/concepts/CallLogic__.js.map +1 -1
  121. package/out/concepts/CallQueryComponent__.d.ts +51 -51
  122. package/out/concepts/CallQueryComponent__.js +66 -63
  123. package/out/concepts/CallQueryComponent__.js.map +1 -1
  124. package/out/concepts/Comment__.d.ts +1 -0
  125. package/out/concepts/Comment__.js +13 -6
  126. package/out/concepts/Comment__.js.map +1 -1
  127. package/out/concepts/CompletionProperty__.d.ts +3 -3
  128. package/out/concepts/CompletionProperty__.js +16 -8
  129. package/out/concepts/CompletionProperty__.js.map +1 -1
  130. package/out/concepts/ConfigGroup__.d.ts +15 -15
  131. package/out/concepts/ConfigGroup__.js +9 -9
  132. package/out/concepts/ConfigGroup__.js.map +1 -1
  133. package/out/concepts/ConfigPropertyValue__.js +4 -3
  134. package/out/concepts/ConfigPropertyValue__.js.map +1 -1
  135. package/out/concepts/ConfigProperty__.d.ts +15 -15
  136. package/out/concepts/ConfigProperty__.js +10 -10
  137. package/out/concepts/ConfigProperty__.js.map +1 -1
  138. package/out/concepts/Configuration__.d.ts +15 -15
  139. package/out/concepts/Configuration__.js +9 -9
  140. package/out/concepts/Configuration__.js.map +1 -1
  141. package/out/concepts/Connection__.d.ts +166 -0
  142. package/out/concepts/Connection__.js +332 -0
  143. package/out/concepts/Connection__.js.map +1 -0
  144. package/out/concepts/ConnectorTrigger__.js +4 -3
  145. package/out/concepts/ConnectorTrigger__.js.map +1 -1
  146. package/out/concepts/Connector__.d.ts +66 -66
  147. package/out/concepts/Connector__.js +16 -15
  148. package/out/concepts/Connector__.js.map +1 -1
  149. package/out/concepts/Constant__.d.ts +3 -3
  150. package/out/concepts/Constant__.js +8 -7
  151. package/out/concepts/Constant__.js.map +1 -1
  152. package/out/concepts/DataElement__.d.ts +3 -3
  153. package/out/concepts/DataElement__.js +6 -5
  154. package/out/concepts/DataElement__.js.map +1 -1
  155. package/out/concepts/DataSource__.d.ts +15 -15
  156. package/out/concepts/DataSource__.js +55 -39
  157. package/out/concepts/DataSource__.js.map +1 -1
  158. package/out/concepts/DatabaseTypeAnnotation__.js +4 -3
  159. package/out/concepts/DatabaseTypeAnnotation__.js.map +1 -1
  160. package/out/concepts/Destination__.d.ts +12 -11
  161. package/out/concepts/Destination__.js +93 -36
  162. package/out/concepts/Destination__.js.map +1 -1
  163. package/out/concepts/End__.js +15 -13
  164. package/out/concepts/End__.js.map +1 -1
  165. package/out/concepts/EntityIndex__.d.ts +1 -1
  166. package/out/concepts/EntityIndex__.js +6 -5
  167. package/out/concepts/EntityIndex__.js.map +1 -1
  168. package/out/concepts/EntityProperty__.d.ts +8 -7
  169. package/out/concepts/EntityProperty__.js +39 -24
  170. package/out/concepts/EntityProperty__.js.map +1 -1
  171. package/out/concepts/Entity__.d.ts +31 -30
  172. package/out/concepts/Entity__.js +40 -16
  173. package/out/concepts/Entity__.js.map +1 -1
  174. package/out/concepts/EnumItem__.d.ts +1 -0
  175. package/out/concepts/EnumItem__.js +12 -5
  176. package/out/concepts/EnumItem__.js.map +1 -1
  177. package/out/concepts/Enum__.d.ts +9 -8
  178. package/out/concepts/Enum__.js +24 -11
  179. package/out/concepts/Enum__.js.map +1 -1
  180. package/out/concepts/Event__.d.ts +15 -15
  181. package/out/concepts/Event__.js +6 -5
  182. package/out/concepts/Event__.js.map +1 -1
  183. package/out/concepts/ExternalDestination__.d.ts +6 -6
  184. package/out/concepts/ExternalDestination__.js +12 -11
  185. package/out/concepts/ExternalDestination__.js.map +1 -1
  186. package/out/concepts/ForEachStatement__.d.ts +25 -24
  187. package/out/concepts/ForEachStatement__.js +101 -36
  188. package/out/concepts/ForEachStatement__.js.map +1 -1
  189. package/out/concepts/FrontendLibrary__.d.ts +30 -30
  190. package/out/concepts/FrontendLibrary__.js +12 -13
  191. package/out/concepts/FrontendLibrary__.js.map +1 -1
  192. package/out/concepts/FrontendVariable__.js +4 -3
  193. package/out/concepts/FrontendVariable__.js.map +1 -1
  194. package/out/concepts/Frontend__.d.ts +64 -65
  195. package/out/concepts/Frontend__.js +23 -27
  196. package/out/concepts/Frontend__.js.map +1 -1
  197. package/out/concepts/Function__.d.ts +64 -63
  198. package/out/concepts/Function__.js +49 -21
  199. package/out/concepts/Function__.js.map +1 -1
  200. package/out/concepts/Identifier__.js +37 -31
  201. package/out/concepts/Identifier__.js.map +1 -1
  202. package/out/concepts/IfStatement__.d.ts +20 -19
  203. package/out/concepts/IfStatement__.js +64 -34
  204. package/out/concepts/IfStatement__.js.map +1 -1
  205. package/out/concepts/Integration__.d.ts +3 -3
  206. package/out/concepts/Integration__.js +8 -7
  207. package/out/concepts/Integration__.js.map +1 -1
  208. package/out/concepts/InterfaceParam__.d.ts +3 -3
  209. package/out/concepts/InterfaceParam__.js +7 -6
  210. package/out/concepts/InterfaceParam__.js.map +1 -1
  211. package/out/concepts/Interface__.d.ts +33 -33
  212. package/out/concepts/Interface__.js +19 -20
  213. package/out/concepts/Interface__.js.map +1 -1
  214. package/out/concepts/JSBlock__.d.ts +1 -0
  215. package/out/concepts/JSBlock__.js +12 -5
  216. package/out/concepts/JSBlock__.js.map +1 -1
  217. package/out/concepts/JavaLogic__.js +10 -9
  218. package/out/concepts/JavaLogic__.js.map +1 -1
  219. package/out/concepts/LogicItem__.d.ts +6 -0
  220. package/out/concepts/LogicItem__.js +14 -5
  221. package/out/concepts/LogicItem__.js.map +1 -1
  222. package/out/concepts/Logic__.d.ts +80 -79
  223. package/out/concepts/Logic__.js +204 -58
  224. package/out/concepts/Logic__.js.map +1 -1
  225. package/out/concepts/MatchCase__.d.ts +39 -38
  226. package/out/concepts/MatchCase__.js +122 -37
  227. package/out/concepts/MatchCase__.js.map +1 -1
  228. package/out/concepts/Match__.d.ts +13 -11
  229. package/out/concepts/Match__.js +128 -60
  230. package/out/concepts/Match__.js.map +1 -1
  231. package/out/concepts/MemberExpression__.d.ts +7 -6
  232. package/out/concepts/MemberExpression__.js +52 -22
  233. package/out/concepts/MemberExpression__.js.map +1 -1
  234. package/out/concepts/MicroApp__.js +4 -3
  235. package/out/concepts/MicroApp__.js.map +1 -1
  236. package/out/concepts/Module__.d.ts +242 -154
  237. package/out/concepts/Module__.js +139 -33
  238. package/out/concepts/Module__.js.map +1 -1
  239. package/out/concepts/MsgTriggerEvent__.d.ts +15 -15
  240. package/out/concepts/MsgTriggerEvent__.js +6 -5
  241. package/out/concepts/MsgTriggerEvent__.js.map +1 -1
  242. package/out/concepts/MsgTriggerLauncher__.d.ts +23 -15
  243. package/out/concepts/MsgTriggerLauncher__.js +24 -5
  244. package/out/concepts/MsgTriggerLauncher__.js.map +1 -1
  245. package/out/concepts/Namespace__.d.ts +180 -180
  246. package/out/concepts/Namespace__.js +33 -34
  247. package/out/concepts/Namespace__.js.map +1 -1
  248. package/out/concepts/NewComposite__.d.ts +49 -48
  249. package/out/concepts/NewComposite__.js +164 -49
  250. package/out/concepts/NewComposite__.js.map +1 -1
  251. package/out/concepts/NewList__.d.ts +19 -18
  252. package/out/concepts/NewList__.js +29 -12
  253. package/out/concepts/NewList__.js.map +1 -1
  254. package/out/concepts/NewMap__.d.ts +34 -33
  255. package/out/concepts/NewMap__.js +81 -72
  256. package/out/concepts/NewMap__.js.map +1 -1
  257. package/out/concepts/New__.js +6 -5
  258. package/out/concepts/New__.js.map +1 -1
  259. package/out/concepts/NullLiteral__.js +6 -5
  260. package/out/concepts/NullLiteral__.js.map +1 -1
  261. package/out/concepts/NumericLiteral__.d.ts +4 -3
  262. package/out/concepts/NumericLiteral__.js +15 -8
  263. package/out/concepts/NumericLiteral__.js.map +1 -1
  264. package/out/concepts/OqlQueryComponent__.d.ts +4 -3
  265. package/out/concepts/OqlQueryComponent__.js +25 -16
  266. package/out/concepts/OqlQueryComponent__.js.map +1 -1
  267. package/out/concepts/OverriddenLogic__.d.ts +79 -79
  268. package/out/concepts/OverriddenLogic__.js +79 -58
  269. package/out/concepts/OverriddenLogic__.js.map +1 -1
  270. package/out/concepts/Param__.d.ts +6 -5
  271. package/out/concepts/Param__.js +66 -29
  272. package/out/concepts/Param__.js.map +1 -1
  273. package/out/concepts/Point__.js +4 -3
  274. package/out/concepts/Point__.js.map +1 -1
  275. package/out/concepts/ProcessComponent__.d.ts +30 -30
  276. package/out/concepts/ProcessComponent__.js +8 -7
  277. package/out/concepts/ProcessComponent__.js.map +1 -1
  278. package/out/concepts/ProcessElement__.d.ts +96 -96
  279. package/out/concepts/ProcessElement__.js +34 -34
  280. package/out/concepts/ProcessElement__.js.map +1 -1
  281. package/out/concepts/ProcessOutcome__.js +6 -5
  282. package/out/concepts/ProcessOutcome__.js.map +1 -1
  283. package/out/concepts/ProcessOutcomes__.js +6 -5
  284. package/out/concepts/ProcessOutcomes__.js.map +1 -1
  285. package/out/concepts/Process__.d.ts +75 -75
  286. package/out/concepts/Process__.js +33 -30
  287. package/out/concepts/Process__.js.map +1 -1
  288. package/out/concepts/QueryAggregateExpression__.d.ts +3 -3
  289. package/out/concepts/QueryAggregateExpression__.js +8 -7
  290. package/out/concepts/QueryAggregateExpression__.js.map +1 -1
  291. package/out/concepts/QueryFieldExpression__.js +7 -6
  292. package/out/concepts/QueryFieldExpression__.js.map +1 -1
  293. package/out/concepts/QueryFromExpression__.d.ts +8 -8
  294. package/out/concepts/QueryFromExpression__.js +8 -7
  295. package/out/concepts/QueryFromExpression__.js.map +1 -1
  296. package/out/concepts/QueryGroupByExpression__.d.ts +3 -3
  297. package/out/concepts/QueryGroupByExpression__.js +9 -10
  298. package/out/concepts/QueryGroupByExpression__.js.map +1 -1
  299. package/out/concepts/QueryJoinExpression__.d.ts +23 -23
  300. package/out/concepts/QueryJoinExpression__.js +11 -10
  301. package/out/concepts/QueryJoinExpression__.js.map +1 -1
  302. package/out/concepts/QueryLimitExpression__.d.ts +6 -6
  303. package/out/concepts/QueryLimitExpression__.js +9 -8
  304. package/out/concepts/QueryLimitExpression__.js.map +1 -1
  305. package/out/concepts/QueryOrderByExpression__.d.ts +6 -6
  306. package/out/concepts/QueryOrderByExpression__.js +9 -8
  307. package/out/concepts/QueryOrderByExpression__.js.map +1 -1
  308. package/out/concepts/QuerySelectExpression__.d.ts +30 -30
  309. package/out/concepts/QuerySelectExpression__.js +9 -8
  310. package/out/concepts/QuerySelectExpression__.js.map +1 -1
  311. package/out/concepts/Rect__.js +4 -3
  312. package/out/concepts/Rect__.js.map +1 -1
  313. package/out/concepts/Return__.d.ts +4 -3
  314. package/out/concepts/Return__.js +37 -18
  315. package/out/concepts/Return__.js.map +1 -1
  316. package/out/concepts/Role__.js +9 -9
  317. package/out/concepts/Role__.js.map +1 -1
  318. package/out/concepts/SelectMembers__.d.ts +18 -18
  319. package/out/concepts/SelectMembers__.js +10 -9
  320. package/out/concepts/SelectMembers__.js.map +1 -1
  321. package/out/concepts/Slot__.d.ts +3 -3
  322. package/out/concepts/Slot__.js +6 -5
  323. package/out/concepts/Slot__.js.map +1 -1
  324. package/out/concepts/SqlQueryComponent__.d.ts +4 -3
  325. package/out/concepts/SqlQueryComponent__.js +21 -12
  326. package/out/concepts/SqlQueryComponent__.js.map +1 -1
  327. package/out/concepts/Start__.js +6 -5
  328. package/out/concepts/Start__.js.map +1 -1
  329. package/out/concepts/StringInterpolation__.d.ts +16 -15
  330. package/out/concepts/StringInterpolation__.js +37 -14
  331. package/out/concepts/StringInterpolation__.js.map +1 -1
  332. package/out/concepts/StringLiteral__.d.ts +1 -0
  333. package/out/concepts/StringLiteral__.js +13 -8
  334. package/out/concepts/StringLiteral__.js.map +1 -1
  335. package/out/concepts/StructureProperty__.d.ts +4 -3
  336. package/out/concepts/StructureProperty__.js +22 -9
  337. package/out/concepts/StructureProperty__.js.map +1 -1
  338. package/out/concepts/Structure__.d.ts +31 -30
  339. package/out/concepts/Structure__.js +27 -15
  340. package/out/concepts/Structure__.js.map +1 -1
  341. package/out/concepts/SwitchCase__.d.ts +12 -11
  342. package/out/concepts/SwitchCase__.js +69 -31
  343. package/out/concepts/SwitchCase__.js.map +1 -1
  344. package/out/concepts/SwitchStatement__.d.ts +9 -8
  345. package/out/concepts/SwitchStatement__.js +27 -7
  346. package/out/concepts/SwitchStatement__.js.map +1 -1
  347. package/out/concepts/Theme__.js +4 -3
  348. package/out/concepts/Theme__.js.map +1 -1
  349. package/out/concepts/Transactional__.js +4 -3
  350. package/out/concepts/Transactional__.js.map +1 -1
  351. package/out/concepts/TriggerEvent__.d.ts +15 -15
  352. package/out/concepts/TriggerEvent__.js +6 -5
  353. package/out/concepts/TriggerEvent__.js.map +1 -1
  354. package/out/concepts/TriggerLauncher__.d.ts +15 -10
  355. package/out/concepts/TriggerLauncher__.js +54 -32
  356. package/out/concepts/TriggerLauncher__.js.map +1 -1
  357. package/out/concepts/TypeAnnotation__.d.ts +28 -27
  358. package/out/concepts/TypeAnnotation__.js +144 -124
  359. package/out/concepts/TypeAnnotation__.js.map +1 -1
  360. package/out/concepts/TypeParam__.d.ts +1 -0
  361. package/out/concepts/TypeParam__.js +12 -5
  362. package/out/concepts/TypeParam__.js.map +1 -1
  363. package/out/concepts/UnaryExpression__.d.ts +4 -3
  364. package/out/concepts/UnaryExpression__.js +31 -20
  365. package/out/concepts/UnaryExpression__.js.map +1 -1
  366. package/out/concepts/Unparsed__.d.ts +1 -0
  367. package/out/concepts/Unparsed__.js +12 -5
  368. package/out/concepts/Unparsed__.js.map +1 -1
  369. package/out/concepts/UseComponent__.js +4 -3
  370. package/out/concepts/UseComponent__.js.map +1 -1
  371. package/out/concepts/ValidationRule__.d.ts +14 -14
  372. package/out/concepts/ValidationRule__.js +19 -17
  373. package/out/concepts/ValidationRule__.js.map +1 -1
  374. package/out/concepts/Variable__.d.ts +4 -3
  375. package/out/concepts/Variable__.js +39 -23
  376. package/out/concepts/Variable__.js.map +1 -1
  377. package/out/concepts/ViewBlock__.js +4 -3
  378. package/out/concepts/ViewBlock__.js.map +1 -1
  379. package/out/concepts/ViewComponent__.d.ts +90 -90
  380. package/out/concepts/ViewComponent__.js +16 -15
  381. package/out/concepts/ViewComponent__.js.map +1 -1
  382. package/out/concepts/ViewElement__.d.ts +92 -86
  383. package/out/concepts/ViewElement__.js +258 -200
  384. package/out/concepts/ViewElement__.js.map +1 -1
  385. package/out/concepts/View__.d.ts +92 -92
  386. package/out/concepts/View__.js +173 -63
  387. package/out/concepts/View__.js.map +1 -1
  388. package/out/concepts/WhileStatement__.d.ts +12 -11
  389. package/out/concepts/WhileStatement__.js +46 -23
  390. package/out/concepts/WhileStatement__.js.map +1 -1
  391. package/out/concepts/basics/stdlib/index.js +17 -1
  392. package/out/concepts/basics/stdlib/index.js.map +1 -1
  393. package/out/concepts/basics/stdlib/nasl.browser.js +36 -0
  394. package/out/concepts/basics/stdlib/nasl.browser.js.map +1 -1
  395. package/out/concepts/basics/stdlib/nasl.event.d.ts +3 -0
  396. package/out/concepts/basics/stdlib/nasl.event.js +23 -0
  397. package/out/concepts/basics/stdlib/nasl.event.js.map +1 -0
  398. package/out/concepts/basics/stdlib/nasl.ui.js +45 -0
  399. package/out/concepts/basics/stdlib/nasl.ui.js.map +1 -1
  400. package/out/concepts/basics/stdlib/nasl.util.js +6 -22
  401. package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
  402. package/out/concepts/index__.d.ts +2 -1
  403. package/out/concepts/index__.js +2 -1
  404. package/out/concepts/index__.js.map +1 -1
  405. package/out/concepts/types__.d.ts +2 -1
  406. package/out/decorators/index.d.ts +1 -1
  407. package/out/decorators/index.js +20 -7
  408. package/out/decorators/index.js.map +1 -1
  409. package/out/decorators/promise.d.ts +7 -0
  410. package/out/decorators/promise.js +28 -0
  411. package/out/decorators/promise.js.map +1 -0
  412. package/out/enums/KEYWORDS.js.map +1 -1
  413. package/out/enums/LEVEL_NAME_MAP.js.map +1 -1
  414. package/out/generator/compileComponent.js.map +1 -1
  415. package/out/generator/genBundleFiles.d.ts +4 -1
  416. package/out/generator/genBundleFiles.js +15 -11
  417. package/out/generator/genBundleFiles.js.map +1 -1
  418. package/out/generator/genHash.js.map +1 -1
  419. package/out/generator/genMetaData.js +12 -8
  420. package/out/generator/genMetaData.js.map +1 -1
  421. package/out/generator/genReleaseBody.js +33 -35
  422. package/out/generator/genReleaseBody.js.map +1 -1
  423. package/out/generator/microApp.js +2 -1
  424. package/out/generator/microApp.js.map +1 -1
  425. package/out/generator/permission.js +31 -30
  426. package/out/generator/permission.js.map +1 -1
  427. package/out/generator/styleReplacer.js +4 -7
  428. package/out/generator/styleReplacer.js.map +1 -1
  429. package/out/index.d.ts +0 -2
  430. package/out/index.js +0 -3
  431. package/out/index.js.map +1 -1
  432. package/out/manager/diagnostic.d.ts +1 -1
  433. package/out/manager/diagnostic.js.map +1 -1
  434. package/out/manager/stepRecorder.js +13 -9
  435. package/out/manager/stepRecorder.js.map +1 -1
  436. package/out/natural/RequirementAnalyzer.d.ts +22 -0
  437. package/out/natural/RequirementAnalyzer.js +196 -0
  438. package/out/natural/RequirementAnalyzer.js.map +1 -0
  439. package/out/natural/RequirementExecutor.d.ts +51 -0
  440. package/out/natural/RequirementExecutor.js +692 -0
  441. package/out/natural/RequirementExecutor.js.map +1 -0
  442. package/out/natural/componentData.d.ts +31 -0
  443. package/out/natural/componentData.js +85 -0
  444. package/out/natural/componentData.js.map +1 -0
  445. package/out/natural/genNaturalTS.d.ts +3 -0
  446. package/out/natural/genNaturalTS.js +76 -0
  447. package/out/natural/genNaturalTS.js.map +1 -0
  448. package/out/natural/index.d.ts +4 -0
  449. package/out/natural/index.js +21 -0
  450. package/out/natural/index.js.map +1 -0
  451. package/out/natural/knowledgeMap.d.ts +4 -0
  452. package/out/natural/knowledgeMap.js +40 -0
  453. package/out/natural/knowledgeMap.js.map +1 -0
  454. package/out/natural/naslStdlibMap.d.ts +2 -0
  455. package/out/natural/naslStdlibMap.js +26 -0
  456. package/out/natural/naslStdlibMap.js.map +1 -0
  457. package/out/natural/transformTSCode.d.ts +7 -0
  458. package/out/natural/transformTSCode.js +760 -0
  459. package/out/natural/transformTSCode.js.map +1 -0
  460. package/out/sentry/index.d.ts +2 -1
  461. package/out/sentry/index.js.map +1 -1
  462. package/out/server/createUiTs.js +28 -16
  463. package/out/server/createUiTs.js.map +1 -1
  464. package/out/server/entity2LogicNamespace.js +24 -22
  465. package/out/server/entity2LogicNamespace.js.map +1 -1
  466. package/out/server/event.d.ts +12 -0
  467. package/out/server/event.js +52 -28
  468. package/out/server/event.js.map +1 -1
  469. package/out/server/extendBaseNode.js +55 -70
  470. package/out/server/extendBaseNode.js.map +1 -1
  471. package/out/server/formatTsUtils.js +46 -50
  472. package/out/server/formatTsUtils.js.map +1 -1
  473. package/out/server/getConnector.d.ts +3 -3
  474. package/out/server/getConnector.js +7 -8
  475. package/out/server/getConnector.js.map +1 -1
  476. package/out/server/getExtensionModules.js +2 -2
  477. package/out/server/getExtensionModules.js.map +1 -1
  478. package/out/server/getFunctions.js.map +1 -1
  479. package/out/server/getInterfaces.js.map +1 -1
  480. package/out/server/getLogging.js.map +1 -1
  481. package/out/server/getLogics.d.ts +1 -1
  482. package/out/server/getLogics.js +55 -8
  483. package/out/server/getLogics.js.map +1 -1
  484. package/out/server/getMemberIdentifier.js +13 -10
  485. package/out/server/getMemberIdentifier.js.map +1 -1
  486. package/out/server/getProcessComponents.js.map +1 -1
  487. package/out/server/getProcesses.js +21 -29
  488. package/out/server/getProcesses.js.map +1 -1
  489. package/out/server/getScope.js.map +1 -1
  490. package/out/server/getValidates.js.map +1 -1
  491. package/out/server/index.js +0 -1
  492. package/out/server/index.js.map +1 -1
  493. package/out/server/naslServer.d.ts +99 -94
  494. package/out/server/naslServer.js +490 -469
  495. package/out/server/naslServer.js.map +1 -1
  496. package/out/server/naslStdlibMap.js +6 -2
  497. package/out/server/naslStdlibMap.js.map +1 -1
  498. package/out/server/process2LogicNamespace.js.map +1 -1
  499. package/out/server/translator.d.ts +1 -1
  500. package/out/server/translator.js +52 -47
  501. package/out/server/translator.js.map +1 -1
  502. package/out/service/storage/init.d.ts +15 -1
  503. package/out/service/storage/init.js +65 -56
  504. package/out/service/storage/init.js.map +1 -1
  505. package/out/templator/genCallComponentLogic.js +1 -2
  506. package/out/templator/genCallComponentLogic.js.map +1 -1
  507. package/out/templator/genCreateBlock.js +14 -9
  508. package/out/templator/genCreateBlock.js.map +1 -1
  509. package/out/templator/genCurdEditMultipleKeyBlock.js +23 -14
  510. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  511. package/out/templator/genCurdMultipleKeyBlock.js +26 -30
  512. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  513. package/out/templator/genEditTableBlock.d.ts +1 -1
  514. package/out/templator/genEditTableBlock.js +14 -19
  515. package/out/templator/genEditTableBlock.js.map +1 -1
  516. package/out/templator/genEnumSelectBlock.js +1 -1
  517. package/out/templator/genEnumSelectBlock.js.map +1 -1
  518. package/out/templator/genGetBlock.js +2 -2
  519. package/out/templator/genGetBlock.js.map +1 -1
  520. package/out/templator/genGridViewBlock.d.ts +2 -2
  521. package/out/templator/genGridViewBlock.js +18 -28
  522. package/out/templator/genGridViewBlock.js.map +1 -1
  523. package/out/templator/genListViewBlock.d.ts +2 -2
  524. package/out/templator/genListViewBlock.js +9 -16
  525. package/out/templator/genListViewBlock.js.map +1 -1
  526. package/out/templator/genQueryComponent.js +22 -15
  527. package/out/templator/genQueryComponent.js.map +1 -1
  528. package/out/templator/genSelectBlock.d.ts +2 -2
  529. package/out/templator/genSelectBlock.js +21 -48
  530. package/out/templator/genSelectBlock.js.map +1 -1
  531. package/out/templator/genTableBlock.d.ts +1 -1
  532. package/out/templator/genTableBlock.js +11 -17
  533. package/out/templator/genTableBlock.js.map +1 -1
  534. package/out/templator/genUpdateBlock.js +13 -8
  535. package/out/templator/genUpdateBlock.js.map +1 -1
  536. package/out/templator/index.d.ts +4 -2
  537. package/out/templator/index.js +2 -2
  538. package/out/templator/index.js.map +1 -1
  539. package/out/templator/utils.d.ts +9 -2
  540. package/out/templator/utils.js +22 -22
  541. package/out/templator/utils.js.map +1 -1
  542. package/out/translator/index.js +27 -28
  543. package/out/translator/index.js.map +1 -1
  544. package/out/utils/index.d.ts +2 -1
  545. package/out/utils/index.js +8 -14
  546. package/out/utils/index.js.map +1 -1
  547. package/out/utils/logger.js.map +1 -1
  548. package/out/utils/sortTsString.js +3 -1
  549. package/out/utils/sortTsString.js.map +1 -1
  550. package/out/utils/string.js +8 -11
  551. package/out/utils/string.js.map +1 -1
  552. package/out/utils/time-slicing.d.ts +41 -0
  553. package/out/utils/time-slicing.js +81 -0
  554. package/out/utils/time-slicing.js.map +1 -0
  555. package/out/utils/traverse.js +4 -6
  556. package/out/utils/traverse.js.map +1 -1
  557. package/package.json +22 -20
  558. package/sandbox/stdlib/nasl.auth.ts +49 -46
  559. package/sandbox/stdlib/nasl.browser.ts +1 -0
  560. package/sandbox/stdlib/nasl.event.ts +4 -0
  561. package/sandbox/stdlib/nasl.http.ts +29 -31
  562. package/sandbox/stdlib/nasl.ui.definition.ts +13 -1
  563. package/sandbox/stdlib/nasl.ui.ts +11 -0
  564. package/sandbox-natural/stdlib/nasl.core.ts +36 -0
  565. package/sandbox-natural/stdlib/nasl.oql.ts +8 -0
  566. package/sandbox-natural/stdlib/nasl.ui.ts +56 -0
  567. package/sandbox-natural/stdlib/nasl.util.ts +26 -0
  568. package/sandbox-natural/tsconfig.json +12 -0
  569. package/src/automate/engine/utils.js +3 -0
  570. package/src/automate/upgrader/2.20.js +1 -1
  571. package/src/bak/translator.js +92 -99
  572. package/src/breakpoint/generator/AfterStartNode.ts +19 -17
  573. package/src/breakpoint/generator/BeforeEndNode.ts +17 -17
  574. package/src/breakpoint/generator/BreakpointNode.ts +243 -195
  575. package/src/breakpoint/generator/CallbackNode.ts +20 -0
  576. package/src/breakpoint/generator/FragmentNode.ts +14 -0
  577. package/src/breakpoint/generator/index.ts +107 -80
  578. package/src/breakpoint/shared/constants.ts +59 -53
  579. package/src/breakpoint/shared/operations.ts +6 -6
  580. package/src/breakpoint/shared/socket.ts +277 -223
  581. package/src/breakpoint/shared/utils.ts +166 -146
  582. package/src/breakpoint/store/core.ts +326 -297
  583. package/src/breakpoint/store/dock.ts +103 -103
  584. package/src/breakpoint/types/index.d.ts +11 -11
  585. package/src/common/BaseNode.ts +1103 -1020
  586. package/src/common/Command.ts +46 -16
  587. package/src/common/ComponentAPI.ts +72 -72
  588. package/src/common/EventEmitter.ts +80 -76
  589. package/src/common/Messager.ts +223 -224
  590. package/src/common/asyncFuncMap.ts +12 -12
  591. package/src/concepts/Abort__.ts +53 -60
  592. package/src/concepts/Anchor__.ts +158 -149
  593. package/src/concepts/AnonymousFunction__.ts +584 -551
  594. package/src/concepts/App__.ts +4278 -3669
  595. package/src/concepts/Argument__.ts +234 -210
  596. package/src/concepts/Assignee__.ts +680 -656
  597. package/src/concepts/AssignmentLine__.ts +80 -84
  598. package/src/concepts/Assignment__.ts +276 -264
  599. package/src/concepts/Attribute__.ts +183 -184
  600. package/src/concepts/AuthInterface__.ts +61 -63
  601. package/src/concepts/AuthLogicForCallInterface__.ts +540 -511
  602. package/src/concepts/AuthLogic__.ts +210 -194
  603. package/src/concepts/BackendVariable__.ts +414 -415
  604. package/src/concepts/Backend__.ts +317 -303
  605. package/src/concepts/BatchAssignment__.ts +987 -939
  606. package/src/concepts/BinaryExpression__.ts +370 -341
  607. package/src/concepts/BindAttribute__.ts +1056 -1011
  608. package/src/concepts/BindDirective__.ts +540 -542
  609. package/src/concepts/BindEvent__.ts +992 -866
  610. package/src/concepts/BindStyle__.ts +442 -451
  611. package/src/concepts/BooleanLiteral__.ts +89 -90
  612. package/src/concepts/CallAuthInterface__.ts +458 -433
  613. package/src/concepts/CallConnector__.ts +209 -164
  614. package/src/concepts/CallFunction__.ts +600 -600
  615. package/src/concepts/CallInterface__.ts +752 -725
  616. package/src/concepts/CallLogic__.ts +1328 -1236
  617. package/src/concepts/CallQueryComponent__.ts +1580 -1501
  618. package/src/concepts/Comment__.ts +69 -68
  619. package/src/concepts/CompletionProperty__.ts +250 -250
  620. package/src/concepts/ConfigGroup__.ts +312 -296
  621. package/src/concepts/ConfigPropertyValue__.ts +81 -82
  622. package/src/concepts/ConfigProperty__.ts +374 -357
  623. package/src/concepts/Configuration__.ts +288 -276
  624. package/src/concepts/Connection__.ts +426 -0
  625. package/src/concepts/ConnectorTrigger__.ts +146 -142
  626. package/src/concepts/Connector__.ts +1090 -1048
  627. package/src/concepts/Constant__.ts +226 -219
  628. package/src/concepts/DataElement__.ts +108 -115
  629. package/src/concepts/DataSource__.ts +508 -472
  630. package/src/concepts/DatabaseTypeAnnotation__.ts +53 -59
  631. package/src/concepts/Destination__.ts +808 -746
  632. package/src/concepts/End__.ts +85 -89
  633. package/src/concepts/EntityIndex__.ts +206 -202
  634. package/src/concepts/EntityProperty__.ts +825 -791
  635. package/src/concepts/Entity__.ts +921 -864
  636. package/src/concepts/EnumItem__.ts +133 -125
  637. package/src/concepts/Enum__.ts +347 -337
  638. package/src/concepts/Event__.ts +305 -292
  639. package/src/concepts/ExternalDestination__.ts +269 -280
  640. package/src/concepts/ForEachStatement__.ts +583 -531
  641. package/src/concepts/FrontendLibrary__.ts +507 -485
  642. package/src/concepts/FrontendVariable__.ts +44 -49
  643. package/src/concepts/Frontend__.ts +1239 -1187
  644. package/src/concepts/Function__.ts +1110 -1045
  645. package/src/concepts/Identifier__.ts +276 -272
  646. package/src/concepts/IfStatement__.ts +467 -436
  647. package/src/concepts/Integration__.ts +136 -137
  648. package/src/concepts/InterfaceParam__.ts +239 -238
  649. package/src/concepts/Interface__.ts +969 -948
  650. package/src/concepts/JSBlock__.ts +83 -83
  651. package/src/concepts/JavaLogic__.ts +101 -106
  652. package/src/concepts/LogicItem__.ts +307 -237
  653. package/src/concepts/Logic__.ts +2301 -2088
  654. package/src/concepts/MatchCase__.ts +886 -779
  655. package/src/concepts/Match__.ts +728 -659
  656. package/src/concepts/MemberExpression__.ts +330 -311
  657. package/src/concepts/MicroApp__.ts +91 -97
  658. package/src/concepts/Module__.ts +2590 -2275
  659. package/src/concepts/MsgTriggerEvent__.ts +297 -281
  660. package/src/concepts/MsgTriggerLauncher__.ts +286 -256
  661. package/src/concepts/Namespace__.ts +2579 -2466
  662. package/src/concepts/NewComposite__.ts +1487 -1350
  663. package/src/concepts/NewList__.ts +464 -450
  664. package/src/concepts/NewMap__.ts +691 -674
  665. package/src/concepts/New__.ts +42 -49
  666. package/src/concepts/NullLiteral__.ts +66 -72
  667. package/src/concepts/NumericLiteral__.ts +169 -169
  668. package/src/concepts/OqlQueryComponent__.ts +282 -279
  669. package/src/concepts/OverriddenLogic__.ts +2142 -2097
  670. package/src/concepts/Param__.ts +500 -442
  671. package/src/concepts/Point__.ts +53 -59
  672. package/src/concepts/ProcessComponent__.ts +497 -475
  673. package/src/concepts/ProcessElement__.ts +1852 -1780
  674. package/src/concepts/ProcessOutcome__.ts +59 -64
  675. package/src/concepts/ProcessOutcomes__.ts +59 -64
  676. package/src/concepts/Process__.ts +1491 -1428
  677. package/src/concepts/QueryAggregateExpression__.ts +135 -142
  678. package/src/concepts/QueryFieldExpression__.ts +138 -142
  679. package/src/concepts/QueryFromExpression__.ts +246 -254
  680. package/src/concepts/QueryGroupByExpression__.ts +130 -136
  681. package/src/concepts/QueryJoinExpression__.ts +441 -438
  682. package/src/concepts/QueryLimitExpression__.ts +159 -166
  683. package/src/concepts/QueryOrderByExpression__.ts +173 -180
  684. package/src/concepts/QuerySelectExpression__.ts +464 -439
  685. package/src/concepts/Rect__.ts +73 -79
  686. package/src/concepts/Return__.ts +366 -345
  687. package/src/concepts/Role__.ts +146 -147
  688. package/src/concepts/SelectMembers__.ts +358 -350
  689. package/src/concepts/Slot__.ts +152 -153
  690. package/src/concepts/SqlQueryComponent__.ts +230 -228
  691. package/src/concepts/Start__.ts +45 -52
  692. package/src/concepts/StringInterpolation__.ts +323 -296
  693. package/src/concepts/StringLiteral__.ts +113 -115
  694. package/src/concepts/StructureProperty__.ts +306 -295
  695. package/src/concepts/Structure__.ts +615 -578
  696. package/src/concepts/SwitchCase__.ts +326 -290
  697. package/src/concepts/SwitchStatement__.ts +236 -229
  698. package/src/concepts/Theme__.ts +64 -68
  699. package/src/concepts/Transactional__.ts +159 -153
  700. package/src/concepts/TriggerEvent__.ts +285 -274
  701. package/src/concepts/TriggerLauncher__.ts +232 -196
  702. package/src/concepts/TypeAnnotation__.ts +1049 -1011
  703. package/src/concepts/TypeParam__.ts +48 -50
  704. package/src/concepts/UnaryExpression__.ts +163 -153
  705. package/src/concepts/Unparsed__.ts +81 -82
  706. package/src/concepts/UseComponent__.ts +53 -59
  707. package/src/concepts/ValidationRule__.ts +524 -544
  708. package/src/concepts/Variable__.ts +419 -397
  709. package/src/concepts/ViewBlock__.ts +58 -64
  710. package/src/concepts/ViewComponent__.ts +1323 -1261
  711. package/src/concepts/ViewElement__.ts +2537 -2351
  712. package/src/concepts/View__.ts +2461 -2245
  713. package/src/concepts/WhileStatement__.ts +293 -272
  714. package/src/concepts/basics/stdlib/index.ts +17 -1
  715. package/src/concepts/basics/stdlib/nasl.browser.ts +36 -0
  716. package/src/concepts/basics/stdlib/nasl.event.ts +18 -0
  717. package/src/concepts/basics/stdlib/nasl.ui.ts +45 -0
  718. package/src/concepts/basics/stdlib/nasl.util.ts +6 -22
  719. package/src/concepts/index__.ts +2 -1
  720. package/src/concepts/types__.ts +123 -121
  721. package/src/decorators/index.ts +75 -77
  722. package/src/decorators/promise.ts +28 -0
  723. package/src/enums/KEYWORDS.ts +1228 -1228
  724. package/src/enums/LEVEL_NAME_MAP.ts +24 -24
  725. package/src/generator/compileComponent.ts +10 -10
  726. package/src/generator/genBundleFiles.ts +300 -291
  727. package/src/generator/genHash.ts +2 -2
  728. package/src/generator/genMetaData.ts +280 -261
  729. package/src/generator/genReleaseBody.ts +312 -291
  730. package/src/generator/icestark.ts +1 -1
  731. package/src/generator/microApp.ts +17 -20
  732. package/src/generator/permission.ts +241 -232
  733. package/src/generator/qiankun.ts +1 -1
  734. package/src/generator/styleReplacer.ts +28 -31
  735. package/src/index.ts +0 -3
  736. package/src/manager/diagnostic.ts +84 -82
  737. package/src/manager/stepRecorder.ts +106 -94
  738. package/src/natural/RequirementAnalyzer.ts +208 -0
  739. package/src/natural/RequirementExecutor.ts +685 -0
  740. package/src/natural/componentData.ts +81 -0
  741. package/src/natural/genNaturalTS.ts +77 -0
  742. package/src/natural/index.ts +4 -0
  743. package/src/natural/knowledgeMap.ts +39 -0
  744. package/src/natural/naslStdlibMap.ts +24 -0
  745. package/src/natural/transformTSCode.ts +692 -0
  746. package/src/sentry/index.ts +109 -104
  747. package/src/server/createUiTs.ts +190 -184
  748. package/src/server/entity2LogicNamespace.ts +379 -359
  749. package/src/server/event.js +145 -121
  750. package/src/server/extendBaseNode.ts +461 -456
  751. package/src/server/formatTsUtils.ts +712 -713
  752. package/src/server/getConnector.ts +33 -33
  753. package/src/server/getExtensionModules.ts +23 -22
  754. package/src/server/getFunctions.ts +6 -6
  755. package/src/server/getInterfaces.ts +38 -37
  756. package/src/server/getLogging.ts +1 -1
  757. package/src/server/getLogics.ts +391 -312
  758. package/src/server/getMemberIdentifier.ts +286 -281
  759. package/src/server/getProcessComponents.ts +2 -2
  760. package/src/server/getProcesses.ts +548 -534
  761. package/src/server/getScope.ts +51 -51
  762. package/src/server/getValidates.ts +3 -3
  763. package/src/server/index.ts +29 -30
  764. package/src/server/naslServer.ts +4303 -4222
  765. package/src/server/naslStdlibMap.ts +43 -39
  766. package/src/server/process2LogicNamespace.ts +97 -97
  767. package/src/server/translator.ts +740 -746
  768. package/src/service/storage/init.ts +761 -728
  769. package/src/templator/genCallComponentLogic.ts +14 -15
  770. package/src/templator/genCreateBlock.ts +257 -229
  771. package/src/templator/genCurdEditMultipleKeyBlock.ts +333 -317
  772. package/src/templator/genCurdMultipleKeyBlock.ts +503 -475
  773. package/src/templator/genEditTableBlock.ts +194 -187
  774. package/src/templator/genEnumSelectBlock.ts +13 -7
  775. package/src/templator/genGetBlock.ts +57 -55
  776. package/src/templator/genGridViewBlock.ts +195 -211
  777. package/src/templator/genListViewBlock.ts +62 -72
  778. package/src/templator/genQueryComponent.ts +337 -287
  779. package/src/templator/genSelectBlock.ts +283 -297
  780. package/src/templator/genTableBlock.ts +160 -166
  781. package/src/templator/genUpdateBlock.ts +269 -255
  782. package/src/templator/index.ts +4 -4
  783. package/src/templator/utils.ts +491 -463
  784. package/src/translator/index.ts +84 -84
  785. package/src/translator/lsp.ts +22 -22
  786. package/src/translator/tsp.ts +6 -6
  787. package/src/utils/index.ts +115 -117
  788. package/src/utils/logger.ts +3 -4
  789. package/src/utils/sortTsString.ts +34 -32
  790. package/src/utils/string.ts +47 -48
  791. package/src/utils/time-slicing.ts +109 -0
  792. package/src/utils/traverse.ts +114 -126
  793. package/test/concepts/call-interface/__snapshots__/toEmbeddedTS.spec.ts.snap +71 -0
  794. package/test/concepts/call-interface/__snapshots__/toJS.spec.ts.snap +140 -0
  795. package/test/concepts/call-interface/constant.ts +5 -0
  796. package/test/concepts/call-interface/fixtures/only-interface.json +158 -0
  797. package/test/concepts/call-interface/fixtures/with-body-complex-argument.json +455 -0
  798. package/test/concepts/call-interface/fixtures/with-body-no-argument.json +187 -0
  799. package/test/concepts/call-interface/fixtures/with-body-simple-argument.json +225 -0
  800. package/test/concepts/call-interface/fixtures/with-headers-no-argument.json +213 -0
  801. package/test/concepts/call-interface/fixtures/with-headers.json +192 -0
  802. package/test/concepts/call-interface/fixtures/with-query-no-argument.json +213 -0
  803. package/test/concepts/call-interface/fixtures/with-query.json +192 -0
  804. package/test/concepts/call-interface/toEmbeddedTS.spec.ts +14 -0
  805. package/test/concepts/call-interface/toJS.spec.ts +14 -0
  806. package/test/concepts/call-logic/__snapshots__/toEmbeddedTS.spec.ts.snap +74 -0
  807. package/test/concepts/call-logic/__snapshots__/toJS.spec.ts.snap +141 -0
  808. package/test/concepts/call-logic/constant.ts +5 -0
  809. package/test/concepts/call-logic/fixtures/entries-get-with-arguments.json +223 -0
  810. package/test/concepts/call-logic/fixtures/entries-update-with-arguments.json +359 -0
  811. package/test/concepts/call-logic/fixtures/global-logic-argument-no-expression.json +209 -0
  812. package/test/concepts/call-logic/fixtures/global-logic-argument-some-expression.json +311 -0
  813. package/test/concepts/call-logic/fixtures/only-call-logic.json +10 -0
  814. package/test/concepts/call-logic/fixtures/view-buildin-logic-with-argument.json +128 -0
  815. package/test/concepts/call-logic/fixtures/view-component-logic-no-argument.json +126 -0
  816. package/test/concepts/call-logic/fixtures/view-component-with-validation.json +244 -0
  817. package/test/concepts/call-logic/toEmbeddedTS.spec.ts +14 -0
  818. package/test/concepts/call-logic/toJS.spec.ts +14 -0
  819. package/test/concepts/match/__snapshots__/toEmbeddedTS.spec.ts.snap +66 -0
  820. package/test/concepts/match/__snapshots__/toJS.spec.ts.snap +40 -0
  821. package/test/concepts/match/constant.ts +5 -0
  822. package/test/concepts/match/fixtures/isExpression.json +259 -0
  823. package/test/concepts/match/fixtures/lastBodyIf.json +268 -0
  824. package/test/concepts/match/fixtures/noExpression.json +176 -0
  825. package/test/concepts/match/toEmbeddedTS.spec.ts +14 -0
  826. package/test/concepts/match/toJS.spec.ts +14 -0
  827. package/test/concepts/utils.ts +76 -3
  828. package/test/concepts/validation-rule/__snapshots__/toEmbeddedTS.spec.ts.snap +3 -3
  829. package/test/concepts/validation-rule/__snapshots__/toJS.spec.ts.snap +16 -0
  830. package/test/concepts/validation-rule/constant.ts +5 -0
  831. package/test/concepts/validation-rule/toEmbeddedTS.spec.ts +10 -17
  832. package/test/concepts/validation-rule/toJS.spec.ts +14 -0
  833. package/test/concepts/view-element/__snapshots__/toEmbeddedTS.spec.ts.snap +68 -0
  834. package/test/concepts/view-element/__snapshots__/toVue.spec.ts.snap +44 -0
  835. package/test/concepts/view-element/constant.ts +5 -0
  836. package/test/concepts/view-element/fixtures/default-not-found.json +322 -0
  837. package/test/concepts/view-element/toEmbeddedTS.spec.ts +14 -0
  838. package/test/concepts/view-element/toVue.spec.ts +14 -0
  839. package/test/setup.ts +7 -0
  840. package/ts-worker/src/index.js +0 -2
  841. package/tsconfig.json +21 -21
  842. package/bin/naslc +0 -3
@@ -1,17 +1,17 @@
1
+ import { v4 as uuidv4 } from 'uuid';
1
2
  import { TranslatorState, shiftState, withSourceMap } from '../translator';
2
- import { ElementToVueOptions } from './ViewElement__';
3
+ import ViewElement, { ElementToVueOptions } from './ViewElement__';
3
4
  import Namespace from './Namespace__';
4
5
  import MemberExpression from './MemberExpression__';
5
6
 
6
- //================================================================================
7
+ //= ===============================================================================
7
8
  // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
8
9
  // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
9
- //================================================================================
10
+ //= ===============================================================================
10
11
  import { EventPayload, Params } from '../common/EventEmitter';
11
12
  import { concept, excludedInJSON, property } from '../decorators';
12
13
 
13
14
  import * as utils from '../utils';
14
- import { v4 as uuidv4 } from 'uuid';
15
15
  import BaseNode from '../common/BaseNode';
16
16
  import classMap from '../common/classMap';
17
17
  import LogicItem from './LogicItem__';
@@ -19,7 +19,6 @@ import Destination from './Destination__';
19
19
  import ExternalDestination from './ExternalDestination__';
20
20
  import ValidationRule from './ValidationRule__';
21
21
  import Assignee from './Assignee__';
22
- import ViewElement from './ViewElement__';
23
22
  import ProcessElement from './ProcessElement__';
24
23
  import View from './View__';
25
24
  import Module from './Module__';
@@ -32,876 +31,885 @@ import Process from './Process__';
32
31
  */
33
32
  @concept('元素绑定属性')
34
33
  export class BindAttribute extends BaseNode {
35
- /**
36
- * 产品概念
37
- */
38
- @property()
39
- concept: 'BindAttribute' = 'BindAttribute';
40
-
41
- /**
42
- * 元素绑定属性名称
43
- */
44
- @property()
45
- name: string = undefined;
46
-
47
- /**
48
- * type
49
- */
50
- @property()
51
- type: 'string' | 'static' | 'dynamic' = undefined;
52
-
53
- /**
54
- * 属性值
55
- */
56
- @property()
57
- value: string = undefined;
58
-
59
- /**
60
- * 属性表达式
61
- */
62
- @property('LogicItem')
63
- expression: LogicItem = undefined;
64
-
65
- /**
66
- * 跳转页面
67
- */
68
- @property('Destination')
69
- destination: Destination = undefined;
70
-
71
- /**
72
- * 跳转页面
73
- */
74
- @property('ExternalDestination')
75
- externalDestination: ExternalDestination = undefined;
76
-
77
- /**
78
- * 验证规则
79
- */
80
- @property('ValidationRule')
81
- rules: Array<ValidationRule> = [];
82
-
83
- /**
84
- * 经办人
85
- */
86
- @property('Assignee')
87
- assignee: Assignee = undefined;
88
-
89
- /**
90
- * 是否使用 v-model
91
- */
92
- @property()
93
- model: boolean = undefined;
94
-
95
- /**
96
- * 是否开启双向绑定
97
- */
98
- @property()
99
- sync: boolean = undefined;
100
-
101
- /**
102
- * 草稿态
103
- */
104
- @property('LogicItem')
105
- playground: Array<LogicItem> = [];
106
-
107
- /**
108
- * 祖先 ViewElement
109
- */
110
- get viewElement() {
111
- return this.getAncestor('ViewElement') as ViewElement;
112
- }
113
- /**
114
- * 祖先 View
115
- */
116
- get view() {
117
- return this.getAncestor('View') as View;
34
+ /**
35
+ * 产品概念
36
+ */
37
+ @property()
38
+ concept: 'BindAttribute' = 'BindAttribute';
39
+
40
+ /**
41
+ * 元素绑定属性名称
42
+ */
43
+ @property()
44
+ name: string = undefined;
45
+
46
+ /**
47
+ * type
48
+ */
49
+ @property()
50
+ type: 'string' | 'static' | 'dynamic' = undefined;
51
+
52
+ /**
53
+ * 属性值
54
+ */
55
+ @property()
56
+ value: string = undefined;
57
+
58
+ /**
59
+ * 属性表达式
60
+ */
61
+ @property('LogicItem')
62
+ expression: LogicItem = undefined;
63
+
64
+ /**
65
+ * 跳转页面
66
+ */
67
+ @property('Destination')
68
+ destination: Destination = undefined;
69
+
70
+ /**
71
+ * 跳转页面
72
+ */
73
+ @property('ExternalDestination')
74
+ externalDestination: ExternalDestination = undefined;
75
+
76
+ /**
77
+ * 验证规则
78
+ */
79
+ @property('ValidationRule')
80
+ rules: Array<ValidationRule> = [];
81
+
82
+ /**
83
+ * 经办人
84
+ */
85
+ @property('Assignee')
86
+ assignee: Assignee = undefined;
87
+
88
+ /**
89
+ * 是否使用 v-model
90
+ */
91
+ @property()
92
+ model: boolean = undefined;
93
+
94
+ /**
95
+ * 是否开启双向绑定
96
+ */
97
+ @property()
98
+ sync: boolean = undefined;
99
+
100
+ /**
101
+ * 草稿态
102
+ */
103
+ @property('LogicItem')
104
+ playground: Array<LogicItem> = [];
105
+
106
+ /**
107
+ * 祖先 ViewElement
108
+ */
109
+ get viewElement() {
110
+ return this.getAncestor('ViewElement') as ViewElement;
111
+ }
112
+
113
+ /**
114
+ * 祖先 View
115
+ */
116
+ get view() {
117
+ return this.getAncestor('View') as View;
118
+ }
119
+
120
+ /**
121
+ * 祖先 Module
122
+ */
123
+ get module() {
124
+ return this.getAncestor('Module') as Module;
125
+ }
126
+
127
+ /**
128
+ * 祖先 App
129
+ */
130
+ get app() {
131
+ return this.getAncestor('App') as App;
132
+ }
133
+
134
+ /**
135
+ * 祖先 Frontend
136
+ */
137
+ get frontend() {
138
+ return this.getAncestor('Frontend') as Frontend;
139
+ }
140
+
141
+ /**
142
+ * 祖先 ProcessElement
143
+ */
144
+ get processElement() {
145
+ return this.getAncestor('ProcessElement') as ProcessElement;
146
+ }
147
+
148
+ /**
149
+ * 祖先 Process
150
+ */
151
+ get process() {
152
+ return this.getAncestor('Process') as Process;
153
+ }
154
+
155
+ /**
156
+ * @param source 需要合并的部分参数
157
+ */
158
+ constructor(source?: Partial<BindAttribute>) {
159
+ // @ts-ignore
160
+ source = { ...BindAttribute.getDefaultOptions(), ...source };
161
+ super(source);
162
+ super.subConstructor(source);
163
+ }
164
+
165
+ getClassName() {
166
+ return 'BindAttribute';
167
+ }
168
+
169
+ static from(source: any, parentNode?: any, parentKey?: string): BindAttribute {
170
+ return super.from(source, parentNode, parentKey) as BindAttribute;
171
+ }
172
+
173
+ /**
174
+ * 从父级删除该节点
175
+ * @internal
176
+ */
177
+ _delete() {
178
+ let params: Params = null;
179
+ if (this.parentNode) {
180
+ params = (this.parentNode as any)?.__removeBindAttribute?.(this);
118
181
  }
119
- /**
120
- * 祖先 Module
121
- */
122
- get module() {
123
- return this.getAncestor('Module') as Module;
182
+ return params;
183
+ }
184
+
185
+ /**
186
+ * 设置属性值
187
+ */
188
+ setValue(value: string) {
189
+ const object = {
190
+ value,
191
+ };
192
+ this.update({
193
+ ...object,
194
+ });
195
+ }
196
+
197
+ /**
198
+ * 设置属性表达式
199
+ */
200
+ setExpression(expression: LogicItem) {
201
+ expression._delete();
202
+ const relationOptions = { parentNode: this, parentKey: 'expression' };
203
+ Object.assign(expression, relationOptions);
204
+ const object = {
205
+ expression,
206
+ };
207
+ this.update({
208
+ ...object,
209
+ });
210
+ }
211
+
212
+ /**
213
+ * 设置跳转页面
214
+ */
215
+ setDestination(destination: Destination) {
216
+ destination._delete();
217
+ const relationOptions = { parentNode: this, parentKey: 'destination' };
218
+ Object.assign(destination, relationOptions);
219
+ const object = {
220
+ destination,
221
+ };
222
+ this.update({
223
+ ...object,
224
+ });
225
+ }
226
+
227
+ /**
228
+ * 设置跳转页面
229
+ */
230
+ setExternalDestination(externalDestination: ExternalDestination) {
231
+ externalDestination._delete();
232
+ const relationOptions = { parentNode: this, parentKey: 'externalDestination' };
233
+ Object.assign(externalDestination, relationOptions);
234
+ const object = {
235
+ externalDestination,
236
+ };
237
+ this.update({
238
+ ...object,
239
+ });
240
+ }
241
+
242
+ /**
243
+ * 设置经办人
244
+ */
245
+ setAssignee(assignee: Assignee) {
246
+ assignee._delete();
247
+ const relationOptions = { parentNode: this, parentKey: 'assignee' };
248
+ Object.assign(assignee, relationOptions);
249
+ const object = {
250
+ assignee,
251
+ };
252
+ this.update({
253
+ ...object,
254
+ });
255
+ }
256
+
257
+ /**
258
+ * 设置是否开启双向绑定
259
+ */
260
+ setSync(sync: boolean) {
261
+ const object = {
262
+ sync,
263
+ };
264
+ this.update({
265
+ ...object,
266
+ });
267
+ }
268
+
269
+ getValidationRuleExistingNames(excludedList: Array<ValidationRule> = []) {
270
+ const excludedSet = new Set(excludedList);
271
+ return ((this.rules as ValidationRule[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
272
+ }
273
+
274
+ getValidationRuleUniqueName(name = 'validationRule1') {
275
+ return utils.unique(name, this.getValidationRuleExistingNames(), undefined, false);
276
+ }
277
+
278
+ /**
279
+ * 插入验证规则
280
+ * @internal
281
+ * @param name 验证规则名称,如果不填会自动生成一个唯一名称
282
+ */
283
+ _insertValidationRuleInRulesAt(name: string, index: number): ValidationRule;
284
+
285
+ /**
286
+ * 插入验证规则
287
+ * @internal
288
+ * @param validationRuleOptions 验证规则参数
289
+ */
290
+ _insertValidationRuleInRulesAt(validationRuleOptions: Partial<ValidationRule>, index: number): ValidationRule;
291
+
292
+ /**
293
+ * 插入验证规则
294
+ * @internal
295
+ * @param validationRule 已有的验证规则实例
296
+ */
297
+ _insertValidationRuleInRulesAt(validationRule: ValidationRule, index: number): ValidationRule;
298
+
299
+ _insertValidationRuleInRulesAt(options: string | Partial<ValidationRule> | ValidationRule, index: number) {
300
+ const validationRuleOptions: any = {};
301
+ const relationOptions = { parentNode: this, parentKey: 'rules' };
302
+ let validationRule: ValidationRule;
303
+ if (!options) {
304
+ validationRule = ValidationRule.from(
305
+ {
306
+ ...validationRuleOptions,
307
+ name: this.getValidationRuleUniqueName(),
308
+ },
309
+ this,
310
+ 'rules'
311
+ );
312
+ } else if (typeof options === 'string') {
313
+ validationRule = ValidationRule.from(
314
+ {
315
+ ...validationRuleOptions,
316
+ name: options,
317
+ },
318
+ this,
319
+ 'rules'
320
+ );
321
+ } else if (options instanceof ValidationRule) {
322
+ options.ensureDelete(); // 同一实例不支持多处存在
323
+ validationRule = options;
324
+ Object.assign(validationRule, relationOptions);
325
+ } else {
326
+ validationRule = ValidationRule.from(
327
+ {
328
+ ...validationRuleOptions,
329
+ ...options,
330
+ },
331
+ this,
332
+ 'rules'
333
+ );
124
334
  }
125
- /**
126
- * 祖先 App
127
- */
128
- get app() {
129
- return this.getAncestor('App') as App;
335
+ this.rules.splice(index, 0, validationRule);
336
+ return validationRule;
337
+ }
338
+
339
+ /**
340
+ * 插入验证规则
341
+ * @param name 验证规则名称,如果不填会自动生成一个唯一名称
342
+ */
343
+ insertValidationRuleInRulesAt(name: string, index: number): ValidationRule;
344
+
345
+ /**
346
+ * 插入验证规则
347
+ * @param validationRuleOptions 验证规则参数
348
+ */
349
+ insertValidationRuleInRulesAt(validationRuleOptions: Partial<ValidationRule>, index: number): ValidationRule;
350
+
351
+ /**
352
+ * 插入验证规则
353
+ * @param validationRule 已有的验证规则实例
354
+ */
355
+ insertValidationRuleInRulesAt(validationRule: ValidationRule, index: number): ValidationRule;
356
+
357
+ insertValidationRuleInRulesAt(options: string | Partial<ValidationRule> | ValidationRule, index: number) {
358
+ const node = this._insertValidationRuleInRulesAt(options as any, index);
359
+ node.create({
360
+ index,
361
+ parentNode: this,
362
+ parentKey: 'rules',
363
+ });
364
+ return node;
365
+ }
366
+
367
+ /**
368
+ * 添加验证规则
369
+ * @internal
370
+ * @param name 验证规则名称,如果不填会自动生成一个唯一名称
371
+ */
372
+ _addValidationRuleInRules(name?: string): ValidationRule;
373
+
374
+ /**
375
+ * 添加验证规则
376
+ * @internal
377
+ * @param validationRuleOptions 验证规则参数
378
+ */
379
+ _addValidationRuleInRules(validationRuleOptions: Partial<ValidationRule>): ValidationRule;
380
+
381
+ /**
382
+ * 添加验证规则
383
+ * @internal
384
+ * @param validationRule 已有的验证规则实例
385
+ */
386
+ _addValidationRuleInRules(validationRule: ValidationRule): ValidationRule;
387
+
388
+ _addValidationRuleInRules(options?: string | Partial<ValidationRule> | ValidationRule) {
389
+ const index = this.rules.length;
390
+ return this._insertValidationRuleInRulesAt(options as any, index);
391
+ }
392
+
393
+ /**
394
+ * 添加验证规则
395
+ * @internal
396
+ * @param name 验证规则名称,如果不填会自动生成一个唯一名称
397
+ */
398
+ addValidationRuleInRules(name?: string): ValidationRule;
399
+
400
+ /**
401
+ * 添加验证规则
402
+ * @param validationRuleOptions 验证规则参数
403
+ */
404
+ addValidationRuleInRules(validationRuleOptions: Partial<ValidationRule>): ValidationRule;
405
+
406
+ /**
407
+ * 添加验证规则
408
+ * @param validationRule 已有的验证规则实例
409
+ */
410
+ addValidationRuleInRules(validationRule: ValidationRule): ValidationRule;
411
+
412
+ addValidationRuleInRules(options?: string | Partial<ValidationRule> | ValidationRule) {
413
+ const node = this._addValidationRuleInRules(options as any);
414
+ const index = this.rules.indexOf(node);
415
+ node.create({
416
+ index,
417
+ parentNode: this,
418
+ parentKey: 'rules',
419
+ });
420
+ return node;
421
+ }
422
+
423
+ /**
424
+ * 插入逻辑项
425
+ * @internal
426
+ * @param logicItemOptions 逻辑项参数
427
+ */
428
+ _insertItemInPlaygroundAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
429
+
430
+ /**
431
+ * 插入逻辑项
432
+ * @internal
433
+ * @param logicItem 已有的逻辑项实例
434
+ */
435
+ _insertItemInPlaygroundAt(logicItem: LogicItem, index: number): LogicItem;
436
+
437
+ _insertItemInPlaygroundAt(options: Partial<LogicItem> | LogicItem, index: number) {
438
+ const logicItemOptions: any = {};
439
+ const relationOptions = { parentNode: this, parentKey: 'playground' };
440
+ let logicItem: LogicItem;
441
+ if (options instanceof LogicItem) {
442
+ options.ensureDelete(); // 同一实例不支持多处存在
443
+ logicItem = options;
444
+ Object.assign(logicItem, relationOptions);
445
+ } else {
446
+ logicItem = LogicItem.from(
447
+ {
448
+ ...logicItemOptions,
449
+ ...options,
450
+ },
451
+ this,
452
+ 'playground'
453
+ );
130
454
  }
131
- /**
132
- * 祖先 Frontend
133
- */
134
- get frontend() {
135
- return this.getAncestor('Frontend') as Frontend;
455
+ this.playground.splice(index, 0, logicItem);
456
+ return logicItem;
457
+ }
458
+
459
+ /**
460
+ * 插入逻辑项
461
+ * @param logicItemOptions 逻辑项参数
462
+ */
463
+ insertItemInPlaygroundAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
464
+
465
+ /**
466
+ * 插入逻辑项
467
+ * @param logicItem 已有的逻辑项实例
468
+ */
469
+ insertItemInPlaygroundAt(logicItem: LogicItem, index: number): LogicItem;
470
+
471
+ insertItemInPlaygroundAt(options: Partial<LogicItem> | LogicItem, index: number) {
472
+ const node = this._insertItemInPlaygroundAt(options as any, index);
473
+ node.create({
474
+ index,
475
+ parentNode: this,
476
+ parentKey: 'playground',
477
+ });
478
+ return node;
479
+ }
480
+
481
+ /**
482
+ * 添加逻辑项
483
+ * @internal
484
+ * @param logicItemOptions 逻辑项参数
485
+ */
486
+ _addItemInPlayground(logicItemOptions: Partial<LogicItem>): LogicItem;
487
+
488
+ /**
489
+ * 添加逻辑项
490
+ * @internal
491
+ * @param logicItem 已有的逻辑项实例
492
+ */
493
+ _addItemInPlayground(logicItem: LogicItem): LogicItem;
494
+
495
+ _addItemInPlayground(options?: Partial<LogicItem> | LogicItem) {
496
+ const index = this.playground.length;
497
+ return this._insertItemInPlaygroundAt(options as any, index);
498
+ }
499
+
500
+ /**
501
+ * 添加逻辑项
502
+ * @param logicItemOptions 逻辑项参数
503
+ */
504
+ addItemInPlayground(logicItemOptions: Partial<LogicItem>): LogicItem;
505
+
506
+ /**
507
+ * 添加逻辑项
508
+ * @param logicItem 已有的逻辑项实例
509
+ */
510
+ addItemInPlayground(logicItem: LogicItem): LogicItem;
511
+
512
+ addItemInPlayground(options?: Partial<LogicItem> | LogicItem) {
513
+ const node = this._addItemInPlayground(options as any);
514
+ const index = this.playground.indexOf(node);
515
+ node.create({
516
+ index,
517
+ parentNode: this,
518
+ parentKey: 'playground',
519
+ });
520
+ return node;
521
+ }
522
+
523
+ /**
524
+ * 删除逻辑项
525
+ * @param name 逻辑项名称
526
+ */
527
+ removeExpression(name: string): void;
528
+
529
+ /**
530
+ * 删除逻辑项
531
+ * @param expression 已有的逻辑项实例
532
+ */
533
+ removeExpression(expression: LogicItem): void;
534
+
535
+ removeExpression(options: string | LogicItem) {
536
+ let expression: LogicItem;
537
+ if (typeof options === 'string') {
538
+ expression = this.expression;
539
+ if (!expression) {
540
+ throw new Error(`找不到逻辑项 ${options}`);
541
+ }
542
+ } else {
543
+ expression = options;
136
544
  }
137
- /**
138
- * 祖先 ProcessElement
139
- */
140
- get processElement() {
141
- return this.getAncestor('ProcessElement') as ProcessElement;
142
- }
143
- /**
144
- * 祖先 Process
145
- */
146
- get process() {
147
- return this.getAncestor('Process') as Process;
148
- }
149
-
150
- /**
151
- * @param source 需要合并的部分参数
152
- */
153
- constructor(source?: Partial<BindAttribute>) {
154
- source = Object.assign({}, BindAttribute.getDefaultOptions(), source);
155
- super(source);
156
- super.subConstructor(source);
545
+ return expression.delete();
546
+ }
547
+
548
+ /**
549
+ * 删除跳转页面
550
+ * @param name 跳转页面名称
551
+ */
552
+ removeDestination(name: string): void;
553
+
554
+ /**
555
+ * 删除跳转页面
556
+ * @param destination 已有的跳转页面实例
557
+ */
558
+ removeDestination(destination: Destination): void;
559
+
560
+ removeDestination(options: string | Destination) {
561
+ let destination: Destination;
562
+ if (typeof options === 'string') {
563
+ destination = this.destination;
564
+ if (!destination) {
565
+ throw new Error(`找不到跳转页面 ${options}`);
566
+ }
567
+ } else {
568
+ destination = options;
157
569
  }
158
- getClassName() {
159
- return 'BindAttribute';
160
- }
161
-
162
- static from(source: any, parentNode?: any, parentKey?: string): BindAttribute {
163
- return super.from(source, parentNode, parentKey) as BindAttribute;
164
- }
165
-
166
- /**
167
- * 从父级删除该节点
168
- * @internal
169
- */
170
- _delete() {
171
- let params: Params = null;
172
- if (this.parentNode) {
173
- params = (this.parentNode as any)?.__removeBindAttribute?.(this);
174
- }
175
- return params;
570
+ return destination.delete();
571
+ }
572
+
573
+ /**
574
+ * 删除外部链接
575
+ * @param name 外部链接名称
576
+ */
577
+ removeExternalDestination(name: string): void;
578
+
579
+ /**
580
+ * 删除外部链接
581
+ * @param externalDestination 已有的外部链接实例
582
+ */
583
+ removeExternalDestination(externalDestination: ExternalDestination): void;
584
+
585
+ removeExternalDestination(options: string | ExternalDestination) {
586
+ let externalDestination: ExternalDestination;
587
+ if (typeof options === 'string') {
588
+ externalDestination = this.externalDestination;
589
+ if (!externalDestination) {
590
+ throw new Error(`找不到外部链接 ${options}`);
591
+ }
592
+ } else {
593
+ externalDestination = options;
176
594
  }
177
- /**
178
- * 设置属性值
179
- */
180
- setValue(value: string) {
181
- const object = {
182
- value,
183
- };
184
- this.update({
185
- ...object,
186
- });
187
- }
188
-
189
- /**
190
- * 设置属性表达式
191
- */
192
- setExpression(expression: LogicItem) {
193
- expression._delete();
194
- const relationOptions = { parentNode: this, parentKey: 'expression' };
195
- Object.assign(expression, relationOptions);
196
- const object = {
197
- expression,
198
- };
199
- this.update({
200
- ...object,
201
- });
202
- }
203
-
204
- /**
205
- * 设置跳转页面
206
- */
207
- setDestination(destination: Destination) {
208
- destination._delete();
209
- const relationOptions = { parentNode: this, parentKey: 'destination' };
210
- Object.assign(destination, relationOptions);
211
- const object = {
212
- destination,
213
- };
214
- this.update({
215
- ...object,
216
- });
217
- }
218
-
219
- /**
220
- * 设置跳转页面
221
- */
222
- setExternalDestination(externalDestination: ExternalDestination) {
223
- externalDestination._delete();
224
- const relationOptions = { parentNode: this, parentKey: 'externalDestination' };
225
- Object.assign(externalDestination, relationOptions);
226
- const object = {
227
- externalDestination,
228
- };
229
- this.update({
230
- ...object,
231
- });
232
- }
233
-
234
- /**
235
- * 设置经办人
236
- */
237
- setAssignee(assignee: Assignee) {
238
- assignee._delete();
239
- const relationOptions = { parentNode: this, parentKey: 'assignee' };
240
- Object.assign(assignee, relationOptions);
241
- const object = {
242
- assignee,
243
- };
244
- this.update({
245
- ...object,
246
- });
247
- }
248
-
249
- /**
250
- * 设置是否开启双向绑定
251
- */
252
- setSync(sync: boolean) {
253
- const object = {
254
- sync,
255
- };
256
- this.update({
257
- ...object,
258
- });
259
- }
260
-
261
- getValidationRuleExistingNames(excludedList: Array<ValidationRule> = []) {
262
- const excludedSet = new Set(excludedList);
263
- return ((this.rules as ValidationRule[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
264
- }
265
- getValidationRuleUniqueName(name = 'validationRule1') {
266
- return utils.unique(name, this.getValidationRuleExistingNames(), undefined, false);
267
- }
268
-
269
- /**
270
- * 插入验证规则
271
- * @internal
272
- * @param name 验证规则名称,如果不填会自动生成一个唯一名称
273
- */
274
- _insertValidationRuleInRulesAt(name: string, index: number): ValidationRule;
275
-
276
- /**
277
- * 插入验证规则
278
- * @internal
279
- * @param validationRuleOptions 验证规则参数
280
- */
281
- _insertValidationRuleInRulesAt(validationRuleOptions: Partial<ValidationRule>, index: number): ValidationRule;
282
-
283
- /**
284
- * 插入验证规则
285
- * @internal
286
- * @param validationRule 已有的验证规则实例
287
- */
288
- _insertValidationRuleInRulesAt(validationRule: ValidationRule, index: number): ValidationRule;
289
-
290
- _insertValidationRuleInRulesAt(options: string | Partial<ValidationRule> | ValidationRule, index: number) {
291
- const validationRuleOptions: any = {};
292
- const relationOptions = { parentNode: this, parentKey: 'rules' };
293
- let validationRule: ValidationRule;
294
- if (!options) {
295
- validationRule = ValidationRule.from({
296
- ...validationRuleOptions,
297
- name: this.getValidationRuleUniqueName(),
298
- }, this, 'rules');
299
- } else if (typeof options === 'string') {
300
- validationRule = ValidationRule.from({
301
- ...validationRuleOptions,
302
- name: options,
303
- }, this, 'rules');
304
- } else if (options instanceof ValidationRule) {
305
- options.ensureDelete(); // 同一实例不支持多处存在
306
- validationRule = options;
307
- Object.assign(validationRule, relationOptions);
308
- } else {
309
- validationRule = ValidationRule.from({
310
- ...validationRuleOptions,
311
- ...options,
312
- }, this, 'rules');
313
- }
314
- this.rules.splice(index, 0, validationRule);
315
- return validationRule;
316
- }
317
-
318
- /**
319
- * 插入验证规则
320
- * @param name 验证规则名称,如果不填会自动生成一个唯一名称
321
- */
322
- insertValidationRuleInRulesAt(name: string, index: number): ValidationRule;
323
-
324
- /**
325
- * 插入验证规则
326
- * @param validationRuleOptions 验证规则参数
327
- */
328
- insertValidationRuleInRulesAt(validationRuleOptions: Partial<ValidationRule>, index: number): ValidationRule;
329
-
330
- /**
331
- * 插入验证规则
332
- * @param validationRule 已有的验证规则实例
333
- */
334
- insertValidationRuleInRulesAt(validationRule: ValidationRule, index: number): ValidationRule;
335
-
336
- insertValidationRuleInRulesAt(options: string | Partial<ValidationRule> | ValidationRule, index: number) {
337
- const node = this._insertValidationRuleInRulesAt(options as any, index);
338
- node.create({
339
- index,
340
- parentNode: this,
341
- parentKey: 'rules',
342
- });
343
- return node;
344
- }
345
-
346
- /**
347
- * 添加验证规则
348
- * @internal
349
- * @param name 验证规则名称,如果不填会自动生成一个唯一名称
350
- */
351
- _addValidationRuleInRules(name?: string): ValidationRule;
352
-
353
- /**
354
- * 添加验证规则
355
- * @internal
356
- * @param validationRuleOptions 验证规则参数
357
- */
358
- _addValidationRuleInRules(validationRuleOptions: Partial<ValidationRule>): ValidationRule;
359
-
360
- /**
361
- * 添加验证规则
362
- * @internal
363
- * @param validationRule 已有的验证规则实例
364
- */
365
- _addValidationRuleInRules(validationRule: ValidationRule): ValidationRule;
366
-
367
- _addValidationRuleInRules(options?: string | Partial<ValidationRule> | ValidationRule) {
368
- const index = this.rules.length;
369
- return this._insertValidationRuleInRulesAt(options as any, index);
370
- }
371
-
372
- /**
373
- * 添加验证规则
374
- * @internal
375
- * @param name 验证规则名称,如果不填会自动生成一个唯一名称
376
- */
377
- addValidationRuleInRules(name?: string): ValidationRule;
378
-
379
- /**
380
- * 添加验证规则
381
- * @param validationRuleOptions 验证规则参数
382
- */
383
- addValidationRuleInRules(validationRuleOptions: Partial<ValidationRule>): ValidationRule;
384
-
385
- /**
386
- * 添加验证规则
387
- * @param validationRule 已有的验证规则实例
388
- */
389
- addValidationRuleInRules(validationRule: ValidationRule): ValidationRule;
390
-
391
- addValidationRuleInRules(options?: string | Partial<ValidationRule> | ValidationRule) {
392
- const node = this._addValidationRuleInRules(options as any);
393
- const index = this.rules.indexOf(node);
394
- node.create({
395
- index,
396
- parentNode: this,
397
- parentKey: 'rules',
398
- });
399
- return node;
595
+ return externalDestination.delete();
596
+ }
597
+
598
+ /**
599
+ * 删除验证规则
600
+ * @param name 验证规则名称
601
+ */
602
+ removeValidationRuleInRules(name: string): void;
603
+
604
+ /**
605
+ * 删除验证规则
606
+ * @param validationRule 已有的验证规则实例
607
+ */
608
+ removeValidationRuleInRules(validationRule: ValidationRule): void;
609
+
610
+ removeValidationRuleInRules(options: string | ValidationRule) {
611
+ let validationRule: ValidationRule;
612
+ if (typeof options === 'string') {
613
+ validationRule = (this.rules as ValidationRule[]).find((item) => item.name === options);
614
+ if (!validationRule) {
615
+ throw new Error(`找不到验证规则 ${options}`);
616
+ }
617
+ } else {
618
+ validationRule = options;
400
619
  }
401
-
402
-
403
-
404
- /**
405
- * 插入逻辑项
406
- * @internal
407
- * @param logicItemOptions 逻辑项参数
408
- */
409
- _insertItemInPlaygroundAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
410
-
411
- /**
412
- * 插入逻辑项
413
- * @internal
414
- * @param logicItem 已有的逻辑项实例
415
- */
416
- _insertItemInPlaygroundAt(logicItem: LogicItem, index: number): LogicItem;
417
-
418
- _insertItemInPlaygroundAt(options: Partial<LogicItem> | LogicItem, index: number) {
419
- const logicItemOptions: any = {};
420
- const relationOptions = { parentNode: this, parentKey: 'playground' };
421
- let logicItem: LogicItem;
422
- if (options instanceof LogicItem) {
423
- options.ensureDelete(); // 同一实例不支持多处存在
424
- logicItem = options;
425
- Object.assign(logicItem, relationOptions);
426
- } else {
427
- logicItem = LogicItem.from({
428
- ...logicItemOptions,
429
- ...options,
430
- }, this, 'playground');
431
- }
432
- this.playground.splice(index, 0, logicItem);
433
- return logicItem;
620
+ return validationRule.delete();
621
+ }
622
+
623
+ /**
624
+ * 删除经办人
625
+ * @param name 经办人名称
626
+ */
627
+ removeAssignee(name: string): void;
628
+
629
+ /**
630
+ * 删除经办人
631
+ * @param assignee 已有的经办人实例
632
+ */
633
+ removeAssignee(assignee: Assignee): void;
634
+
635
+ removeAssignee(options: string | Assignee) {
636
+ let assignee: Assignee;
637
+ if (typeof options === 'string') {
638
+ assignee = this.assignee;
639
+ if (!assignee) {
640
+ throw new Error(`找不到经办人 ${options}`);
641
+ }
642
+ } else {
643
+ assignee = options;
434
644
  }
435
-
436
-
437
-
438
- /**
439
- * 插入逻辑项
440
- * @param logicItemOptions 逻辑项参数
441
- */
442
- insertItemInPlaygroundAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
443
-
444
- /**
445
- * 插入逻辑项
446
- * @param logicItem 已有的逻辑项实例
447
- */
448
- insertItemInPlaygroundAt(logicItem: LogicItem, index: number): LogicItem;
449
-
450
- insertItemInPlaygroundAt(options: Partial<LogicItem> | LogicItem, index: number) {
451
- const node = this._insertItemInPlaygroundAt(options as any, index);
452
- node.create({
453
- index,
454
- parentNode: this,
455
- parentKey: 'playground',
456
- });
457
- return node;
645
+ return assignee.delete();
646
+ }
647
+
648
+ /**
649
+ * 删除逻辑项
650
+ * @param logicItem 已有的逻辑项实例
651
+ */
652
+ removeItemInPlayground(logicItem: LogicItem): void;
653
+
654
+ removeItemInPlayground(options: LogicItem) {
655
+ const logicItem: LogicItem = options;
656
+ return logicItem.delete();
657
+ }
658
+
659
+ __removeLogicItem(logicItem: LogicItem) {
660
+ const { parentKey } = logicItem;
661
+ const params: Params = {
662
+ parentNode: this,
663
+ parentKey,
664
+ index: -1,
665
+ object: null,
666
+ oldObject: logicItem,
667
+ };
668
+ if (parentKey) {
669
+ params.parentKey = parentKey;
670
+ if (Array.isArray((this as any)[parentKey])) {
671
+ const index = (this as any)[parentKey].indexOf(logicItem);
672
+ ~index && (this as any)[parentKey].splice(index, 1);
673
+ params.index = index;
674
+ } else if ((this as any)[parentKey] === logicItem) {
675
+ params.index = 0;
676
+ (this as any)[parentKey] = undefined;
677
+ }
458
678
  }
459
-
460
-
461
-
462
- /**
463
- * 添加逻辑项
464
- * @internal
465
- * @param logicItemOptions 逻辑项参数
466
- */
467
- _addItemInPlayground(logicItemOptions: Partial<LogicItem>): LogicItem;
468
-
469
- /**
470
- * 添加逻辑项
471
- * @internal
472
- * @param logicItem 已有的逻辑项实例
473
- */
474
- _addItemInPlayground(logicItem: LogicItem): LogicItem;
475
-
476
- _addItemInPlayground(options?: Partial<LogicItem> | LogicItem) {
477
- const index = this.playground.length;
478
- return this._insertItemInPlaygroundAt(options as any, index);
679
+ return params;
680
+ }
681
+
682
+ //= ===============================================================================
683
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
684
+ // 自动生成的代码已结束。下面可以手动编写。
685
+ //= ===============================================================================
686
+
687
+ onChange($event?: EventPayload): void {
688
+ this.emit('change', $event);
689
+ }
690
+
691
+ updateSource(source?: Partial<BindAttribute>) {
692
+ const object = {
693
+ ...source,
694
+ };
695
+ this.update({
696
+ ...object,
697
+ });
698
+ }
699
+
700
+ getNamespace(ns: string) {
701
+ if (this.parentNode && (this.parentNode as Namespace).getNamespace) {
702
+ const parentNamespace = (this.parentNode as Namespace).getNamespace();
703
+ const parentName = this.parentNode.name;
704
+ const arr = [parentNamespace];
705
+ if (this.parentNode.concept !== 'App' && parentName) {
706
+ arr.push(parentName);
707
+ }
708
+ return `${arr.join('.')}.${ns || 'bindAttribute'}`;
479
709
  }
480
-
481
-
482
-
483
- /**
484
- * 添加逻辑项
485
- * @param logicItemOptions 逻辑项参数
486
- */
487
- addItemInPlayground(logicItemOptions: Partial<LogicItem>): LogicItem;
488
-
489
- /**
490
- * 添加逻辑项
491
- * @param logicItem 已有的逻辑项实例
492
- */
493
- addItemInPlayground(logicItem: LogicItem): LogicItem;
494
-
495
- addItemInPlayground(options?: Partial<LogicItem> | LogicItem) {
496
- const node = this._addItemInPlayground(options as any);
497
- const index = this.playground.indexOf(node);
498
- node.create({
499
- index,
500
- parentNode: this,
501
- parentKey: 'playground',
710
+ throw new Error('无法获取命名空间,请设置 parentNode!');
711
+ }
712
+
713
+ // 属性上绑定的表达式
714
+ get bindExpressions() {
715
+ const expressions: any[] = [];
716
+ // 跳转需要特殊处理
717
+ if (['externalDestination', 'destination'].includes(this.name)) {
718
+ const { link, arguments: params, anchor } = (this as any)[this.name] || {};
719
+ // externalDestination有跳转链接表达式
720
+ if (link) {
721
+ expressions.push(link);
722
+ }
723
+ // destination有参数
724
+ if (Array.isArray(params)) {
725
+ expressions.push(...params);
726
+ }
727
+ // 锚点表达式
728
+ if (anchor?.expression) {
729
+ expressions.push(anchor?.expression);
730
+ }
731
+ } else if (this.name === 'rules') {
732
+ if (Array.isArray(this.rules)) {
733
+ this.rules.forEach((rule) => {
734
+ const { arguments: args, errorMessage } = rule || {};
735
+ if (Array.isArray(args)) {
736
+ expressions.push(...args);
737
+ }
738
+ expressions.push(errorMessage);
502
739
  });
503
- return node;
740
+ }
741
+ } else if (this.expression) {
742
+ expressions.push(this.expression);
504
743
  }
505
-
506
-
507
-
508
-
509
- /**
510
- * 删除逻辑项
511
- * @param name 逻辑项名称
512
- */
513
- removeExpression(name: string): void;
514
-
515
- /**
516
- * 删除逻辑项
517
- * @param expression 已有的逻辑项实例
518
- */
519
- removeExpression(expression: LogicItem): void;
520
-
521
- removeExpression(options: string | LogicItem) {
522
- let expression: LogicItem;
523
- if (typeof options === 'string') {
524
- expression = this.expression;
525
- if (!expression) {
526
- throw new Error('找不到逻辑项 ' + options);
527
- }
528
- } else {
529
- expression = options;
744
+ return expressions;
745
+ }
746
+
747
+ // 是否需要用标识符替换
748
+ get needReplaceWithIdentifier() {
749
+ let bindExpression = false;
750
+ const expressions: any[] = this.bindExpressions;
751
+ if (Array.isArray(expressions) && expressions.length) {
752
+ expressions.forEach((expression) => {
753
+ let rootMemberExpression: any;
754
+ let tempNode = expression;
755
+ while (tempNode?.concept === 'MemberExpression') {
756
+ rootMemberExpression = tempNode;
757
+ tempNode = (tempNode as MemberExpression)?.object;
530
758
  }
531
- return expression.delete();
532
- }
533
-
534
-
535
-
536
- /**
537
- * 删除跳转页面
538
- * @param name 跳转页面名称
539
- */
540
- removeDestination(name: string): void;
541
-
542
- /**
543
- * 删除跳转页面
544
- * @param destination 已有的跳转页面实例
545
- */
546
- removeDestination(destination: Destination): void;
547
-
548
- removeDestination(options: string | Destination) {
549
- let destination: Destination;
550
- if (typeof options === 'string') {
551
- destination = this.destination;
552
- if (!destination) {
553
- throw new Error('找不到跳转页面 ' + options);
554
- }
555
- } else {
556
- destination = options;
759
+ // 变量和变量的成员表达式不进行替换
760
+ if (
761
+ !(
762
+ ['Identifier', 'StringLiteral'].includes(expression?.concept) ||
763
+ (rootMemberExpression && rootMemberExpression.object?.concept === 'Identifier')
764
+ ) &&
765
+ (this.type === 'dynamic' || (this.name === 'rules' && this.rules))
766
+ ) {
767
+ bindExpression = true;
557
768
  }
558
- return destination.delete();
769
+ });
559
770
  }
560
-
561
-
562
-
563
- /**
564
- * 删除外部链接
565
- * @param name 外部链接名称
566
- */
567
- removeExternalDestination(name: string): void;
568
-
569
- /**
570
- * 删除外部链接
571
- * @param externalDestination 已有的外部链接实例
572
- */
573
- removeExternalDestination(externalDestination: ExternalDestination): void;
574
-
575
- removeExternalDestination(options: string | ExternalDestination) {
576
- let externalDestination: ExternalDestination;
577
- if (typeof options === 'string') {
578
- externalDestination = this.externalDestination;
579
- if (!externalDestination) {
580
- throw new Error('找不到外部链接 ' + options);
581
- }
582
- } else {
583
- externalDestination = options;
584
- }
585
- return externalDestination.delete();
586
- }
587
-
588
-
589
-
590
- /**
591
- * 删除验证规则
592
- * @param name 验证规则名称
593
- */
594
- removeValidationRuleInRules(name: string): void;
595
-
596
- /**
597
- * 删除验证规则
598
- * @param validationRule 已有的验证规则实例
599
- */
600
- removeValidationRuleInRules(validationRule: ValidationRule): void;
601
-
602
- removeValidationRuleInRules(options: string | ValidationRule) {
603
- let validationRule: ValidationRule;
604
- if (typeof options === 'string') {
605
- validationRule = (this.rules as ValidationRule[]).find((item) => item.name === options);
606
- if (!validationRule) {
607
- throw new Error('找不到验证规则 ' + options);
608
- }
609
- } else {
610
- validationRule = options;
611
- }
612
- return validationRule.delete();
613
- }
614
-
615
-
616
-
617
- /**
618
- * 删除经办人
619
- * @param name 经办人名称
620
- */
621
- removeAssignee(name: string): void;
622
-
623
- /**
624
- * 删除经办人
625
- * @param assignee 已有的经办人实例
626
- */
627
- removeAssignee(assignee: Assignee): void;
628
-
629
- removeAssignee(options: string | Assignee) {
630
- let assignee: Assignee;
631
- if (typeof options === 'string') {
632
- assignee = this.assignee;
633
- if (!assignee) {
634
- throw new Error('找不到经办人 ' + options);
635
- }
636
- } else {
637
- assignee = options;
638
- }
639
- return assignee.delete();
640
- }
641
-
642
-
643
-
644
- /**
645
- * 删除逻辑项
646
- * @param logicItem 已有的逻辑项实例
647
- */
648
- removeItemInPlayground(logicItem: LogicItem): void;
649
-
650
- removeItemInPlayground(options: LogicItem) {
651
- let logicItem: LogicItem = options;
652
- return logicItem.delete();
771
+ return bindExpression;
772
+ }
773
+
774
+ // 获取表达式在页面中的名字
775
+ get expressionNameInView() {
776
+ const nameList: string[] = [];
777
+ let node: BaseNode = this;
778
+ while (node) {
779
+ nameList.unshift(node.name);
780
+ if (node.concept === 'ViewElement') {
781
+ node = null;
782
+ } else {
783
+ nameList.unshift(node.parentKey);
784
+ node = node.parentNode;
785
+ }
653
786
  }
654
-
655
- __removeLogicItem(logicItem: LogicItem) {
656
- const parentKey = logicItem.parentKey;
657
- const params: Params = {
658
- parentNode: this,
659
- parentKey,
660
- index: -1,
661
- object: null,
662
- oldObject: logicItem,
663
- };
664
- if (parentKey) {
665
- params.parentKey = parentKey;
666
- if (Array.isArray((this as any)[parentKey])) {
667
- const index = (this as any)[parentKey].indexOf(logicItem);
668
- ~index && (this as any)[parentKey].splice(index, 1);
669
- params.index = index;
670
- } else if ((this as any)[parentKey] === logicItem) {
671
- params.index = 0;
672
- (this as any)[parentKey] = undefined;
673
- }
674
- }
675
- return params;
787
+ return nameList.join('_').replace(/-/g, '_');
788
+ }
789
+
790
+ // 获取表达式生成器名称
791
+ get expressionBuilderName() {
792
+ let expressionInViewName = this.expressionNameInView;
793
+ expressionInViewName = expressionInViewName.charAt(0).toUpperCase() + expressionInViewName.slice(1);
794
+ return `gen${expressionInViewName}`;
795
+ }
796
+
797
+ // 获取参数列表
798
+ getArgsList() {
799
+ const viewElement = this?.getAncestor('ViewElement');
800
+ const argsList = [];
801
+ let parent = viewElement?.parentNode;
802
+ let index = 0;
803
+ while (parent && parent.concept !== 'View') {
804
+ if ((parent as ViewElement).slotScope) {
805
+ argsList.unshift(index === 0 ? 'current' : `current${index}`);
806
+ index++;
807
+ }
808
+ parent = parent.parentNode;
676
809
  }
677
-
678
- //================================================================================
679
- // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
680
- // 自动生成的代码已结束。下面可以手动编写。
681
- //================================================================================
682
-
683
- onChange($event?: EventPayload): void {
684
- this.emit('change', $event);
685
- }
686
-
687
- updateSource(source?: Partial<BindAttribute>) {
688
- const object = {
689
- ...source,
690
- };
691
- this.update({
692
- ...object,
693
- });
694
- }
695
-
696
- getNamespace(ns: string) {
697
- if (this.parentNode && (this.parentNode as Namespace).getNamespace) {
698
- const parentNamespace = (this.parentNode as Namespace).getNamespace();
699
- const parentName = this.parentNode.name;
700
- const arr = [parentNamespace];
701
- if (this.parentNode.concept !== 'App' && parentName) {
702
- arr.push(parentName);
703
- }
704
- return `${arr.join('.')}.${ns || 'bindAttribute'}`;
705
- } else
706
- throw new Error('无法获取命名空间,请设置 parentNode!');
707
- }
708
-
709
- // 属性上绑定的表达式
710
- get bindExpressions() {
711
- const expressions: any[] = [];
712
- // 跳转需要特殊处理
713
- if (['externalDestination', 'destination'].includes(this.name)) {
714
- const { link, arguments: params, anchor } = (this as any)[this.name] || {};
715
- // externalDestination有跳转链接表达式
716
- if (link) {
717
- expressions.push(link);
718
- }
719
- // destination有参数
720
- if (Array.isArray(params)) {
721
- expressions.push(...params);
722
- }
723
- // 锚点表达式
724
- if (anchor?.expression) {
725
- expressions.push(anchor?.expression);
726
- }
727
- } else if (this.name === 'rules') {
728
- if (Array.isArray(this.rules)) {
729
- this.rules.forEach((rule) => {
730
- const { arguments: args, errorMessage } = rule || {};
731
- if (Array.isArray(args)) {
732
- expressions.push(...args);
733
- }
734
- expressions.push(errorMessage);
735
- });
736
- }
737
- } else if (this.expression) {
738
- expressions.push(this.expression);
739
- }
740
- return expressions;
741
- }
742
-
743
- // 是否需要用标识符替换
744
- get needReplaceWithIdentifier() {
745
- let bindExpression = false;
746
- const expressions: any[] = this.bindExpressions;
747
- if (Array.isArray(expressions) && expressions.length) {
748
- expressions.forEach((expression) => {
749
- let rootMemberExpression: any;
750
- let tempNode = expression;
751
- while (tempNode?.concept === 'MemberExpression') {
752
- rootMemberExpression = tempNode;
753
- tempNode = (tempNode as MemberExpression)?.object;
754
- }
755
- // 变量和变量的成员表达式不进行替换
756
- if (
757
- !(
758
- ['Identifier', 'StringLiteral'].includes(expression?.concept)
759
- || (rootMemberExpression && rootMemberExpression.object?.concept === 'Identifier')
760
- )
761
- && (this.type === 'dynamic' || (this.name === 'rules' && this.rules))
762
- ) {
763
- bindExpression = true;
764
- }
765
- });
766
- }
767
- return bindExpression;
768
- }
769
-
770
- // 获取表达式在页面中的名字
771
- get expressionNameInView() {
772
- const nameList: string[] = [];
773
- let node: BaseNode = this;
774
- while (node) {
775
- nameList.unshift(node.name);
776
- if (node.concept === 'ViewElement') {
777
- node = null;
810
+ return argsList;
811
+ }
812
+
813
+ // 表达式中需要被监听的变量
814
+ get watchedVariableMap() {
815
+ const map: any = {};
816
+ // 页面中表达式用到的变量需要监听,从而重新执行match表达式
817
+ utils.traverse(
818
+ (current: any) => {
819
+ const { node } = current || {};
820
+ const { concept } = node || {};
821
+ if (['Identifier'].includes(concept)) {
822
+ let expressionNode = node;
823
+ let memberExpressionNode = node?.parentNode;
824
+ while (memberExpressionNode?.concept === 'MemberExpression') {
825
+ expressionNode = memberExpressionNode;
826
+ // 为了处理MemberExpression里面存在CallLogic、CallFunction等的情况
827
+ const { concept: objConcept } = memberExpressionNode.object || {};
828
+ if (!['MemberExpression', 'Identifier'].includes(objConcept)) {
829
+ memberExpressionNode = null;
830
+ expressionNode = null;
778
831
  } else {
779
- nameList.unshift(node.parentKey);
780
- node = node.parentNode;
781
- }
782
- }
783
- return nameList.join('_').replace(/-/g, '_');
784
- }
785
-
786
- // 获取表达式生成器名称
787
- get expressionBuilderName() {
788
- let expressionInViewName = this.expressionNameInView;
789
- expressionInViewName = expressionInViewName.charAt(0).toUpperCase() + expressionInViewName.slice(1);
790
- return `gen${expressionInViewName}`;
791
- }
792
-
793
- // 获取参数列表
794
- getArgsList() {
795
- const viewElement = this?.getAncestor('ViewElement');
796
- const argsList = [];
797
- let parent = viewElement?.parentNode;
798
- let index = 0;
799
- while (parent && parent.concept !== 'View') {
800
- if ((parent as ViewElement).slotScope) {
801
- argsList.unshift(index === 0 ? 'current' : 'current' + index);
802
- index++;
832
+ memberExpressionNode = memberExpressionNode.parentNode;
803
833
  }
804
- parent = parent.parentNode;
834
+ }
835
+ if (expressionNode) {
836
+ map[expressionNode.toJS()] = true;
837
+ }
805
838
  }
806
- return argsList;
807
- }
808
-
809
- // 表达式中需要被监听的变量
810
- get watchedVariableMap() {
811
- const map: any = {};
812
- // 页面中表达式用到的变量需要监听,从而重新执行match表达式
813
- utils.traverse((current: any) => {
814
- const { node } = current || {};
815
- const { concept } = node || {};
816
- if (['Identifier'].includes(concept)) {
817
- let expressionNode = node;
818
- let memberExpressionNode = node?.parentNode;
819
- while (memberExpressionNode?.concept === 'MemberExpression') {
820
- expressionNode = memberExpressionNode;
821
- // 为了处理MemberExpression里面存在CallLogic、CallFunction等的情况
822
- const { concept: objConcept } = memberExpressionNode.object || {};
823
- if (!['MemberExpression', 'Identifier'].includes(objConcept)) {
824
- memberExpressionNode = null;
825
- expressionNode = null;
826
- } else {
827
- memberExpressionNode = memberExpressionNode.parentNode;
828
- }
829
- }
830
- if (expressionNode) {
831
- map[expressionNode.toJS()] = true;
832
- }
833
- }
834
- }, {
835
- node: this,
836
- }, {
837
- mode: 'anyObject',
838
- excludedKeySet: new Set([
839
- // 排除playground里的表达式
840
- 'playground',
841
- 'parentNode',
842
- 'sourceMap',
843
- 'storageJSON',
844
- 'tsErrorDetail',
845
- 'NaslAnnotatedJSON',
846
- 'calledFrom',
847
- '_events',
848
- '_collectingList',
849
- '_historyList',
850
- ]),
851
- });
852
- return map;
853
- }
854
-
855
- getInViewMethod(state?: TranslatorState) {
856
- const argsList = this.getArgsList() || [];
857
- const hasArgs = !!argsList.length;
858
- let argStr = '';
859
-
860
- // 容错代码
861
- let ftCode = '';
862
- if (hasArgs) {
863
- argsList.forEach((arg) => {
864
- ftCode += `if (!this.${this.expressionNameInView}${argStr}) {
839
+ },
840
+ {
841
+ node: this,
842
+ },
843
+ {
844
+ mode: 'anyObject',
845
+ excludedKeySet: new Set([
846
+ // 排除playground里的表达式
847
+ 'playground',
848
+ 'parentNode',
849
+ 'sourceMap',
850
+ 'storageJSON',
851
+ 'tsErrorDetail',
852
+ 'NaslAnnotatedJSON',
853
+ 'calledFrom',
854
+ '_events',
855
+ '_collectingList',
856
+ '_historyList',
857
+ ]),
858
+ }
859
+ );
860
+ return map;
861
+ }
862
+
863
+ getInViewMethod(state?: TranslatorState) {
864
+ const argsList = this.getArgsList() || [];
865
+ const hasArgs = !!argsList.length;
866
+ let argStr = '';
867
+
868
+ // 容错代码
869
+ let ftCode = '';
870
+ if (hasArgs) {
871
+ argsList.forEach((arg) => {
872
+ ftCode += `if (!this.${this.expressionNameInView}${argStr}) {
865
873
  this.${this.expressionNameInView}${argStr} = {};
866
874
  }\n`;
867
- argStr += `[${arg}.hasOwnProperty('__nodeKey') ? ${arg}.__nodeKey : ${arg}.index]`;
868
- });
869
- }
870
- ftCode += `if (!this.${this.expressionNameInView}${argStr}) {
875
+ argStr += `[${arg}.hasOwnProperty('__nodeKey') ? ${arg}.__nodeKey : ${arg}.index]`;
876
+ });
877
+ }
878
+ ftCode += `if (!this.${this.expressionNameInView}${argStr}) {
871
879
  this.${this.expressionNameInView}${argStr} = {};
872
880
  }`;
873
881
 
874
- // 新的参数
875
- const paramList = Object.keys(this.watchedVariableMap);
876
- let newParams = `const newParams = [];`;
877
- if (Array.isArray(paramList) && paramList.length) {
878
- paramList.forEach((param) => {
879
- newParams += `newParams.push(${param});\n`;
880
- });
881
- }
882
+ // 新的参数
883
+ const paramList = Object.keys(this.watchedVariableMap);
884
+ let newParams = `const newParams = [];`;
885
+ if (Array.isArray(paramList) && paramList.length) {
886
+ paramList.forEach((param) => {
887
+ newParams += `newParams.push(${param});\n`;
888
+ });
889
+ }
882
890
 
883
- // 表达式主体
884
- let expressionStr = '';
885
- if (this.type === 'dynamic') {
886
- if (['externalDestination', 'destination'].includes(this.name)) {
887
- expressionStr = (this as any)[this.name].toInViewMethod() || '';
888
- } else {
889
- expressionStr = this.expression?.toJS() || '';
890
- }
891
- }
892
- if (this.name === 'rules' && this.rules) {
893
- const ruleStrs = this.rules.map((rule) => rule.toInViewMethod());
894
- expressionStr = `[${ruleStrs.join(' , ')}]`;
895
- }
896
- // 变量重新设置,为了触发重新调用
897
- let setVarStr = `this.${this.expressionNameInView}${argStr} = {
891
+ // 表达式主体
892
+ let expressionStr = '';
893
+ if (this.type === 'dynamic') {
894
+ if (['externalDestination', 'destination'].includes(this.name)) {
895
+ expressionStr = (this as any)[this.name].toInViewMethod() || '';
896
+ } else {
897
+ expressionStr = this.expression?.toJS() || '';
898
+ }
899
+ }
900
+ if (this.name === 'rules' && this.rules) {
901
+ const ruleStrs = this.rules.map((rule) => rule.toInViewMethod());
902
+ expressionStr = `[${ruleStrs.join(' , ')}]`;
903
+ }
904
+ // 变量重新设置,为了触发重新调用
905
+ let setVarStr = `this.${this.expressionNameInView}${argStr} = {
898
906
  ...(this.${this.expressionNameInView}${argStr} || {}),
899
907
  value: value,
900
908
  };`;
901
- if (Array.isArray(argsList) && argsList.length) {
902
- setVarStr += `this.${this.expressionNameInView} = {...this.${this.expressionNameInView}};\n`;
903
- }
904
- const code = `${this.expressionBuilderName} (${argsList.join(', ')}) {
909
+ if (Array.isArray(argsList) && argsList.length) {
910
+ setVarStr += `this.${this.expressionNameInView} = {...this.${this.expressionNameInView}};\n`;
911
+ }
912
+ const code = `${this.expressionBuilderName} (${argsList.join(', ')}) {
905
913
  // 容错代码
906
914
  ${ftCode}
907
915
  (async () => {
@@ -919,182 +927,219 @@ export class BindAttribute extends BaseNode {
919
927
  return this.${this.expressionNameInView}${argStr}.value;
920
928
  }`;
921
929
 
922
- return code;
923
- }
924
-
925
- /**
926
- * 转换成 Vue 的模板格式
927
- */
928
- toVue(options?: ElementToVueOptions) {
929
- let str = '';
930
- let value = this.value;
931
- if (this.type === 'dynamic' || (this.name === 'rules' && this.rules)) {
932
- // 需要用标识符替换
933
- //if (options?.finalCode !== false && this.needReplaceWithIdentifier) {
934
- // const argsList = this.getArgsList();
935
- // value = `${this.expressionBuilderName}(${argsList.join(', ')})`;
936
- //} else
937
- if (this.name === 'rules' && this.rules) {
938
- const ruleStrs = this.rules.map((rule) => rule.toVue(options));
939
- value = `[${ruleStrs.join(' , ')}]`;
940
- } else if (['destination', 'externalDestination'].includes(this.name)) {
941
- value = (this as any)?.[this.name]?.toVue(options) || '';
942
- } if ('ArrowFunctionExpression'.includes(this.expression?.concept)) {
943
- value = this.value;
944
- } else {
945
- value = this.expression?.toVue(options) || '';
946
- }
947
- } else if (this.type === 'string') {
948
- // fix-bug: http://projectmanage.netease-official.lcap.163yun.com/dashboard/BugDetail?id=2613580902909440
949
- if (
950
- (
951
- // fix: 2647986781937408 导航栏项中配置链接,取消动态绑定,直接配置为外部链接,无法跳转,且导航栏项消失
952
- (this.name === 'destination' || this.name === 'href') && value && value.startsWith('/')
953
- ) && this.frontend?.prefixPath
954
- ) {
955
- value = `${this.frontend?.prefixPath}${value}`;
956
- } else if (
957
- ['van-uploader', 'u-uploader'].includes(this.viewElement.tag)
958
- && this.name === 'url' && value.startsWith('/')
959
- && this.app?.sysPrefixPath
960
- ) {
961
- value = `${this.app?.sysPrefixPath}${value}`;
962
- } else {
963
- let code = '';
964
- if (typeof value === 'string') {
965
- code = value;
966
- if (options?.finalCode !== false) {
967
- code = value.replace(/['"`\\]/g, (m) => {
968
- const escape = '\\';
969
- if (m === '\\') {
970
- return `${escape}${escape}`;
971
- } else {
972
- return `${escape}${m}`;
973
- }
974
- });
975
- }
976
- }
977
- value = code;
978
- }
930
+ return code;
931
+ }
932
+
933
+ /**
934
+ * 转换成 Vue 的模板格式
935
+ */
936
+ toVue(options?: ElementToVueOptions) {
937
+ let str = '';
938
+ let { value } = this;
939
+ if (this.type === 'dynamic' || (this.name === 'rules' && this.rules)) {
940
+ // 需要用标识符替换
941
+ // if (options?.finalCode !== false && this.needReplaceWithIdentifier) {
942
+ // const argsList = this.getArgsList();
943
+ // value = `${this.expressionBuilderName}(${argsList.join(', ')})`;
944
+ // } else
945
+ if (this.name === 'rules' && this.rules) {
946
+ const ruleStrs = this.rules.map((rule) => rule.toVue(options));
947
+ value = `[${ruleStrs.join(' , ')}]`;
948
+ } else if (['destination', 'externalDestination'].includes(this.name)) {
949
+ value = (this as any)?.[this.name]?.toVue(options) || '';
950
+ } else {
951
+ value = this.expression?.toVue(options) || '';
952
+ }
953
+ } else if (this.type === 'string') {
954
+ // fix-bug: http://projectmanage.netease-official.lcap.163yun.com/dashboard/BugDetail?id=2613580902909440
955
+ if (
956
+ // fix: 2647986781937408 导航栏项中配置链接,取消动态绑定,直接配置为外部链接,无法跳转,且导航栏项消失
957
+ (this.name === 'destination' || this.name === 'href') &&
958
+ value &&
959
+ value.startsWith('/') &&
960
+ this.frontend?.prefixPath
961
+ ) {
962
+ value = `${this.frontend?.prefixPath}${value}`;
963
+ } else if (
964
+ ['van-uploader', 'u-uploader'].includes(this.viewElement.tag) &&
965
+ this.name === 'url' &&
966
+ value.startsWith('/') &&
967
+ this.app?.sysPrefixPath
968
+ ) {
969
+ value = `${this.app?.sysPrefixPath}${value}`;
970
+ } else {
971
+ let code = '';
972
+ if (typeof value === 'string') {
973
+ code = value;
974
+ if (options?.finalCode !== false) {
975
+ code = value.replace(/['"`\\]/g, (m) => {
976
+ const escape = '\\';
977
+ if (m === '\\') {
978
+ return `${escape}${escape}`;
979
+ }
980
+ return `${escape}${m}`;
981
+ });
982
+ }
979
983
  }
980
- if (value !== undefined && value !== null && typeof value === 'string') {
981
- value = value.replace(/"/g, "'");
984
+ value = code;
985
+ }
986
+ }
987
+ if (value !== undefined && value !== null && typeof value === 'string') {
988
+ value = value.replace(/"/g, "'");
989
+ }
990
+ let { name } = this;
991
+ if (value !== undefined && value !== null && value !== '') {
992
+ if (name === 'download') {
993
+ str += 'download="true" ';
994
+ name = 'href';
995
+ }
996
+ // 文本默认要经过toString转换
997
+ if (options?.finalCode !== false && name === 'text' && !this.sync && this.type === 'dynamic') {
998
+ const expTypeAnnotation = (this.expression as any)?.typeAnnotation || this.expression?.__TypeAnnotation;
999
+ value = `$utils['ToString'](${value}, '${expTypeAnnotation?.sortedTypeKey}')`;
1000
+ }
1001
+ if (this.type === 'string' && name !== 'rules') {
1002
+ str += `${name}="${value}"`;
1003
+ } else if (this.sync) {
1004
+ str += `:${name}.sync="${value}"`;
1005
+ } else if (name === 'destination') {
1006
+ str += `:destination="${value}"`;
1007
+ } else if (name === 'externalDestination') {
1008
+ str += `:link="${value}"`;
1009
+ } else if (name === 'rules') {
1010
+ str += `:${name}="${value}"`;
1011
+ } else {
1012
+ str += `:${name}="${value}"`;
1013
+ }
1014
+ } else if (this.type === 'string' && this.value === '')
1015
+ if (!['destination', 'externalDestination'].includes(this.name)) {
1016
+ str = `${name}="${this.value}"`;
1017
+ }
1018
+ return str;
1019
+ }
1020
+
1021
+ @withSourceMap()
1022
+ toEmbeddedTS(state?: TranslatorState): string {
1023
+ const { name, type, value, rules, expression, playground } = this;
1024
+
1025
+ let code = '() => {';
1026
+
1027
+ if (['destination', 'externalDestination'].includes(name) && type === 'dynamic') {
1028
+ code += (this as any)[name].toEmbeddedTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1029
+ code += ';\n';
1030
+ } else if (name === 'rules') {
1031
+ rules?.forEach((item, index) => {
1032
+ code += item.toEmbeddedTS(shiftState(state, code));
1033
+ code += ';\n';
1034
+ });
1035
+ } else if (expression) {
1036
+ code += expression.toEmbeddedTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1037
+ code += ';\n';
1038
+ } else if (name === 'url' && value) {
1039
+ /**
1040
+ * ls定制化处理
1041
+ * url字符串处理成实体的引用,方便改名或者删除的时候查找引用
1042
+ * 因为这里只有字符串信息,所以在这里拼接成一个有引用的内容
1043
+ */
1044
+ const names = /api\/(.+?)\/import/g.exec(value);
1045
+ if (names) {
1046
+ const dataSourceNameAndEntityName = names[1];
1047
+ let dataSourceName = '';
1048
+ let entityName = '';
1049
+ if (dataSourceNameAndEntityName.includes('/')) {
1050
+ const arr: string[] = dataSourceNameAndEntityName.split('/');
1051
+ dataSourceName = arr[0];
1052
+ entityName = arr[1];
1053
+ } else {
1054
+ entityName = dataSourceNameAndEntityName;
982
1055
  }
983
- let name = this.name;
984
- if (value !== undefined && value !== null && value !== '') {
985
- if (name === 'download') {
986
- str += 'download="true" ';
987
- name = 'href';
988
- }
989
- // 文本默认要经过toString转换
990
- if (options?.finalCode !== false && name === 'text' && !this.sync && this.type === 'dynamic') {
991
- const expTypeAnnotation = (this.expression as any)?.typeAnnotation || this.expression?.__TypeAnnotation;
992
- value = `$utils['ToString'](${value}, '${expTypeAnnotation?.sortedTypeKey}')`;
993
- }
994
- if (this.type === 'string' && name !== 'rules') {
995
- str += `${name}="${value}"`;
996
- } else {
997
- if (this.sync) {
998
- str += `:${name}.sync="${value}"`;
999
- } else {
1000
- if (name === 'destination') {
1001
- str += `:destination="${value}"`;
1002
- } else if (name === 'externalDestination') {
1003
- str += `:link="${value}"`;
1004
- } else if (name === 'rules') {
1005
- str += `:${name}="${value}"`;
1006
- } else {
1007
- str += `:${name}="${value}"`;
1008
- }
1009
- }
1010
- }
1011
- } else if (this.type === 'string' && this.value === '')
1012
- if (!['destination', 'externalDestination'].includes(this.name)) {
1013
- str = `${name}="${this.value}"`;
1014
- }
1015
- return str;
1056
+ // 连接符转驼峰
1057
+ entityName = entityName.replace(/\-(\w)/g, (all, letter) => letter.toUpperCase());
1058
+ entityName = entityName[0].toUpperCase() + entityName.substr(1);
1059
+ code += `app.dataSources.${dataSourceName || 'defaultDS'}.entities.${entityName}`;
1060
+ code += ';\n';
1061
+ }
1062
+ }
1063
+ if (type === 'dynamic') {
1064
+ playground?.forEach((item, index) => {
1065
+ code += item.toEmbeddedTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1066
+ code += ';\n';
1067
+ });
1016
1068
  }
1017
1069
 
1018
- @withSourceMap()
1019
- toEmbeddedTS(state?: TranslatorState): string {
1020
- const {
1021
- name,
1022
- type,
1023
- value,
1024
- rules,
1025
- expression,
1026
- playground,
1027
- } = this;
1028
- let code = ''
1029
- if (this?.name === 'data-source' && this?.expression?.concept === 'CallLogic') {
1030
- code = `(params: nasl.ui.DataSourceParams) => {`;
1070
+ code += '}';
1071
+ return code;
1072
+ }
1073
+
1074
+ @withSourceMap()
1075
+ toNaturalTS(state?: TranslatorState): string {
1076
+ const { name, type, value, rules, expression, playground } = this;
1077
+ let code = '() => {';
1078
+
1079
+ if (['destination', 'externalDestination'].includes(name) && type === 'dynamic') {
1080
+ code += (this as any)[name].toNaturalTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1081
+ code += ';\n';
1082
+ } else if (name === 'rules') {
1083
+ rules?.forEach((item) => {
1084
+ code += item.toNaturalTS(shiftState(state, code));
1085
+ code += ';\n';
1086
+ });
1087
+ } else if (expression) {
1088
+ code += expression.toNaturalTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1089
+ code += ';\n';
1090
+ } else if (name === 'url' && value) {
1091
+ /**
1092
+ * ls定制化处理
1093
+ * url字符串处理成实体的引用,方便改名或者删除的时候查找引用
1094
+ * 因为这里只有字符串信息,所以在这里拼接成一个有引用的内容
1095
+ */
1096
+ const names = /api\/(.+?)\/import/g.exec(value);
1097
+ if (names) {
1098
+ const dataSourceNameAndEntityName = names[1];
1099
+ let dataSourceName = '';
1100
+ let entityName = '';
1101
+ if (dataSourceNameAndEntityName.includes('/')) {
1102
+ const arr: string[] = dataSourceNameAndEntityName.split('/');
1103
+ dataSourceName = arr[0];
1104
+ entityName = arr[1];
1031
1105
  } else {
1032
- code = '() => {';
1106
+ entityName = dataSourceNameAndEntityName;
1033
1107
  }
1034
- if (['destination', 'externalDestination'].includes(name) && type === 'dynamic') {
1035
- code += (this as any)[name].toEmbeddedTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1036
- code += ';\n';
1037
- } else if (name === 'rules') {
1038
- rules?.forEach((item, index) => {
1039
- code += item.toEmbeddedTS(shiftState(state, code));
1040
- code += ';\n';
1041
- });
1042
- } else if (expression) {
1043
- code += expression.toEmbeddedTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1044
- code += ';\n';
1045
- } else if (name === 'url' && value) {
1046
- /**
1047
- * ls定制化处理
1048
- * url字符串处理成实体的引用,方便改名或者删除的时候查找引用
1049
- * 因为这里只有字符串信息,所以在这里拼接成一个有引用的内容
1050
- */
1051
- const names = /api\/(.+?)\/import/g.exec(value);
1052
- if (names) {
1053
- const dataSourceNameAndEntityName = names[1];
1054
- let dataSourceName = '';
1055
- let entityName = '';
1056
- if (dataSourceNameAndEntityName.includes('/')) {
1057
- const arr: string[] = dataSourceNameAndEntityName.split('/');
1058
- dataSourceName = arr[0];
1059
- entityName = arr[1];
1060
- } else {
1061
- entityName = dataSourceNameAndEntityName;
1062
- }
1063
- // 连接符转驼峰
1064
- entityName = entityName.replace(/\-(\w)/g, (all, letter) => letter.toUpperCase());
1065
- entityName = entityName[0].toUpperCase() + entityName.substr(1);
1066
- code += `app.dataSources.${dataSourceName || 'defaultDS'}.entities.${entityName}`;
1067
- code += ';\n';
1068
- }
1069
- }
1070
- if (type === 'dynamic') {
1071
- playground?.forEach((item, index) => {
1072
- code += item.toEmbeddedTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1073
- code += ';\n';
1074
- });
1075
- }
1076
-
1077
- code += '}';
1078
- return code;
1108
+ // 连接符转驼峰
1109
+ entityName = entityName.replace(/\-(\w)/g, (all, letter) => letter.toUpperCase());
1110
+ entityName = entityName[0].toUpperCase() + entityName.substr(1);
1111
+ code += `app.dataSources.${dataSourceName || 'defaultDS'}.entities.${entityName}`;
1112
+ code += ';\n';
1113
+ }
1079
1114
  }
1080
-
1081
- setUrlValue(newValue: string) {
1082
- const object = {
1083
- value: newValue,
1084
- };
1085
- this.update({
1086
- ...object,
1087
- });
1115
+ if (type === 'dynamic') {
1116
+ playground?.forEach((item) => {
1117
+ code += item.toNaturalTS(shiftState(state, code, { tabSize: (state?.tabSize || 0) + 1 }));
1118
+ code += ';\n';
1119
+ });
1088
1120
  }
1089
- //================================================================================
1090
- // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
1091
- // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
1092
- //================================================================================
1121
+
1122
+ code += '}';
1123
+ return code;
1124
+ }
1125
+
1126
+ setUrlValue(newValue: string) {
1127
+ const object = {
1128
+ value: newValue,
1129
+ };
1130
+ this.update({
1131
+ ...object,
1132
+ });
1133
+ }
1134
+ //= ===============================================================================
1135
+ // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
1136
+ // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
1137
+ //= ===============================================================================
1093
1138
  }
1094
1139
 
1095
1140
  classMap.BindAttribute = BindAttribute;
1096
1141
  export default BindAttribute;
1097
- //================================================================================
1142
+ //= ===============================================================================
1098
1143
  // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
1099
1144
  // 自动生成的代码已结束。下面可以手动编写。
1100
- //================================================================================
1145
+ //= ===============================================================================