@lcap/nasl 2.20.0-beta.2 → 2.20.0

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 (323) hide show
  1. package/out/automate/engine/index.d.ts +1 -1
  2. package/out/automate/engine/index.js +2 -3
  3. package/out/automate/engine/index.js.map +1 -1
  4. package/out/automate/engine/uniqueName.d.ts +1 -1
  5. package/out/automate/engine/uniqueName.js +2 -2
  6. package/out/automate/engine/uniqueName.js.map +1 -1
  7. package/out/automate/engine/utils.js +4 -1
  8. package/out/automate/engine/utils.js.map +1 -1
  9. package/out/automate/template/myProcess.d.ts +1 -1
  10. package/out/automate/template/myProcess.js +2 -2
  11. package/out/automate/template/myProcess.js.map +1 -1
  12. package/out/bak/translator.js +14 -22
  13. package/out/bak/translator.js.map +1 -1
  14. package/out/common/BaseNode.js +4 -1
  15. package/out/common/BaseNode.js.map +1 -1
  16. package/out/common/Command.d.ts +1 -0
  17. package/out/common/Command.js +5 -1
  18. package/out/common/Command.js.map +1 -1
  19. package/out/concepts/App__.d.ts +4 -0
  20. package/out/concepts/App__.js +30 -6
  21. package/out/concepts/App__.js.map +1 -1
  22. package/out/concepts/Assignee__.js +4 -3
  23. package/out/concepts/Assignee__.js.map +1 -1
  24. package/out/concepts/BatchAssignment__.js +3 -3
  25. package/out/concepts/BatchAssignment__.js.map +1 -1
  26. package/out/concepts/BindAttribute__.d.ts +7 -0
  27. package/out/concepts/BindAttribute__.js +270 -39
  28. package/out/concepts/BindAttribute__.js.map +1 -1
  29. package/out/concepts/BindDirective__.d.ts +7 -0
  30. package/out/concepts/BindDirective__.js +215 -17
  31. package/out/concepts/BindDirective__.js.map +1 -1
  32. package/out/concepts/BindStyle__.d.ts +7 -0
  33. package/out/concepts/BindStyle__.js +194 -4
  34. package/out/concepts/BindStyle__.js.map +1 -1
  35. package/out/concepts/CallFunction__.js +22 -8
  36. package/out/concepts/CallFunction__.js.map +1 -1
  37. package/out/concepts/CallInterface__.js +3 -2
  38. package/out/concepts/CallInterface__.js.map +1 -1
  39. package/out/concepts/CallLogic__.d.ts +3 -0
  40. package/out/concepts/CallLogic__.js +78 -89
  41. package/out/concepts/CallLogic__.js.map +1 -1
  42. package/out/concepts/CallQueryComponent__.js +20 -3
  43. package/out/concepts/CallQueryComponent__.js.map +1 -1
  44. package/out/concepts/ConfigGroup__.d.ts +1 -0
  45. package/out/concepts/ConfigGroup__.js +13 -0
  46. package/out/concepts/ConfigGroup__.js.map +1 -1
  47. package/out/concepts/ConfigProperty__.d.ts +19 -0
  48. package/out/concepts/ConfigProperty__.js +61 -0
  49. package/out/concepts/ConfigProperty__.js.map +1 -1
  50. package/out/concepts/Configuration__.d.ts +1 -0
  51. package/out/concepts/Configuration__.js +13 -0
  52. package/out/concepts/Configuration__.js.map +1 -1
  53. package/out/concepts/DataSource__.js.map +1 -1
  54. package/out/concepts/Destination__.d.ts +1 -0
  55. package/out/concepts/Destination__.js +61 -7
  56. package/out/concepts/Destination__.js.map +1 -1
  57. package/out/concepts/EntityProperty__.js +9 -1
  58. package/out/concepts/EntityProperty__.js.map +1 -1
  59. package/out/concepts/EnumItem__.d.ts +5 -5
  60. package/out/concepts/EnumItem__.js +6 -6
  61. package/out/concepts/Enum__.d.ts +20 -19
  62. package/out/concepts/Enum__.js +28 -1
  63. package/out/concepts/Enum__.js.map +1 -1
  64. package/out/concepts/ExternalDestination__.d.ts +1 -0
  65. package/out/concepts/ExternalDestination__.js +21 -3
  66. package/out/concepts/ExternalDestination__.js.map +1 -1
  67. package/out/concepts/ForEachStatement__.js +2 -0
  68. package/out/concepts/ForEachStatement__.js.map +1 -1
  69. package/out/concepts/Frontend__.d.ts +2 -1
  70. package/out/concepts/Frontend__.js.map +1 -1
  71. package/out/concepts/Identifier__.js +16 -5
  72. package/out/concepts/Identifier__.js.map +1 -1
  73. package/out/concepts/InterfaceParam__.js +9 -1
  74. package/out/concepts/InterfaceParam__.js.map +1 -1
  75. package/out/concepts/JSBlock__.js +5 -1
  76. package/out/concepts/JSBlock__.js.map +1 -1
  77. package/out/concepts/Logic__.d.ts +79 -79
  78. package/out/concepts/Logic__.js +16 -3
  79. package/out/concepts/Logic__.js.map +1 -1
  80. package/out/concepts/Match__.d.ts +0 -3
  81. package/out/concepts/Match__.js +11 -66
  82. package/out/concepts/Match__.js.map +1 -1
  83. package/out/concepts/MemberExpression__.js +9 -0
  84. package/out/concepts/MemberExpression__.js.map +1 -1
  85. package/out/concepts/Module__.d.ts +16 -0
  86. package/out/concepts/Module__.js +43 -0
  87. package/out/concepts/Module__.js.map +1 -1
  88. package/out/concepts/NewComposite__.d.ts +2 -4
  89. package/out/concepts/NewComposite__.js +91 -126
  90. package/out/concepts/NewComposite__.js.map +1 -1
  91. package/out/concepts/NewList__.d.ts +1 -0
  92. package/out/concepts/NewList__.js +22 -2
  93. package/out/concepts/NewList__.js.map +1 -1
  94. package/out/concepts/NewMap__.d.ts +1 -0
  95. package/out/concepts/NewMap__.js +43 -11
  96. package/out/concepts/NewMap__.js.map +1 -1
  97. package/out/concepts/OqlQueryComponent__.js +40 -12
  98. package/out/concepts/OqlQueryComponent__.js.map +1 -1
  99. package/out/concepts/Param__.js +10 -2
  100. package/out/concepts/Param__.js.map +1 -1
  101. package/out/concepts/ProcessElement__.js +2 -1
  102. package/out/concepts/ProcessElement__.js.map +1 -1
  103. package/out/concepts/ProcessOutcome__.js +1 -1
  104. package/out/concepts/ProcessOutcome__.js.map +1 -1
  105. package/out/concepts/ProcessOutcomes__.js +1 -1
  106. package/out/concepts/ProcessOutcomes__.js.map +1 -1
  107. package/out/concepts/Process__.js +1 -0
  108. package/out/concepts/Process__.js.map +1 -1
  109. package/out/concepts/Return__.js +10 -2
  110. package/out/concepts/Return__.js.map +1 -1
  111. package/out/concepts/StringInterpolation__.js +14 -2
  112. package/out/concepts/StringInterpolation__.js.map +1 -1
  113. package/out/concepts/StringLiteral__.js +6 -6
  114. package/out/concepts/StringLiteral__.js.map +1 -1
  115. package/out/concepts/StructureProperty__.js +9 -1
  116. package/out/concepts/StructureProperty__.js.map +1 -1
  117. package/out/concepts/TypeAnnotation__.d.ts +6 -3
  118. package/out/concepts/TypeAnnotation__.js +67 -13
  119. package/out/concepts/TypeAnnotation__.js.map +1 -1
  120. package/out/concepts/ValidationRule__.d.ts +1 -0
  121. package/out/concepts/ValidationRule__.js +53 -0
  122. package/out/concepts/ValidationRule__.js.map +1 -1
  123. package/out/concepts/Variable__.js +9 -1
  124. package/out/concepts/Variable__.js.map +1 -1
  125. package/out/concepts/ViewElement__.js +17 -1
  126. package/out/concepts/ViewElement__.js.map +1 -1
  127. package/out/concepts/View__.d.ts +1 -3
  128. package/out/concepts/View__.js +22 -11
  129. package/out/concepts/View__.js.map +1 -1
  130. package/out/concepts/basics/stdlib/nasl.collection.js +6 -1
  131. package/out/concepts/basics/stdlib/nasl.collection.js.map +1 -1
  132. package/out/concepts/basics/stdlib/nasl.configuration.js +3 -0
  133. package/out/concepts/basics/stdlib/nasl.configuration.js.map +1 -1
  134. package/out/concepts/basics/stdlib/nasl.core.d.ts +2 -0
  135. package/out/concepts/basics/stdlib/nasl.core.js +34 -0
  136. package/out/concepts/basics/stdlib/nasl.core.js.map +1 -1
  137. package/out/concepts/basics/stdlib/nasl.util.js +4 -2
  138. package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
  139. package/out/concepts/basics/types/index.d.ts +1 -0
  140. package/out/concepts/basics/types/index.js +3 -1
  141. package/out/concepts/basics/types/index.js.map +1 -1
  142. package/out/concepts/index__.d.ts +0 -1
  143. package/out/concepts/index__.js +0 -1
  144. package/out/concepts/index__.js.map +1 -1
  145. package/out/enums/KEYWORDS.js +8 -0
  146. package/out/enums/KEYWORDS.js.map +1 -1
  147. package/out/generator/genBundleFiles.js +24 -5
  148. package/out/generator/genBundleFiles.js.map +1 -1
  149. package/out/generator/genReleaseBody.d.ts +2 -3
  150. package/out/generator/genReleaseBody.js +97 -23
  151. package/out/generator/genReleaseBody.js.map +1 -1
  152. package/out/generator/permission.d.ts +2 -10
  153. package/out/generator/permission.js +27 -14
  154. package/out/generator/permission.js.map +1 -1
  155. package/out/server/entity2LogicNamespace.js +2 -20
  156. package/out/server/entity2LogicNamespace.js.map +1 -1
  157. package/out/server/extendBaseNode.js +16 -5
  158. package/out/server/extendBaseNode.js.map +1 -1
  159. package/out/server/formatTsUtils.d.ts +2 -1
  160. package/out/server/formatTsUtils.js +40 -10
  161. package/out/server/formatTsUtils.js.map +1 -1
  162. package/out/server/getLogics.d.ts +2 -2
  163. package/out/server/getLogics.js +3 -3
  164. package/out/server/getLogics.js.map +1 -1
  165. package/out/server/getMemberIdentifier.d.ts +1 -0
  166. package/out/server/getMemberIdentifier.js +27 -1
  167. package/out/server/getMemberIdentifier.js.map +1 -1
  168. package/out/server/index.js +1 -0
  169. package/out/server/index.js.map +1 -1
  170. package/out/server/naslServer.d.ts +7 -1
  171. package/out/server/naslServer.js +519 -46
  172. package/out/server/naslServer.js.map +1 -1
  173. package/out/server/translator.js +109 -33
  174. package/out/server/translator.js.map +1 -1
  175. package/out/service/storage/init.js +21 -1
  176. package/out/service/storage/init.js.map +1 -1
  177. package/out/templator/genCreateBlock.js +1 -3
  178. package/out/templator/genCreateBlock.js.map +1 -1
  179. package/out/templator/genCurdEditMultipleKeyBlock.js +1 -3
  180. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  181. package/out/templator/genCurdMultipleKeyBlock.js +2 -4
  182. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  183. package/out/templator/genGetBlock.js +1 -1
  184. package/out/templator/genGetBlock.js.map +1 -1
  185. package/out/templator/genGridViewBlock.js +2 -2
  186. package/out/templator/genGridViewBlock.js.map +1 -1
  187. package/out/templator/genListViewBlock.js +7 -1
  188. package/out/templator/genListViewBlock.js.map +1 -1
  189. package/out/templator/genSelectBlock.js +1 -1
  190. package/out/templator/genSelectBlock.js.map +1 -1
  191. package/out/templator/genTableBlock.js +2 -2
  192. package/out/templator/genTableBlock.js.map +1 -1
  193. package/out/templator/genUpdateBlock.js +2 -3
  194. package/out/templator/genUpdateBlock.js.map +1 -1
  195. package/out/utils/traverse.js +8 -2
  196. package/out/utils/traverse.js.map +1 -1
  197. package/package.json +2 -2
  198. package/sandbox/stdlib/dist/nasl.logging.js +0 -0
  199. package/sandbox/stdlib/dist/nasl.util.js +0 -0
  200. package/sandbox/stdlib/nasl.collection.ts +1 -0
  201. package/sandbox/stdlib/nasl.core.ts +34 -0
  202. package/sandbox/stdlib/nasl.oql.ts +71 -15
  203. package/sandbox/stdlib/nasl.util.ts +9 -3
  204. package/src/automate/engine/dist/index.dev.js +517 -0
  205. package/src/automate/engine/index.js +2 -3
  206. package/src/automate/engine/uniqueName.js +2 -2
  207. package/src/automate/engine/utils.js +4 -2
  208. package/src/automate/template/myProcess.js +2 -2
  209. package/src/bak/translator.js +16 -25
  210. package/src/common/BaseNode.ts +3 -1
  211. package/src/common/Command.ts +4 -0
  212. package/src/common/dist/BaseNode.js +1101 -0
  213. package/src/concepts/App__.ts +36 -7
  214. package/src/concepts/Assignee__.ts +4 -3
  215. package/src/concepts/BatchAssignment__.ts +3 -3
  216. package/src/concepts/BindAttribute__.ts +299 -38
  217. package/src/concepts/BindDirective__.ts +204 -31
  218. package/src/concepts/BindStyle__.ts +187 -24
  219. package/src/concepts/CallFunction__.ts +55 -10
  220. package/src/concepts/CallInterface__.ts +3 -2
  221. package/src/concepts/CallLogic__.ts +110 -90
  222. package/src/concepts/CallQueryComponent__.ts +18 -3
  223. package/src/concepts/ConfigGroup__.ts +17 -4
  224. package/src/concepts/ConfigProperty__.ts +70 -4
  225. package/src/concepts/Configuration__.ts +14 -5
  226. package/src/concepts/DataSource__.ts +4 -1
  227. package/src/concepts/Destination__.ts +61 -7
  228. package/src/concepts/EntityProperty__.ts +7 -1
  229. package/src/concepts/EnumItem__.ts +6 -6
  230. package/src/concepts/Enum__.ts +22 -19
  231. package/src/concepts/ExternalDestination__.ts +28 -8
  232. package/src/concepts/ForEachStatement__.ts +2 -0
  233. package/src/concepts/Frontend__.ts +2 -1
  234. package/src/concepts/Identifier__.ts +16 -5
  235. package/src/concepts/InterfaceParam__.ts +7 -1
  236. package/src/concepts/JSBlock__.ts +3 -2
  237. package/src/concepts/Logic__.ts +95 -83
  238. package/src/concepts/Match__.ts +31 -67
  239. package/src/concepts/MemberExpression__.ts +6 -0
  240. package/src/concepts/Module__.ts +57 -0
  241. package/src/concepts/NewComposite__.ts +95 -140
  242. package/src/concepts/NewList__.ts +23 -2
  243. package/src/concepts/NewMap__.ts +48 -24
  244. package/src/concepts/OqlQueryComponent__.ts +40 -20
  245. package/src/concepts/Param__.ts +178 -176
  246. package/src/concepts/ProcessElement__.ts +2 -1
  247. package/src/concepts/ProcessOutcome__.ts +1 -1
  248. package/src/concepts/ProcessOutcomes__.ts +1 -1
  249. package/src/concepts/Process__.ts +1 -0
  250. package/src/concepts/Return__.ts +8 -2
  251. package/src/concepts/StringInterpolation__.ts +19 -7
  252. package/src/concepts/StringLiteral__.ts +7 -6
  253. package/src/concepts/StructureProperty__.ts +7 -1
  254. package/src/concepts/TypeAnnotation__.ts +101 -14
  255. package/src/concepts/ValidationRule__.ts +58 -9
  256. package/src/concepts/Variable__.ts +11 -1
  257. package/src/concepts/ViewElement__.ts +39 -2
  258. package/src/concepts/View__.ts +26 -14
  259. package/src/concepts/basics/stdlib/dist/nasl.util.js +1602 -0
  260. package/src/concepts/basics/stdlib/dist/reference2TypeAnnotationList.js +24 -0
  261. package/src/concepts/basics/stdlib/nasl.collection.ts +6 -1
  262. package/src/concepts/basics/stdlib/nasl.configuration.ts +3 -0
  263. package/src/concepts/basics/stdlib/nasl.core.ts +33 -2
  264. package/src/concepts/basics/stdlib/nasl.util.ts +4 -2
  265. package/src/concepts/basics/types/index.ts +1 -0
  266. package/src/concepts/dist/BindAttribute__.js +795 -0
  267. package/src/concepts/dist/BindEvent__.js +732 -0
  268. package/src/concepts/dist/CallFunction__.js +527 -0
  269. package/src/concepts/dist/CallLogic__.js +932 -0
  270. package/src/concepts/dist/Destination__.js +708 -0
  271. package/src/concepts/dist/ExternalDestination__.js +298 -0
  272. package/src/concepts/dist/Identifier__.js +311 -0
  273. package/src/concepts/dist/StringInterpolation__.js +231 -0
  274. package/src/concepts/dist/TypeAnnotation__.js +834 -0
  275. package/src/concepts/dist/ViewElement__.js +1692 -0
  276. package/src/concepts/dist/View__.js +1601 -0
  277. package/src/concepts/index__.ts +0 -1
  278. package/src/enums/KEYWORDS.ts +8 -0
  279. package/src/generator/dist/genBundleFiles.js +261 -0
  280. package/src/generator/dist/genMetaData.js +245 -0
  281. package/src/generator/dist/permission.js +405 -0
  282. package/src/generator/genBundleFiles.ts +24 -5
  283. package/src/generator/genReleaseBody.ts +75 -30
  284. package/src/generator/permission.ts +31 -15
  285. package/src/server/entity2LogicNamespace.ts +2 -20
  286. package/src/server/extendBaseNode.ts +15 -5
  287. package/src/server/formatTsUtils.ts +41 -10
  288. package/src/server/getLogics.ts +4 -4
  289. package/src/server/getMemberIdentifier.ts +27 -1
  290. package/src/server/index.ts +2 -0
  291. package/src/server/naslServer.ts +520 -48
  292. package/src/server/translator.ts +96 -34
  293. package/src/service/storage/dist/init.js +579 -0
  294. package/src/service/storage/init.ts +22 -2
  295. package/src/templator/dist/genEditTableBlock.js +204 -0
  296. package/src/templator/dist/genGridViewBlock.js +265 -0
  297. package/src/templator/dist/genListViewBlock.js +84 -0
  298. package/src/templator/dist/genTableBlock.js +209 -0
  299. package/src/templator/dist/utils.js +527 -0
  300. package/src/templator/genCreateBlock.ts +1 -3
  301. package/src/templator/genCurdEditMultipleKeyBlock.ts +1 -3
  302. package/src/templator/genCurdMultipleKeyBlock.ts +2 -4
  303. package/src/templator/genGetBlock.ts +1 -1
  304. package/src/templator/genGridViewBlock.ts +3 -4
  305. package/src/templator/genListViewBlock.ts +9 -3
  306. package/src/templator/genSelectBlock.ts +1 -1
  307. package/src/templator/genTableBlock.ts +3 -3
  308. package/src/templator/genUpdateBlock.ts +2 -3
  309. package/src/utils/traverse.ts +10 -2
  310. package/ts-worker/lib/tsserver.js +10 -2
  311. package/ts-worker/package.json +1 -0
  312. package/ts-worker/webpack.config.js +11 -2
  313. package/out/concepts/ConstructArgument__.d.ts +0 -40
  314. package/out/concepts/ConstructArgument__.js +0 -108
  315. package/out/concepts/ConstructArgument__.js.map +0 -1
  316. package/out/concepts/Construct__.d.ts +0 -189
  317. package/out/concepts/Construct__.js +0 -340
  318. package/out/concepts/Construct__.js.map +0 -1
  319. package/out/templator/sql-parser/index.d.ts +0 -1
  320. package/out/templator/sql-parser/index.js +0 -228
  321. package/out/templator/sql-parser/index.js.map +0 -1
  322. package/out/templator/sql-parser/parser.js +0 -26664
  323. package/out/templator/sql-parser/parser.js.map +0 -1
