@lcap/nasl 3.7.3-beta.1 → 3.8.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/.mocharc.js +0 -1
  2. package/out/automate/engine/utils.js +6 -1
  3. package/out/automate/engine/utils.js.map +1 -1
  4. package/out/bak/translator.js +37 -0
  5. package/out/bak/translator.js.map +1 -1
  6. package/out/breakpoint/shared/utils.d.ts +1 -0
  7. package/out/breakpoint/shared/utils.js +1 -1
  8. package/out/breakpoint/shared/utils.js.map +1 -1
  9. package/out/common/BaseNode.d.ts +11 -0
  10. package/out/common/BaseNode.js +101 -5
  11. package/out/common/BaseNode.js.map +1 -1
  12. package/out/concepts/Annotatable__.d.ts +109 -0
  13. package/out/concepts/Annotatable__.js +161 -0
  14. package/out/concepts/Annotatable__.js.map +1 -0
  15. package/out/concepts/AnnotationProperty__.d.ts +48 -0
  16. package/out/concepts/AnnotationProperty__.js +74 -0
  17. package/out/concepts/AnnotationProperty__.js.map +1 -0
  18. package/out/concepts/Annotation__.d.ts +128 -0
  19. package/out/concepts/Annotation__.js +248 -0
  20. package/out/concepts/Annotation__.js.map +1 -0
  21. package/out/concepts/App__.d.ts +14 -26
  22. package/out/concepts/App__.js +50 -20
  23. package/out/concepts/App__.js.map +1 -1
  24. package/out/concepts/ApplyAnnotation__.d.ts +87 -0
  25. package/out/concepts/ApplyAnnotation__.js +140 -0
  26. package/out/concepts/ApplyAnnotation__.js.map +1 -0
  27. package/out/concepts/Argument__.d.ts +19 -0
  28. package/out/concepts/Argument__.js +126 -0
  29. package/out/concepts/Argument__.js.map +1 -1
  30. package/out/concepts/AssigneeV2__.d.ts +169 -0
  31. package/out/concepts/AssigneeV2__.js +176 -1
  32. package/out/concepts/AssigneeV2__.js.map +1 -1
  33. package/out/concepts/AuthLogicForCallInterface__.js +1 -1
  34. package/out/concepts/AuthLogicForCallInterface__.js.map +1 -1
  35. package/out/concepts/AuthLogic__.js +1 -1
  36. package/out/concepts/AuthLogic__.js.map +1 -1
  37. package/out/concepts/BooleanLiteral__.d.ts +1 -0
  38. package/out/concepts/BooleanLiteral__.js +9 -0
  39. package/out/concepts/BooleanLiteral__.js.map +1 -1
  40. package/out/concepts/BusinessLogic__.js +1 -1
  41. package/out/concepts/BusinessLogic__.js.map +1 -1
  42. package/out/concepts/CallFunction__.js +1 -1
  43. package/out/concepts/CallFunction__.js.map +1 -1
  44. package/out/concepts/CallLogic__.d.ts +15 -0
  45. package/out/concepts/CallLogic__.js +149 -17
  46. package/out/concepts/CallLogic__.js.map +1 -1
  47. package/out/concepts/ConnectorLogic__.js +1 -1
  48. package/out/concepts/ConnectorLogic__.js.map +1 -1
  49. package/out/concepts/DatabaseTypeAnnotation__.d.ts +0 -2
  50. package/out/concepts/DatabaseTypeAnnotation__.js +0 -20
  51. package/out/concepts/DatabaseTypeAnnotation__.js.map +1 -1
  52. package/out/concepts/DepartmentManagerV2__.d.ts +29 -0
  53. package/out/concepts/DepartmentManagerV2__.js +56 -0
  54. package/out/concepts/DepartmentManagerV2__.js.map +1 -0
  55. package/out/concepts/DepartmentV2__.d.ts +33 -0
  56. package/out/concepts/DepartmentV2__.js +63 -0
  57. package/out/concepts/DepartmentV2__.js.map +1 -0
  58. package/out/concepts/DirectManagerV2__.d.ts +25 -0
  59. package/out/concepts/DirectManagerV2__.js +53 -0
  60. package/out/concepts/DirectManagerV2__.js.map +1 -0
  61. package/out/concepts/End__.js +9 -1
  62. package/out/concepts/End__.js.map +1 -1
  63. package/out/concepts/EntityProperty__.js +0 -2
  64. package/out/concepts/EntityProperty__.js.map +1 -1
  65. package/out/concepts/Entity__.d.ts +2 -2
  66. package/out/concepts/Entity__.js +4 -7
  67. package/out/concepts/Entity__.js.map +1 -1
  68. package/out/concepts/EnumItem__.d.ts +1 -12
  69. package/out/concepts/EnumItem__.js +17 -49
  70. package/out/concepts/EnumItem__.js.map +1 -1
  71. package/out/concepts/EnumSelectSetter__.d.ts +4 -0
  72. package/out/concepts/EnumSelectSetter__.js +7 -0
  73. package/out/concepts/EnumSelectSetter__.js.map +1 -1
  74. package/out/concepts/Enum__.js +1 -4
  75. package/out/concepts/Enum__.js.map +1 -1
  76. package/out/concepts/ForEachStatement__.js +1 -1
  77. package/out/concepts/ForEachStatement__.js.map +1 -1
  78. package/out/concepts/FrontendLibrary__.d.ts +52 -48
  79. package/out/concepts/FrontendLibrary__.js +45 -36
  80. package/out/concepts/FrontendLibrary__.js.map +1 -1
  81. package/out/concepts/FrontendType__.d.ts +4 -0
  82. package/out/concepts/FrontendType__.js +7 -0
  83. package/out/concepts/FrontendType__.js.map +1 -1
  84. package/out/concepts/Frontend__.d.ts +2 -0
  85. package/out/concepts/Frontend__.js +21 -2
  86. package/out/concepts/Frontend__.js.map +1 -1
  87. package/out/concepts/HistoryProcessV2__.js +4 -1
  88. package/out/concepts/HistoryProcessV2__.js.map +1 -1
  89. package/out/concepts/I18nInfo__.d.ts +0 -1
  90. package/out/concepts/I18nInfo__.js +0 -7
  91. package/out/concepts/I18nInfo__.js.map +1 -1
  92. package/out/concepts/Identifier__.d.ts +2 -0
  93. package/out/concepts/Identifier__.js +31 -0
  94. package/out/concepts/Identifier__.js.map +1 -1
  95. package/out/concepts/IfStatement__.js +2 -2
  96. package/out/concepts/IfStatement__.js.map +1 -1
  97. package/out/concepts/Interface__.js +1 -4
  98. package/out/concepts/Interface__.js.map +1 -1
  99. package/out/concepts/LogicItem__.d.ts +1 -1
  100. package/out/concepts/LogicItem__.js.map +1 -1
  101. package/out/concepts/Logic__.d.ts +16 -1
  102. package/out/concepts/Logic__.js +133 -15
  103. package/out/concepts/Logic__.js.map +1 -1
  104. package/out/concepts/ManagerV2__.d.ts +34 -0
  105. package/out/concepts/ManagerV2__.js +61 -0
  106. package/out/concepts/ManagerV2__.js.map +1 -0
  107. package/out/concepts/MatchCase__.d.ts +2 -2
  108. package/out/concepts/MatchCase__.js +7 -7
  109. package/out/concepts/MatchCase__.js.map +1 -1
  110. package/out/concepts/MemberExpression__.js +1 -0
  111. package/out/concepts/MemberExpression__.js.map +1 -1
  112. package/out/concepts/Module__.d.ts +88 -0
  113. package/out/concepts/Module__.js +85 -0
  114. package/out/concepts/Module__.js.map +1 -1
  115. package/out/concepts/OperatePermissionV2__.d.ts +1 -1
  116. package/out/concepts/OperatePermissionV2__.js.map +1 -1
  117. package/out/concepts/Param__.d.ts +4 -0
  118. package/out/concepts/Param__.js +13 -21
  119. package/out/concepts/Param__.js.map +1 -1
  120. package/out/concepts/ProcessElementV2__.d.ts +6 -1
  121. package/out/concepts/ProcessElementV2__.js +20 -0
  122. package/out/concepts/ProcessElementV2__.js.map +1 -1
  123. package/out/concepts/ProcessElement__.d.ts +7 -0
  124. package/out/concepts/ProcessElement__.js +47 -0
  125. package/out/concepts/ProcessElement__.js.map +1 -1
  126. package/out/concepts/ProcessV2__.d.ts +1 -34
  127. package/out/concepts/ProcessV2__.js +3 -70
  128. package/out/concepts/ProcessV2__.js.map +1 -1
  129. package/out/concepts/QueryFromExpression__.js +2 -2
  130. package/out/concepts/QueryFromExpression__.js.map +1 -1
  131. package/out/concepts/QueryJoinExpression__.js +2 -2
  132. package/out/concepts/QueryJoinExpression__.js.map +1 -1
  133. package/out/concepts/StaticString__.d.ts +0 -4
  134. package/out/concepts/StaticString__.js +0 -11
  135. package/out/concepts/StaticString__.js.map +1 -1
  136. package/out/concepts/StructureProperty__.d.ts +1 -0
  137. package/out/concepts/StructureProperty__.js +14 -5
  138. package/out/concepts/StructureProperty__.js.map +1 -1
  139. package/out/concepts/Structure__.d.ts +4 -0
  140. package/out/concepts/Structure__.js +6 -9
  141. package/out/concepts/Structure__.js.map +1 -1
  142. package/out/concepts/SubLogic__.d.ts +418 -0
  143. package/out/concepts/SubLogic__.js +992 -0
  144. package/out/concepts/SubLogic__.js.map +1 -0
  145. package/out/concepts/Theme__.d.ts +9 -0
  146. package/out/concepts/Theme__.js +10 -0
  147. package/out/concepts/Theme__.js.map +1 -1
  148. package/out/concepts/Transactional__.d.ts +0 -1
  149. package/out/concepts/Transactional__.js +0 -7
  150. package/out/concepts/Transactional__.js.map +1 -1
  151. package/out/concepts/TypeAnnotation__.js +18 -0
  152. package/out/concepts/TypeAnnotation__.js.map +1 -1
  153. package/out/concepts/TypeParam__.d.ts +1 -0
  154. package/out/concepts/TypeParam__.js.map +1 -1
  155. package/out/concepts/ValidationRule__.d.ts +6 -1
  156. package/out/concepts/ValidationRule__.js +6 -1
  157. package/out/concepts/ValidationRule__.js.map +1 -1
  158. package/out/concepts/ViewElement__.d.ts +8 -2
  159. package/out/concepts/ViewElement__.js +213 -32
  160. package/out/concepts/ViewElement__.js.map +1 -1
  161. package/out/concepts/View__.d.ts +10 -2
  162. package/out/concepts/View__.js +129 -17
  163. package/out/concepts/View__.js.map +1 -1
  164. package/out/concepts/basics/stdlib/nasl.processV2.d.ts +2 -0
  165. package/out/concepts/basics/stdlib/nasl.processV2.js +50 -4
  166. package/out/concepts/basics/stdlib/nasl.processV2.js.map +1 -1
  167. package/out/concepts/basics/types/index.d.ts +1 -1
  168. package/out/concepts/basics/types/index.js +2 -1
  169. package/out/concepts/basics/types/index.js.map +1 -1
  170. package/out/concepts/index__.d.ts +9 -0
  171. package/out/concepts/index__.js +9 -0
  172. package/out/concepts/index__.js.map +1 -1
  173. package/out/concepts/utils/asserts.d.ts +409 -0
  174. package/out/concepts/utils/asserts.js +564 -14
  175. package/out/concepts/utils/asserts.js.map +1 -1
  176. package/out/concepts/utils/types.d.ts +33 -2
  177. package/out/generator/genBundleFiles.d.ts +13 -9
  178. package/out/generator/genBundleFiles.js +383 -63
  179. package/out/generator/genBundleFiles.js.map +1 -1
  180. package/out/generator/genMetaData.js +2 -0
  181. package/out/generator/genMetaData.js.map +1 -1
  182. package/out/generator/release-body/body.js +1 -0
  183. package/out/generator/release-body/body.js.map +1 -1
  184. package/out/generator/release-body/utils.d.ts +15 -7
  185. package/out/generator/release-body/utils.js +50 -7
  186. package/out/generator/release-body/utils.js.map +1 -1
  187. package/out/natural/genNaturalTS.js +2 -4
  188. package/out/natural/genNaturalTS.js.map +1 -1
  189. package/out/natural/getContext/index.js +0 -2
  190. package/out/natural/getContext/index.js.map +1 -1
  191. package/out/natural/transformTS2UI.js.map +1 -1
  192. package/out/natural/transformTSCode.d.ts +1 -1
  193. package/out/natural/transformTSCode.js.map +1 -1
  194. package/out/server/extendBaseNode.js +9 -0
  195. package/out/server/extendBaseNode.js.map +1 -1
  196. package/out/server/getLogics.js +10 -6
  197. package/out/server/getLogics.js.map +1 -1
  198. package/out/server/getMemberIdentifier.js +6 -0
  199. package/out/server/getMemberIdentifier.js.map +1 -1
  200. package/out/server/getProcessesV2.d.ts +3 -2
  201. package/out/server/getProcessesV2.js +15 -6
  202. package/out/server/getProcessesV2.js.map +1 -1
  203. package/out/server/naslServer.d.ts +5 -1
  204. package/out/server/naslServer.js +120 -30
  205. package/out/server/naslServer.js.map +1 -1
  206. package/out/server/translator.js +4 -0
  207. package/out/server/translator.js.map +1 -1
  208. package/out/service/storage/init.d.ts +2 -1
  209. package/out/service/storage/init.js +28 -71
  210. package/out/service/storage/init.js.map +1 -1
  211. package/out/templator/genCreateBlock.d.ts +6 -2
  212. package/out/templator/genCreateBlock.js +25 -8
  213. package/out/templator/genCreateBlock.js.map +1 -1
  214. package/out/templator/genCurdEditMultipleKeyBlock.d.ts +22 -0
  215. package/out/templator/genCurdEditMultipleKeyBlock.js +60 -1
  216. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  217. package/out/templator/genCurdMultipleKeyBlock.d.ts +13 -3
  218. package/out/templator/genCurdMultipleKeyBlock.js +29 -23
  219. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  220. package/out/templator/genGetBlock.d.ts +1 -1
  221. package/out/templator/genGetBlock.js +3 -2
  222. package/out/templator/genGetBlock.js.map +1 -1
  223. package/out/templator/genListViewBlock.d.ts +1 -1
  224. package/out/templator/genListViewBlock.js +3 -2
  225. package/out/templator/genListViewBlock.js.map +1 -1
  226. package/out/templator/genSelectBlock.d.ts +1 -1
  227. package/out/templator/genSelectBlock.js +3 -2
  228. package/out/templator/genSelectBlock.js.map +1 -1
  229. package/out/templator/genTableBlock.d.ts +9 -4
  230. package/out/templator/genTableBlock.js +31 -17
  231. package/out/templator/genTableBlock.js.map +1 -1
  232. package/out/templator/genUpdateBlock.d.ts +2 -2
  233. package/out/templator/genUpdateBlock.js +11 -11
  234. package/out/templator/genUpdateBlock.js.map +1 -1
  235. package/out/translator/types.d.ts +0 -4
  236. package/out/translator/utils.d.ts +0 -1
  237. package/out/translator/utils.js +1 -6
  238. package/out/translator/utils.js.map +1 -1
  239. package/out/utils/delay/index.d.ts +0 -0
  240. package/out/utils/delay/index.js +1 -0
  241. package/out/utils/delay/index.js.map +1 -0
  242. package/out/utils/env.d.ts +0 -4
  243. package/out/utils/env.js +3 -6
  244. package/out/utils/env.js.map +1 -1
  245. package/out/utils/index.d.ts +3 -2
  246. package/out/utils/index.js +18 -14
  247. package/out/utils/index.js.map +1 -1
  248. package/out/utils/time-slicing/controller.js.map +1 -1
  249. package/out/utils/types.d.ts +0 -17
  250. package/package.json +27 -20
  251. package/sandbox/stdlib/extension.component.ts +29 -0
  252. package/sandbox/stdlib/nasl.process.ts +17 -0
  253. package/sandbox/stdlib/nasl.processV2.ts +10 -5
  254. package/sandbox/stdlib/nasl.util.ts +3 -1
  255. package/src/automate/engine/utils.js +7 -2
  256. package/src/bak/translator.js +42 -1
  257. package/src/breakpoint/shared/utils.ts +2 -1
  258. package/src/common/BaseNode.ts +117 -5
  259. package/src/concepts/Annotatable__.ts +263 -0
  260. package/src/concepts/AnnotationProperty__.ts +102 -0
  261. package/src/concepts/Annotation__.ts +344 -0
  262. package/src/concepts/App__.ts +917 -26
  263. package/src/concepts/ApplyAnnotation__.ts +198 -0
  264. package/src/concepts/Argument__.ts +145 -1
  265. package/src/concepts/AssigneeV2__.ts +387 -1
  266. package/src/concepts/AuthLogicForCallInterface__.ts +1 -1
  267. package/src/concepts/AuthLogic__.ts +1 -1
  268. package/src/concepts/BooleanLiteral__.ts +9 -1
  269. package/src/concepts/BusinessLogic__.ts +1 -1
  270. package/src/concepts/CallFunction__.ts +1 -1
  271. package/src/concepts/CallLogic__.ts +153 -16
  272. package/src/concepts/ConnectorLogic__.ts +1 -1
  273. package/src/concepts/DatabaseTypeAnnotation__.ts +0 -11
  274. package/src/concepts/DepartmentManagerV2__.ts +70 -0
  275. package/src/concepts/DepartmentV2__.ts +75 -0
  276. package/src/concepts/DirectManagerV2__.ts +65 -0
  277. package/src/concepts/End__.ts +10 -1
  278. package/src/concepts/EntityProperty__.ts +0 -5
  279. package/src/concepts/Entity__.ts +5 -9
  280. package/src/concepts/EnumItem__.ts +16 -65
  281. package/src/concepts/EnumSelectSetter__.ts +6 -0
  282. package/src/concepts/Enum__.ts +1 -6
  283. package/src/concepts/ForEachStatement__.ts +1 -1
  284. package/src/concepts/FrontendLibrary__.ts +88 -80
  285. package/src/concepts/FrontendType__.ts +6 -0
  286. package/src/concepts/Frontend__.ts +26 -3
  287. package/src/concepts/HistoryProcessV2__.ts +5 -0
  288. package/src/concepts/I18nInfo__.ts +0 -5
  289. package/src/concepts/Identifier__.ts +32 -0
  290. package/src/concepts/IfStatement__.ts +2 -2
  291. package/src/concepts/Interface__.ts +1 -6
  292. package/src/concepts/LogicItem__.ts +1 -0
  293. package/src/concepts/Logic__.ts +140 -17
  294. package/src/concepts/ManagerV2__.ts +78 -0
  295. package/src/concepts/MatchCase__.ts +9 -8
  296. package/src/concepts/MemberExpression__.ts +1 -0
  297. package/src/concepts/Module__.ts +194 -0
  298. package/src/concepts/OperatePermissionV2__.ts +1 -1
  299. package/src/concepts/Param__.ts +17 -20
  300. package/src/concepts/ProcessElementV2__.ts +23 -0
  301. package/src/concepts/ProcessElement__.ts +18 -0
  302. package/src/concepts/ProcessV2__.ts +4 -70
  303. package/src/concepts/QueryFromExpression__.ts +2 -2
  304. package/src/concepts/QueryJoinExpression__.ts +2 -2
  305. package/src/concepts/StaticString__.ts +0 -13
  306. package/src/concepts/StructureProperty__.ts +16 -7
  307. package/src/concepts/Structure__.ts +10 -11
  308. package/src/concepts/SubLogic__.ts +1516 -0
  309. package/src/concepts/Theme__.ts +9 -0
  310. package/src/concepts/Transactional__.ts +0 -5
  311. package/src/concepts/TriggerLauncher__.ts +1 -1
  312. package/src/concepts/TypeAnnotation__.ts +17 -0
  313. package/src/concepts/TypeParam__.ts +3 -0
  314. package/src/concepts/ValidationRule__.ts +6 -1
  315. package/src/concepts/ViewElement__.ts +224 -34
  316. package/src/concepts/View__.ts +135 -22
  317. package/src/concepts/basics/stdlib/nasl.processV2.ts +56 -3
  318. package/src/concepts/basics/types/index.ts +1 -1
  319. package/src/concepts/index__.ts +9 -0
  320. package/src/concepts/utils/asserts.ts +595 -0
  321. package/src/concepts/utils/types.ts +53 -0
  322. package/src/generator/genBundleFiles.ts +408 -68
  323. package/src/generator/genMetaData.ts +3 -0
  324. package/src/generator/release-body/body.ts +1 -0
  325. package/src/generator/release-body/utils.ts +159 -55
  326. package/src/natural/genNaturalTS.ts +3 -5
  327. package/src/natural/getContext/index.ts +0 -2
  328. package/src/natural/transformTS2UI.ts +5 -2
  329. package/src/natural/transformTSCode.ts +2 -2
  330. package/src/server/extendBaseNode.ts +11 -2
  331. package/src/server/getLogics.ts +9 -7
  332. package/src/server/getMemberIdentifier.ts +7 -0
  333. package/src/server/getProcessesV2.ts +16 -6
  334. package/src/server/naslServer.ts +133 -30
  335. package/src/server/translator.ts +4 -0
  336. package/src/service/storage/init.ts +52 -97
  337. package/src/templator/genCreateBlock.ts +35 -14
  338. package/src/templator/genCurdEditMultipleKeyBlock.ts +65 -1
  339. package/src/templator/genCurdMultipleKeyBlock.ts +42 -23
  340. package/src/templator/genGetBlock.ts +4 -3
  341. package/src/templator/genListViewBlock.ts +3 -3
  342. package/src/templator/genSelectBlock.ts +4 -2
  343. package/src/templator/genTableBlock.ts +32 -17
  344. package/src/templator/genUpdateBlock.ts +21 -18
  345. package/src/translator/types.ts +0 -4
  346. package/src/translator/utils.ts +0 -6
  347. package/src/utils/delay/index.ts +0 -0
  348. package/src/utils/env.ts +4 -5
  349. package/src/utils/index.ts +16 -4
  350. package/src/utils/time-slicing/controller.ts +1 -0
  351. package/src/utils/types.ts +0 -20
  352. package/test/concepts/validation-rule/__snapshots__/toEmbeddedTS.spec.ts.snap +2 -1
  353. package/ts-worker/bundle.js +1 -1
  354. package/ts-worker/src/index.js +1 -0
  355. package/out/utils/language-cache/constant.d.ts +0 -18
  356. package/out/utils/language-cache/constant.js +0 -35
  357. package/out/utils/language-cache/constant.js.map +0 -1
  358. package/out/utils/language-cache/index.d.ts +0 -2
  359. package/out/utils/language-cache/index.js +0 -19
  360. package/out/utils/language-cache/index.js.map +0 -1
  361. package/out/utils/language-cache/nasl.d.ts +0 -10
  362. package/out/utils/language-cache/nasl.js +0 -98
  363. package/out/utils/language-cache/nasl.js.map +0 -1
  364. package/out/utils/language-cache/types.d.ts +0 -44
  365. package/out/utils/language-cache/types.js +0 -4
  366. package/out/utils/language-cache/types.js.map +0 -1
  367. package/src/utils/language-cache/constant.ts +0 -37
  368. package/src/utils/language-cache/index.ts +0 -2
  369. package/src/utils/language-cache/nasl.ts +0 -83
  370. package/src/utils/language-cache/types.ts +0 -48
