@lcap/nasl-language-server-core 4.3.0-beta.0 → 4.3.0-beta.3

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 (107) hide show
  1. package/out/checker.d.ts +6 -0
  2. package/out/checker.d.ts.map +1 -1
  3. package/out/checker.js +28 -7
  4. package/out/checker.js.map +1 -1
  5. package/out/index.d.ts +2 -1
  6. package/out/index.d.ts.map +1 -1
  7. package/out/index.js +3 -1
  8. package/out/index.js.map +1 -1
  9. package/out/reference-manager/build-q-name-def.d.ts.map +1 -1
  10. package/out/reference-manager/build-q-name-def.js +0 -9
  11. package/out/reference-manager/build-q-name-def.js.map +1 -1
  12. package/out/reference-manager/builtin-q-name.d.ts.map +1 -1
  13. package/out/reference-manager/builtin-q-name.js +1 -5
  14. package/out/reference-manager/builtin-q-name.js.map +1 -1
  15. package/out/reference-manager/reference-manager.d.ts.map +1 -1
  16. package/out/reference-manager/reference-manager.js +4 -1
  17. package/out/reference-manager/reference-manager.js.map +1 -1
  18. package/out/reference-manager/symbol-type.d.ts +1 -1
  19. package/out/reference-manager/symbol-type.d.ts.map +1 -1
  20. package/out/reference-manager/symbol-type.js.map +1 -1
  21. package/out/typer/collectGlobalDefs.d.ts.map +1 -1
  22. package/out/typer/collectGlobalDefs.js +3 -1
  23. package/out/typer/collectGlobalDefs.js.map +1 -1
  24. package/out/typer/component-def-manager/utils.d.ts.map +1 -1
  25. package/out/typer/component-def-manager/utils.js +4 -2
  26. package/out/typer/component-def-manager/utils.js.map +1 -1
  27. package/out/typer/dispatch-call.d.ts.map +1 -1
  28. package/out/typer/dispatch-call.js +177 -26
  29. package/out/typer/dispatch-call.js.map +1 -1
  30. package/out/typer/dispatch-def.d.ts.map +1 -1
  31. package/out/typer/dispatch-def.js +6 -2
  32. package/out/typer/dispatch-def.js.map +1 -1
  33. package/out/typer/dispatch-expr.d.ts +4 -2
  34. package/out/typer/dispatch-expr.d.ts.map +1 -1
  35. package/out/typer/dispatch-expr.js +111 -18
  36. package/out/typer/dispatch-expr.js.map +1 -1
  37. package/out/typer/dispatch-stmt.d.ts.map +1 -1
  38. package/out/typer/dispatch-stmt.js +1 -0
  39. package/out/typer/dispatch-stmt.js.map +1 -1
  40. package/out/typer/dispatch-view.js +1 -1
  41. package/out/typer/dispatch-view.js.map +1 -1
  42. package/out/typer/get-export-interfaces-files.d.ts +8 -0
  43. package/out/typer/get-export-interfaces-files.d.ts.map +1 -0
  44. package/out/typer/get-export-interfaces-files.js +31 -0
  45. package/out/typer/get-export-interfaces-files.js.map +1 -0
  46. package/out/typer/get-origin-logic-files.d.ts +1 -1
  47. package/out/typer/get-origin-logic-files.js +1 -1
  48. package/out/typer/index.d.ts +2 -1
  49. package/out/typer/index.d.ts.map +1 -1
  50. package/out/typer/index.js +3 -1
  51. package/out/typer/index.js.map +1 -1
  52. package/out/typer/oql-checker/chain-call-transformer.d.ts +21 -0
  53. package/out/typer/oql-checker/chain-call-transformer.d.ts.map +1 -0
  54. package/out/typer/oql-checker/chain-call-transformer.js +150 -0
  55. package/out/typer/oql-checker/chain-call-transformer.js.map +1 -0
  56. package/out/typer/oql-checker/ts-parser.d.ts +46 -0
  57. package/out/typer/oql-checker/ts-parser.d.ts.map +1 -0
  58. package/out/typer/oql-checker/ts-parser.js +706 -0
  59. package/out/typer/oql-checker/ts-parser.js.map +1 -0
  60. package/out/typer/oql-checker/ts-printer.d.ts +3 -0
  61. package/out/typer/oql-checker/ts-printer.d.ts.map +1 -0
  62. package/out/typer/oql-checker/ts-printer.js +37 -0
  63. package/out/typer/oql-checker/ts-printer.js.map +1 -0
  64. package/out/typer/overload-helper.d.ts +17 -6
  65. package/out/typer/overload-helper.d.ts.map +1 -1
  66. package/out/typer/overload-helper.js +393 -76
  67. package/out/typer/overload-helper.js.map +1 -1
  68. package/out/typer/subster.d.ts.map +1 -1
  69. package/out/typer/subster.js +70 -2
  70. package/out/typer/subster.js.map +1 -1
  71. package/out/typer/type-manager.js +4 -4
  72. package/out/typer/type-manager.js.map +1 -1
  73. package/out/typer/type-predicate.d.ts +9 -0
  74. package/out/typer/type-predicate.d.ts.map +1 -1
  75. package/out/typer/type-predicate.js +14 -1
  76. package/out/typer/type-predicate.js.map +1 -1
  77. package/out/typer/typer.d.ts +13 -3
  78. package/out/typer/typer.d.ts.map +1 -1
  79. package/out/typer/typer.js +21 -5
  80. package/out/typer/typer.js.map +1 -1
  81. package/out/typer/unifier.d.ts.map +1 -1
  82. package/out/typer/unifier.js +4 -5
  83. package/out/typer/unifier.js.map +1 -1
  84. package/out/utils/debug.d.ts +6 -0
  85. package/out/utils/debug.d.ts.map +1 -0
  86. package/out/utils/debug.js +62 -0
  87. package/out/utils/debug.js.map +1 -0
  88. package/out/utils/file-node-cache.d.ts.map +1 -1
  89. package/out/utils/file-node-cache.js +4 -1
  90. package/out/utils/file-node-cache.js.map +1 -1
  91. package/out/utils/internal-tuple.d.ts +2 -0
  92. package/out/utils/internal-tuple.d.ts.map +1 -0
  93. package/out/utils/internal-tuple.js +29 -0
  94. package/out/utils/internal-tuple.js.map +1 -0
  95. package/out/utils/parseTsClassType.d.ts +1 -5
  96. package/out/utils/parseTsClassType.d.ts.map +1 -1
  97. package/out/utils/parseTsClassType.js +103 -66
  98. package/out/utils/parseTsClassType.js.map +1 -1
  99. package/out/utils/type-operator.d.ts +29 -1
  100. package/out/utils/type-operator.d.ts.map +1 -1
  101. package/out/utils/type-operator.js +181 -1
  102. package/out/utils/type-operator.js.map +1 -1
  103. package/out/utils/type-operators/CheckUniqueKeys.d.ts +15 -0
  104. package/out/utils/type-operators/CheckUniqueKeys.d.ts.map +1 -0
  105. package/out/utils/type-operators/CheckUniqueKeys.js +86 -0
  106. package/out/utils/type-operators/CheckUniqueKeys.js.map +1 -0
  107. package/package.json +11 -6
