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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (774) hide show
  1. package/out/automate/upgrader/2.20.js +1 -1
  2. package/out/automate/upgrader/2.20.js.map +1 -1
  3. package/out/bak/translator.js +11 -15
  4. package/out/bak/translator.js.map +1 -1
  5. package/out/breakpoint/generator/AfterStartNode.js +3 -1
  6. package/out/breakpoint/generator/AfterStartNode.js.map +1 -1
  7. package/out/breakpoint/generator/BeforeEndNode.js.map +1 -1
  8. package/out/breakpoint/generator/BreakpointNode.d.ts +1 -0
  9. package/out/breakpoint/generator/BreakpointNode.js +48 -15
  10. package/out/breakpoint/generator/BreakpointNode.js.map +1 -1
  11. package/out/breakpoint/generator/CallbackNode.d.ts +4 -0
  12. package/out/breakpoint/generator/CallbackNode.js +22 -0
  13. package/out/breakpoint/generator/CallbackNode.js.map +1 -0
  14. package/out/breakpoint/generator/FragmentNode.d.ts +4 -0
  15. package/out/breakpoint/generator/FragmentNode.js +18 -0
  16. package/out/breakpoint/generator/FragmentNode.js.map +1 -0
  17. package/out/breakpoint/generator/index.js +25 -4
  18. package/out/breakpoint/generator/index.js.map +1 -1
  19. package/out/breakpoint/shared/constants.d.ts +3 -0
  20. package/out/breakpoint/shared/constants.js +6 -1
  21. package/out/breakpoint/shared/constants.js.map +1 -1
  22. package/out/breakpoint/shared/operations.js.map +1 -1
  23. package/out/breakpoint/shared/socket.d.ts +1 -1
  24. package/out/breakpoint/shared/socket.js +36 -7
  25. package/out/breakpoint/shared/socket.js.map +1 -1
  26. package/out/breakpoint/shared/utils.d.ts +2 -0
  27. package/out/breakpoint/shared/utils.js +15 -2
  28. package/out/breakpoint/shared/utils.js.map +1 -1
  29. package/out/breakpoint/store/core.d.ts +48 -2
  30. package/out/breakpoint/store/core.js +58 -32
  31. package/out/breakpoint/store/core.js.map +1 -1
  32. package/out/breakpoint/store/dock.js +1 -1
  33. package/out/breakpoint/store/dock.js.map +1 -1
  34. package/out/common/BaseNode.d.ts +1 -1
  35. package/out/common/BaseNode.js +105 -51
  36. package/out/common/BaseNode.js.map +1 -1
  37. package/out/common/Command.d.ts +13 -2
  38. package/out/common/Command.js +37 -9
  39. package/out/common/Command.js.map +1 -1
  40. package/out/common/EventEmitter.js.map +1 -1
  41. package/out/common/Messager.d.ts +3 -3
  42. package/out/common/Messager.js +6 -7
  43. package/out/common/Messager.js.map +1 -1
  44. package/out/common/asyncFuncMap.js.map +1 -1
  45. package/out/concepts/Abort__.js +6 -5
  46. package/out/concepts/Abort__.js.map +1 -1
  47. package/out/concepts/Anchor__.d.ts +4 -3
  48. package/out/concepts/Anchor__.js +24 -7
  49. package/out/concepts/Anchor__.js.map +1 -1
  50. package/out/concepts/AnonymousFunction__.d.ts +22 -21
  51. package/out/concepts/AnonymousFunction__.js +48 -22
  52. package/out/concepts/AnonymousFunction__.js.map +1 -1
  53. package/out/concepts/App__.d.ts +421 -247
  54. package/out/concepts/App__.js +286 -54
  55. package/out/concepts/App__.js.map +1 -1
  56. package/out/concepts/Argument__.d.ts +4 -3
  57. package/out/concepts/Argument__.js +42 -11
  58. package/out/concepts/Argument__.js.map +1 -1
  59. package/out/concepts/Assignee__.d.ts +45 -45
  60. package/out/concepts/Assignee__.js +15 -15
  61. package/out/concepts/Assignee__.js.map +1 -1
  62. package/out/concepts/AssignmentLine__.js +6 -5
  63. package/out/concepts/AssignmentLine__.js.map +1 -1
  64. package/out/concepts/Assignment__.d.ts +7 -6
  65. package/out/concepts/Assignment__.js +40 -22
  66. package/out/concepts/Assignment__.js.map +1 -1
  67. package/out/concepts/Attribute__.d.ts +3 -3
  68. package/out/concepts/Attribute__.js +8 -7
  69. package/out/concepts/Attribute__.js.map +1 -1
  70. package/out/concepts/AuthInterface__.js +4 -3
  71. package/out/concepts/AuthInterface__.js.map +1 -1
  72. package/out/concepts/AuthLogicForCallInterface__.d.ts +15 -15
  73. package/out/concepts/AuthLogicForCallInterface__.js +46 -27
  74. package/out/concepts/AuthLogicForCallInterface__.js.map +1 -1
  75. package/out/concepts/AuthLogic__.js +27 -13
  76. package/out/concepts/AuthLogic__.js.map +1 -1
  77. package/out/concepts/BackendVariable__.d.ts +5 -5
  78. package/out/concepts/BackendVariable__.js +23 -26
  79. package/out/concepts/BackendVariable__.js.map +1 -1
  80. package/out/concepts/Backend__.d.ts +18 -18
  81. package/out/concepts/Backend__.js +13 -13
  82. package/out/concepts/Backend__.js.map +1 -1
  83. package/out/concepts/BatchAssignment__.d.ts +34 -33
  84. package/out/concepts/BatchAssignment__.js +83 -43
  85. package/out/concepts/BatchAssignment__.js.map +1 -1
  86. package/out/concepts/BinaryExpression__.d.ts +7 -6
  87. package/out/concepts/BinaryExpression__.js +60 -24
  88. package/out/concepts/BinaryExpression__.js.map +1 -1
  89. package/out/concepts/BindAttribute__.d.ts +37 -37
  90. package/out/concepts/BindAttribute__.js +101 -48
  91. package/out/concepts/BindAttribute__.js.map +1 -1
  92. package/out/concepts/BindDirective__.d.ts +13 -13
  93. package/out/concepts/BindDirective__.js +23 -21
  94. package/out/concepts/BindDirective__.js.map +1 -1
  95. package/out/concepts/BindEvent__.d.ts +28 -28
  96. package/out/concepts/BindEvent__.js +99 -48
  97. package/out/concepts/BindEvent__.js.map +1 -1
  98. package/out/concepts/BindStyle__.d.ts +14 -15
  99. package/out/concepts/BindStyle__.js +16 -16
  100. package/out/concepts/BindStyle__.js.map +1 -1
  101. package/out/concepts/BooleanLiteral__.d.ts +1 -0
  102. package/out/concepts/BooleanLiteral__.js +12 -5
  103. package/out/concepts/BooleanLiteral__.js.map +1 -1
  104. package/out/concepts/CallAuthInterface__.d.ts +15 -15
  105. package/out/concepts/CallAuthInterface__.js +23 -22
  106. package/out/concepts/CallAuthInterface__.js.map +1 -1
  107. package/out/concepts/CallConnector__.d.ts +11 -9
  108. package/out/concepts/CallConnector__.js +79 -36
  109. package/out/concepts/CallConnector__.js.map +1 -1
  110. package/out/concepts/CallFunction__.d.ts +17 -16
  111. package/out/concepts/CallFunction__.js +95 -63
  112. package/out/concepts/CallFunction__.js.map +1 -1
  113. package/out/concepts/CallInterface__.d.ts +9 -8
  114. package/out/concepts/CallInterface__.js +71 -30
  115. package/out/concepts/CallInterface__.js.map +1 -1
  116. package/out/concepts/CallLogic__.d.ts +20 -19
  117. package/out/concepts/CallLogic__.js +155 -52
  118. package/out/concepts/CallLogic__.js.map +1 -1
  119. package/out/concepts/CallQueryComponent__.d.ts +51 -51
  120. package/out/concepts/CallQueryComponent__.js +66 -63
  121. package/out/concepts/CallQueryComponent__.js.map +1 -1
  122. package/out/concepts/Comment__.d.ts +1 -0
  123. package/out/concepts/Comment__.js +13 -6
  124. package/out/concepts/Comment__.js.map +1 -1
  125. package/out/concepts/CompletionProperty__.d.ts +3 -3
  126. package/out/concepts/CompletionProperty__.js +8 -7
  127. package/out/concepts/CompletionProperty__.js.map +1 -1
  128. package/out/concepts/ConfigGroup__.d.ts +15 -15
  129. package/out/concepts/ConfigGroup__.js +9 -9
  130. package/out/concepts/ConfigGroup__.js.map +1 -1
  131. package/out/concepts/ConfigPropertyValue__.js +4 -3
  132. package/out/concepts/ConfigPropertyValue__.js.map +1 -1
  133. package/out/concepts/ConfigProperty__.d.ts +15 -15
  134. package/out/concepts/ConfigProperty__.js +10 -10
  135. package/out/concepts/ConfigProperty__.js.map +1 -1
  136. package/out/concepts/Configuration__.d.ts +15 -15
  137. package/out/concepts/Configuration__.js +9 -9
  138. package/out/concepts/Configuration__.js.map +1 -1
  139. package/out/concepts/Connection__.d.ts +166 -0
  140. package/out/concepts/Connection__.js +332 -0
  141. package/out/concepts/Connection__.js.map +1 -0
  142. package/out/concepts/ConnectorTrigger__.js +4 -3
  143. package/out/concepts/ConnectorTrigger__.js.map +1 -1
  144. package/out/concepts/Connector__.d.ts +66 -66
  145. package/out/concepts/Connector__.js +16 -15
  146. package/out/concepts/Connector__.js.map +1 -1
  147. package/out/concepts/Constant__.d.ts +3 -3
  148. package/out/concepts/Constant__.js +8 -7
  149. package/out/concepts/Constant__.js.map +1 -1
  150. package/out/concepts/DataElement__.d.ts +3 -3
  151. package/out/concepts/DataElement__.js +6 -5
  152. package/out/concepts/DataElement__.js.map +1 -1
  153. package/out/concepts/DataSource__.d.ts +15 -15
  154. package/out/concepts/DataSource__.js +55 -39
  155. package/out/concepts/DataSource__.js.map +1 -1
  156. package/out/concepts/DatabaseTypeAnnotation__.js +4 -3
  157. package/out/concepts/DatabaseTypeAnnotation__.js.map +1 -1
  158. package/out/concepts/Destination__.d.ts +12 -11
  159. package/out/concepts/Destination__.js +93 -36
  160. package/out/concepts/Destination__.js.map +1 -1
  161. package/out/concepts/End__.js +15 -13
  162. package/out/concepts/End__.js.map +1 -1
  163. package/out/concepts/EntityIndex__.d.ts +1 -1
  164. package/out/concepts/EntityIndex__.js +6 -5
  165. package/out/concepts/EntityIndex__.js.map +1 -1
  166. package/out/concepts/EntityProperty__.d.ts +8 -7
  167. package/out/concepts/EntityProperty__.js +39 -24
  168. package/out/concepts/EntityProperty__.js.map +1 -1
  169. package/out/concepts/Entity__.d.ts +31 -30
  170. package/out/concepts/Entity__.js +40 -16
  171. package/out/concepts/Entity__.js.map +1 -1
  172. package/out/concepts/EnumItem__.d.ts +1 -0
  173. package/out/concepts/EnumItem__.js +12 -5
  174. package/out/concepts/EnumItem__.js.map +1 -1
  175. package/out/concepts/Enum__.d.ts +9 -8
  176. package/out/concepts/Enum__.js +24 -11
  177. package/out/concepts/Enum__.js.map +1 -1
  178. package/out/concepts/Event__.d.ts +15 -15
  179. package/out/concepts/Event__.js +6 -5
  180. package/out/concepts/Event__.js.map +1 -1
  181. package/out/concepts/ExternalDestination__.d.ts +6 -6
  182. package/out/concepts/ExternalDestination__.js +12 -11
  183. package/out/concepts/ExternalDestination__.js.map +1 -1
  184. package/out/concepts/ForEachStatement__.d.ts +25 -24
  185. package/out/concepts/ForEachStatement__.js +101 -36
  186. package/out/concepts/ForEachStatement__.js.map +1 -1
  187. package/out/concepts/FrontendLibrary__.d.ts +30 -30
  188. package/out/concepts/FrontendLibrary__.js +12 -13
  189. package/out/concepts/FrontendLibrary__.js.map +1 -1
  190. package/out/concepts/FrontendVariable__.js +4 -3
  191. package/out/concepts/FrontendVariable__.js.map +1 -1
  192. package/out/concepts/Frontend__.d.ts +64 -65
  193. package/out/concepts/Frontend__.js +23 -27
  194. package/out/concepts/Frontend__.js.map +1 -1
  195. package/out/concepts/Function__.d.ts +64 -63
  196. package/out/concepts/Function__.js +49 -21
  197. package/out/concepts/Function__.js.map +1 -1
  198. package/out/concepts/Identifier__.js +37 -31
  199. package/out/concepts/Identifier__.js.map +1 -1
  200. package/out/concepts/IfStatement__.d.ts +20 -19
  201. package/out/concepts/IfStatement__.js +64 -34
  202. package/out/concepts/IfStatement__.js.map +1 -1
  203. package/out/concepts/Integration__.d.ts +3 -3
  204. package/out/concepts/Integration__.js +8 -7
  205. package/out/concepts/Integration__.js.map +1 -1
  206. package/out/concepts/InterfaceParam__.d.ts +3 -3
  207. package/out/concepts/InterfaceParam__.js +7 -6
  208. package/out/concepts/InterfaceParam__.js.map +1 -1
  209. package/out/concepts/Interface__.d.ts +33 -33
  210. package/out/concepts/Interface__.js +19 -20
  211. package/out/concepts/Interface__.js.map +1 -1
  212. package/out/concepts/JSBlock__.d.ts +1 -0
  213. package/out/concepts/JSBlock__.js +12 -5
  214. package/out/concepts/JSBlock__.js.map +1 -1
  215. package/out/concepts/JavaLogic__.js +10 -9
  216. package/out/concepts/JavaLogic__.js.map +1 -1
  217. package/out/concepts/LogicItem__.d.ts +6 -0
  218. package/out/concepts/LogicItem__.js +14 -5
  219. package/out/concepts/LogicItem__.js.map +1 -1
  220. package/out/concepts/Logic__.d.ts +80 -79
  221. package/out/concepts/Logic__.js +204 -58
  222. package/out/concepts/Logic__.js.map +1 -1
  223. package/out/concepts/MatchCase__.d.ts +39 -38
  224. package/out/concepts/MatchCase__.js +122 -37
  225. package/out/concepts/MatchCase__.js.map +1 -1
  226. package/out/concepts/Match__.d.ts +13 -11
  227. package/out/concepts/Match__.js +128 -60
  228. package/out/concepts/Match__.js.map +1 -1
  229. package/out/concepts/MemberExpression__.d.ts +7 -6
  230. package/out/concepts/MemberExpression__.js +52 -22
  231. package/out/concepts/MemberExpression__.js.map +1 -1
  232. package/out/concepts/MicroApp__.js +4 -3
  233. package/out/concepts/MicroApp__.js.map +1 -1
  234. package/out/concepts/Module__.d.ts +239 -155
  235. package/out/concepts/Module__.js +139 -33
  236. package/out/concepts/Module__.js.map +1 -1
  237. package/out/concepts/MsgTriggerEvent__.d.ts +15 -15
  238. package/out/concepts/MsgTriggerEvent__.js +6 -5
  239. package/out/concepts/MsgTriggerEvent__.js.map +1 -1
  240. package/out/concepts/MsgTriggerLauncher__.d.ts +23 -15
  241. package/out/concepts/MsgTriggerLauncher__.js +24 -5
  242. package/out/concepts/MsgTriggerLauncher__.js.map +1 -1
  243. package/out/concepts/Namespace__.d.ts +180 -180
  244. package/out/concepts/Namespace__.js +33 -34
  245. package/out/concepts/Namespace__.js.map +1 -1
  246. package/out/concepts/NewComposite__.d.ts +49 -48
  247. package/out/concepts/NewComposite__.js +164 -49
  248. package/out/concepts/NewComposite__.js.map +1 -1
  249. package/out/concepts/NewList__.d.ts +19 -18
  250. package/out/concepts/NewList__.js +29 -12
  251. package/out/concepts/NewList__.js.map +1 -1
  252. package/out/concepts/NewMap__.d.ts +34 -33
  253. package/out/concepts/NewMap__.js +81 -72
  254. package/out/concepts/NewMap__.js.map +1 -1
  255. package/out/concepts/New__.js +6 -5
  256. package/out/concepts/New__.js.map +1 -1
  257. package/out/concepts/NullLiteral__.js +6 -5
  258. package/out/concepts/NullLiteral__.js.map +1 -1
  259. package/out/concepts/NumericLiteral__.d.ts +4 -3
  260. package/out/concepts/NumericLiteral__.js +15 -8
  261. package/out/concepts/NumericLiteral__.js.map +1 -1
  262. package/out/concepts/OqlQueryComponent__.d.ts +4 -3
  263. package/out/concepts/OqlQueryComponent__.js +25 -16
  264. package/out/concepts/OqlQueryComponent__.js.map +1 -1
  265. package/out/concepts/OverriddenLogic__.d.ts +79 -79
  266. package/out/concepts/OverriddenLogic__.js +79 -58
  267. package/out/concepts/OverriddenLogic__.js.map +1 -1
  268. package/out/concepts/Param__.d.ts +6 -5
  269. package/out/concepts/Param__.js +66 -29
  270. package/out/concepts/Param__.js.map +1 -1
  271. package/out/concepts/Point__.js +4 -3
  272. package/out/concepts/Point__.js.map +1 -1
  273. package/out/concepts/ProcessComponent__.d.ts +30 -30
  274. package/out/concepts/ProcessComponent__.js +8 -7
  275. package/out/concepts/ProcessComponent__.js.map +1 -1
  276. package/out/concepts/ProcessElement__.d.ts +96 -96
  277. package/out/concepts/ProcessElement__.js +34 -34
  278. package/out/concepts/ProcessElement__.js.map +1 -1
  279. package/out/concepts/ProcessOutcome__.js +6 -5
  280. package/out/concepts/ProcessOutcome__.js.map +1 -1
  281. package/out/concepts/ProcessOutcomes__.js +6 -5
  282. package/out/concepts/ProcessOutcomes__.js.map +1 -1
  283. package/out/concepts/Process__.d.ts +75 -75
  284. package/out/concepts/Process__.js +33 -30
  285. package/out/concepts/Process__.js.map +1 -1
  286. package/out/concepts/QueryAggregateExpression__.d.ts +3 -3
  287. package/out/concepts/QueryAggregateExpression__.js +8 -7
  288. package/out/concepts/QueryAggregateExpression__.js.map +1 -1
  289. package/out/concepts/QueryFieldExpression__.js +7 -6
  290. package/out/concepts/QueryFieldExpression__.js.map +1 -1
  291. package/out/concepts/QueryFromExpression__.d.ts +8 -8
  292. package/out/concepts/QueryFromExpression__.js +8 -7
  293. package/out/concepts/QueryFromExpression__.js.map +1 -1
  294. package/out/concepts/QueryGroupByExpression__.d.ts +3 -3
  295. package/out/concepts/QueryGroupByExpression__.js +9 -10
  296. package/out/concepts/QueryGroupByExpression__.js.map +1 -1
  297. package/out/concepts/QueryJoinExpression__.d.ts +23 -23
  298. package/out/concepts/QueryJoinExpression__.js +11 -10
  299. package/out/concepts/QueryJoinExpression__.js.map +1 -1
  300. package/out/concepts/QueryLimitExpression__.d.ts +6 -6
  301. package/out/concepts/QueryLimitExpression__.js +9 -8
  302. package/out/concepts/QueryLimitExpression__.js.map +1 -1
  303. package/out/concepts/QueryOrderByExpression__.d.ts +6 -6
  304. package/out/concepts/QueryOrderByExpression__.js +9 -8
  305. package/out/concepts/QueryOrderByExpression__.js.map +1 -1
  306. package/out/concepts/QuerySelectExpression__.d.ts +30 -30
  307. package/out/concepts/QuerySelectExpression__.js +9 -8
  308. package/out/concepts/QuerySelectExpression__.js.map +1 -1
  309. package/out/concepts/Rect__.js +4 -3
  310. package/out/concepts/Rect__.js.map +1 -1
  311. package/out/concepts/Return__.d.ts +4 -3
  312. package/out/concepts/Return__.js +37 -18
  313. package/out/concepts/Return__.js.map +1 -1
  314. package/out/concepts/Role__.js +9 -9
  315. package/out/concepts/Role__.js.map +1 -1
  316. package/out/concepts/SelectMembers__.d.ts +18 -18
  317. package/out/concepts/SelectMembers__.js +10 -9
  318. package/out/concepts/SelectMembers__.js.map +1 -1
  319. package/out/concepts/Slot__.d.ts +3 -3
  320. package/out/concepts/Slot__.js +6 -5
  321. package/out/concepts/Slot__.js.map +1 -1
  322. package/out/concepts/SqlQueryComponent__.d.ts +4 -3
  323. package/out/concepts/SqlQueryComponent__.js +21 -12
  324. package/out/concepts/SqlQueryComponent__.js.map +1 -1
  325. package/out/concepts/Start__.js +6 -5
  326. package/out/concepts/Start__.js.map +1 -1
  327. package/out/concepts/StringInterpolation__.d.ts +16 -15
  328. package/out/concepts/StringInterpolation__.js +37 -14
  329. package/out/concepts/StringInterpolation__.js.map +1 -1
  330. package/out/concepts/StringLiteral__.d.ts +1 -0
  331. package/out/concepts/StringLiteral__.js +13 -8
  332. package/out/concepts/StringLiteral__.js.map +1 -1
  333. package/out/concepts/StructureProperty__.d.ts +4 -3
  334. package/out/concepts/StructureProperty__.js +22 -9
  335. package/out/concepts/StructureProperty__.js.map +1 -1
  336. package/out/concepts/Structure__.d.ts +31 -30
  337. package/out/concepts/Structure__.js +27 -15
  338. package/out/concepts/Structure__.js.map +1 -1
  339. package/out/concepts/SwitchCase__.d.ts +12 -11
  340. package/out/concepts/SwitchCase__.js +69 -31
  341. package/out/concepts/SwitchCase__.js.map +1 -1
  342. package/out/concepts/SwitchStatement__.d.ts +9 -8
  343. package/out/concepts/SwitchStatement__.js +27 -7
  344. package/out/concepts/SwitchStatement__.js.map +1 -1
  345. package/out/concepts/Theme__.js +4 -3
  346. package/out/concepts/Theme__.js.map +1 -1
  347. package/out/concepts/Transactional__.js +4 -3
  348. package/out/concepts/Transactional__.js.map +1 -1
  349. package/out/concepts/TriggerEvent__.d.ts +15 -15
  350. package/out/concepts/TriggerEvent__.js +6 -5
  351. package/out/concepts/TriggerEvent__.js.map +1 -1
  352. package/out/concepts/TriggerLauncher__.d.ts +15 -10
  353. package/out/concepts/TriggerLauncher__.js +54 -32
  354. package/out/concepts/TriggerLauncher__.js.map +1 -1
  355. package/out/concepts/TypeAnnotation__.d.ts +28 -27
  356. package/out/concepts/TypeAnnotation__.js +144 -124
  357. package/out/concepts/TypeAnnotation__.js.map +1 -1
  358. package/out/concepts/TypeParam__.d.ts +1 -0
  359. package/out/concepts/TypeParam__.js +12 -5
  360. package/out/concepts/TypeParam__.js.map +1 -1
  361. package/out/concepts/UnaryExpression__.d.ts +4 -3
  362. package/out/concepts/UnaryExpression__.js +31 -20
  363. package/out/concepts/UnaryExpression__.js.map +1 -1
  364. package/out/concepts/Unparsed__.d.ts +1 -0
  365. package/out/concepts/Unparsed__.js +12 -5
  366. package/out/concepts/Unparsed__.js.map +1 -1
  367. package/out/concepts/UseComponent__.js +4 -3
  368. package/out/concepts/UseComponent__.js.map +1 -1
  369. package/out/concepts/ValidationRule__.d.ts +14 -14
  370. package/out/concepts/ValidationRule__.js +19 -17
  371. package/out/concepts/ValidationRule__.js.map +1 -1
  372. package/out/concepts/Variable__.d.ts +4 -3
  373. package/out/concepts/Variable__.js +39 -23
  374. package/out/concepts/Variable__.js.map +1 -1
  375. package/out/concepts/ViewBlock__.js +4 -3
  376. package/out/concepts/ViewBlock__.js.map +1 -1
  377. package/out/concepts/ViewComponent__.d.ts +90 -90
  378. package/out/concepts/ViewComponent__.js +16 -15
  379. package/out/concepts/ViewComponent__.js.map +1 -1
  380. package/out/concepts/ViewElement__.d.ts +91 -86
  381. package/out/concepts/ViewElement__.js +218 -146
  382. package/out/concepts/ViewElement__.js.map +1 -1
  383. package/out/concepts/View__.d.ts +92 -92
  384. package/out/concepts/View__.js +135 -60
  385. package/out/concepts/View__.js.map +1 -1
  386. package/out/concepts/WhileStatement__.d.ts +12 -11
  387. package/out/concepts/WhileStatement__.js +46 -23
  388. package/out/concepts/WhileStatement__.js.map +1 -1
  389. package/out/concepts/index__.d.ts +2 -1
  390. package/out/concepts/index__.js +2 -1
  391. package/out/concepts/index__.js.map +1 -1
  392. package/out/concepts/types__.d.ts +2 -1
  393. package/out/decorators/index.d.ts +1 -1
  394. package/out/decorators/index.js +20 -7
  395. package/out/decorators/index.js.map +1 -1
  396. package/out/decorators/promise.d.ts +7 -0
  397. package/out/decorators/promise.js +28 -0
  398. package/out/decorators/promise.js.map +1 -0
  399. package/out/enums/KEYWORDS.js.map +1 -1
  400. package/out/enums/LEVEL_NAME_MAP.js.map +1 -1
  401. package/out/generator/compileComponent.js.map +1 -1
  402. package/out/generator/genBundleFiles.d.ts +4 -1
  403. package/out/generator/genBundleFiles.js +15 -11
  404. package/out/generator/genBundleFiles.js.map +1 -1
  405. package/out/generator/genHash.js.map +1 -1
  406. package/out/generator/genMetaData.js +12 -8
  407. package/out/generator/genMetaData.js.map +1 -1
  408. package/out/generator/genReleaseBody.js +33 -35
  409. package/out/generator/genReleaseBody.js.map +1 -1
  410. package/out/generator/microApp.js +2 -1
  411. package/out/generator/microApp.js.map +1 -1
  412. package/out/generator/permission.js +16 -14
  413. package/out/generator/permission.js.map +1 -1
  414. package/out/generator/styleReplacer.js +4 -7
  415. package/out/generator/styleReplacer.js.map +1 -1
  416. package/out/index.d.ts +0 -2
  417. package/out/index.js +0 -3
  418. package/out/index.js.map +1 -1
  419. package/out/manager/diagnostic.d.ts +1 -1
  420. package/out/manager/diagnostic.js.map +1 -1
  421. package/out/manager/stepRecorder.js +13 -9
  422. package/out/manager/stepRecorder.js.map +1 -1
  423. package/out/natural/RequirementAnalyzer.d.ts +22 -0
  424. package/out/natural/RequirementAnalyzer.js +196 -0
  425. package/out/natural/RequirementAnalyzer.js.map +1 -0
  426. package/out/natural/RequirementExecutor.d.ts +51 -0
  427. package/out/natural/RequirementExecutor.js +692 -0
  428. package/out/natural/RequirementExecutor.js.map +1 -0
  429. package/out/natural/componentData.d.ts +31 -0
  430. package/out/natural/componentData.js +85 -0
  431. package/out/natural/componentData.js.map +1 -0
  432. package/out/natural/genNaturalTS.d.ts +3 -0
  433. package/out/natural/genNaturalTS.js +76 -0
  434. package/out/natural/genNaturalTS.js.map +1 -0
  435. package/out/natural/index.d.ts +4 -0
  436. package/out/natural/index.js +21 -0
  437. package/out/natural/index.js.map +1 -0
  438. package/out/natural/knowledgeMap.d.ts +4 -0
  439. package/out/natural/knowledgeMap.js +40 -0
  440. package/out/natural/knowledgeMap.js.map +1 -0
  441. package/out/natural/naslStdlibMap.d.ts +2 -0
  442. package/out/natural/naslStdlibMap.js +26 -0
  443. package/out/natural/naslStdlibMap.js.map +1 -0
  444. package/out/natural/transformTSCode.d.ts +7 -0
  445. package/out/natural/transformTSCode.js +760 -0
  446. package/out/natural/transformTSCode.js.map +1 -0
  447. package/out/sentry/index.d.ts +2 -1
  448. package/out/sentry/index.js.map +1 -1
  449. package/out/server/createUiTs.js +28 -16
  450. package/out/server/createUiTs.js.map +1 -1
  451. package/out/server/entity2LogicNamespace.js +24 -22
  452. package/out/server/entity2LogicNamespace.js.map +1 -1
  453. package/out/server/event.js.map +1 -1
  454. package/out/server/extendBaseNode.js +55 -70
  455. package/out/server/extendBaseNode.js.map +1 -1
  456. package/out/server/formatTsUtils.js +46 -50
  457. package/out/server/formatTsUtils.js.map +1 -1
  458. package/out/server/getConnector.d.ts +3 -3
  459. package/out/server/getConnector.js +7 -8
  460. package/out/server/getConnector.js.map +1 -1
  461. package/out/server/getExtensionModules.js +2 -2
  462. package/out/server/getExtensionModules.js.map +1 -1
  463. package/out/server/getFunctions.js.map +1 -1
  464. package/out/server/getInterfaces.js.map +1 -1
  465. package/out/server/getLogging.js.map +1 -1
  466. package/out/server/getLogics.d.ts +1 -1
  467. package/out/server/getLogics.js +34 -16
  468. package/out/server/getLogics.js.map +1 -1
  469. package/out/server/getMemberIdentifier.js +13 -10
  470. package/out/server/getMemberIdentifier.js.map +1 -1
  471. package/out/server/getProcessComponents.js.map +1 -1
  472. package/out/server/getProcesses.js +21 -29
  473. package/out/server/getProcesses.js.map +1 -1
  474. package/out/server/getScope.js.map +1 -1
  475. package/out/server/getValidates.js.map +1 -1
  476. package/out/server/index.js +0 -1
  477. package/out/server/index.js.map +1 -1
  478. package/out/server/naslServer.d.ts +99 -94
  479. package/out/server/naslServer.js +485 -465
  480. package/out/server/naslServer.js.map +1 -1
  481. package/out/server/naslStdlibMap.js +4 -2
  482. package/out/server/naslStdlibMap.js.map +1 -1
  483. package/out/server/process2LogicNamespace.js.map +1 -1
  484. package/out/server/translator.d.ts +1 -1
  485. package/out/server/translator.js +52 -47
  486. package/out/server/translator.js.map +1 -1
  487. package/out/service/storage/init.d.ts +15 -1
  488. package/out/service/storage/init.js +65 -56
  489. package/out/service/storage/init.js.map +1 -1
  490. package/out/templator/genCallComponentLogic.js +1 -2
  491. package/out/templator/genCallComponentLogic.js.map +1 -1
  492. package/out/templator/genCreateBlock.js +13 -8
  493. package/out/templator/genCreateBlock.js.map +1 -1
  494. package/out/templator/genCurdEditMultipleKeyBlock.js +19 -10
  495. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  496. package/out/templator/genCurdMultipleKeyBlock.js +22 -26
  497. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  498. package/out/templator/genEditTableBlock.js +11 -12
  499. package/out/templator/genEditTableBlock.js.map +1 -1
  500. package/out/templator/genEnumSelectBlock.js +1 -1
  501. package/out/templator/genEnumSelectBlock.js.map +1 -1
  502. package/out/templator/genGetBlock.js +2 -2
  503. package/out/templator/genGetBlock.js.map +1 -1
  504. package/out/templator/genGridViewBlock.js +10 -14
  505. package/out/templator/genGridViewBlock.js.map +1 -1
  506. package/out/templator/genListViewBlock.js +4 -7
  507. package/out/templator/genListViewBlock.js.map +1 -1
  508. package/out/templator/genQueryComponent.js +22 -15
  509. package/out/templator/genQueryComponent.js.map +1 -1
  510. package/out/templator/genSelectBlock.js +12 -33
  511. package/out/templator/genSelectBlock.js.map +1 -1
  512. package/out/templator/genTableBlock.js +8 -10
  513. package/out/templator/genTableBlock.js.map +1 -1
  514. package/out/templator/genUpdateBlock.js +12 -7
  515. package/out/templator/genUpdateBlock.js.map +1 -1
  516. package/out/templator/index.d.ts +4 -2
  517. package/out/templator/index.js +2 -2
  518. package/out/templator/index.js.map +1 -1
  519. package/out/templator/utils.d.ts +2 -2
  520. package/out/templator/utils.js +21 -22
  521. package/out/templator/utils.js.map +1 -1
  522. package/out/translator/index.js +27 -28
  523. package/out/translator/index.js.map +1 -1
  524. package/out/utils/index.d.ts +2 -1
  525. package/out/utils/index.js +8 -14
  526. package/out/utils/index.js.map +1 -1
  527. package/out/utils/logger.js.map +1 -1
  528. package/out/utils/sortTsString.js +3 -1
  529. package/out/utils/sortTsString.js.map +1 -1
  530. package/out/utils/string.js +8 -11
  531. package/out/utils/string.js.map +1 -1
  532. package/out/utils/time-slicing.d.ts +41 -0
  533. package/out/utils/time-slicing.js +81 -0
  534. package/out/utils/time-slicing.js.map +1 -0
  535. package/out/utils/traverse.js +4 -6
  536. package/out/utils/traverse.js.map +1 -1
  537. package/package.json +11 -7
  538. package/sandbox/stdlib/nasl.auth.ts +49 -46
  539. package/sandbox/stdlib/nasl.http.ts +29 -31
  540. package/sandbox/stdlib/nasl.ui.definition.ts +13 -1
  541. package/sandbox-natural/stdlib/nasl.core.ts +36 -0
  542. package/sandbox-natural/stdlib/nasl.oql.ts +8 -0
  543. package/sandbox-natural/stdlib/nasl.ui.ts +56 -0
  544. package/sandbox-natural/stdlib/nasl.util.ts +26 -0
  545. package/sandbox-natural/tsconfig.json +12 -0
  546. package/src/automate/upgrader/2.20.js +1 -1
  547. package/src/bak/translator.js +92 -99
  548. package/src/breakpoint/generator/AfterStartNode.ts +19 -17
  549. package/src/breakpoint/generator/BeforeEndNode.ts +17 -17
  550. package/src/breakpoint/generator/BreakpointNode.ts +243 -195
  551. package/src/breakpoint/generator/CallbackNode.ts +20 -0
  552. package/src/breakpoint/generator/FragmentNode.ts +14 -0
  553. package/src/breakpoint/generator/index.ts +107 -80
  554. package/src/breakpoint/shared/constants.ts +59 -53
  555. package/src/breakpoint/shared/operations.ts +6 -6
  556. package/src/breakpoint/shared/socket.ts +277 -223
  557. package/src/breakpoint/shared/utils.ts +166 -146
  558. package/src/breakpoint/store/core.ts +326 -297
  559. package/src/breakpoint/store/dock.ts +103 -103
  560. package/src/breakpoint/types/index.d.ts +11 -11
  561. package/src/common/BaseNode.ts +1102 -1024
  562. package/src/common/Command.ts +46 -16
  563. package/src/common/ComponentAPI.ts +72 -72
  564. package/src/common/EventEmitter.ts +80 -76
  565. package/src/common/Messager.ts +223 -224
  566. package/src/common/asyncFuncMap.ts +12 -12
  567. package/src/concepts/Abort__.ts +53 -60
  568. package/src/concepts/Anchor__.ts +158 -149
  569. package/src/concepts/AnonymousFunction__.ts +584 -551
  570. package/src/concepts/App__.ts +4278 -3671
  571. package/src/concepts/Argument__.ts +234 -210
  572. package/src/concepts/Assignee__.ts +680 -656
  573. package/src/concepts/AssignmentLine__.ts +80 -84
  574. package/src/concepts/Assignment__.ts +275 -264
  575. package/src/concepts/Attribute__.ts +183 -184
  576. package/src/concepts/AuthInterface__.ts +61 -63
  577. package/src/concepts/AuthLogicForCallInterface__.ts +540 -511
  578. package/src/concepts/AuthLogic__.ts +210 -194
  579. package/src/concepts/BackendVariable__.ts +414 -415
  580. package/src/concepts/Backend__.ts +317 -303
  581. package/src/concepts/BatchAssignment__.ts +987 -939
  582. package/src/concepts/BinaryExpression__.ts +370 -341
  583. package/src/concepts/BindAttribute__.ts +1057 -1007
  584. package/src/concepts/BindDirective__.ts +540 -542
  585. package/src/concepts/BindEvent__.ts +992 -911
  586. package/src/concepts/BindStyle__.ts +442 -451
  587. package/src/concepts/BooleanLiteral__.ts +89 -90
  588. package/src/concepts/CallAuthInterface__.ts +458 -433
  589. package/src/concepts/CallConnector__.ts +209 -164
  590. package/src/concepts/CallFunction__.ts +600 -600
  591. package/src/concepts/CallInterface__.ts +752 -721
  592. package/src/concepts/CallLogic__.ts +1324 -1200
  593. package/src/concepts/CallQueryComponent__.ts +1580 -1501
  594. package/src/concepts/Comment__.ts +69 -68
  595. package/src/concepts/CompletionProperty__.ts +250 -255
  596. package/src/concepts/ConfigGroup__.ts +312 -296
  597. package/src/concepts/ConfigPropertyValue__.ts +92 -93
  598. package/src/concepts/ConfigProperty__.ts +374 -357
  599. package/src/concepts/Configuration__.ts +288 -276
  600. package/src/concepts/Connection__.ts +426 -0
  601. package/src/concepts/ConnectorTrigger__.ts +146 -142
  602. package/src/concepts/Connector__.ts +1090 -1048
  603. package/src/concepts/Constant__.ts +226 -219
  604. package/src/concepts/DataElement__.ts +108 -115
  605. package/src/concepts/DataSource__.ts +508 -472
  606. package/src/concepts/DatabaseTypeAnnotation__.ts +53 -59
  607. package/src/concepts/Destination__.ts +808 -746
  608. package/src/concepts/End__.ts +85 -89
  609. package/src/concepts/EntityIndex__.ts +206 -202
  610. package/src/concepts/EntityProperty__.ts +825 -791
  611. package/src/concepts/Entity__.ts +921 -864
  612. package/src/concepts/EnumItem__.ts +133 -125
  613. package/src/concepts/Enum__.ts +347 -337
  614. package/src/concepts/Event__.ts +305 -292
  615. package/src/concepts/ExternalDestination__.ts +269 -280
  616. package/src/concepts/ForEachStatement__.ts +583 -531
  617. package/src/concepts/FrontendLibrary__.ts +507 -485
  618. package/src/concepts/FrontendVariable__.ts +44 -49
  619. package/src/concepts/Frontend__.ts +1239 -1187
  620. package/src/concepts/Function__.ts +1110 -1045
  621. package/src/concepts/Identifier__.ts +276 -272
  622. package/src/concepts/IfStatement__.ts +467 -436
  623. package/src/concepts/Integration__.ts +136 -137
  624. package/src/concepts/InterfaceParam__.ts +239 -238
  625. package/src/concepts/Interface__.ts +969 -948
  626. package/src/concepts/JSBlock__.ts +83 -83
  627. package/src/concepts/JavaLogic__.ts +101 -106
  628. package/src/concepts/LogicItem__.ts +307 -237
  629. package/src/concepts/Logic__.ts +2301 -2088
  630. package/src/concepts/MatchCase__.ts +886 -779
  631. package/src/concepts/Match__.ts +728 -659
  632. package/src/concepts/MemberExpression__.ts +330 -311
  633. package/src/concepts/MicroApp__.ts +91 -97
  634. package/src/concepts/Module__.ts +2590 -2278
  635. package/src/concepts/MsgTriggerEvent__.ts +297 -281
  636. package/src/concepts/MsgTriggerLauncher__.ts +286 -256
  637. package/src/concepts/Namespace__.ts +2579 -2466
  638. package/src/concepts/NewComposite__.ts +1487 -1350
  639. package/src/concepts/NewList__.ts +464 -450
  640. package/src/concepts/NewMap__.ts +691 -674
  641. package/src/concepts/New__.ts +42 -49
  642. package/src/concepts/NullLiteral__.ts +66 -72
  643. package/src/concepts/NumericLiteral__.ts +169 -169
  644. package/src/concepts/OqlQueryComponent__.ts +282 -279
  645. package/src/concepts/OverriddenLogic__.ts +2142 -2097
  646. package/src/concepts/Param__.ts +500 -442
  647. package/src/concepts/Point__.ts +53 -59
  648. package/src/concepts/ProcessComponent__.ts +497 -475
  649. package/src/concepts/ProcessElement__.ts +1852 -1780
  650. package/src/concepts/ProcessOutcome__.ts +59 -64
  651. package/src/concepts/ProcessOutcomes__.ts +59 -64
  652. package/src/concepts/Process__.ts +1491 -1428
  653. package/src/concepts/QueryAggregateExpression__.ts +135 -142
  654. package/src/concepts/QueryFieldExpression__.ts +138 -142
  655. package/src/concepts/QueryFromExpression__.ts +246 -254
  656. package/src/concepts/QueryGroupByExpression__.ts +130 -136
  657. package/src/concepts/QueryJoinExpression__.ts +441 -438
  658. package/src/concepts/QueryLimitExpression__.ts +159 -166
  659. package/src/concepts/QueryOrderByExpression__.ts +173 -180
  660. package/src/concepts/QuerySelectExpression__.ts +464 -439
  661. package/src/concepts/Rect__.ts +73 -79
  662. package/src/concepts/Return__.ts +366 -345
  663. package/src/concepts/Role__.ts +146 -147
  664. package/src/concepts/SelectMembers__.ts +358 -350
  665. package/src/concepts/Slot__.ts +152 -153
  666. package/src/concepts/SqlQueryComponent__.ts +230 -228
  667. package/src/concepts/Start__.ts +45 -52
  668. package/src/concepts/StringInterpolation__.ts +323 -296
  669. package/src/concepts/StringLiteral__.ts +113 -115
  670. package/src/concepts/StructureProperty__.ts +306 -295
  671. package/src/concepts/Structure__.ts +615 -578
  672. package/src/concepts/SwitchCase__.ts +326 -290
  673. package/src/concepts/SwitchStatement__.ts +236 -229
  674. package/src/concepts/Theme__.ts +64 -68
  675. package/src/concepts/Transactional__.ts +159 -153
  676. package/src/concepts/TriggerEvent__.ts +285 -274
  677. package/src/concepts/TriggerLauncher__.ts +232 -196
  678. package/src/concepts/TypeAnnotation__.ts +1049 -1011
  679. package/src/concepts/TypeParam__.ts +48 -50
  680. package/src/concepts/UnaryExpression__.ts +163 -153
  681. package/src/concepts/Unparsed__.ts +81 -82
  682. package/src/concepts/UseComponent__.ts +53 -59
  683. package/src/concepts/ValidationRule__.ts +524 -544
  684. package/src/concepts/Variable__.ts +419 -397
  685. package/src/concepts/ViewBlock__.ts +58 -64
  686. package/src/concepts/ViewComponent__.ts +1323 -1261
  687. package/src/concepts/ViewElement__.ts +2538 -2350
  688. package/src/concepts/View__.ts +2447 -2268
  689. package/src/concepts/WhileStatement__.ts +293 -272
  690. package/src/concepts/index__.ts +2 -1
  691. package/src/concepts/types__.ts +123 -121
  692. package/src/decorators/index.ts +75 -77
  693. package/src/decorators/promise.ts +28 -0
  694. package/src/enums/KEYWORDS.ts +1228 -1228
  695. package/src/enums/LEVEL_NAME_MAP.ts +24 -24
  696. package/src/generator/compileComponent.ts +10 -10
  697. package/src/generator/genBundleFiles.ts +300 -291
  698. package/src/generator/genHash.ts +2 -2
  699. package/src/generator/genMetaData.ts +280 -261
  700. package/src/generator/genReleaseBody.ts +312 -291
  701. package/src/generator/icestark.ts +1 -1
  702. package/src/generator/microApp.ts +17 -20
  703. package/src/generator/permission.ts +227 -218
  704. package/src/generator/qiankun.ts +1 -1
  705. package/src/generator/styleReplacer.ts +28 -31
  706. package/src/index.ts +0 -3
  707. package/src/manager/diagnostic.ts +84 -82
  708. package/src/manager/stepRecorder.ts +106 -94
  709. package/src/natural/RequirementAnalyzer.ts +208 -0
  710. package/src/natural/RequirementExecutor.ts +685 -0
  711. package/src/natural/componentData.ts +81 -0
  712. package/src/natural/genNaturalTS.ts +77 -0
  713. package/src/natural/index.ts +4 -0
  714. package/src/natural/knowledgeMap.ts +39 -0
  715. package/src/natural/naslStdlibMap.ts +24 -0
  716. package/src/natural/transformTSCode.ts +692 -0
  717. package/src/sentry/index.ts +109 -104
  718. package/src/server/createUiTs.ts +190 -184
  719. package/src/server/entity2LogicNamespace.ts +379 -359
  720. package/src/server/event.js +145 -145
  721. package/src/server/extendBaseNode.ts +461 -456
  722. package/src/server/formatTsUtils.ts +712 -713
  723. package/src/server/getConnector.ts +33 -33
  724. package/src/server/getExtensionModules.ts +23 -22
  725. package/src/server/getFunctions.ts +6 -6
  726. package/src/server/getInterfaces.ts +38 -37
  727. package/src/server/getLogging.ts +1 -1
  728. package/src/server/getLogics.ts +390 -344
  729. package/src/server/getMemberIdentifier.ts +286 -281
  730. package/src/server/getProcessComponents.ts +2 -2
  731. package/src/server/getProcesses.ts +548 -534
  732. package/src/server/getScope.ts +51 -51
  733. package/src/server/getValidates.ts +3 -3
  734. package/src/server/index.ts +29 -30
  735. package/src/server/naslServer.ts +4302 -4225
  736. package/src/server/naslStdlibMap.ts +43 -41
  737. package/src/server/process2LogicNamespace.ts +97 -97
  738. package/src/server/translator.ts +740 -746
  739. package/src/service/storage/init.ts +761 -728
  740. package/src/templator/genCallComponentLogic.ts +14 -15
  741. package/src/templator/genCreateBlock.ts +257 -229
  742. package/src/templator/genCurdEditMultipleKeyBlock.ts +332 -316
  743. package/src/templator/genCurdMultipleKeyBlock.ts +501 -473
  744. package/src/templator/genEditTableBlock.ts +192 -182
  745. package/src/templator/genEnumSelectBlock.ts +13 -7
  746. package/src/templator/genGetBlock.ts +57 -55
  747. package/src/templator/genGridViewBlock.ts +191 -201
  748. package/src/templator/genListViewBlock.ts +59 -64
  749. package/src/templator/genQueryComponent.ts +337 -287
  750. package/src/templator/genSelectBlock.ts +276 -285
  751. package/src/templator/genTableBlock.ts +157 -160
  752. package/src/templator/genUpdateBlock.ts +269 -255
  753. package/src/templator/index.ts +4 -4
  754. package/src/templator/utils.ts +490 -464
  755. package/src/translator/index.ts +84 -84
  756. package/src/translator/lsp.ts +22 -22
  757. package/src/translator/tsp.ts +6 -6
  758. package/src/utils/index.ts +115 -117
  759. package/src/utils/logger.ts +3 -4
  760. package/src/utils/sortTsString.ts +34 -32
  761. package/src/utils/string.ts +47 -48
  762. package/src/utils/time-slicing.ts +109 -0
  763. package/src/utils/traverse.ts +114 -126
  764. package/test/concepts/match/__snapshots__/toEmbeddedTS.spec.ts.snap +66 -0
  765. package/test/concepts/match/__snapshots__/toJS.spec.ts.snap +40 -0
  766. package/test/concepts/match/constant.ts +5 -0
  767. package/test/concepts/match/fixtures/isExpression.json +259 -0
  768. package/test/concepts/match/fixtures/lastBodyIf.json +268 -0
  769. package/test/concepts/match/fixtures/noExpression.json +176 -0
  770. package/test/concepts/match/toEmbeddedTS.spec.ts +14 -0
  771. package/test/concepts/match/toJS.spec.ts +14 -0
  772. package/test/setup.ts +2 -1
  773. package/ts-worker/src/index.js +0 -2
  774. package/tsconfig.json +21 -21