@@ -0,0 +1,198 @@
1
+ //================================================================================
2
+ // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
3
+ // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
4
+ //================================================================================
5
+ import { EventPayload, Params } from '../common/EventEmitter';
6
+ import { concept, excludedInJSON, property, getConceptConstructor } from '../decorators';
7
+
8
+ import * as utils from '../utils';
9
+ import { createUUID } from '../utils/create';
10
+ import * as types from './utils/types';
11
+ import * as asserts from './utils/asserts';
12
+ import BaseNode from '../common/BaseNode';
13
+ import Argument from './Argument__';
14
+
15
+ /**
16
+ * 使用注解
17
+ */
18
+ @concept('使用注解')
19
+ export class ApplyAnnotation extends BaseNode {
20
+ /** 类名 */
21
+ static readonly ConceptName: string = 'ApplyAnnotation';
22
+ /**
23
+ * 是否为抽象类
24
+ * 抽象类不能产生 concept: string
25
+ */
26
+ static isAbstract: boolean = false;
27
+ /** 继承链 */
28
+ static readonly inheritanceChain: string[] = ['BaseNode'];
29
+
30
+ /**
31
+ * 产品概念
32
+ */
33
+ @property('concept')
34
+ // @ts-ignore
35
+ readonly concept!: 'ApplyAnnotation';
36
+ /**
37
+ * 注解命名空间
38
+ */
39
+ @property()
40
+ annotationNamespace: string;
41
+
42
+ /**
43
+ * 注解名称
44
+ */
45
+ @property()
46
+ annotationName: string;
47
+
48
+ /**
49
+ * 实际参数
50
+ */
51
+ @property({
52
+ objectRef: 'Argument',
53
+ isArray: true,
54
+ defaultValue: [],
55
+ })
56
+ arguments: Array<Argument> = [];
57
+
58
+ /**
59
+ * @param source 需要合并的部分参数
60
+ */
61
+ constructor(source?: Partial<ApplyAnnotation>) {
62
+ source = Object.assign({}, ApplyAnnotation.getDefaultOptions(), source);
63
+ super(source);
64
+ super.subConstructor(source);
65
+ }
66
+
67
+ static from(source: any, parentNode?: any, parentKey?: string): ApplyAnnotation {
68
+ return super.from(source, parentNode, parentKey) as ApplyAnnotation;
69
+ }
70
+
71
+ /**
72
+ * 插入实际参数
73
+ * @internal
74
+ * @param argumentOptions 实际参数参数
75
+ */
76
+ _insertArgumentAt(argumentOptions: Partial<Argument>, index: number): Argument;
77
+
78
+ /**
79
+ * 插入实际参数
80
+ * @internal
81
+ * @param argument 已有的实际参数实例
82
+ */
83
+ _insertArgumentAt(argument: Argument, index: number): Argument;
84
+
85
+ _insertArgumentAt(options: Partial<Argument> | Argument, index: number) {
86
+ const argumentOptions: any = {};
87
+ const relationOptions = { parentNode: this, parentKey: 'arguments' };
88
+ const Argument = getConceptConstructor('Argument');
89
+ let argument: Argument;
90
+ if (asserts.isArgument(options)) {
91
+ options.ensureDelete(); // 同一实例不支持多处存在
92
+ argument = options;
93
+ Object.assign(argument, relationOptions);
94
+ } else {
95
+ argument = Argument.from(
96
+ {
97
+ ...argumentOptions,
98
+ ...options,
99
+ },
100
+ this,
101
+ 'arguments',
102
+ );
103
+ }
104
+ this.arguments.splice(index, 0, argument);
105
+ return argument;
106
+ }
107
+
108
+ /**
109
+ * 插入实际参数
110
+ * @param argumentOptions 实际参数参数
111
+ */
112
+ insertArgumentAt(argumentOptions: Partial<Argument>, index: number): Argument;
113
+
114
+ /**
115
+ * 插入实际参数
116
+ * @param argument 已有的实际参数实例
117
+ */
118
+ insertArgumentAt(argument: Argument, index: number): Argument;
119
+
120
+ insertArgumentAt(options: Partial<Argument> | Argument, index: number) {
121
+ const node = this._insertArgumentAt(options as any, index);
122
+ node.create({
123
+ index,
124
+ parentNode: this,
125
+ parentKey: 'arguments',
126
+ });
127
+ return node;
128
+ }
129
+
130
+ /**
131
+ * 添加实际参数
132
+ * @internal
133
+ * @param argumentOptions 实际参数参数
134
+ */
135
+ _addArgument(argumentOptions: Partial<Argument>): Argument;
136
+
137
+ /**
138
+ * 添加实际参数
139
+ * @internal
140
+ * @param argument 已有的实际参数实例
141
+ */
142
+ _addArgument(argument: Argument): Argument;
143
+
144
+ _addArgument(options?: Partial<Argument> | Argument) {
145
+ const index = this.arguments.length;
146
+ return this._insertArgumentAt(options as any, index);
147
+ }
148
+
149
+ /**
150
+ * 添加实际参数
151
+ * @param argumentOptions 实际参数参数
152
+ */
153
+ addArgument(argumentOptions: Partial<Argument>): Argument;
154
+
155
+ /**
156
+ * 添加实际参数
157
+ * @param argument 已有的实际参数实例
158
+ */
159
+ addArgument(argument: Argument): Argument;
160
+
161
+ addArgument(options?: Partial<Argument> | Argument) {
162
+ const node = this._addArgument(options as any);
163
+ const index = this.arguments.indexOf(node);
164
+ node.create({
165
+ index,
166
+ parentNode: this,
167
+ parentKey: 'arguments',
168
+ });
169
+ return node;
170
+ }
171
+
172
+ /**
173
+ * 删除实际参数
174
+ * @param argument 已有的实际参数实例
175
+ */
176
+ removeArgument(argument: Argument): void;
177
+
178
+ removeArgument(options: Argument) {
179
+ let argument: Argument = options;
180
+ return argument.delete();
181
+ }
182
+
183
+ //================================================================================
184
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
185
+ // 自动生成的代码已结束。下面可以手动编写。
186
+ //================================================================================
187
+
188
+ //================================================================================
189
+ // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
190
+ // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
191
+ //================================================================================
192
+ }
193
+
194
+ export default ApplyAnnotation;
195
+ //================================================================================
196
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
197
+ // 自动生成的代码已结束。下面可以手动编写。
198
+ //================================================================================
@@ -14,6 +14,10 @@ import type TypeAnnotation from './TypeAnnotation__';
14
14
  import type NewList from './NewList__';