@@ -1,11 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.selectBinaryOverload = exports.NaslCoreBinaryOperator = exports.typePick = exports.createValueTypeForAssumedEnumTy = exports.applyDeDataSource = void 0;
3
+ exports.applyInternalGetQueryResult = exports.applyInternalMergeType = exports.selectBinaryOverload = exports.applyInternalTupleType = exports.NaslCoreBinaryOperator = exports.typePick = exports.createValueTypeForAssumedEnumTy = exports.applyDeDataSource = exports.applyCheckUniqueKeys = void 0;
4
4
  const nasl_concepts_1 = require("@lcap/nasl-concepts");
5
5
  const type_predicate_1 = require("../typer/type-predicate");
6
6
  const asserts_1 = require("@lcap/nasl-concepts/asserts");
7
7
  const type_manager_1 = require("../typer/type-manager");
8
8
  const type_manager_2 = require("../typer/type-manager");
9
+ const typer_1 = require("../typer/typer");
10
+ const lodash_1 = require("lodash");
11
+ const types_1 = require("./types");
12
+ var CheckUniqueKeys_1 = require("./type-operators/CheckUniqueKeys");
13
+ Object.defineProperty(exports, "applyCheckUniqueKeys", { enumerable: true, get: function () { return CheckUniqueKeys_1.applyCheckUniqueKeys; } });
9
14
  /**
10
15
  * 输入 DataSourceLike 类型,返回其对应的 Item 类型
11
16
  *
@@ -145,6 +150,45 @@ function tyMin(env, leftTy, rightTy) {
145
150
  }
146
151
  return rightTy;
147
152
  }
153
+ /**
154
+ * 处理 InternalTupleType 的类型替换
155
+ * @param env 语义环境
156
+ * @param ty InternalTupleType 类型
157
+ * @param pSubst 类型替换函数
158
+ * @returns 处理后的类型
159
+ */
160
+ function applyInternalTupleType(env, ty, pSubst) {
161
+ if (!(0, type_predicate_1.isTupleTy)(ty)) {
162
+ return ty;
163
+ }
164
+ const processedTupleComponents = ty.typeArguments
165
+ ?.flatMap((arg) => {
166
+ // 如果是 InternalSpreadTupleType,需要展开处理
167
+ if (arg.typeName === 'InternalSpreadTupleType' && arg.typeNamespace === 'nasl.core') {
168
+ const tup = arg.typeArguments?.[0];
169
+ if ((0, type_predicate_1.isTupleTy)(tup)) {
170
+ return (arg.typeArguments?.flatMap((tup) => {
171
+ // 必须为Tuple类型! 不然需要报错
172
+ return tup?.typeArguments ?? [];
173
+ }) ?? []);
174
+ }
175
+ else {
176
+ // 如果不满足参数是Tuple的条件,那么无法化简,返回原始类型
177
+ return arg;
178
+ }
179
+ }
180
+ return arg;
181
+ })
182
+ .map((x) => pSubst(x)) ?? [];
183
+ // 创建新的 InternalTupleType
184
+ return nasl_concepts_1.TypeAnnotation.createProtoTypeOnly({
185
+ typeName: 'InternalTupleType',
186
+ typeNamespace: 'nasl.core',
187
+ typeKind: 'generic',
188
+ typeArguments: processedTupleComponents,
189
+ });
190
+ }
191
+ exports.applyInternalTupleType = applyInternalTupleType;
148
192
  function selectBinaryOverload(env, functionName, leftTy, rightTy) {
149
193
  if (functionName === exports.NaslCoreBinaryOperator.add) {
150
194
  if ((0, type_predicate_1.isSubTy)(env, leftTy, type_manager_1.naslStringTy) || (0, type_predicate_1.isSubTy)(env, rightTy, type_manager_1.naslStringTy)) {
@@ -164,4 +208,140 @@ function selectBinaryOverload(env, functionName, leftTy, rightTy) {
164
208
  throw new Error(`Unsupported overload: ${functionName}`);
165
209
  }
166
210
  exports.selectBinaryOverload = selectBinaryOverload;
211
+ /**
212
+ * 处理 InternalMergeType 类型操作符
213
+ * 将多个匿名结构类型合并为一个新的匿名结构类型
214
+ *
215
+ * @param env 语义环境
216
+ * @param ty InternalMergeType 类型
217
+ * @param pSubst 类型替换函数
218
+ * @returns 合并后的类型或原类型
219
+ */
220
+ function applyInternalMergeType(env, ty, pSubst) {
221
+ if (ty.typeName !== 'InternalMergeType') {
222
+ return ty;
223
+ }
224
+ // FIXME wudengke 这个函数写的太烂了,重构下
225
+ const args = ty.typeArguments?.map((x) => (0, typer_1.normalize)(env, pSubst(x))) ?? [];
226
+ const allStructureLike = args.every((x) => {
227
+ return (0, type_predicate_1.isAnonymousTy)(x) || x.typeKind === 'reference';
228
+ });
229
+ if (!allStructureLike) {
230
+ return ty;
231
+ }
232
+ // 将所有参数转换为匿名结构类型
233
+ const anonymousArgs = args
234
+ .map((arg) => {
235
+ if ((0, type_predicate_1.isAnonymousTy)(arg)) {
236
+ return arg;
237
+ }
238
+ else if (arg.typeKind === 'reference') {
239
+ // 将指向Structure或Entity的reference转换为匿名数据结构
240
+ const def = env.resolveRef(arg);
241
+ if (!def) {
242
+ // 找不到此结构的定义,应该报错
243
+ env.addError(`找不到类型 ${(0, type_manager_1.showType)(arg)}`);
244
+ return nasl_concepts_1.TypeAnnotation.createTypeAnonymousStructure([]);
245
+ }
246
+ if (def.concept === 'Structure') {
247
+ return nasl_concepts_1.TypeAnnotation.createTypeAnonymousStructure(def.properties ?? []);
248
+ }
249
+ else if (def.concept === 'Entity') {
250
+ // 将EntityProperty转换为StructureProperty
251
+ const structureProps = (def.properties ?? []).map(convertEntityPropertyToStructureProperty);
252
+ return nasl_concepts_1.TypeAnnotation.createTypeAnonymousStructure(structureProps);
253
+ }
254
+ else {
255
+ // 非数据结构或实体,应该报错
256
+ // @ts-expect-error
257
+ env.addError(`${(0, type_manager_1.showType)(arg)} 为${def.concept}, 非数据结构或实体`);
258
+ return nasl_concepts_1.TypeAnnotation.createTypeAnonymousStructure([]);
259
+ }
260
+ }
261
+ })
262
+ .filter(types_1.isNotNil);
263
+ if (anonymousArgs.length > 0) {
264
+ // 如果同一个属性出现两次,那么保留后一个
265
+ const allProps = anonymousArgs.flatMap((x) => x.properties).filter(types_1.isNotNil);
266
+ const props = (0, lodash_1.uniqBy)(allProps.reverse(), (x) => x?.name).reverse();
267
+ const newTy = nasl_concepts_1.TypeAnnotation.createTypeAnonymousStructure(props);
268
+ return newTy;
269
+ }
270
+ return ty;
271
+ /**
272
+ * 将EntityProperty转换为StructureProperty
273
+ * @param entityProp EntityProperty实例
274
+ * @returns StructureProperty实例
275
+ */
276
+ function convertEntityPropertyToStructureProperty(entityProp) {
277
+ return nasl_concepts_1.StructureProperty.from({
278
+ name: entityProp.name,
279
+ label: entityProp.label,
280
+ description: entityProp.description,
281
+ typeAnnotation: entityProp.typeAnnotation,
282
+ defaultValue: entityProp.defaultValue,
283
+ });
284
+ }
285
+ }
286
+ exports.applyInternalMergeType = applyInternalMergeType;
287
+ /**
288
+ * 处理 InternalGetQueryResult 类型操作符
289
+ * 替代原来的 TuplifyUnion 和 GetFinalType 逻辑
290
+ *
291
+ * @param env 语义环境
292
+ * @param ty InternalGetQueryResult 类型
293
+ * @param pSubst 类型替换函数
294
+ * @returns 处理后的类型
295
+ */
296
+ function applyInternalGetQueryResult(env, ty, isNoList, pSubst) {
297
+ const recordArg = ty.typeArguments?.[0];
298
+ if (!recordArg) {
299
+ return type_manager_1.naslAnyTy;
300
+ }
301
+ const processedRecord = pSubst(recordArg);
302
+ // 获取 Record 的 Item 类型
303
+ let itemType;
304
+ if ((0, type_predicate_1.isTupleTy)(processedRecord)) {
305
+ itemType = processedRecord.typeArguments?.[0] ?? type_manager_1.naslAnyTy;
306
+ }
307
+ else {
308
+ // 并非Tuple类型,无法继续化简,直接返回原始类型
309
+ return ty;
310
+ }
311
+ // 处理 GetTypeIfOnlyOneField 逻辑
312
+ let finalType;
313
+ if ((0, type_predicate_1.isAnonymousTy)(itemType)) {
314
+ const properties = itemType.properties ?? [];
315
+ const nonNameProperties = properties.filter((prop) => prop.name !== '__name');
316
+ if (nonNameProperties.length === 0 || nonNameProperties.length === 1) {
317
+ // 如果只有0个或1个字段,返回字段的值类型
318
+ if (nonNameProperties.length === 1) {
319
+ finalType = nonNameProperties[0].typeAnnotation ?? type_manager_1.naslAnyTy;
320
+ }
321
+ else {
322
+ finalType = type_manager_1.naslAnyTy;
323
+ }
324
+ }
325
+ else {
326
+ // 多个字段,返回整个结构
327
+ finalType = itemType;
328
+ }
329
+ }
330
+ else {
331
+ finalType = itemType;
332
+ }
333
+ if (isNoList) {
334
+ return finalType;
335
+ }
336
+ else {
337
+ // 返回 List 类型
338
+ return nasl_concepts_1.TypeAnnotation.createProtoTypeOnly({
339
+ typeName: 'List',
340
+ typeNamespace: 'nasl.collection',
341
+ typeKind: 'generic',
342
+ typeArguments: [finalType],
343
+ });
344
+ }
345
+ }
346
+ exports.applyInternalGetQueryResult = applyInternalGetQueryResult;
167
347
  //# sourceMappingURL=type-operator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-operator.js","sourceRoot":"","sources":["../../src/utils/type-operator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-operator.js","sourceRoot":"","sources":["../../src/utils/type-operator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { TypeAnnotation } from '@lcap/nasl-concepts';
2
+ import { type SemEnv } from '../../typer/typer';
3
+ type TypeMapper = (ty: TypeAnnotation | undefined) => TypeAnnotation;
4
+ /**
5
+ * 实现 CheckUniqueKeys 类型操作符
6
+ * 检查所有类型参数是否存在重复字段,如果没有重复则返回 true 字面量类型
7
+ * 如果有重复字段则调用 addError 报错
8
+ * @param env
9
+ * @param ty
10
+ * @param pSubst
11
+ * @returns
12
+ */
13
+ export declare function applyCheckUniqueKeys(env: SemEnv, ty: TypeAnnotation, pSubst: TypeMapper): TypeAnnotation;
14
+ export {};
15
+ //# sourceMappingURL=CheckUniqueKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckUniqueKeys.d.ts","sourceRoot":"","sources":["../../../src/utils/type-operators/CheckUniqueKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,KAAK,UAAU,GAAG,CAAC,EAAE,EAAE,cAAc,GAAG,SAAS,KAAK,cAAc,CAAC;AAoCrE;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,UAAU,GACjB,cAAc,CA4ChB"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyCheckUniqueKeys = void 0;
4
+ const nasl_concepts_1 = require("@lcap/nasl-concepts");
5
+ /**
6
+ * 判断类型是否为结构、实体或匿名数据结构
7
+ * @param env
8
+ * @param ty
9
+ * @returns
10
+ */
11
+ function isStructureLikeType(env, ty) {
12
+ if (ty.typeKind === 'reference') {
13
+ const def = env.resolveRef(ty);
14
+ return def?.concept === 'Entity' || def?.concept === 'Structure';
15
+ }
16
+ else if (ty.typeKind === 'anonymousStructure') {
17
+ return true;
18
+ }
19
+ return false;
20
+ }
21
+ /**
22
+ * 获取类型的所有字段名
23
+ * @param env
24
+ * @param ty
25
+ * @returns
26
+ */
27
+ function getTypeFieldNames(env, ty) {
28
+ if (ty.typeKind === 'reference') {
29
+ const def = env.resolveRef(ty);
30
+ if (def?.concept === 'Entity' || def?.concept === 'Structure') {
31
+ return def.properties?.map((p) => p.name) || [];
32
+ }
33
+ }
34
+ else if (ty.typeKind === 'anonymousStructure') {
35
+ return ty.properties?.map((p) => p.name) || [];
36
+ }
37
+ return [];
38
+ }
39
+ /**
40
+ * 实现 CheckUniqueKeys 类型操作符
41
+ * 检查所有类型参数是否存在重复字段,如果没有重复则返回 true 字面量类型
42
+ * 如果有重复字段则调用 addError 报错
43
+ * @param env
44
+ * @param ty
45
+ * @param pSubst
46
+ * @returns
47
+ */
48
+ function applyCheckUniqueKeys(env, ty, pSubst) {
49
+ // 如果不是 CheckUniqueKeys 类型,直接返回原类型
50
+ if (ty.typeName !== 'CheckUniqueKeys' || ty.typeNamespace !== 'nasl.oql') {
51
+ return ty;
52
+ }
53
+ const typeArgs = ty.typeArguments || [];
54
+ // 检查所有类型参数是否都是结构、实体或匿名数据结构
55
+ const resolvedTypes = typeArgs.map(pSubst);
56
+ const allStructureLike = resolvedTypes.every((t) => isStructureLikeType(env, t));
57
+ if (!allStructureLike) {
58
+ // 如果不是所有类型都是结构类型,返回原类型
59
+ return ty;
60
+ }
61
+ // 收集所有字段名
62
+ const allFieldNames = [];
63
+ for (const resolvedType of resolvedTypes) {
64
+ const fieldNames = getTypeFieldNames(env, resolvedType);
65
+ allFieldNames.push(...fieldNames);
66
+ }
67
+ // 检查是否有重复字段
68
+ const uniqueFieldNames = new Set(allFieldNames);
69
+ const hasDuplicates = uniqueFieldNames.size !== allFieldNames.length;
70
+ if (hasDuplicates) {
71
+ // 找出重复的字段名
72
+ const fieldCounts = new Map();
73
+ for (const fieldName of allFieldNames) {
74
+ fieldCounts.set(fieldName, (fieldCounts.get(fieldName) || 0) + 1);
75
+ }
76
+ const duplicateFields = Array.from(fieldCounts.entries())
77
+ .filter(([_, count]) => count > 1)
78
+ .map(([name, _]) => name);
79
+ env.addError(`存在重复字段: ${duplicateFields.join(', ')}`);
80
+ return ty; // 返回原类型
81
+ }
82
+ // 没有重复字段,返回 true
83
+ return nasl_concepts_1.TypeAnnotation.createLiteral(true);
84
+ }
85
+ exports.applyCheckUniqueKeys = applyCheckUniqueKeys;
86
+ //# sourceMappingURL=CheckUniqueKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckUniqueKeys.js","sourceRoot":"","sources":["../../../src/utils/type-operators/CheckUniqueKeys.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lcap/nasl-language-server-core",
3
3
  "description": "NetEase Application Specific Language",
4
- "version": "4.3.0-beta.0",
4
+ "version": "4.3.0-beta.3",
5
5
  "main": "./out",
6
6
  "types": "./out",
7
7
  "source": "./src",
@@ -16,25 +16,27 @@
16
16
  "json5": "2.2.3",
17
17
  "lodash": "4.17.21",
18
18
  "mnemonist": "^0.40.3",
19
- "@lcap/nasl-concepts": "4.3.0-beta.0",
20
- "@lcap/nasl-utils": "4.3.0-beta.0",
21
- "@lcap/nasl-types": "4.3.0-beta.0"
19
+ "@lcap/nasl-types": "4.3.0-beta.3",
20
+ "@lcap/nasl-utils": "4.3.0-beta.3",
21
+ "@lcap/nasl-concepts": "4.3.0-beta.3"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/lodash": "4.17.0",
25
- "@types/node": "18.11.9",
25
+ "@types/node": "18.17.9",
26
+ "@vitest/coverage-v8": "3.2.4",
26
27
  "@vitest/ui": "3.2.4",
27
28
  "axios": "1.6.8",
28
29
  "chai": "4.3.7",
29
30
  "fast-glob": "3.3.2",
30
31
  "glob": "10",
32
+ "playwright": "1.39.0",
31
33
  "rimraf": "5.0.5",
32
34
  "tslib": "2.6.2",
33
35
  "typescript": "5.4.4",
34
36
  "vite": "6.3.5",
35
37
  "vitest": "3.2.4",
36
38
  "@lcap/nasl-test-toolkit": "1.0.0",
37
- "@lcap/nasl-translator": "4.3.0-beta.0",
39
+ "@lcap/nasl-translator": "4.3.0-beta.3",
38
40
  "@lcap/nasl-tsconfig": "1.0.1"
39
41
  },
40
42
  "scripts": {
@@ -42,6 +44,9 @@
42
44
  "watch": "npm run build -- -w",
43
45
  "build": "npm run clear && tsc -p ./tsconfig.build.json",
44
46
  "test:vite": "vitest run",
47
+ "test:cov": "vitest run --coverage",
48
+ "test:e2e:memory": "npx tsx ./tests/performance-monitor/performance-monitor.ts",
49
+ "test:bench": "vitest bench",
45
50
  "test:watch": "vitest",
46
51
  "test:ui": "vitest --ui",
47
52
  "test": "pnpm run --filter @lcap/nasl-test-toolkit runtest --config $PWD/.mocharc.js && pnpm run test:vite",