@@ -1,17 +1,17 @@
1
+ import { v4 as uuidv4 } from 'uuid';
1
2
  import { TranslatorState, shiftState, withSourceMap, createCompilerState } from '../translator';
2
3
  import Namespace from './Namespace__';
3
4
  import TypeAnnotation from './TypeAnnotation__';
4
5
  import Structure from './Structure__';
5
6
  import Param from './Param__';
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 InterfaceParam from './InterfaceParam__';
@@ -25,983 +25,1004 @@ import App from './App__';
25
25
  */
26
26
  @concept('接口')
27
27
  export class Interface extends BaseNode {
28
- /**
29
- * 产品概念
30
- */
31
- @property()
32
- concept: 'Interface' | 'AuthInterface' = 'Interface';
33
-
34
- /**
35
- * 接口名称
36
- */
37
- @property()
38
- name: string = undefined;
39
-
40
- /**
41
- * originLogicName
42
- */
43
- @property()
44
- originLogicName: string = undefined;
45
-
46
- /**
47
- * path
48
- */
49
- @property()
50
- path: string = undefined;
51
-
52
- /**
53
- * method
54
- */
55
- @property()
56
- method: 'GET' | 'POST' | 'PUT' | 'DELETE' = undefined;
57
-
58
- /**
59
- * 接口描述
60
- */
61
- @property()
62
- description: string = undefined;
63
-
64
- /**
65
- * 接口参数列表
66
- */
67
- @property('InterfaceParam')
68
- params: Array<InterfaceParam> = [];
69
-
70
- /**
71
- * 输出参数列表
72
- */
73
- @property('Return')
74
- returns: Array<Return> = [];
75
-
76
- /**
77
- * 验证规则
78
- */
79
- @property('BindAttribute')
80
- validation: BindAttribute = undefined;
81
-
82
- /**
83
- * 祖先 Module
84
- */
85
- get module() {
86
- return this.getAncestor('Module') as Module;
87
- }
88
- /**
89
- * 祖先 App
90
- */
91
- get app() {
92
- return this.getAncestor('App') as App;
93
- }
94
-
95
- /**
96
- * @param source 需要合并的部分参数
97
- */
98
- constructor(source?: Partial<Interface>) {
99
- source = Object.assign({}, Interface.getDefaultOptions(), source);
100
- super(source);
101
- super.subConstructor(source);
28
+ /**
29
+ * 产品概念
30
+ */
31
+ @property()
32
+ concept: 'Interface' | 'AuthInterface' = 'Interface';
33
+
34
+ /**
35
+ * 接口名称
36
+ */
37
+ @property()
38
+ name: string = undefined;
39
+
40
+ /**
41
+ * originLogicName
42
+ */
43
+ @property()
44
+ originLogicName: string = undefined;
45
+
46
+ /**
47
+ * path
48
+ */
49
+ @property()
50
+ path: string = undefined;
51
+
52
+ /**
53
+ * method
54
+ */
55
+ @property()
56
+ method: 'GET' | 'POST' | 'PUT' | 'DELETE' = undefined;
57
+
58
+ /**
59
+ * 接口描述
60
+ */
61
+ @property()
62
+ description: string = undefined;
63
+
64
+ /**
65
+ * 接口参数列表
66
+ */
67
+ @property('InterfaceParam')
68
+ params: Array<InterfaceParam> = [];
69
+
70
+ /**
71
+ * 输出参数列表
72
+ */
73
+ @property('Return')
74
+ returns: Array<Return> = [];
75
+
76
+ /**
77
+ * 验证规则
78
+ */
79
+ @property('BindAttribute')
80
+ validation: BindAttribute = undefined;
81
+
82
+ /**
83
+ * 祖先 Module
84
+ */
85
+ get module() {
86
+ return this.getAncestor('Module') as Module;
87
+ }
88
+
89
+ /**
90
+ * 祖先 App
91
+ */
92
+ get app() {
93
+ return this.getAncestor('App') as App;
94
+ }
95
+
96
+ /**
97
+ * @param source 需要合并的部分参数
98
+ */
99
+ constructor(source?: Partial<Interface>) {
100
+ // @ts-ignore
101
+ source = { ...Interface.getDefaultOptions(), ...source };
102
+ super(source);
103
+ super.subConstructor(source);
104
+ }
105
+
106
+ getClassName() {
107
+ return 'Interface';
108
+ }
109
+
110
+ static from(source: any, parentNode?: any, parentKey?: string): Interface {
111
+ return super.from(source, parentNode, parentKey) as Interface;
112
+ }
113
+
114
+ /**
115
+ * 从父级删除该节点
116
+ * @internal
117
+ */
118
+ _delete() {
119
+ let params: Params = null;
120
+ if (this.parentNode) {
121
+ params = (this.parentNode as any)?.__removeInterface?.(this);
102
122
  }
103
- getClassName() {
104
- return 'Interface';
123
+ return params;
124
+ }
125
+
126
+ /**
127
+ * 设置接口名称
128
+ */
129
+ setName(name: string) {
130
+ const object = {
131
+ name,
132
+ };
133
+ this.update({
134
+ ...object,
135
+ field: 'name',
136
+ });
137
+ }
138
+
139
+ /**
140
+ * 设置接口描述
141
+ */
142
+ setDescription(description: string) {
143
+ const object = {
144
+ description,
145
+ };
146
+ this.update({
147
+ ...object,
148
+ });
149
+ }
150
+
151
+ /**
152
+ * 设置验证规则
153
+ */
154
+ setValidation(validation: BindAttribute) {
155
+ validation._delete();
156
+ const relationOptions = { parentNode: this, parentKey: 'validation' };
157
+ Object.assign(validation, relationOptions);
158
+ const object = {
159
+ validation,
160
+ };
161
+ this.update({
162
+ ...object,
163
+ });
164
+ }
165
+
166
+ getInterfaceParamUniqueName(name = 'interfaceParam1') {
167
+ return utils.unique(name, this.getVarExistingNames(), undefined, false);
168
+ }
169
+
170
+ /**
171
+ * 插入接口参数
172
+ * @internal
173
+ * @param name 接口参数名称,如果不填会自动生成一个唯一名称
174
+ */
175
+ _insertInterfaceParamAt(name: string, index: number): InterfaceParam;
176
+
177
+ /**
178
+ * 插入接口参数
179
+ * @internal
180
+ * @param interfaceParamOptions 接口参数参数
181
+ */
182
+ _insertInterfaceParamAt(interfaceParamOptions: Partial<InterfaceParam>, index: number): InterfaceParam;
183
+
184
+ /**
185
+ * 插入接口参数
186
+ * @internal
187
+ * @param interfaceParam 已有的接口参数实例
188
+ */
189
+ _insertInterfaceParamAt(interfaceParam: InterfaceParam, index: number): InterfaceParam;
190
+
191
+ _insertInterfaceParamAt(options: string | Partial<InterfaceParam> | InterfaceParam, index: number) {
192
+ const interfaceParamOptions: any = {};
193
+ const relationOptions = { parentNode: this, parentKey: 'params' };
194
+ let interfaceParam: InterfaceParam;
195
+ if (!options) {
196
+ interfaceParam = InterfaceParam.from(
197
+ {
198
+ ...interfaceParamOptions,
199
+ name: this.getInterfaceParamUniqueName(),
200
+ },
201
+ this,
202
+ 'params'
203
+ );
204
+ } else if (typeof options === 'string') {
205
+ interfaceParam = InterfaceParam.from(
206
+ {
207
+ ...interfaceParamOptions,
208
+ name: options,
209
+ },
210
+ this,
211
+ 'params'
212
+ );
213
+ } else if (options instanceof InterfaceParam) {
214
+ options.ensureDelete(); // 同一实例不支持多处存在
215
+ interfaceParam = options;
216
+ Object.assign(interfaceParam, relationOptions);
217
+ } else {
218
+ interfaceParam = InterfaceParam.from(
219
+ {
220
+ ...interfaceParamOptions,
221
+ ...options,
222
+ },
223
+ this,
224
+ 'params'
225
+ );
105
226
  }
106
-
107
- static from(source: any, parentNode?: any, parentKey?: string): Interface {
108
- return super.from(source, parentNode, parentKey) as Interface;
109
- }
110
-
111
- /**
112
- * 从父级删除该节点
113
- * @internal
114
- */
115
- _delete() {
116
- let params: Params = null;
117
- if (this.parentNode) {
118
- params = (this.parentNode as any)?.__removeInterface?.(this);
119
- }
120
- return params;
227
+ this.params.splice(index, 0, interfaceParam);
228
+ return interfaceParam;
229
+ }
230
+
231
+ /**
232
+ * 插入接口参数
233
+ * @param name 接口参数名称,如果不填会自动生成一个唯一名称
234
+ */
235
+ insertInterfaceParamAt(name: string, index: number): InterfaceParam;
236
+
237
+ /**
238
+ * 插入接口参数
239
+ * @param interfaceParamOptions 接口参数参数
240
+ */
241
+ insertInterfaceParamAt(interfaceParamOptions: Partial<InterfaceParam>, index: number): InterfaceParam;
242
+
243
+ /**
244
+ * 插入接口参数
245
+ * @param interfaceParam 已有的接口参数实例
246
+ */
247
+ insertInterfaceParamAt(interfaceParam: InterfaceParam, index: number): InterfaceParam;
248
+
249
+ insertInterfaceParamAt(options: string | Partial<InterfaceParam> | InterfaceParam, index: number) {
250
+ const node = this._insertInterfaceParamAt(options as any, index);
251
+ node.create({
252
+ index,
253
+ parentNode: this,
254
+ parentKey: 'params',
255
+ });
256
+ return node;
257
+ }
258
+
259
+ /**
260
+ * 添加接口参数
261
+ * @internal
262
+ * @param name 接口参数名称,如果不填会自动生成一个唯一名称
263
+ */
264
+ _addInterfaceParam(name?: string): InterfaceParam;
265
+
266
+ /**
267
+ * 添加接口参数
268
+ * @internal
269
+ * @param interfaceParamOptions 接口参数参数
270
+ */
271
+ _addInterfaceParam(interfaceParamOptions: Partial<InterfaceParam>): InterfaceParam;
272
+
273
+ /**
274
+ * 添加接口参数
275
+ * @internal
276
+ * @param interfaceParam 已有的接口参数实例
277
+ */
278
+ _addInterfaceParam(interfaceParam: InterfaceParam): InterfaceParam;
279
+
280
+ _addInterfaceParam(options?: string | Partial<InterfaceParam> | InterfaceParam) {
281
+ const index = this.params.length;
282
+ return this._insertInterfaceParamAt(options as any, index);
283
+ }
284
+
285
+ /**
286
+ * 添加接口参数
287
+ * @internal
288
+ * @param name 接口参数名称,如果不填会自动生成一个唯一名称
289
+ */
290
+ addInterfaceParam(name?: string): InterfaceParam;
291
+
292
+ /**
293
+ * 添加接口参数
294
+ * @param interfaceParamOptions 接口参数参数
295
+ */
296
+ addInterfaceParam(interfaceParamOptions: Partial<InterfaceParam>): InterfaceParam;
297
+
298
+ /**
299
+ * 添加接口参数
300
+ * @param interfaceParam 已有的接口参数实例
301
+ */
302
+ addInterfaceParam(interfaceParam: InterfaceParam): InterfaceParam;
303
+
304
+ addInterfaceParam(options?: string | Partial<InterfaceParam> | InterfaceParam) {
305
+ const node = this._addInterfaceParam(options as any);
306
+ const index = this.params.indexOf(node);
307
+ node.create({
308
+ index,
309
+ parentNode: this,
310
+ parentKey: 'params',
311
+ });
312
+ return node;
313
+ }
314
+
315
+ getReturnUniqueName(name = 'result') {
316
+ return utils.unique(name, this.getVarExistingNames(), undefined, false);
317
+ }
318
+
319
+ /**
320
+ * 插入输出参数
321
+ * @internal
322
+ * @param name 输出参数名称,如果不填会自动生成一个唯一名称
323
+ */
324
+ _insertReturnAt(name: string, index: number): Return;
325
+
326
+ /**
327
+ * 插入输出参数
328
+ * @internal
329
+ * @param retOptions 输出参数参数
330
+ */
331
+ _insertReturnAt(retOptions: Partial<Return>, index: number): Return;
332
+
333
+ /**
334
+ * 插入输出参数
335
+ * @internal
336
+ * @param ret 已有的输出参数实例
337
+ */
338
+ _insertReturnAt(ret: Return, index: number): Return;
339
+
340
+ _insertReturnAt(options: string | Partial<Return> | Return, index: number) {
341
+ const retOptions: any = {};
342
+ const relationOptions = { parentNode: this, parentKey: 'returns' };
343
+ let ret: Return;
344
+ if (!options) {
345
+ ret = Return.from(
346
+ {
347
+ ...retOptions,
348
+ name: this.getReturnUniqueName(),
349
+ },
350
+ this,
351
+ 'returns'
352
+ );
353
+ } else if (typeof options === 'string') {
354
+ ret = Return.from(
355
+ {
356
+ ...retOptions,
357
+ name: options,
358
+ },
359
+ this,
360
+ 'returns'
361
+ );
362
+ } else if (options instanceof Return) {
363
+ options.ensureDelete(); // 同一实例不支持多处存在
364
+ ret = options;
365
+ Object.assign(ret, relationOptions);
366
+ } else {
367
+ ret = Return.from(
368
+ {
369
+ ...retOptions,
370
+ ...options,
371
+ },
372
+ this,
373
+ 'returns'
374
+ );
121
375
  }
122
- /**
123
- * 设置接口名称
124
- */
125
- setName(name: string) {
126
- const object = {
127
- name,
128
- };
129
- this.update({
130
- ...object,
131
- field: 'name',
132
- });
376
+ this.returns.splice(index, 0, ret);
377
+ return ret;
378
+ }
379
+
380
+ /**
381
+ * 插入输出参数
382
+ * @param name 输出参数名称,如果不填会自动生成一个唯一名称
383
+ */
384
+ insertReturnAt(name: string, index: number): Return;
385
+
386
+ /**
387
+ * 插入输出参数
388
+ * @param retOptions 输出参数参数
389
+ */
390
+ insertReturnAt(retOptions: Partial<Return>, index: number): Return;
391
+
392
+ /**
393
+ * 插入输出参数
394
+ * @param ret 已有的输出参数实例
395
+ */
396
+ insertReturnAt(ret: Return, index: number): Return;
397
+
398
+ insertReturnAt(options: string | Partial<Return> | Return, index: number) {
399
+ const node = this._insertReturnAt(options as any, index);
400
+ node.create({
401
+ index,
402
+ parentNode: this,
403
+ parentKey: 'returns',
404
+ });
405
+ return node;
406
+ }
407
+
408
+ /**
409
+ * 添加输出参数
410
+ * @internal
411
+ * @param name 输出参数名称,如果不填会自动生成一个唯一名称
412
+ */
413
+ _addReturn(name?: string): Return;
414
+
415
+ /**
416
+ * 添加输出参数
417
+ * @internal
418
+ * @param retOptions 输出参数参数
419
+ */
420
+ _addReturn(retOptions: Partial<Return>): Return;
421
+
422
+ /**
423
+ * 添加输出参数
424
+ * @internal
425
+ * @param ret 已有的输出参数实例
426
+ */
427
+ _addReturn(ret: Return): Return;
428
+
429
+ _addReturn(options?: string | Partial<Return> | Return) {
430
+ const index = this.returns.length;
431
+ return this._insertReturnAt(options as any, index);
432
+ }
433
+
434
+ /**
435
+ * 添加输出参数
436
+ * @internal
437
+ * @param name 输出参数名称,如果不填会自动生成一个唯一名称
438
+ */
439
+ addReturn(name?: string): Return;
440
+
441
+ /**
442
+ * 添加输出参数
443
+ * @param retOptions 输出参数参数
444
+ */
445
+ addReturn(retOptions: Partial<Return>): Return;
446
+
447
+ /**
448
+ * 添加输出参数
449
+ * @param ret 已有的输出参数实例
450
+ */
451
+ addReturn(ret: Return): Return;
452
+
453
+ addReturn(options?: string | Partial<Return> | Return) {
454
+ const node = this._addReturn(options as any);
455
+ const index = this.returns.indexOf(node);
456
+ node.create({
457
+ index,
458
+ parentNode: this,
459
+ parentKey: 'returns',
460
+ });
461
+ return node;
462
+ }
463
+
464
+ /**
465
+ * 删除接口参数
466
+ * @param name 接口参数名称
467
+ */
468
+ removeInterfaceParam(name: string): void;
469
+
470
+ /**
471
+ * 删除接口参数
472
+ * @param interfaceParam 已有的接口参数实例
473
+ */
474
+ removeInterfaceParam(interfaceParam: InterfaceParam): void;
475
+
476
+ removeInterfaceParam(options: string | InterfaceParam) {
477
+ let interfaceParam: InterfaceParam;
478
+ if (typeof options === 'string') {
479
+ interfaceParam = (this.params as InterfaceParam[]).find((item) => item.name === options);
480
+ if (!interfaceParam) {
481
+ throw new Error(`找不到接口参数 ${options}`);
482
+ }
483
+ } else {
484
+ interfaceParam = options;
133
485
  }
134
-
135
- /**
136
- * 设置接口描述
137
- */
138
- setDescription(description: string) {
139
- const object = {
140
- description,
141
- };
142
- this.update({
143
- ...object,
144
- });
486
+ return interfaceParam.delete();
487
+ }
488
+
489
+ __removeInterfaceParam(interfaceParam: InterfaceParam) {
490
+ const { parentKey } = interfaceParam;
491
+ const params: Params = {
492
+ parentNode: this,
493
+ parentKey,
494
+ index: -1,
495
+ object: null,
496
+ oldObject: interfaceParam,
497
+ };
498
+ if (parentKey) {
499
+ params.parentKey = parentKey;
500
+ if (Array.isArray((this as any)[parentKey])) {
501
+ const index = (this as any)[parentKey].indexOf(interfaceParam);
502
+ ~index && (this as any)[parentKey].splice(index, 1);
503
+ params.index = index;
504
+ } else if ((this as any)[parentKey] === interfaceParam) {
505
+ params.index = 0;
506
+ (this as any)[parentKey] = undefined;
507
+ }
145
508
  }
146
-
147
- /**
148
- * 设置验证规则
149
- */
150
- setValidation(validation: BindAttribute) {
151
- validation._delete();
152
- const relationOptions = { parentNode: this, parentKey: 'validation' };
153
- Object.assign(validation, relationOptions);
154
- const object = {
155
- validation,
156
- };
157
- this.update({
158
- ...object,
159
- });
509
+ return params;
510
+ }
511
+
512
+ /**
513
+ * 删除输出参数
514
+ * @param name 输出参数名称
515
+ */
516
+ removeReturn(name: string): void;
517
+
518
+ /**
519
+ * 删除输出参数
520
+ * @param ret 已有的输出参数实例
521
+ */
522
+ removeReturn(ret: Return): void;
523
+
524
+ removeReturn(options: string | Return) {
525
+ let ret: Return;
526
+ if (typeof options === 'string') {
527
+ ret = (this.returns as Return[]).find((item) => item.name === options);
528
+ if (!ret) {
529
+ throw new Error(`找不到输出参数 ${options}`);
530
+ }
531
+ } else {
532
+ ret = options;
160
533
  }
161
-
162
- getInterfaceParamUniqueName(name = 'interfaceParam1') {
163
- return utils.unique(name, this.getVarExistingNames(), undefined, false);
534
+ return ret.delete();
535
+ }
536
+
537
+ __removeReturn(ret: Return) {
538
+ const { parentKey } = ret;
539
+ const params: Params = {
540
+ parentNode: this,
541
+ parentKey,
542
+ index: -1,
543
+ object: null,
544
+ oldObject: ret,
545
+ };
546
+ if (parentKey) {
547
+ params.parentKey = parentKey;
548
+ if (Array.isArray((this as any)[parentKey])) {
549
+ const index = (this as any)[parentKey].indexOf(ret);
550
+ ~index && (this as any)[parentKey].splice(index, 1);
551
+ params.index = index;
552
+ } else if ((this as any)[parentKey] === ret) {
553
+ params.index = 0;
554
+ (this as any)[parentKey] = undefined;
555
+ }
164
556
  }
165
-
166
- /**
167
- * 插入接口参数
168
- * @internal
169
- * @param name 接口参数名称,如果不填会自动生成一个唯一名称
170
- */
171
- _insertInterfaceParamAt(name: string, index: number): InterfaceParam;
172
-
173
- /**
174
- * 插入接口参数
175
- * @internal
176
- * @param interfaceParamOptions 接口参数参数
177
- */
178
- _insertInterfaceParamAt(interfaceParamOptions: Partial<InterfaceParam>, index: number): InterfaceParam;
179
-
180
- /**
181
- * 插入接口参数
182
- * @internal
183
- * @param interfaceParam 已有的接口参数实例
184
- */
185
- _insertInterfaceParamAt(interfaceParam: InterfaceParam, index: number): InterfaceParam;
186
-
187
- _insertInterfaceParamAt(options: string | Partial<InterfaceParam> | InterfaceParam, index: number) {
188
- const interfaceParamOptions: any = {};
189
- const relationOptions = { parentNode: this, parentKey: 'params' };
190
- let interfaceParam: InterfaceParam;
191
- if (!options) {
192
- interfaceParam = InterfaceParam.from({
193
- ...interfaceParamOptions,
194
- name: this.getInterfaceParamUniqueName(),
195
- }, this, 'params');
196
- } else if (typeof options === 'string') {
197
- interfaceParam = InterfaceParam.from({
198
- ...interfaceParamOptions,
199
- name: options,
200
- }, this, 'params');
201
- } else if (options instanceof InterfaceParam) {
202
- options.ensureDelete(); // 同一实例不支持多处存在
203
- interfaceParam = options;
204
- Object.assign(interfaceParam, relationOptions);
205
- } else {
206
- interfaceParam = InterfaceParam.from({
207
- ...interfaceParamOptions,
208
- ...options,
209
- }, this, 'params');
210
- }
211
- this.params.splice(index, 0, interfaceParam);
212
- return interfaceParam;
557
+ return params;
558
+ }
559
+
560
+ /**
561
+ * 删除元素绑定属性
562
+ * @param name 元素绑定属性名称
563
+ */
564
+ removeValidation(name: string): void;
565
+
566
+ /**
567
+ * 删除元素绑定属性
568
+ * @param validation 已有的元素绑定属性实例
569
+ */
570
+ removeValidation(validation: BindAttribute): void;
571
+
572
+ removeValidation(options: string | BindAttribute) {
573
+ let validation: BindAttribute;
574
+ if (typeof options === 'string') {
575
+ validation = this.validation;
576
+ if (!validation) {
577
+ throw new Error(`找不到元素绑定属性 ${options}`);
578
+ }
579
+ } else {
580
+ validation = options;
213
581
  }
214
-
215
- /**
216
- * 插入接口参数
217
- * @param name 接口参数名称,如果不填会自动生成一个唯一名称
218
- */
219
- insertInterfaceParamAt(name: string, index: number): InterfaceParam;
220
-
221
- /**
222
- * 插入接口参数
223
- * @param interfaceParamOptions 接口参数参数
224
- */
225
- insertInterfaceParamAt(interfaceParamOptions: Partial<InterfaceParam>, index: number): InterfaceParam;
226
-
227
- /**
228
- * 插入接口参数
229
- * @param interfaceParam 已有的接口参数实例
230
- */
231
- insertInterfaceParamAt(interfaceParam: InterfaceParam, index: number): InterfaceParam;
232
-
233
- insertInterfaceParamAt(options: string | Partial<InterfaceParam> | InterfaceParam, index: number) {
234
- const node = this._insertInterfaceParamAt(options as any, index);
235
- node.create({
236
- index,
237
- parentNode: this,
238
- parentKey: 'params',
239
- });
240
- return node;
241
- }
242
-
243
- /**
244
- * 添加接口参数
245
- * @internal
246
- * @param name 接口参数名称,如果不填会自动生成一个唯一名称
247
- */
248
- _addInterfaceParam(name?: string): InterfaceParam;
249
-
250
- /**
251
- * 添加接口参数
252
- * @internal
253
- * @param interfaceParamOptions 接口参数参数
254
- */
255
- _addInterfaceParam(interfaceParamOptions: Partial<InterfaceParam>): InterfaceParam;
256
-
257
- /**
258
- * 添加接口参数
259
- * @internal
260
- * @param interfaceParam 已有的接口参数实例
261
- */
262
- _addInterfaceParam(interfaceParam: InterfaceParam): InterfaceParam;
263
-
264
- _addInterfaceParam(options?: string | Partial<InterfaceParam> | InterfaceParam) {
265
- const index = this.params.length;
266
- return this._insertInterfaceParamAt(options as any, index);
267
- }
268
-
269
- /**
270
- * 添加接口参数
271
- * @internal
272
- * @param name 接口参数名称,如果不填会自动生成一个唯一名称
273
- */
274
- addInterfaceParam(name?: string): InterfaceParam;
275
-
276
- /**
277
- * 添加接口参数
278
- * @param interfaceParamOptions 接口参数参数
279
- */
280
- addInterfaceParam(interfaceParamOptions: Partial<InterfaceParam>): InterfaceParam;
281
-
282
- /**
283
- * 添加接口参数
284
- * @param interfaceParam 已有的接口参数实例
285
- */
286
- addInterfaceParam(interfaceParam: InterfaceParam): InterfaceParam;
287
-
288
- addInterfaceParam(options?: string | Partial<InterfaceParam> | InterfaceParam) {
289
- const node = this._addInterfaceParam(options as any);
290
- const index = this.params.indexOf(node);
291
- node.create({
292
- index,
293
- parentNode: this,
294
- parentKey: 'params',
295
- });
296
- return node;
297
- }
298
-
299
-
300
- getReturnUniqueName(name = 'result') {
301
- return utils.unique(name, this.getVarExistingNames(), undefined, false);
302
- }
303
-
304
- /**
305
- * 插入输出参数
306
- * @internal
307
- * @param name 输出参数名称,如果不填会自动生成一个唯一名称
308
- */
309
- _insertReturnAt(name: string, index: number): Return;
310
-
311
- /**
312
- * 插入输出参数
313
- * @internal
314
- * @param retOptions 输出参数参数
315
- */
316
- _insertReturnAt(retOptions: Partial<Return>, index: number): Return;
317
-
318
- /**
319
- * 插入输出参数
320
- * @internal
321
- * @param ret 已有的输出参数实例
322
- */
323
- _insertReturnAt(ret: Return, index: number): Return;
324
-
325
- _insertReturnAt(options: string | Partial<Return> | Return, index: number) {
326
- const retOptions: any = {};
327
- const relationOptions = { parentNode: this, parentKey: 'returns' };
328
- let ret: Return;
329
- if (!options) {
330
- ret = Return.from({
331
- ...retOptions,
332
- name: this.getReturnUniqueName(),
333
- }, this, 'returns');
334
- } else if (typeof options === 'string') {
335
- ret = Return.from({
336
- ...retOptions,
337
- name: options,
338
- }, this, 'returns');
339
- } else if (options instanceof Return) {
340
- options.ensureDelete(); // 同一实例不支持多处存在
341
- ret = options;
342
- Object.assign(ret, relationOptions);
343
- } else {
344
- ret = Return.from({
345
- ...retOptions,
346
- ...options,
347
- }, this, 'returns');
348
- }
349
- this.returns.splice(index, 0, ret);
350
- return ret;
351
- }
352
-
353
- /**
354
- * 插入输出参数
355
- * @param name 输出参数名称,如果不填会自动生成一个唯一名称
356
- */
357
- insertReturnAt(name: string, index: number): Return;
358
-
359
- /**
360
- * 插入输出参数
361
- * @param retOptions 输出参数参数
362
- */
363
- insertReturnAt(retOptions: Partial<Return>, index: number): Return;
364
-
365
- /**
366
- * 插入输出参数
367
- * @param ret 已有的输出参数实例
368
- */
369
- insertReturnAt(ret: Return, index: number): Return;
370
-
371
- insertReturnAt(options: string | Partial<Return> | Return, index: number) {
372
- const node = this._insertReturnAt(options as any, index);
373
- node.create({
374
- index,
375
- parentNode: this,
376
- parentKey: 'returns',
377
- });
378
- return node;
582
+ return validation.delete();
583
+ }
584
+
585
+ __removeBindAttribute(bindAttribute: BindAttribute) {
586
+ const { parentKey } = bindAttribute;
587
+ const params: Params = {
588
+ parentNode: this,
589
+ parentKey,
590
+ index: -1,
591
+ object: null,
592
+ oldObject: bindAttribute,
593
+ };
594
+ if (parentKey) {
595
+ params.parentKey = parentKey;
596
+ if (Array.isArray((this as any)[parentKey])) {
597
+ const index = (this as any)[parentKey].indexOf(bindAttribute);
598
+ ~index && (this as any)[parentKey].splice(index, 1);
599
+ params.index = index;
600
+ } else if ((this as any)[parentKey] === bindAttribute) {
601
+ params.index = 0;
602
+ (this as any)[parentKey] = undefined;
603
+ }
379
604
  }
380
-
381
- /**
382
- * 添加输出参数
383
- * @internal
384
- * @param name 输出参数名称,如果不填会自动生成一个唯一名称
385
- */
386
- _addReturn(name?: string): Return;
387
-
388
- /**
389
- * 添加输出参数
390
- * @internal
391
- * @param retOptions 输出参数参数
392
- */
393
- _addReturn(retOptions: Partial<Return>): Return;
394
-
395
- /**
396
- * 添加输出参数
397
- * @internal
398
- * @param ret 已有的输出参数实例
399
- */
400
- _addReturn(ret: Return): Return;
401
-
402
- _addReturn(options?: string | Partial<Return> | Return) {
403
- const index = this.returns.length;
404
- return this._insertReturnAt(options as any, index);
405
- }
406
-
407
- /**
408
- * 添加输出参数
409
- * @internal
410
- * @param name 输出参数名称,如果不填会自动生成一个唯一名称
411
- */
412
- addReturn(name?: string): Return;
413
-
414
- /**
415
- * 添加输出参数
416
- * @param retOptions 输出参数参数
417
- */
418
- addReturn(retOptions: Partial<Return>): Return;
419
-
420
- /**
421
- * 添加输出参数
422
- * @param ret 已有的输出参数实例
423
- */
424
- addReturn(ret: Return): Return;
425
-
426
- addReturn(options?: string | Partial<Return> | Return) {
427
- const node = this._addReturn(options as any);
428
- const index = this.returns.indexOf(node);
429
- node.create({
430
- index,
431
- parentNode: this,
432
- parentKey: 'returns',
433
- });
434
- return node;
435
- }
436
-
437
-
438
-
439
-
440
- /**
441
- * 删除接口参数
442
- * @param name 接口参数名称
443
- */
444
- removeInterfaceParam(name: string): void;
445
-
446
- /**
447
- * 删除接口参数
448
- * @param interfaceParam 已有的接口参数实例
449
- */
450
- removeInterfaceParam(interfaceParam: InterfaceParam): void;
451
-
452
- removeInterfaceParam(options: string | InterfaceParam) {
453
- let interfaceParam: InterfaceParam;
454
- if (typeof options === 'string') {
455
- interfaceParam = (this.params as InterfaceParam[]).find((item) => item.name === options);
456
- if (!interfaceParam) {
457
- throw new Error('找不到接口参数 ' + options);
458
- }
459
- } else {
460
- interfaceParam = options;
461
- }
462
- return interfaceParam.delete();
463
- }
464
-
465
- __removeInterfaceParam(interfaceParam: InterfaceParam) {
466
- const parentKey = interfaceParam.parentKey;
467
- const params: Params = {
468
- parentNode: this,
469
- parentKey,
470
- index: -1,
471
- object: null,
472
- oldObject: interfaceParam,
473
- };
474
- if (parentKey) {
475
- params.parentKey = parentKey;
476
- if (Array.isArray((this as any)[parentKey])) {
477
- const index = (this as any)[parentKey].indexOf(interfaceParam);
478
- ~index && (this as any)[parentKey].splice(index, 1);
479
- params.index = index;
480
- } else if ((this as any)[parentKey] === interfaceParam) {
481
- params.index = 0;
482
- (this as any)[parentKey] = undefined;
605
+ return params;
606
+ }
607
+
608
+ //= ===============================================================================
609
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
610
+ // 自动生成的代码已结束。下面可以手动编写。
611
+ //= ===============================================================================
612
+
613
+ /**
614
+ * 协议
615
+ */
616
+ @property()
617
+ protocol: string = undefined;
618
+
619
+ /**
620
+ * 协议参数列表
621
+ */
622
+ @property('Param')
623
+ protocolParams: Array<Param> = [];
624
+
625
+ /**
626
+ * 是否可编辑
627
+ * */
628
+ get readonly() {
629
+ return !!this.module;
630
+ }
631
+
632
+ afterDelete() {
633
+ // 处理 DUBBO 协议接口删除后的操作
634
+ if (this.protocol === 'DUBBO') {
635
+ const moduleNode = this.parentNode as Module;
636
+ if (!moduleNode.interfaces.length) {
637
+ // 删除依赖库的config
638
+ if (moduleNode.configuration && moduleNode.configuration.groups) {
639
+ const configGroupData = moduleNode.configuration.groups[0];
640
+ if (configGroupData) {
641
+ const configGroup = this.app.configuration.getGroup(configGroupData.name);
642
+ if (configGroup) {
643
+ const propertyData = configGroupData.properties[0];
644
+ if (propertyData) {
645
+ const property = configGroup.getProperty(propertyData.name);
646
+ if (property) {
647
+ property.delete();
648
+ }
649
+ }
483
650
  }
651
+ }
484
652
  }
485
- return params;
653
+ // 删除依赖库
654
+ moduleNode.delete();
655
+ }
486
656
  }
487
-
488
-
489
-
490
- /**
491
- * 删除输出参数
492
- * @param name 输出参数名称
493
- */
494
- removeReturn(name: string): void;
495
-
496
- /**
497
- * 删除输出参数
498
- * @param ret 已有的输出参数实例
499
- */
500
- removeReturn(ret: Return): void;
501
-
502
- removeReturn(options: string | Return) {
503
- let ret: Return;
504
- if (typeof options === 'string') {
505
- ret = (this.returns as Return[]).find((item) => item.name === options);
506
- if (!ret) {
507
- throw new Error('找不到输出参数 ' + options);
508
- }
657
+ }
658
+
659
+ toService() {
660
+ return {
661
+ config: {
662
+ serviceType: 'external',
663
+ },
664
+ url: {
665
+ method: this.method,
666
+ path: this.path,
667
+ },
668
+ };
669
+ }
670
+
671
+ /**
672
+ * 设置接口描述
673
+ */
674
+ updateOption(source: Partial<Interface>) {
675
+ const object = {
676
+ ...source,
677
+ };
678
+ this.update({
679
+ ...object,
680
+ });
681
+ }
682
+
683
+ // 更新所有调用接口
684
+ async updateAllRefCallInterface() {
685
+ const refs = await this.findUsage();
686
+ refs.forEach((val: any) => {
687
+ const loopFindNode = (item: any) => {
688
+ if (item.children) {
689
+ item.children.forEach((i: any) => loopFindNode(i));
509
690
  } else {
510
- ret = options;
691
+ item.node?.setCallee?.(this);
511
692
  }
512
- return ret.delete();
693
+ };
694
+ loopFindNode(val);
695
+ });
696
+ }
697
+
698
+ /* 删除空数据模块 */
699
+ deleteLogincAndModule() {
700
+ this.rootNode.emit('collect:start', {
701
+ actionMsg: `删除接口“${this.name}”`,
702
+ });
703
+
704
+ this.delete();
705
+ this.deleteStructures();
706
+
707
+ if (this.module && this.module.interfaces.length === 0 && this.module.structures.length === 0) {
708
+ this.app.removeModuleInInterfaceDependencies(this.module);
513
709
  }
514
710
 
515
- __removeReturn(ret: Return) {
516
- const parentKey = ret.parentKey;
517
- const params: Params = {
518
- parentNode: this,
519
- parentKey,
520
- index: -1,
521
- object: null,
522
- oldObject: ret,
523
- };
524
- if (parentKey) {
525
- params.parentKey = parentKey;
526
- if (Array.isArray((this as any)[parentKey])) {
527
- const index = (this as any)[parentKey].indexOf(ret);
528
- ~index && (this as any)[parentKey].splice(index, 1);
529
- params.index = index;
530
- } else if ((this as any)[parentKey] === ret) {
531
- params.index = 0;
532
- (this as any)[parentKey] = undefined;
533
- }
534
- }
535
- return params;
536
- }
711
+ // 结束修改 ,批量操作
712
+ this.rootNode.emit('collect:end');
713
+ }
537
714
 
715
+ /* 删除接口引用的数据结构 */
716
+ deleteStructures() {
717
+ // 需要过滤被其他接口同时引用的数据结构
538
718
 
539
-
540
- /**
541
- * 删除元素绑定属性
542
- * @param name 元素绑定属性名称
543
- */
544
- removeValidation(name: string): void;
545
-
546
- /**
547
- * 删除元素绑定属性
548
- * @param validation 已有的元素绑定属性实例
549
- */
550
- removeValidation(validation: BindAttribute): void;
551
-
552
- removeValidation(options: string | BindAttribute) {
553
- let validation: BindAttribute;
554
- if (typeof options === 'string') {
555
- validation = this.validation;
556
- if (!validation) {
557
- throw new Error('找不到元素绑定属性 ' + options);
558
- }
559
- } else {
560
- validation = options;
561
- }
562
- return validation.delete();
563
- }
564
-
565
- __removeBindAttribute(bindAttribute: BindAttribute) {
566
- const parentKey = bindAttribute.parentKey;
567
- const params: Params = {
568
- parentNode: this,
569
- parentKey,
570
- index: -1,
571
- object: null,
572
- oldObject: bindAttribute,
573
- };
574
- if (parentKey) {
575
- params.parentKey = parentKey;
576
- if (Array.isArray((this as any)[parentKey])) {
577
- const index = (this as any)[parentKey].indexOf(bindAttribute);
578
- ~index && (this as any)[parentKey].splice(index, 1);
579
- params.index = index;
580
- } else if ((this as any)[parentKey] === bindAttribute) {
581
- params.index = 0;
582
- (this as any)[parentKey] = undefined;
583
- }
584
- }
585
- return params;
586
- }
587
-
588
- //================================================================================
589
- // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
590
- // 自动生成的代码已结束。下面可以手动编写。
591
- //================================================================================
592
-
593
- /**
594
- * 协议
595
- */
596
- @property()
597
- protocol: string = undefined;
598
-
599
- /**
600
- * 协议参数列表
601
- */
602
- @property('Param')
603
- protocolParams: Array<Param> = [];
604
-
605
- /**
606
- * 是否可编辑
607
- * */
608
- get readonly() {
609
- return !!this.module;
610
- }
611
-
612
- afterDelete() {
613
- // 处理 DUBBO 协议接口删除后的操作
614
- if (this.protocol === 'DUBBO') {
615
- const moduleNode = this.parentNode as Module;
616
- if (!moduleNode.interfaces.length) {
617
- // 删除依赖库的config
618
- if (moduleNode.configuration && moduleNode.configuration.groups) {
619
- const configGroupData = moduleNode.configuration.groups[0];
620
- if (configGroupData) {
621
- const configGroup = this.app.configuration.getGroup(configGroupData.name);
622
- if (configGroup) {
623
- const propertyData = configGroupData.properties[0];
624
- if (propertyData) {
625
- const property = configGroup.getProperty(propertyData.name);
626
- if (property) {
627
- property.delete();
628
- }
629
- }
630
- }
631
- }
632
- }
633
- // 删除依赖库
634
- moduleNode.delete();
635
- }
719
+ const { structures } = this.parentNode as Module;
720
+ // 递归找出 response/request 的 Body/Returns 引用的数据结构
721
+ const getStructures = (typeAnnotation: TypeAnnotation, result: Array<Structure> = []) => {
722
+ if (!typeAnnotation) return;
723
+ if (typeAnnotation.typeKind === 'reference') {
724
+ const targetStructure = structures.find((s) => s.name === typeAnnotation.typeName);
725
+ if (targetStructure) {
726
+ result.push(targetStructure);
727
+ targetStructure?.properties.forEach((prop) => {
728
+ getStructures(prop.typeAnnotation, result);
729
+ });
636
730
  }
637
- }
638
-
639
- toService() {
640
- return {
641
- config: {
642
- serviceType: 'external',
643
- },
644
- url: {
645
- method: this.method,
646
- path: this.path,
647
- },
648
- };
649
- }
650
-
651
- /**
652
- * 设置接口描述
653
- */
654
- updateOption(source: Partial<Interface>) {
655
- const object = {
656
- ...source,
657
- };
658
- this.update({
659
- ...object,
660
- });
661
- }
662
-
663
- // 更新所有调用接口
664
- async updateAllRefCallInterface() {
665
- const refs = await this.findUsage();
666
- refs.forEach((val: any) => {
667
- const loopFindNode = (item: any) => {
668
- if (item.children) {
669
- item.children.forEach((i: any) => loopFindNode(i));
670
- } else {
671
- item.node?.setCallee?.(this);
672
- }
673
- };
674
- loopFindNode(val);
731
+ } else if (typeAnnotation.typeKind === 'generic') {
732
+ typeAnnotation.typeArguments.forEach((arg) => {
733
+ getStructures(arg, result);
675
734
  });
676
- }
677
-
678
- /* 删除空数据模块 */
679
- deleteLogincAndModule() {
680
- this.rootNode.emit('collect:start', {
681
- actionMsg: `删除接口“${this.name}”`,
682
- });
683
-
684
- this.delete();
685
- this.deleteStructures();
686
-
687
- if (this.module && this.module.interfaces.length === 0 && this.module.structures.length === 0) {
688
- this.app.removeModuleInInterfaceDependencies(this.module);
689
- }
690
-
691
- // 结束修改 ,批量操作
692
- this.rootNode.emit('collect:end');
693
- }
694
-
695
- /* 删除接口引用的数据结构 */
696
- deleteStructures() {
697
- // 需要过滤被其他接口同时引用的数据结构
698
-
699
- const structures = (this.parentNode as Module).structures;
700
- // 递归找出 response/request 的 Body/Returns 引用的数据结构
701
- const getStructures = (typeAnnotation: TypeAnnotation, result: Array<Structure> = []) => {
702
- if (!typeAnnotation)
703
- return;
704
- if (typeAnnotation.typeKind === 'reference') {
705
- const targetStructure = structures.find((s) => s.name === typeAnnotation.typeName);
706
- if (targetStructure) {
707
- result.push(targetStructure);
708
- targetStructure?.properties.forEach((prop) => {
709
- getStructures(prop.typeAnnotation, result);
710
- });
711
- }
712
- } else if (typeAnnotation.typeKind === 'generic') {
713
- typeAnnotation.typeArguments.forEach((arg) => {
714
- getStructures(arg, result);
715
- });
716
- }
717
- return result;
718
- };
719
-
720
- const otherStructureMap: Record<string, number> = {};
721
- // 找出其他接口引用的数据结构
722
- (this.parentNode as Module).interfaces
723
- .filter((itf) => itf !== this)
724
- .forEach((itf) => {
725
- const params = itf.params || [];
726
- const returns = itf.returns || [];
727
- [...params, ...returns].forEach((p) => {
728
- const strus = getStructures(p.typeAnnotation);
729
- strus.forEach((s) => {
730
- if (!(s.name in otherStructureMap)) {
731
- otherStructureMap[s.name] = 0;
732
- }
733
- otherStructureMap[s.name]++;
734
- });
735
- });
736
- });
737
- const params = this.params || [];
738
- const returns = this.returns || [];
735
+ }
736
+ return result;
737
+ };
738
+
739
+ const otherStructureMap: Record<string, number> = {};
740
+ // 找出其他接口引用的数据结构
741
+ (this.parentNode as Module).interfaces
742
+ .filter((itf) => itf !== this)
743
+ .forEach((itf) => {
744
+ const params = itf.params || [];
745
+ const returns = itf.returns || [];
739
746
  [...params, ...returns].forEach((p) => {
740
- const strus = getStructures(p.typeAnnotation);
741
- strus.forEach((s) => {
742
- if (!(s.name in otherStructureMap)) {
743
- (this.parentNode as Module).removeStructure(s);
744
- }
745
- });
746
- });
747
- }
748
- /**
749
- * 设置逻辑名称
750
- */
751
- setOriginLogicName(originLogicName: string) {
752
- const object = {
753
- originLogicName,
754
- };
755
- this.update({
756
- ...object,
757
- });
758
- }
759
-
760
- toEmbeddedTSFile() {
761
- let code = `namespace ${this.getTsNamespace()} {\n`;
762
-
763
- const state = createCompilerState(code, { tabSize: 1 });
764
- try {
765
- code += this.toEmbeddedTS(state);
766
- } catch (err) {
767
- code += '';
768
- console.log(err);
769
- }
770
- code += '}\n';
771
-
772
- return {
773
- code,
774
- filePath: this.getEmbeddedFilePath(),
775
- sourceMap: state.sourceMap,
776
- };
777
- }
778
-
779
- get calleeKey(): string {
780
- return `${this.getTsNamespace()}.${this.name}`;
781
- }
782
-
783
- get calleewholeKey() {
784
- return this.getNamespace() + '.' + this.name;
785
- }
786
- /**
787
- * 生成宿主语言的文件路径
788
- * @param name 一般不用传,用于 rename
789
- */
790
- getEmbeddedFilePath(name = this.name) {
791
- const _path = this.module ? `/${this.module.parentKey}/${this.module.name}` : '';
792
- return `/embedded/${this.app.name}${_path}/interfaces/${name}.ts`;
793
- }
794
-
795
- get tsName(): string {
796
- const excludeds = [
797
- 'abstract',
798
- 'arguments',
799
- 'await',
800
- 'boolean',
801
- 'break',
802
- 'byte',
803
- 'case',
804
- 'catch',
805
- 'char',
806
- 'class',
807
- 'const',
808
- 'continue',
809
- 'debugger',
810
- 'default',
811
- 'delete',
812
- 'do',
813
- 'double',
814
- 'decimal',
815
- 'else',
816
- 'enum',
817
- 'eval',
818
- 'export',
819
- 'extends',
820
- 'false',
821
- 'final',
822
- 'finally',
823
- 'float',
824
- 'for',
825
- 'function',
826
- 'goto',
827
- 'if',
828
- 'implements',
829
- 'import',
830
- 'in',
831
- 'instanceof',
832
- 'int',
833
- 'interface',
834
- 'let',
835
- 'long',
836
- 'native',
837
- 'new',
838
- 'null',
839
- 'package',
840
- 'private',
841
- 'protected',
842
- 'public',
843
- 'return',
844
- 'short',
845
- 'static',
846
- 'super',
847
- 'switch',
848
- 'synchronized',
849
- 'this',
850
- 'throw',
851
- 'throws',
852
- 'transient',
853
- 'true',
854
- 'try',
855
- 'typeof',
856
- 'var',
857
- 'void',
858
- 'volatile',
859
- 'while',
860
- 'with',
861
- 'yield,as',
862
- 'any',
863
- 'number',
864
- 'string',
865
- 'get',
866
- 'type',
867
- 'typeof',
868
- 'instanceof',
869
- 'require',
870
- ];
871
- if (excludeds.includes(this.name)) {
872
- return '_' + this.name;
873
- }
874
- return this.name;
875
- }
876
- @withSourceMap()
877
- toEmbeddedTS(state?: TranslatorState): string {
878
- let code = '';
879
- const getCheckerCode = () => {
880
- if (this.validation) {
881
- code += '\n(';
882
- code += this.validation.toEmbeddedTS(shiftState(state, code));
883
- code += ');\n';
884
- }
885
- };
886
-
887
- code += `export function ${this.tsName}(`;
888
- this.params.forEach((param, index) => {
889
- if (index === 0) {
890
- code += '{';
891
- }
892
- code += param.tsName;
893
- if (index !== this.params.length - 1) {
894
- code += ', ';
895
- } else {
896
- code += '}:';
897
- }
898
- });
899
- this.params.forEach((param, index) => {
900
- if (index === 0) {
901
- code += '{';
902
- }
903
- code += param.toEmbeddedTS(shiftState(state, code), !(param as InterfaceParam).required);
904
- if (index !== this.params.length - 1) {
905
- code += ', ';
906
- } else {
907
- code += '}';
747
+ const strus = getStructures(p.typeAnnotation);
748
+ strus.forEach((s) => {
749
+ if (!(s.name in otherStructureMap)) {
750
+ otherStructureMap[s.name] = 0;
908
751
  }
752
+ otherStructureMap[s.name]++;
753
+ });
909
754
  });
910
- code += `):`;
911
- if (this.returns && this.returns.length > 0) {
912
- this.returns.forEach((ret) => {
913
- code += ret.typeAnnotation.toEmbeddedTS(shiftState(state, code));
914
- });
915
-
916
- code += '{\n';
917
- getCheckerCode();
918
- code += this.module ? '' : 'let logic =' + (this.parentNode as Namespace).getTsNamespace() + '.logics.' + this.originLogicName + ';\n';
919
- code += 'let ';
920
- code += this.returns[0].toEmbeddedTS(shiftState(state, code, { inline: true }));
921
- code += ';\n';
922
- code += `return `;
923
- code += this.returns[0].tsName || '__return;';
924
- code += '\n }';
925
- } else {
926
- code += 'void {\n';
927
- getCheckerCode();
928
- code += this.module ? '' : 'let logic =' + (this.parentNode as Namespace).getTsNamespace() + '.logics.' + this.originLogicName + ';\n';
929
- code += '};';
755
+ });
756
+ const params = this.params || [];
757
+ const returns = this.returns || [];
758
+ [...params, ...returns].forEach((p) => {
759
+ const strus = getStructures(p.typeAnnotation);
760
+ strus.forEach((s) => {
761
+ if (!(s.name in otherStructureMap)) {
762
+ (this.parentNode as Module).removeStructure(s);
930
763
  }
931
- code += '\n';
932
- return code;
764
+ });
765
+ });
766
+ }
767
+
768
+ /**
769
+ * 设置逻辑名称
770
+ */
771
+ setOriginLogicName(originLogicName: string) {
772
+ const object = {
773
+ originLogicName,
774
+ };
775
+ this.update({
776
+ ...object,
777
+ });
778
+ }
779
+
780
+ toEmbeddedTSFile() {
781
+ let code = `namespace ${this.getTsNamespace()} {\n`;
782
+
783
+ const state = createCompilerState(code, { tabSize: 1 });
784
+ try {
785
+ code += this.toEmbeddedTS(state);
786
+ } catch (err) {
787
+ code += '';
788
+ console.log(err);
933
789
  }
934
-
935
- getNamespace() {
936
- if (this.parentNode && (this.parentNode as Namespace).getNamespace) {
937
- const parentNamespace = (this.parentNode as Namespace).getNamespace();
938
- const parentName = this.parentNode.name;
939
- const arr = [parentNamespace];
940
- if (this.parentNode.concept !== 'App' && parentName) {
941
- arr.push(parentName);
942
- }
943
- return `${arr.join('.')}.interfaces`;
944
- } else
945
- throw new Error('无法获取命名空间,请设置 parentNode!');
790
+ code += '}\n';
791
+
792
+ return {
793
+ code,
794
+ filePath: this.getEmbeddedFilePath(),
795
+ sourceMap: state.sourceMap,
796
+ };
797
+ }
798
+
799
+ get calleeKey(): string {
800
+ return `${this.getTsNamespace()}.${this.name}`;
801
+ }
802
+
803
+ get calleewholeKey() {
804
+ return `${this.getNamespace()}.${this.name}`;
805
+ }
806
+
807
+ /**
808
+ * 生成宿主语言的文件路径
809
+ * @param name 一般不用传,用于 rename
810
+ */
811
+ getEmbeddedFilePath(name = this.name) {
812
+ const _path = this.module ? `/${this.module.parentKey}/${this.module.name}` : '';
813
+ return `/embedded/${this.app.name}${_path}/interfaces/${name}.ts`;
814
+ }
815
+
816
+ get tsName(): string {
817
+ const excludeds = [
818
+ 'abstract',
819
+ 'arguments',
820
+ 'await',
821
+ 'boolean',
822
+ 'break',
823
+ 'byte',
824
+ 'case',
825
+ 'catch',
826
+ 'char',
827
+ 'class',
828
+ 'const',
829
+ 'continue',
830
+ 'debugger',
831
+ 'default',
832
+ 'delete',
833
+ 'do',
834
+ 'double',
835
+ 'decimal',
836
+ 'else',
837
+ 'enum',
838
+ 'eval',
839
+ 'export',
840
+ 'extends',
841
+ 'false',
842
+ 'final',
843
+ 'finally',
844
+ 'float',
845
+ 'for',
846
+ 'function',
847
+ 'goto',
848
+ 'if',
849
+ 'implements',
850
+ 'import',
851
+ 'in',
852
+ 'instanceof',
853
+ 'int',
854
+ 'interface',
855
+ 'let',
856
+ 'long',
857
+ 'native',
858
+ 'new',
859
+ 'null',
860
+ 'package',
861
+ 'private',
862
+ 'protected',
863
+ 'public',
864
+ 'return',
865
+ 'short',
866
+ 'static',
867
+ 'super',
868
+ 'switch',
869
+ 'synchronized',
870
+ 'this',
871
+ 'throw',
872
+ 'throws',
873
+ 'transient',
874
+ 'true',
875
+ 'try',
876
+ 'typeof',
877
+ 'var',
878
+ 'void',
879
+ 'volatile',
880
+ 'while',
881
+ 'with',
882
+ 'yield,as',
883
+ 'any',
884
+ 'number',
885
+ 'string',
886
+ 'get',
887
+ 'type',
888
+ 'typeof',
889
+ 'instanceof',
890
+ 'require',
891
+ ];
892
+ if (excludeds.includes(this.name)) {
893
+ return `_${this.name}`;
946
894
  }
947
-
948
- getTsNamespace() {
949
- if (this.parentNode && (this.parentNode as Namespace).getTsNamespace) {
950
- const parentNamespace = (this.parentNode as Namespace).getTsNamespace();
951
- const parentName = this.parentNode.tsName || this.parentNode.name;
952
- const arr = [parentNamespace];
953
- if (this.parentNode.concept !== 'App' && parentName) {
954
- arr.push(parentName);
955
- }
956
- return `${arr.join('.')}.interfaces`;
957
- } else
958
- throw new Error('无法获取命名空间,请设置 parentNode!');
895
+ return this.name;
896
+ }
897
+
898
+ @withSourceMap()
899
+ toEmbeddedTS(state?: TranslatorState): string {
900
+ let code = '';
901
+ const getCheckerCode = () => {
902
+ if (this.validation) {
903
+ code += '\n(';
904
+ code += this.validation.toEmbeddedTS(shiftState(state, code));
905
+ code += ');\n';
906
+ }
907
+ };
908
+
909
+ code += `export function ${this.tsName}(`;
910
+ this.params.forEach((param, index) => {
911
+ if (index === 0) {
912
+ code += '{';
913
+ }
914
+ code += param.tsName;
915
+ if (index !== this.params.length - 1) {
916
+ code += ', ';
917
+ } else {
918
+ code += '}:';
919
+ }
920
+ });
921
+ this.params.forEach((param, index) => {
922
+ if (index === 0) {
923
+ code += '{';
924
+ }
925
+ code += param.toEmbeddedTS(shiftState(state, code), !(param as InterfaceParam).required);
926
+ if (index !== this.params.length - 1) {
927
+ code += ', ';
928
+ } else {
929
+ code += '}';
930
+ }
931
+ });
932
+ code += `):`;
933
+ if (this.returns && this.returns.length > 0) {
934
+ this.returns.forEach((ret) => {
935
+ code += ret.typeAnnotation.toEmbeddedTS(shiftState(state, code));
936
+ });
937
+
938
+ code += '{\n';
939
+ getCheckerCode();
940
+ code += this.module ? '' : `let logic =${(this.parentNode as Namespace).getTsNamespace()}.logics.${this.originLogicName};\n`;
941
+ code += 'let ';
942
+ code += this.returns[0].toEmbeddedTS(shiftState(state, code, { inline: true }));
943
+ code += ';\n';
944
+ code += `return `;
945
+ code += this.returns[0].tsName || '__return;';
946
+ code += '\n }';
947
+ } else {
948
+ code += 'void {\n';
949
+ getCheckerCode();
950
+ code += this.module ? '' : `let logic =${(this.parentNode as Namespace).getTsNamespace()}.logics.${this.originLogicName};\n`;
951
+ code += '};';
959
952
  }
960
-
961
- getVarExistingNames(excludedList: Array<InterfaceParam | Return> = []) {
962
- const excludedSet = new Set(excludedList);
963
- return [...this.params, ...this.returns].filter((item) => !excludedSet.has(item)).map((item) => item.name);
953
+ code += '\n';
954
+ return code;
955
+ }
956
+
957
+ getNamespace() {
958
+ if (this.parentNode && (this.parentNode as Namespace).getNamespace) {
959
+ const parentNamespace = (this.parentNode as Namespace).getNamespace();
960
+ const parentName = this.parentNode.name;
961
+ const arr = [parentNamespace];
962
+ if (this.parentNode.concept !== 'App' && parentName) {
963
+ arr.push(parentName);
964
+ }
965
+ return `${arr.join('.')}.interfaces`;
964
966
  }
965
-
966
- // 递归找出 response/request 的 Body/Returns 引用的数据结构
967
- getRefStructures(structures: Structure[] = []): Set<Structure> {
968
- const structuresSet: Set<Structure> = new Set();
969
- const loopSaveStructure = (typeAnnotation: TypeAnnotation) => {
970
- if (!typeAnnotation)
971
- return;
972
- if (typeAnnotation.typeKind === 'reference') {
973
- const targetStructure = structures.find((s) => s.name === typeAnnotation.typeName);
974
- if (targetStructure && !structuresSet.has(targetStructure)) {
975
- structuresSet.add(targetStructure);
976
- targetStructure?.properties.forEach((prop) => {
977
- loopSaveStructure(prop.typeAnnotation);
978
- });
979
- }
980
- } else if (typeAnnotation.typeKind === 'generic') {
981
- typeAnnotation.typeArguments.forEach(loopSaveStructure);
982
- }
983
- };
984
-
985
- const { params = [], returns = [] } = this;
986
- [...params, ...returns].forEach((p) => {
987
- if ('in' in p && p.in === 'cookie') {
988
- p.in = 'header';
989
- return;
990
- }
991
- loopSaveStructure(p?.typeAnnotation);
992
- });
993
- return structuresSet;
967
+ throw new Error('无法获取命名空间,请设置 parentNode!');
968
+ }
969
+
970
+ getTsNamespace() {
971
+ if (this.parentNode && (this.parentNode as Namespace).getTsNamespace) {
972
+ const parentNamespace = (this.parentNode as Namespace).getTsNamespace();
973
+ const parentName = this.parentNode.tsName || this.parentNode.name;
974
+ const arr = [parentNamespace];
975
+ if (this.parentNode.concept !== 'App' && parentName) {
976
+ arr.push(parentName);
977
+ }
978
+ return `${arr.join('.')}.interfaces`;
994
979
  }
995
-
996
- //================================================================================
997
- // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
998
- // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
999
- //================================================================================
980
+ throw new Error('无法获取命名空间,请设置 parentNode!');
981
+ }
982
+
983
+ getVarExistingNames(excludedList: Array<InterfaceParam | Return> = []) {
984
+ const excludedSet = new Set(excludedList);
985
+ return [...this.params, ...this.returns].filter((item) => !excludedSet.has(item)).map((item) => item.name);
986
+ }
987
+
988
+ // 递归找出 response/request 的 Body/Returns 引用的数据结构
989
+ getRefStructures(structures: Structure[] = []): Set<Structure> {
990
+ const structuresSet: Set<Structure> = new Set();
991
+ const loopSaveStructure = (typeAnnotation: TypeAnnotation) => {
992
+ if (!typeAnnotation) return;
993
+ if (typeAnnotation.typeKind === 'reference') {
994
+ const targetStructure = structures.find((s) => s.name === typeAnnotation.typeName);
995
+ if (targetStructure && !structuresSet.has(targetStructure)) {
996
+ structuresSet.add(targetStructure);
997
+ targetStructure?.properties.forEach((prop) => {
998
+ loopSaveStructure(prop.typeAnnotation);
999
+ });
1000
+ }
1001
+ } else if (typeAnnotation.typeKind === 'generic') {
1002
+ typeAnnotation.typeArguments.forEach(loopSaveStructure);
1003
+ }
1004
+ };
1005
+
1006
+ const { params = [], returns = [] } = this;
1007
+ [...params, ...returns].forEach((p) => {
1008
+ if ('in' in p && p.in === 'cookie') {
1009
+ p.in = 'header';
1010
+ return;
1011
+ }
1012
+ loopSaveStructure(p?.typeAnnotation);
1013
+ });
1014
+ return structuresSet;
1015
+ }
1016
+
1017
+ //= ===============================================================================
1018
+ // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
1019
+ // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
1020
+ //= ===============================================================================
1000
1021
  }
1001
1022
 
1002
1023
  classMap.Interface = Interface;
1003
1024
  export default Interface;
1004
- //================================================================================
1025
+ //= ===============================================================================
1005
1026
  // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
1006
1027
  // 自动生成的代码已结束。下面可以手动编写。
1007
- //================================================================================
1028
+ //= ===============================================================================