@@ -257,7 +257,7 @@ export class StringInterpolation extends LogicItem {
257
257
 
258
258
  exchangeLogicItem(target: LogicItem, logicitem: LogicItem) {
259
259
  const idx = this.expressions.findIndex(exp => exp === target);
260
- if(idx !== -1) {
260
+ if (idx !== -1) {
261
261
  const exps = this.expressions.slice();
262
262
  exps.splice(idx, 1, logicitem);
263
263
  this.setExpressions(exps);
@@ -265,29 +265,41 @@ export class StringInterpolation extends LogicItem {
265
265
  }
266
266
 
267
267
  toVue(options?: ElementToVueOptions): string {
268
- return this.expressions.map(exp => exp.toVue(options)).join(' + ');
268
+ return this.expressions.map((exp: any) => {
269
+ let expCode = exp.toVue();
270
+ if (options?.finalCode !== false) {
271
+ const expTypeAnnotation = exp.typeAnnotation || exp.__TypeAnnotation;
272
+ expCode = `$utils['ToString'](${expCode}, '${expTypeAnnotation?.sortedTypeKey}')`;
273
+ }
274
+ return expCode;
275
+ }).join(' + ');
269
276
  }
270
277
  toUI(): string {
271
278
  return this.expressions.map(exp => exp.toUI()).join(' + ');
272
279
  }
273
280
 
274
281
  toJS(): string {
275
- return this.expressions.map(exp => exp.toJS()).join(' + ');
282
+ if (!this.expressions.length)
283
+ return '';
284
+ return this.expressions.map((exp: any) => {
285
+ const expTypeAnnotation = exp.typeAnnotation || exp.__TypeAnnotation;
286
+ return `this.$utils['ToString'](${exp.toJS()}, '${expTypeAnnotation?.sortedTypeKey}')`;
287
+ }).join(' + ');
276
288
  }
277
289
 
278
- toBrief(): string {
290
+ toBrief(): string {
279
291
  return this.expressions.map(exp => exp.toJS()).join(' + ');
280
292
  }
281
-
293
+
282
294
  @withSourceMap()
283
295
  toEmbeddedTS(state?: TranslatorState): string {
284
296
  let code = 'nasl.util.stringInterpolation(';
285
297
  this.expressions.forEach((exp, idx) => {
286
298
  code += exp.toEmbeddedTS(shiftState(state, code));
287
- if(idx !== this.expressions.length - 1){
299
+ if (idx !== this.expressions.length - 1) {
288
300
  code += ', ';
289
301
  }
290
-
302
+
291
303
  });
292
304
  code += ')\n';
293
305
  return code;
@@ -59,16 +59,16 @@ export class StringLiteral extends LogicItem {
59
59
  toVue(options?: ElementToVueOptions): string {
60
60
  let code = '';
61
61
  if (typeof this.value === 'string') {
62
- code = `'${this.value}'`;
62
+ code = `\`${this.value}\``;
63
63
  if (options?.finalCode !== false) {
64
- code = `'${this.value.replace(/['"`\\]/g, (m) => {
64
+ code = `\`${this.value.replace(/['"`\\]/g, (m) => {
65
65
  const escape = '\\\\';
66
66
  if (m === '\\') {
67
67
  return `${escape}${escape}`;
68
68
  } else {
69
69
  return `${escape}${m}`;
70
70
  }
71
- })}'`;
71
+ })}\``;
72
72
  }
73
73
  }
74
74
  return code;
@@ -77,7 +77,7 @@ export class StringLiteral extends LogicItem {
77
77
  toUI(): string {
78
78
  let code = '';
79
79
  if (typeof this.value === 'string') {
80
- code = `'${this.value}'`;
80
+ code = `\`${this.value}\``;
81
81
  }
82
82
  return code;
83
83
  }
@@ -85,12 +85,13 @@ export class StringLiteral extends LogicItem {
85
85
  toJS(): string {
86
86
  let code = ``;
87
87
  if (typeof this.value === 'string') {
88
- code += `'${this.value.replace(/['"`\\]/g, (m) => `\\${m}`)}'`;
88
+ code += `\`${this.value.replace(/['"`\\]/g, (m) => `\\${m}`)}\``;
89
89
  }
