@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.
- package/out/checker.d.ts +6 -0
- package/out/checker.d.ts.map +1 -1
- package/out/checker.js +28 -7
- package/out/checker.js.map +1 -1
- package/out/index.d.ts +2 -1
- package/out/index.d.ts.map +1 -1
- package/out/index.js +3 -1
- package/out/index.js.map +1 -1
- package/out/reference-manager/build-q-name-def.d.ts.map +1 -1
- package/out/reference-manager/build-q-name-def.js +0 -9
- package/out/reference-manager/build-q-name-def.js.map +1 -1
- package/out/reference-manager/builtin-q-name.d.ts.map +1 -1
- package/out/reference-manager/builtin-q-name.js +1 -5
- package/out/reference-manager/builtin-q-name.js.map +1 -1
- package/out/reference-manager/reference-manager.d.ts.map +1 -1
- package/out/reference-manager/reference-manager.js +4 -1
- package/out/reference-manager/reference-manager.js.map +1 -1
- package/out/reference-manager/symbol-type.d.ts +1 -1
- package/out/reference-manager/symbol-type.d.ts.map +1 -1
- package/out/reference-manager/symbol-type.js.map +1 -1
- package/out/typer/collectGlobalDefs.d.ts.map +1 -1
- package/out/typer/collectGlobalDefs.js +3 -1
- package/out/typer/collectGlobalDefs.js.map +1 -1
- package/out/typer/component-def-manager/utils.d.ts.map +1 -1
- package/out/typer/component-def-manager/utils.js +4 -2
- package/out/typer/component-def-manager/utils.js.map +1 -1
- package/out/typer/dispatch-call.d.ts.map +1 -1
- package/out/typer/dispatch-call.js +177 -26
- package/out/typer/dispatch-call.js.map +1 -1
- package/out/typer/dispatch-def.d.ts.map +1 -1
- package/out/typer/dispatch-def.js +6 -2
- package/out/typer/dispatch-def.js.map +1 -1
- package/out/typer/dispatch-expr.d.ts +4 -2
- package/out/typer/dispatch-expr.d.ts.map +1 -1
- package/out/typer/dispatch-expr.js +111 -18
- package/out/typer/dispatch-expr.js.map +1 -1
- package/out/typer/dispatch-stmt.d.ts.map +1 -1
- package/out/typer/dispatch-stmt.js +1 -0
- package/out/typer/dispatch-stmt.js.map +1 -1
- package/out/typer/dispatch-view.js +1 -1
- package/out/typer/dispatch-view.js.map +1 -1
- package/out/typer/get-export-interfaces-files.d.ts +8 -0
- package/out/typer/get-export-interfaces-files.d.ts.map +1 -0
- package/out/typer/get-export-interfaces-files.js +31 -0
- package/out/typer/get-export-interfaces-files.js.map +1 -0
- package/out/typer/get-origin-logic-files.d.ts +1 -1
- package/out/typer/get-origin-logic-files.js +1 -1
- package/out/typer/index.d.ts +2 -1
- package/out/typer/index.d.ts.map +1 -1
- package/out/typer/index.js +3 -1
- package/out/typer/index.js.map +1 -1
- package/out/typer/oql-checker/chain-call-transformer.d.ts +21 -0
- package/out/typer/oql-checker/chain-call-transformer.d.ts.map +1 -0
- package/out/typer/oql-checker/chain-call-transformer.js +150 -0
- package/out/typer/oql-checker/chain-call-transformer.js.map +1 -0
- package/out/typer/oql-checker/ts-parser.d.ts +46 -0
- package/out/typer/oql-checker/ts-parser.d.ts.map +1 -0
- package/out/typer/oql-checker/ts-parser.js +706 -0
- package/out/typer/oql-checker/ts-parser.js.map +1 -0
- package/out/typer/oql-checker/ts-printer.d.ts +3 -0
- package/out/typer/oql-checker/ts-printer.d.ts.map +1 -0
- package/out/typer/oql-checker/ts-printer.js +37 -0
- package/out/typer/oql-checker/ts-printer.js.map +1 -0
- package/out/typer/overload-helper.d.ts +17 -6
- package/out/typer/overload-helper.d.ts.map +1 -1
- package/out/typer/overload-helper.js +393 -76
- package/out/typer/overload-helper.js.map +1 -1
- package/out/typer/subster.d.ts.map +1 -1
- package/out/typer/subster.js +70 -2
- package/out/typer/subster.js.map +1 -1
- package/out/typer/type-manager.js +4 -4
- package/out/typer/type-manager.js.map +1 -1
- package/out/typer/type-predicate.d.ts +9 -0
- package/out/typer/type-predicate.d.ts.map +1 -1
- package/out/typer/type-predicate.js +14 -1
- package/out/typer/type-predicate.js.map +1 -1
- package/out/typer/typer.d.ts +13 -3
- package/out/typer/typer.d.ts.map +1 -1
- package/out/typer/typer.js +21 -5
- package/out/typer/typer.js.map +1 -1
- package/out/typer/unifier.d.ts.map +1 -1
- package/out/typer/unifier.js +4 -5
- package/out/typer/unifier.js.map +1 -1
- package/out/utils/debug.d.ts +6 -0
- package/out/utils/debug.d.ts.map +1 -0
- package/out/utils/debug.js +62 -0
- package/out/utils/debug.js.map +1 -0
- package/out/utils/file-node-cache.d.ts.map +1 -1
- package/out/utils/file-node-cache.js +4 -1
- package/out/utils/file-node-cache.js.map +1 -1
- package/out/utils/internal-tuple.d.ts +2 -0
- package/out/utils/internal-tuple.d.ts.map +1 -0
- package/out/utils/internal-tuple.js +29 -0
- package/out/utils/internal-tuple.js.map +1 -0
- package/out/utils/parseTsClassType.d.ts +1 -5
- package/out/utils/parseTsClassType.d.ts.map +1 -1
- package/out/utils/parseTsClassType.js +103 -66
- package/out/utils/parseTsClassType.js.map +1 -1
- package/out/utils/type-operator.d.ts +29 -1
- package/out/utils/type-operator.d.ts.map +1 -1
- package/out/utils/type-operator.js +181 -1
- package/out/utils/type-operator.js.map +1 -1
- package/out/utils/type-operators/CheckUniqueKeys.d.ts +15 -0
- package/out/utils/type-operators/CheckUniqueKeys.d.ts.map +1 -0
- package/out/utils/type-operators/CheckUniqueKeys.js +86 -0
- package/out/utils/type-operators/CheckUniqueKeys.js.map +1 -0
- 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":";;;AAAA,
|
|
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.
|
|
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-
|
|
20
|
-
"@lcap/nasl-utils": "4.3.0-beta.
|
|
21
|
-
"@lcap/nasl-
|
|
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.
|
|
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.
|
|
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",
|