15
15
  import type DefaultValue from './DefaultValue__';
16
16
  import type CallFunction from './CallFunction__';
17
+ import type SubLogic from './SubLogic__';
18
+ import type Logic from './Logic__';
19
+
20
+
17
21
  //================================================================================
18
22
  // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
19
23
  // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
@@ -27,7 +31,6 @@ import * as types from './utils/types';
27
31
  import * as asserts from './utils/asserts';
28
32
 
29
33
  import LogicItem from './LogicItem__';
30
-
31
34
  /**
32
35
  * 实际参数
33
36
  */
@@ -256,6 +259,147 @@ export class Argument extends LogicItem {
256
259
  // 参数是否必填
257
260
  paramRequired?: boolean = undefined;
258
261
 
262
+ /**
263
+ * 设置 子逻辑
264
+ */
265
+ createSubLogic(source: Partial<SubLogic>): SubLogic {
266
+ const SubLogicCreator = getConceptConstructor('SubLogic');
267
+ const subLogic = SubLogicCreator.from(source);
268
+ this.setExpression(subLogic);
269
+ return subLogic;
270
+ }
271
+
272
+ /**
273
+ * 重制Expression 为 空的Identifier
274
+ */
275
+ resetExpression() {
276
+ const Identifier = getConceptConstructor('Identifier');
277
+ this.setExpression(Identifier.from({}));
278
+ }
279
+
280
+ static getFormatType(baseType: TypeAnnotation, __TypeArguments: TypeAnnotation[], completeTypesName: string[]): Partial<TypeAnnotation> {
281
+ // 是否为真实为 类型: 有命名空间和类型名
282
+ const isRealType = baseType.typeNamespace && baseType.typeName;
283
+ let formatType: Partial<TypeAnnotation> = baseType;
284
+ if (!isRealType) {
285
+ // 如果不是真实类型,那么就是泛型,需要 先通过 __TypeArguments 获取具体的下标位置
286
+ // 再通过 completeTypesName 获取具体的类型
287
+ // 如果具体类型也为 范型,则默认赋值为String类型
288
+ const typeIndex = completeTypesName?.indexOf(baseType.typeName);
289
+ const realType = __TypeArguments?.[typeIndex];
290
+ const isRealArgumentType = realType?.typeNamespace && realType?.typeName;
291
+ if (realType && isRealArgumentType) {
292
+ formatType = realType;
293
+ } else {
294
+ formatType = {
295
+ typeName: 'String',
296
+ typeNamespace: 'nasl.core',
297
+ typeKind: "primitive",
298
+ concept: 'TypeAnnotation',
299
+ } as Partial<TypeAnnotation>;
300
+ }
301
+ }
302
+ return formatType;
303
+ }
304
+
305
+
306
+ /**
307
+ * 通过签名创建 SubLogic
308
+ */
309
+ fromSubLogicBySignature(typeAnnotation: TypeAnnotation): SubLogic {
310
+ if (!asserts.isTypeAnnotation(typeAnnotation)) return;
311
+ const parentLogic = this.getAncestor('Logic');
312
+ const callLogic = this.getAncestor('CallLogic');
313
+ if (!asserts.isCallLogic(callLogic)) return;
314
+
315
+ const { __TypeArguments } = callLogic;
316
+ const calleeNode = callLogic.getCallNode();
317
+
318
+ if (!asserts.isLogic(calleeNode)) return;
319
+ const { completeTypeParams } = calleeNode;
320
+ const completeTypesName = completeTypeParams?.map?.((type) => type.name) || [];
321
+
322
+ const Param = getConceptConstructor('Param');
323
+ const TypeAnnotation = getConceptConstructor('TypeAnnotation');
324
+ const Return = getConceptConstructor('Return');
325
+
326
+ // 获取类型签名中的 入参签名,并初始化 Params
327
+ const paramTypes = (typeAnnotation?.typeArguments || []).map(
328
+ (item, index) => {
329
+ const formatType = Argument.getFormatType(item, __TypeArguments, completeTypesName);
330
+ return Param.from({
331
+ typeAnnotation: TypeAnnotation.from(formatType?.toJSON?.() || formatType),
332
+ name: `param${index + 1}`
333
+ })
334
+ }
335
+ )
336
+ // 获取类型签名中的 出参签名,并初始化 Returns
337
+ const returnTypes = (typeAnnotation?.returnType || []).map(
338
+ (item) => {
339
+ const formatType = Argument.getFormatType(item, __TypeArguments, completeTypesName);
340
+ return Return.from({
341
+ typeAnnotation: TypeAnnotation.from(formatType?.toJSON?.() || formatType),
342
+ name: `result`
343
+ })
344
+ }
345
+ )
346
+
347
+ if (!asserts.isLogic(parentLogic)) return;
348
+ const uniqueName = parentLogic.getSubLogicUniqueName();
349
+ return this.createSubLogic({
350
+ name: uniqueName,
351
+ params: paramTypes,
352
+ returns: returnTypes
353
+ });
354
+ }
355
+
356
+ /**
357
+ * 通过签名创建 具名全局逻辑
358
+ */
359
+ fromNamedGlobalLogicBySignature(typeAnnotation: TypeAnnotation, logicName: string): Logic {
360
+ if (!asserts.isTypeAnnotation(typeAnnotation)) return;
361
+ const callLogic = this.getAncestor('CallLogic');
362
+ if (!asserts.isCallLogic(callLogic)) return;
363
+
364
+ const { __TypeArguments } = callLogic;
365
+ const calleeNode = callLogic.getCallNode();
366
+
367
+ if (!asserts.isLogic(calleeNode)) return;
368
+ const { completeTypeParams } = calleeNode;
369
+ const completeTypesName = completeTypeParams?.map?.((type) => type.name) || [];
370
+
371
+ const Param = getConceptConstructor('Param');
372
+ const TypeAnnotation = getConceptConstructor('TypeAnnotation');
373
+ const Return = getConceptConstructor('Return');
374
+
375
+ // 获取类型签名中的 入参签名,并初始化 Params
376
+ const paramTypes = (typeAnnotation?.typeArguments || []).map(
377
+ (item, index) => {
378
+ const formatType = Argument.getFormatType(item, __TypeArguments, completeTypesName);
379
+ return Param.from({
380
+ typeAnnotation: TypeAnnotation.from(formatType?.toJSON?.() || formatType),
381
+ name: `param${index + 1}`
382
+ })
383
+ }
384
+ )
385
+ // 获取类型签名中的 出参签名,并初始化 Returns
386
+ const returnTypes = (typeAnnotation?.returnType || []).map(
387
+ (item) => {
388
+ const formatType = Argument.getFormatType(item, __TypeArguments, completeTypesName);
389
+ return Return.from({
390
+ typeAnnotation: TypeAnnotation.from(formatType?.toJSON?.() || formatType),
391
+ name: `result`
392
+ })
393
+ }
394
+ )
395
+
396
+ return this.rootNode.addLogic({
397
+ name: logicName,
398
+ params: paramTypes,
399
+ returns: returnTypes
400
+ });
401
+ }
402
+
259
403
  //================================================================================
260
404
  // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
261
405
  // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