90
90
  return code;
91
91
  }
92
+
92
93
  toBrief(): string {
93
- return `'${this.value}'`
94
+ return `\`${this.value}\``;
94
95
  }
95
96
 
96
97
  @withSourceMap()
@@ -226,11 +226,13 @@ export class StructureProperty extends BaseNode {
226
226
  //================================================================================
227
227
 
228
228
  get hasChildren() {
229
- const { typeKind, typeNamespace } = this.typeAnnotation;
229
+ const { typeKind, typeName, typeNamespace } = this.typeAnnotation;
230
230
  if (typeKind === 'reference' || typeKind === 'generic') {
231
231
  if (typeNamespace.endsWith('.enums'))
232
232
  return null;
233
233
  return [{}];
234
+ } else if (typeNamespace === 'nasl.core' && ['String', 'Text', 'Email'].includes(typeName)) {
235
+ return [{}];
234
236
  }
235
237
  return null;
236
238
  }
@@ -274,6 +276,10 @@ export class StructureProperty extends BaseNode {
274
276
  }
275
277
  }
276
278
  completionChildren = properties;
279
+ } else if (typeNamespace === 'nasl.core' && ['String', 'Text', 'Email'].includes(typeName)) {
280
+ const node = getNaslNodeByNodeCallee(typeNamespace, typeName);
281
+ const properties = ((node as Structure)?.properties && [...(node as Structure)?.properties]) || [];
282
+ completionChildren = properties;
277
283
  } else {
278
284
  completionChildren = [];
279
285
  }
