@lcap/nasl-language-server-core 4.0.0-beta.26 → 4.0.0-beta.27
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/README.md +85 -0
- package/out/checker.d.ts.map +1 -1
- package/out/checker.js +16 -8
- 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 +2 -1
- package/out/index.js.map +1 -1
- package/out/query/context-variable-query.d.ts +31 -0
- package/out/query/context-variable-query.d.ts.map +1 -0
- package/out/query/context-variable-query.js +105 -0
- package/out/query/context-variable-query.js.map +1 -0
- package/out/query/index.d.ts +2 -0
- package/out/query/index.d.ts.map +1 -0
- package/out/query/index.js +18 -0
- package/out/query/index.js.map +1 -0
- package/out/reference-manager/builtin-q-name.d.ts +1 -1
- package/out/reference-manager/builtin-q-name.d.ts.map +1 -1
- package/out/reference-manager/builtin-q-name.js +2 -2
- package/out/reference-manager/builtin-q-name.js.map +1 -1
- package/out/reference-manager/collect-q-name.d.ts +2 -1
- package/out/reference-manager/collect-q-name.d.ts.map +1 -1
- package/out/reference-manager/collect-q-name.js +8 -4
- package/out/reference-manager/collect-q-name.js.map +1 -1
- package/out/reference-manager/get-q-name.d.ts +1 -1
- package/out/reference-manager/get-q-name.d.ts.map +1 -1
- package/out/reference-manager/get-q-name.js +35 -31
- package/out/reference-manager/get-q-name.js.map +1 -1
- package/out/reference-manager/reference-manager.d.ts +6 -7
- package/out/reference-manager/reference-manager.d.ts.map +1 -1
- package/out/reference-manager/reference-manager.js +7 -6
- package/out/reference-manager/reference-manager.js.map +1 -1
- package/out/reference-manager/remove-q-name.d.ts +30 -28
- package/out/reference-manager/remove-q-name.d.ts.map +1 -1
- package/out/reference-manager/remove-q-name.js +54 -47
- package/out/reference-manager/remove-q-name.js.map +1 -1
- package/out/reference-manager/rename-q-name.d.ts +2 -1
- package/out/reference-manager/rename-q-name.d.ts.map +1 -1
- package/out/reference-manager/rename-q-name.js +31 -36
- package/out/reference-manager/rename-q-name.js.map +1 -1
- package/out/reference-manager/symbol-type.d.ts +2 -2
- package/out/reference-manager/symbol-type.d.ts.map +1 -1
- package/out/reference-manager/symbol-type.js +1 -1
- package/out/reference-manager/symbol-type.js.map +1 -1
- package/out/reference-manager/update-nasl-fragment.d.ts +2 -1
- package/out/reference-manager/update-nasl-fragment.d.ts.map +1 -1
- package/out/reference-manager/update-nasl-fragment.js +9 -1
- package/out/reference-manager/update-nasl-fragment.js.map +1 -1
- package/out/typer/collectGlobalDefs.d.ts.map +1 -1
- package/out/typer/collectGlobalDefs.js.map +1 -1
- package/out/typer/component-def-manager/component-def-manager.d.ts +32 -5
- package/out/typer/component-def-manager/component-def-manager.d.ts.map +1 -1
- package/out/typer/component-def-manager/component-def-manager.js +96 -19
- package/out/typer/component-def-manager/component-def-manager.js.map +1 -1
- package/out/typer/component-def-manager/utils.d.ts.map +1 -1
- package/out/typer/component-def-manager/utils.js +39 -12
- package/out/typer/component-def-manager/utils.js.map +1 -1
- package/out/typer/dispatch-all.d.ts +1 -1
- package/out/typer/dispatch-all.d.ts.map +1 -1
- package/out/typer/dispatch-all.js +2 -2
- package/out/typer/dispatch-all.js.map +1 -1
- package/out/typer/dispatch-def.d.ts +1 -1
- package/out/typer/dispatch-def.d.ts.map +1 -1
- package/out/typer/dispatch-def.js +7 -5
- package/out/typer/dispatch-def.js.map +1 -1
- package/out/typer/dispatch-expr.d.ts +4 -1
- package/out/typer/dispatch-expr.d.ts.map +1 -1
- package/out/typer/dispatch-expr.js +34 -14
- 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 +20 -8
- package/out/typer/dispatch-stmt.js.map +1 -1
- package/out/typer/dispatch-view.d.ts.map +1 -1
- package/out/typer/dispatch-view.js +98 -110
- package/out/typer/dispatch-view.js.map +1 -1
- package/out/typer/helper.js +3 -3
- package/out/typer/helper.js.map +1 -1
- package/out/typer/incremental-update.d.ts +15 -13
- package/out/typer/incremental-update.d.ts.map +1 -1
- package/out/typer/incremental-update.js +73 -42
- package/out/typer/incremental-update.js.map +1 -1
- package/out/typer/index.d.ts +2 -2
- package/out/typer/index.d.ts.map +1 -1
- package/out/typer/index.js +1 -2
- package/out/typer/index.js.map +1 -1
- package/out/typer/nasl-predicate.d.ts +1 -1
- package/out/typer/nasl-predicate.d.ts.map +1 -1
- package/out/typer/solver.d.ts +37 -24
- package/out/typer/solver.d.ts.map +1 -1
- package/out/typer/solver.js +205 -426
- package/out/typer/solver.js.map +1 -1
- package/out/typer/subster.d.ts +2 -4
- package/out/typer/subster.d.ts.map +1 -1
- package/out/typer/subster.js +29 -35
- package/out/typer/subster.js.map +1 -1
- package/out/typer/type-hint-manager/type-hint-manager.d.ts +3 -0
- package/out/typer/type-hint-manager/type-hint-manager.d.ts.map +1 -1
- package/out/typer/type-hint-manager/type-hint-manager.js +2 -0
- package/out/typer/type-hint-manager/type-hint-manager.js.map +1 -1
- package/out/typer/type-manager.d.ts +6 -2
- package/out/typer/type-manager.d.ts.map +1 -1
- package/out/typer/type-manager.js.map +1 -1
- package/out/typer/type-predicate.d.ts.map +1 -1
- package/out/typer/type-predicate.js +61 -6
- package/out/typer/type-predicate.js.map +1 -1
- package/out/typer/typer.d.ts +4 -3
- package/out/typer/typer.d.ts.map +1 -1
- package/out/typer/typer.js +13 -41
- package/out/typer/typer.js.map +1 -1
- package/out/typer/unifier.d.ts +0 -3
- package/out/typer/unifier.d.ts.map +1 -1
- package/out/typer/unifier.js +28 -27
- package/out/typer/unifier.js.map +1 -1
- package/out/utils/nasl-type-manipulation.d.ts +1 -0
- package/out/utils/nasl-type-manipulation.d.ts.map +1 -1
- package/out/utils/nasl-type-manipulation.js +3 -1
- package/out/utils/nasl-type-manipulation.js.map +1 -1
- package/out/utils/parseTsClassType.d.ts.map +1 -1
- package/out/utils/parseTsClassType.js +7 -3
- package/out/utils/parseTsClassType.js.map +1 -1
- package/out/utils/type-operator.d.ts.map +1 -1
- package/out/utils/type-operator.js.map +1 -1
- package/package.json +13 -6
package/README.md
CHANGED
|
@@ -1,3 +1,88 @@
|
|
|
1
1
|
# Nasl Language Server
|
|
2
2
|
|
|
3
3
|
Nasl 语言服务
|
|
4
|
+
|
|
5
|
+
## 描述
|
|
6
|
+
|
|
7
|
+
NetEase Application Specific Language (NASL) 语言服务器核心包,提供 NASL 语言的类型检查、语法分析和其他语言服务功能。
|
|
8
|
+
|
|
9
|
+
## 技术栈
|
|
10
|
+
|
|
11
|
+
### 核心技术
|
|
12
|
+
- **TypeScript 5.4.4** - 主要开发语言
|
|
13
|
+
- **Node.js 18+** - 运行环境
|
|
14
|
+
|
|
15
|
+
### 主要依赖
|
|
16
|
+
- **@lcap/nasl-concepts** - NASL 概念定义
|
|
17
|
+
- **@lcap/nasl-types** - NASL 类型系统
|
|
18
|
+
- **@lcap/nasl-utils** - NASL 工具库
|
|
19
|
+
- **decimal.js** - 精确数值计算
|
|
20
|
+
- **json5** - JSON5 格式支持
|
|
21
|
+
- **lodash** - 实用工具库
|
|
22
|
+
- **mnemonist** - 数据结构库
|
|
23
|
+
|
|
24
|
+
### 开发工具
|
|
25
|
+
- **Vitest 3.2.4** - 现代测试框架
|
|
26
|
+
- **Chai 4.3.7** - 断言库
|
|
27
|
+
- **Mocha** - 传统测试框架(通过 @lcap/nasl-test-toolkit)
|
|
28
|
+
|
|
29
|
+
## 开发
|
|
30
|
+
|
|
31
|
+
### 构建
|
|
32
|
+
```bash
|
|
33
|
+
# 清理输出目录
|
|
34
|
+
npm run clear
|
|
35
|
+
|
|
36
|
+
# 构建项目
|
|
37
|
+
npm run build
|
|
38
|
+
|
|
39
|
+
# 监听模式构建
|
|
40
|
+
npm run watch
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 测试
|
|
44
|
+
|
|
45
|
+
#### Vitest 测试(推荐)
|
|
46
|
+
```bash
|
|
47
|
+
# 运行所有 Vitest 测试
|
|
48
|
+
npm run test:vite
|
|
49
|
+
|
|
50
|
+
# 监听模式运行测试
|
|
51
|
+
npm run test:watch
|
|
52
|
+
|
|
53
|
+
# 启动测试 UI 界面
|
|
54
|
+
npm run test:ui
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
#### Mocha 测试 (遗留)
|
|
58
|
+
|
|
59
|
+
注意:
|
|
60
|
+
- Mocha 测试框架已经废弃,对于新的单元测试的编写,请使用 Vitest 测试框架。
|
|
61
|
+
- Mocha 测试框架的测试用例,请迁移到 Vitest 测试框架。请参考 [TESTING_MIGRATION.md](./tests/TESTING_MIGRATION.md) 文件,让LLM自动化地完成迁移。
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# 运行标准 Mocha 测试套件
|
|
65
|
+
npm run test
|
|
66
|
+
|
|
67
|
+
# 运行应用测试
|
|
68
|
+
npm run test:apps
|
|
69
|
+
|
|
70
|
+
# 运行 CI 测试
|
|
71
|
+
npm run test:ci
|
|
72
|
+
|
|
73
|
+
# 更新测试快照
|
|
74
|
+
npm run test:update
|
|
75
|
+
|
|
76
|
+
# 运行性能测试
|
|
77
|
+
npm run test:perf
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 其他工具
|
|
81
|
+
```bash
|
|
82
|
+
# 压缩测试数据
|
|
83
|
+
npm run compress-test-data
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## 许可证
|
|
87
|
+
|
|
88
|
+
MIT
|
package/out/checker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAU0F,GAAG,EAMvG,QAAQ,EACT,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACgE,cAAc,EAGpF,MAAM,qBAAqB,CAAC;AAS7B,OAAO,EAA4B,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAIhE,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAU0F,GAAG,EAMvG,QAAQ,EACT,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACgE,cAAc,EAGpF,MAAM,qBAAqB,CAAC;AAS7B,OAAO,EAA4B,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAIhE,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAIpE,oBAAY,QAAQ;IAClB,IAAI,YAAY;IAChB,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAEnE,KAAK,YAAY,GAAG;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAMF,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AAEpE,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;AAMrE,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAqBF,KAAK,eAAe,GAAG;IACrB,GAAG,EAAE,GAAG,CAAC;IACT,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,yBAAyB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC/C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAiQF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe;oCA6lIpB,OAAO;sDAPW,gBAAgB,EAAE;;;;sBAhBjD,UAAU,GAAG,SAAS;;;8BA4Df,UAAU;2BAuBb,UAAU;;kBAjmInB,UAAU,WAAW,MAAM,YAAY,YAAY;EAmnIzE;AAGD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IAEX,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACrC,mBAAmB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACvC,qBAAqB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,6BAA6B,aAAc,UAAU,sCAAoC,MAAM,gBAAgB,CAmC3H,CAAA;AAMD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
package/out/checker.js
CHANGED
|
@@ -338,6 +338,15 @@ function createErrorDiagnoser(context) {
|
|
|
338
338
|
}
|
|
339
339
|
else { }
|
|
340
340
|
}
|
|
341
|
+
function scopedError(node, message, context) {
|
|
342
|
+
const scope = node?.constructor?.nodeTitle;
|
|
343
|
+
if (scope) {
|
|
344
|
+
error(node, `${scope}:${message}`, context);
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
error(node, message, context);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
341
350
|
/**
|
|
342
351
|
* 获取当前错误信息
|
|
343
352
|
* @param node
|
|
@@ -3268,14 +3277,6 @@ function createErrorDiagnoser(context) {
|
|
|
3268
3277
|
}
|
|
3269
3278
|
else {
|
|
3270
3279
|
const { name } = node;
|
|
3271
|
-
// 之前有一些脏数据,先兼容
|
|
3272
|
-
// if (['true', 'false'].includes(name)) {
|
|
3273
|
-
// return new TypeAnnotation({
|
|
3274
|
-
// typeKind: 'primitive',
|
|
3275
|
-
// typeName: 'Boolean',
|
|
3276
|
-
// typeNamespace: 'nasl.core',
|
|
3277
|
-
// });
|
|
3278
|
-
// }
|
|
3279
3280
|
if (
|
|
3280
3281
|
// name 是 A.B.C
|
|
3281
3282
|
name?.split('.')?.length > 1
|
|
@@ -3290,6 +3291,13 @@ function createErrorDiagnoser(context) {
|
|
|
3290
3291
|
return errorType;
|
|
3291
3292
|
}
|
|
3292
3293
|
}
|
|
3294
|
+
if (node.namespace === 'app.enums' &&
|
|
3295
|
+
node.parentNode?.concept !== 'MemberExpression' &&
|
|
3296
|
+
node.parentNode?.concept !== 'SelectMembers') {
|
|
3297
|
+
// 判断枚举类是否直接被使用
|
|
3298
|
+
scopedError(node, `${node.toNaturalTS()} 枚举类不能直接使用,请取它的枚举项`);
|
|
3299
|
+
return errorType;
|
|
3300
|
+
}
|
|
3293
3301
|
// 检查使用范围
|
|
3294
3302
|
yield* checkScopeOfUse(node, ref);
|
|
3295
3303
|
return env.getType(node);
|