@lcap/nasl-language-server-core 4.4.2-rc.4 → 4.4.3-rc.1
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.map +1 -1
- package/out/checker.js +32 -16
- package/out/checker.js.map +1 -1
- package/out/typer/collectGlobalDefs.d.ts.map +1 -1
- package/out/typer/collectGlobalDefs.js +73 -7
- package/out/typer/collectGlobalDefs.js.map +1 -1
- package/out/typer/component-def-manager/component-def-manager.d.ts +65 -7
- package/out/typer/component-def-manager/component-def-manager.d.ts.map +1 -1
- package/out/typer/component-def-manager/component-def-manager.js +400 -8
- package/out/typer/component-def-manager/component-def-manager.js.map +1 -1
- package/out/typer/dispatch-call.d.ts.map +1 -1
- package/out/typer/dispatch-call.js +13 -1
- package/out/typer/dispatch-call.js.map +1 -1
- package/out/typer/dispatch-view.d.ts.map +1 -1
- package/out/typer/dispatch-view.js +342 -141
- package/out/typer/dispatch-view.js.map +1 -1
- package/out/typer/overload-helper.d.ts.map +1 -1
- package/out/typer/overload-helper.js +0 -3
- package/out/typer/overload-helper.js.map +1 -1
- package/out/typer/sem-diag.js +1 -1
- package/out/typer/sem-diag.js.map +1 -1
- package/out/typer/solver.d.ts.map +1 -1
- package/out/typer/solver.js +2 -2
- package/out/typer/solver.js.map +1 -1
- package/out/typer/subster.d.ts.map +1 -1
- package/out/typer/subster.js +54 -35
- package/out/typer/subster.js.map +1 -1
- package/out/typer/type-manager.d.ts.map +1 -1
- package/out/typer/type-manager.js +4 -0
- package/out/typer/type-manager.js.map +1 -1
- package/out/typer/type-predicate.d.ts +19 -1
- package/out/typer/type-predicate.d.ts.map +1 -1
- package/out/typer/type-predicate.js +325 -18
- package/out/typer/type-predicate.js.map +1 -1
- package/out/typer/typer.d.ts +9 -0
- package/out/typer/typer.d.ts.map +1 -1
- package/out/typer/typer.js +8 -0
- package/out/typer/typer.js.map +1 -1
- package/out/typer/unifier.d.ts +8 -0
- package/out/typer/unifier.d.ts.map +1 -1
- package/out/typer/unifier.js +34 -2
- package/out/typer/unifier.js.map +1 -1
- package/out/utils/file-node-cache.d.ts.map +1 -1
- package/out/utils/file-node-cache.js +5 -4
- package/out/utils/file-node-cache.js.map +1 -1
- package/out/utils/parseTsClassType.d.ts.map +1 -1
- package/out/utils/parseTsClassType.js +6 -0
- package/out/utils/parseTsClassType.js.map +1 -1
- package/package.json +5 -5
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,EAC4C,QAAQ,EAC5B,IAAI,EAQ+E,GAAG,EAMxH,QAAQ,EAGT,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACgE,cAAc,EAGpF,MAAM,qBAAqB,CAAC;AAS7B,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAK5C,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAYpE,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;AAOF,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;AAmPF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe;
|
|
1
|
+
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAC4C,QAAQ,EAC5B,IAAI,EAQ+E,GAAG,EAMxH,QAAQ,EAGT,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACgE,cAAc,EAGpF,MAAM,qBAAqB,CAAC;AAS7B,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAK5C,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAYpE,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;AAOF,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;AAmPF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe;oCAwpKpB,OAAO;sDAPW,gBAAgB,EAAE;;;;sBAhBjD,UAAU,GAAG,SAAS;;;8BA4Df,UAAU;2BAyBb,UAAU;;iDA9uFY,GAAG,KAAG,IAAI;;iBAyvFjD,MAAM;kBACL,MAAM;kBACN,MAAM;qBACH,MAAM;;kBAnqKF,UAAU,WAAW,MAAM,YAAY,YAAY;sCAg5D/B,IAAI,GAAG,QAAQ;2CAszGxC,UAAU,gBACV,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,gBAC/C,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,qBACvB,MAAM,EAAE,oBACT,CAAC,YAAY,EAAE,UAAU,KAAK,UAAU,EAAE,KAC3D,kBAAkB,GAAG,IAAI;EAwF7B;AAqED,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;AAMD,eAAO,MAAM,6BAA6B,aAC9B,UAAU,+DAGnB,MAAM,gBAAgB,CAyCxB,CAAC;AAMF,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
package/out/checker.js
CHANGED
|
@@ -271,6 +271,7 @@ function createErrorDiagnoser(context) {
|
|
|
271
271
|
let inPlayground = 0;
|
|
272
272
|
let inAuthLogic = false;
|
|
273
273
|
let inFrontendType = false;
|
|
274
|
+
let currentFrameworkKind = 'vue2';
|
|
274
275
|
let currentFrontendKind = '';
|
|
275
276
|
let dbType = '';
|
|
276
277
|
let curVarCounter = 0;
|
|
@@ -778,7 +779,7 @@ function createErrorDiagnoser(context) {
|
|
|
778
779
|
if (!info)
|
|
779
780
|
return;
|
|
780
781
|
const { ctx, afterItemPath, currentName } = info;
|
|
781
|
-
if (!afterItemPath)
|
|
782
|
+
if (!afterItemPath || currentFrameworkKind !== 'vue3')
|
|
782
783
|
return;
|
|
783
784
|
error(errorNode, `组件列表 ${ctx.node.name || ctx.node.tag} 内部存在对数据源数据 ${currentName}.item.${afterItemPath} 的修改,请切换成表单模式,并且需要将“数据源”属性切换为使用“表单数据”属性`);
|
|
784
785
|
}
|
|
@@ -794,24 +795,27 @@ function createErrorDiagnoser(context) {
|
|
|
794
795
|
return false;
|
|
795
796
|
}
|
|
796
797
|
/**
|
|
797
|
-
* 获取 ViewElement
|
|
798
|
-
*
|
|
798
|
+
* 获取 ViewElement 的数据源类型
|
|
799
|
+
* 基于 __ViewElementTV 中存储的 role === 'dataItem' 查找,优先返回有自有数据源的 dataItem。
|
|
799
800
|
*/
|
|
800
801
|
function getDataSourceTypeAnnotation(viewElement) {
|
|
801
|
-
// 向上查找定义了数据源类型的祖先组件
|
|
802
802
|
let currentNode = viewElement;
|
|
803
803
|
let depth = 0;
|
|
804
804
|
const maxSearchDepth = 5;
|
|
805
805
|
while (currentNode?.concept === 'ViewElement' && depth <= maxSearchDepth) {
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
806
|
+
if (currentNode.__ViewElementTV?.length) {
|
|
807
|
+
// 优先查找有自有数据源的 dataItem(如动态列的 T1)
|
|
808
|
+
for (const tv of currentNode.__ViewElementTV) {
|
|
809
|
+
if (tv.role === 'dataItem' && tv.hasOwnDataSource && tv.renamed) {
|
|
810
|
+
return tv.renamed;
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
// 兜底查找无自有数据源的 dataItem(如子组件继承的 T)
|
|
814
|
+
for (const tv of currentNode.__ViewElementTV) {
|
|
815
|
+
if (tv.role === 'dataItem' && tv.renamed) {
|
|
816
|
+
return tv.renamed;
|
|
817
|
+
}
|
|
818
|
+
}
|
|
815
819
|
}
|
|
816
820
|
currentNode = currentNode.parentNode;
|
|
817
821
|
depth++;
|
|
@@ -3535,10 +3539,11 @@ function createErrorDiagnoser(context) {
|
|
|
3535
3539
|
backend: {
|
|
3536
3540
|
scope: '服务端',
|
|
3537
3541
|
forbiddenScope: '前端',
|
|
3538
|
-
forbiddenCalleeNamespaces: ['nasl.browser', 'nasl.io'],
|
|
3542
|
+
forbiddenCalleeNamespaces: ['nasl.browser', 'nasl.io', 'nasl.ui'],
|
|
3539
3543
|
forbiddenCalleeNamesMap: {
|
|
3540
3544
|
'nasl.auth': ['decryptByAES', 'encryptByAES', 'logout', 'hasAuth'],
|
|
3541
3545
|
'nasl.configuration': ['getCurrentIp', 'getUserLanguage', 'getI18nList', 'setI18nLocale'],
|
|
3546
|
+
'nasl.ui': ['showMessage'],
|
|
3542
3547
|
},
|
|
3543
3548
|
},
|
|
3544
3549
|
};
|
|
@@ -4535,8 +4540,18 @@ function createErrorDiagnoser(context) {
|
|
|
4535
4540
|
const type = env.getType(variable);
|
|
4536
4541
|
// 如果是复杂数据结构
|
|
4537
4542
|
if (type?.isComplexType()) {
|
|
4538
|
-
if (type?.typeName === 'List'
|
|
4539
|
-
|
|
4543
|
+
if (type?.typeName === 'List') {
|
|
4544
|
+
const typeArgument = type?.typeArguments?.[0];
|
|
4545
|
+
if (typeArgument?.typeKind === 'primitive') {
|
|
4546
|
+
return;
|
|
4547
|
+
}
|
|
4548
|
+
const { parentKey, parentNode } = variable;
|
|
4549
|
+
if (parentKey === 'right' && parentNode?.concept === 'BinaryExpression' && parentNode?.operator === 'in') {
|
|
4550
|
+
const ref = env.resolveRef(typeArgument);
|
|
4551
|
+
if (ref?.concept === 'Enum') {
|
|
4552
|
+
return;
|
|
4553
|
+
}
|
|
4554
|
+
}
|
|
4540
4555
|
}
|
|
4541
4556
|
error(node, `数据查询中不可以使用复杂类型!当前类型:${type?.typeChineseTitle}。`, {
|
|
4542
4557
|
severity: Severity.WARN,
|
|
@@ -5242,6 +5257,7 @@ function createErrorDiagnoser(context) {
|
|
|
5242
5257
|
inAuthLogic = false;
|
|
5243
5258
|
const frontendType = node.getAncestor?.('FrontendType');
|
|
5244
5259
|
inFrontendType = !!frontendType;
|
|
5260
|
+
currentFrameworkKind = frontendType?.frameworkKind || 'vue2';
|
|
5245
5261
|
currentFrontendKind = frontendType?.kind || '';
|
|
5246
5262
|
fileNodes.push(node);
|
|
5247
5263
|
let diagnostics = diagnosticMap.get(node);
|