@@ -121,6 +121,8 @@ export class TypeAnnotation extends BaseNode {
121
121
  @property()
122
122
  ruleMap: Object = undefined;
123
123
 
124
+
125
+
124
126
  /**
125
127
  * @param source 需要合并的部分参数
126
128
  */
@@ -157,6 +159,10 @@ export class TypeAnnotation extends BaseNode {
157
159
  });
158
160
  }
159
161
 
162
+
163
+
164
+
165
+
160
166
  /**
161
167
  * 插入类型标注
162
168
  * @internal
@@ -189,6 +195,8 @@ export class TypeAnnotation extends BaseNode {
189
195
  return typeAnnotation;
190
196
  }
191
197
 
198
+
199
+
192
200
  /**
193
201
  * 插入类型标注
194
202
  * @param typeAnnotationOptions 类型标注参数
@@ -211,6 +219,8 @@ export class TypeAnnotation extends BaseNode {
211
219
  return node;
212
220
  }
213
221
 
222
+
223
+
214
224
  /**
215
225
  * 添加类型标注
216
226
  * @internal
@@ -230,6 +240,8 @@ export class TypeAnnotation extends BaseNode {
230
240
  return this._insertTypeAnnotationInTypeArgumentsAt(options as any, index);
231
241
  }
232
242
 
243
+
244
+
233
245
  /**
234
246
  * 添加类型标注
235
247
  * @param typeAnnotationOptions 类型标注参数
@@ -253,6 +265,8 @@ export class TypeAnnotation extends BaseNode {
253
265
  return node;
254
266
  }
255
267
 
268
+
269
+
256
270
  /**
257
271
  * 插入类型标注
258
272
  * @internal
@@ -285,6 +299,8 @@ export class TypeAnnotation extends BaseNode {
285
299
  return typeAnnotation;
286
300
  }
287
301
 
302
+
303
+
288
304
  /**
289
305
  * 插入类型标注
290
306
  * @param typeAnnotationOptions 类型标注参数
@@ -307,6 +323,8 @@ export class TypeAnnotation extends BaseNode {
307
323
  return node;
308
324
  }
309
325
 
326
+
327
+
310
328
  /**
311
329
  * 添加类型标注
312
330
  * @internal
@@ -326,6 +344,8 @@ export class TypeAnnotation extends BaseNode {
326
344
  return this._insertTypeAnnotationInReturnTypeAt(options as any, index);
327
345
  }
328
346
 
347
+
348
+
329
349
  /**
330
350
  * 添加类型标注
331
351
  * @param typeAnnotationOptions 类型标注参数
@@ -349,6 +369,11 @@ export class TypeAnnotation extends BaseNode {
349
369
  return node;
350
370
  }
351
371
 
372
+
373
+
374
+
375
+
376
+
352
377
  /**
353
378
  * 插入数据结构属性
354
379
  * @internal
@@ -381,6 +406,8 @@ export class TypeAnnotation extends BaseNode {
381
406
  return structureProperty;
382
407
  }
383
408
 
409
+
410
+
384
411
  /**
385
412
  * 插入数据结构属性
386
413
  * @param structurePropertyOptions 数据结构属性参数
@@ -403,6 +430,8 @@ export class TypeAnnotation extends BaseNode {
403
430
  return node;
404
431
  }
405
432
 
433
+
434
+
406
435
  /**
407
436
  * 添加数据结构属性
408
437
  * @internal
@@ -422,6 +451,8 @@ export class TypeAnnotation extends BaseNode {
422
451
  return this._insertStructurePropertyAt(options as any, index);
423
452
  }
424
453
 
454
+
455
+
425
456
  /**
426
457
  * 添加数据结构属性
427
458
  * @param structurePropertyOptions 数据结构属性参数
@@ -445,6 +476,9 @@ export class TypeAnnotation extends BaseNode {
445
476
  return node;
446
477
  }
447
478
 
479
+
480
+
481
+
448
482
  /**
449
483
  * 删除类型标注
450
484
  * @param typeAnnotation 已有的类型标注实例
@@ -452,10 +486,12 @@ export class TypeAnnotation extends BaseNode {
452
486
  removeTypeAnnotationInTypeArguments(typeAnnotation: TypeAnnotation): void;
453
487
 
454
488
  removeTypeAnnotationInTypeArguments(options: TypeAnnotation) {
455
- const typeAnnotation: TypeAnnotation = options;
489
+ let typeAnnotation: TypeAnnotation = options;
456
490
  return typeAnnotation.delete();
457
491
  }
458
492
 
493
+
494
+
459
495
  /**
460
496
  * 删除类型标注
461
497
  * @param typeAnnotation 已有的类型标注实例
@@ -463,7 +499,7 @@ export class TypeAnnotation extends BaseNode {
463
499
  removeTypeAnnotationInReturnType(typeAnnotation: TypeAnnotation): void;
464
500
 
465
501
  removeTypeAnnotationInReturnType(options: TypeAnnotation) {
466
- const typeAnnotation: TypeAnnotation = options;
502
+ let typeAnnotation: TypeAnnotation = options;
467
503
  return typeAnnotation.delete();
468
504
  }
469
505
 
@@ -490,6 +526,8 @@ export class TypeAnnotation extends BaseNode {
490
526
  return params;
491
527
  }
492
528
 
529
+
530
+
493
531
  /**
494
532
  * 删除数据结构属性
495
533
  * @param structureProperty 已有的数据结构属性实例
@@ -497,7 +535,7 @@ export class TypeAnnotation extends BaseNode {
497
535
  removeStructureProperty(structureProperty: StructureProperty): void;
498
536
 
499
537
  removeStructureProperty(options: StructureProperty) {
500
- const structureProperty: StructureProperty = options;
538
+ let structureProperty: StructureProperty = options;
501
539
  return structureProperty.delete();
502
540
  }
503
541
 
@@ -558,7 +596,7 @@ export class TypeAnnotation extends BaseNode {
558
596
  return `${this.typeNamespace}.${this.typeName}<${(this.typeArguments || []).map((arg) => arg.typeKey)}>`;
559
597
  } else if (this.typeKind === 'anonymousStructure') {
560
598
  return `{ ${this.properties.map(({ name, typeAnnotation }) =>
561
- (`${name}: ${typeAnnotation ? typeAnnotation.typeKey : 'any'}`)).join(', ')} }`;
599
+ (`${name}: ${typeAnnotation ? typeAnnotation.typeKey : '未知'}`)).join(', ')} }`;
562
600
  } else if (this.typeKind === 'union') {
563
601
  return `${this.typeArguments.map((arg) => arg.typeKey).join(' | ')}`;
564
602
  } else {
@@ -571,7 +609,7 @@ export class TypeAnnotation extends BaseNode {
571
609
  if (this.typeKind === 'anonymousStructure') {
572
610
  // 按匿名数据结构的key排序
573
611
  return `{${this.properties.sort(({ name: name1 }, { name: name2 }) => name1 > name2 ? 1 : -1).map(({ name, typeAnnotation }) =>
574
- (`${name}: ${typeAnnotation ? typeAnnotation.sortedTypeKey : 'any'}`)).join(', ')}}`;
612
+ (`${name}: ${typeAnnotation ? typeAnnotation.sortedTypeKey : '未知'}`)).join(', ')}}`;
575
613
  } else if (this.typeKind === 'union') {
576
614
  // 按返回的每个具体项排序
577
615
  return `${this.typeArguments.map((arg) => arg.sortedTypeKey).sort((name1, name2) => name1 > name2 ? 1 : -1).join(' | ')}`;
@@ -643,7 +681,7 @@ export class TypeAnnotation extends BaseNode {
643
681
  return `${this.typeName}<${this.typeArguments.map((arg) => arg.typeTitle || arg.name || 'T').join(', ')}>`;
644
682
  } else if (this.typeKind === 'anonymousStructure') {
645
683
  return `{ ${this.properties?.map(({ name, typeAnnotation }) =>
646
- (`${name}: ${typeAnnotation ? typeAnnotation.typeTitle : 'any'}`)).join(', ')} }`;
684
+ (`${name}: ${typeAnnotation ? typeAnnotation.typeTitle : '未知'}`)).join(', ')} }`;
647
685
  } else if (this.typeKind === 'union') {
648
686
  return `${this.typeArguments.map((arg) => arg.typeTitle || arg.name).join(' 或 ')}`;
649
687
  } else {
@@ -651,19 +689,52 @@ export class TypeAnnotation extends BaseNode {
651
689
  }
652
690
  }
653
691
 
692
+ /**
693
+ * 用于展示的 纯中文的type 标题
694
+ */
695
+ get typeChineseTitle(): string {
696
+ if (this.typeKind === 'primitive') {
697
+ return `${PRIMITIVE_TITLE[this.typeName] || ''}`;
698
+ } else if (this.typeKind === 'reference') {
699
+ return this.typeName;
700
+ } else if (this.typeKind === 'generic') {
701
+ return `${this.typeName}<${this.typeArguments.map((arg) => arg.typeChineseTitle || arg.name || 'T').join(', ')}>`;
702
+ } else if (this.typeKind === 'anonymousStructure') {
703
+ return `{ ${this.properties?.map(({ name, typeAnnotation }) =>
704
+ (`${name}: ${typeAnnotation ? typeAnnotation.typeChineseTitle : '未知'}`)).join(', ')} }`;
705
+ } else if (this.typeKind === 'union') {
706
+ return `${this.typeArguments.map((arg) => arg.typeChineseTitle || arg.name).join(' 或 ')}`;
707
+ } else {
708
+ return this.typeName;
709
+ }
710
+ }
711
+
654
712
  get typeTitleList() {
655
- const typeTitleList = [];
713
+ const typeTitleList: any[] = [];
656
714
  if (this.typeKind === 'anonymousStructure') {
657
715
  typeTitleList.push({ key: '{' });
658
716
  const length = this.properties?.length;
659
717
  this.properties?.forEach(({ name, typeAnnotation }, index) => {
660
718
  if (index === length - 1) {
661
- typeTitleList.push({ key: name, value: `${typeAnnotation ? typeAnnotation.typeTitle : 'any'}` });
719
+ typeTitleList.push({ key: name, value: `${typeAnnotation ? typeAnnotation.typeTitle : '未知'}` });
662
720
  } else {
663
- typeTitleList.push({ key: name, value: `${typeAnnotation ? typeAnnotation.typeTitle : 'any'}`, dot: ',' });
721
+ typeTitleList.push({ key: name, value: `${typeAnnotation ? typeAnnotation.typeTitle : '未知'}`, dot: ',' });
664
722
  }
665
723
  });
666
724
  typeTitleList.push({ key: '}' });
725
+ } else if (this.typeName === 'List') {
726
+ const propsTypeList = [].concat(...this.typeArguments.map((arg) => arg.typeTitleList));
727
+ if (propsTypeList[0]?.key === '{') {
728
+ propsTypeList[0].key = 'List<{';
729
+ } else {
730
+ typeTitleList.push({ key: 'List<' });
731
+ }
732
+ typeTitleList.push(...propsTypeList);
733
+ if (propsTypeList[propsTypeList.length - 1]?.key === '}') {
734
+ propsTypeList[propsTypeList.length - 1].key = '}>';
735
+ } else {
736
+ typeTitleList.push({ key: '>' });
737
+ }
667
738
  } else {
668
739
  typeTitleList.push({ key: this.typeTitle });
669
740
  }
@@ -779,9 +850,11 @@ export class TypeAnnotation extends BaseNode {
779
850
  let code = `{ __name: "AStructure_${this.hash}", `;
780
851
  (this.properties || []).forEach((property, i) => {
781
852
  code += `${property.name}: `;
782
- code += `${property.typeAnnotation ? property.typeAnnotation.toEmbeddedTS(shiftState(state, code, { inline: true, tabSize: (state?.tabSize || 0) + 1 })) : 'any'}`;
783
- code += i < this.properties?.length - 1 ? ', ' : ' }';
853
+ code += `${property.typeAnnotation ? property.typeAnnotation.toEmbeddedTS(shiftState(state, code, { inline: true, tabSize: (state?.tabSize || 0) + 1 })) : '`未知`'}`;
854
+ if (i < this.properties?.length - 1)
855
+ code += ', ';
784
856
  });
857
+ code += ' }';
785
858
  return code;
786
859
  } else {
787
860
  if (this.tsCalleeNamespace && this.typeName) {
@@ -806,7 +879,7 @@ export class TypeAnnotation extends BaseNode {
806
879
  return 1;
807
880
  return aName < bName ? -1 : 0;
808
881
  }).map(({ name, typeAnnotation }) =>
809
- (`${name}: ${typeAnnotation ? typeAnnotation.anonymousStructureTypeDesc : 'any'}`)).join(', ')} }`;
882
+ (`${name}: ${typeAnnotation ? typeAnnotation.anonymousStructureTypeDesc : '未知'}`)).join(', ')} }`;
810
883
  } else {
811
884
  return this.typeName;
812
885
  }
@@ -823,7 +896,7 @@ export class TypeAnnotation extends BaseNode {
823
896
  let code = '';
824
897
  if (this.typeKind === 'primitive') {
825
898
  if (this.typeName === 'String') {
826
- code = ` "${value}" `;
899
+ code = ` new nasl.core.String("${value}") `;
827
900
  } else {
828
901
  if (['Text'].includes(this.typeName)) {
829
902
  code = ` new ${this.typeNamespace}.${this.typeName}("${value}")`;
@@ -891,7 +964,7 @@ export class TypeAnnotation extends BaseNode {
891
964
 
892
965
  // 是否是复合类型 List|Map|entities|structures
893
966
  isComplexType() {
894
- const namespaceType = this.typeNamespace.split('.').pop();
967
+ const namespaceType = this.typeNamespace?.split('.').pop();
895
968
  return ['Map', 'List'].includes(this.typeName) || (this.typeKind === 'reference' && ['entities', 'structures'].includes(namespaceType));
896
969
  }
897
970
  /* 类型签名 */
@@ -912,6 +985,20 @@ export class TypeAnnotation extends BaseNode {
912
985
  return str;
913
986
  }
914
987
 
988
+ /* 判断2个类型是否一致 */
989
+ isSame(typeAnnotation: TypeAnnotation) {
990
+ typeAnnotation.typeArguments;
991
+ const typeAnnotation1 = this.toJSON();
992
+ const typeAnnotation2 = typeAnnotation.toJSON();
993
+ if (typeAnnotation1.typeArguments) {
994
+ typeAnnotation1.typeArguments = this.sortedTypeKey;
995
+ }
996
+ if (typeAnnotation2.typeArguments) {
997
+ typeAnnotation2.typeArguments = typeAnnotation.sortedTypeKey;
998
+ }
999
+ return JSON.stringify(typeAnnotation1) === JSON.stringify(typeAnnotation2);
1000
+ }
1001
+
915
1002
  //================================================================================
916
1003
  // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
917
1004
  // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
@@ -60,7 +60,7 @@ export class ValidationRule extends LogicItem {
60
60
  @property('LogicItem')
61
61
  errorMessage: LogicItem = undefined;
62
62
 
63
-
63
+
64
64
 
65
65
  /**
66
66
  * @param source 需要合并的部分参数
@@ -75,7 +75,7 @@ export class ValidationRule extends LogicItem {
75
75
  return super.from(source, parentNode, parentKey) as ValidationRule;
76
76
  }
77
77
 
78
-
78
+
79
79
  /**
80
80
  * 设置错误信息
81
81
  */
@@ -91,9 +91,9 @@ export class ValidationRule extends LogicItem {
91
91
  });
92
92
  }
93
93
 
94
-
95
94
 
96
-
95
+
96
+
97
97
 
98
98
  /**
99
99
  * 插入实际参数
@@ -127,7 +127,7 @@ export class ValidationRule extends LogicItem {
127
127
  return argument;
128
128
  }
129
129
 
130
-
130
+
131
131
 
132
132
  /**
133
133
  * 插入实际参数
@@ -151,7 +151,7 @@ export class ValidationRule extends LogicItem {
151
151
  return node;
152
152
  }
153
153
 
154
-
154
+
155
155
 
156
156
  /**
157
157
  * 添加实际参数
@@ -172,7 +172,7 @@ export class ValidationRule extends LogicItem {
172
172
  return this._insertArgumentAt(options as any, index);
173
173
  }
174
174
 
175
-
175
+
176
176
 
177
177
  /**
178
178
  * 添加实际参数
@@ -198,7 +198,7 @@ export class ValidationRule extends LogicItem {
198
198
  }
199
199
 
200
200
 
201
-
201
+
202
202
 
203
203
  /**
204
204
  * 删除实际参数
@@ -211,7 +211,7 @@ export class ValidationRule extends LogicItem {
211
211
  return argument.delete();
212
212
  }
213
213
 
214
-
214
+
215
215
 
216
216
  /**
217
217
  * 删除逻辑项
@@ -265,6 +265,55 @@ export class ValidationRule extends LogicItem {
265
265
  // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
266
266
  // 自动生成的代码已结束。下面可以手动编写。
267
267
  //================================================================================
268
+ toInViewMethod() {
269
+ let code = '{';
270
+ // 兼容就得简写模式
271
+ if (this.calleeName && this.calleeName.includes('(')) {
272
+ return `'${this.calleeName}'`;
273
+ } else if (this.calleeName === 'unique') {
274
+ code += `validate: 'excluded',`;
275
+ } else if (this.calleeName === 'confirmed') {
276
+ code += `validate: 'is',`;
277
+ } else {
278
+ code += `validate: '${this.calleeName}',`;
279
+ }
280
+ if (this.arguments.length) {
281
+ let args = '[';
282
+ this.arguments?.forEach((arg, index) => {
283
+ args += arg?.toJS();
284
+ if (index !== this.arguments?.length - 1)
285
+ args += ', ';
286
+ });
287
+ args += ']';
288
+ code += `args: ${args} ,`;
289
+ }
290
+ if (this.errorMessage) {
291
+ code += `message: ${this.errorMessage?.toJS()},`;
292
+ } else {
293
+ let defaultError = (defaultErrorMessage as Record<string, string>)[this.calleeName];
294
+ let index = 0;
295
+ while (defaultError && defaultError.indexOf(`{args}`) !== -1) {
296
+ defaultError = defaultError.replace(`{args}`, `\${${this.arguments[index]?.toJS()}}`);
297
+ index++;
298
+ }
299
+ const itemTitle = (this?.parentNode as any)?.parentNode?.bindAttrs?.find((item: BindAttribute) => item.name === 'label');
300
+ let labelName;
301
+ if (itemTitle?.expression?.toJS()) {
302
+ labelName = `\${${itemTitle?.expression?.toJS()}}`;
303
+ } else {
304
+ labelName = itemTitle?.value || '表单项';
305
+ }
306
+ defaultError = defaultError && defaultError.replace(`{label}`, labelName);
307
+ code += `message: \`${defaultError}\`,`;
308
+ }
309
+ code += `trigger: 'input+blur'`;
310
+ if (['required', 'filled', 'notEmpty'].includes(this.calleeName)) {
311
+ code += ',required: true';
312
+ }
313
+ code += '}';
314
+ return code;
315
+ }
316
+
268
317
  toVue(options?: ElementToVueOptions) {
269
318
  let code = '{';
270
319
  // 兼容就得简写模式
@@ -175,6 +175,10 @@ export class Variable extends BaseNode {
175
175
  });
176
176
  }
177
177
 
178
+
179
+
180
+
181
+
178
182
  /**
179
183
  * 删除类型标注
180
184
  * @param name 类型标注名称
@@ -413,9 +417,11 @@ export class Variable extends BaseNode {
413
417
  return null;
414
418
  const { typeKind, typeName, typeNamespace } = this.typeAnnotation;
415
419
  if (typeKind === 'reference' || typeKind === 'generic') {
416
- if (typeNamespace.endsWith('.enums') || (typeNamespace.endsWith('.collection') && typeName === 'Map'))
420
+ if (typeNamespace.endsWith('.enums'))
417
421
  return null;
418
422
  return [{}];
423
+ } else if (typeNamespace === 'nasl.core' && ['String', 'Text', 'Email'].includes(typeName)) {
424
+ return [{}];
419
425
  }
420
426
  return null;
421
427
  }
@@ -451,6 +457,10 @@ export class Variable extends BaseNode {
451
457
  }
452
458
  }
453
459
  completionChildren = properties;
460
+ } else if (typeNamespace === 'nasl.core' && ['String', 'Text', 'Email'].includes(typeName)) {
461
+ const node = getNaslNodeByNodeCallee(typeNamespace, typeName);
462
+ const properties = ((node as Structure)?.properties && [...(node as Structure)?.properties]) || [];
463
+ completionChildren = properties;
454
464
  } else {
455
465
  completionChildren = [];
456
466
  }