@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.
Files changed (49) hide show
  1. package/out/checker.d.ts.map +1 -1
  2. package/out/checker.js +32 -16
  3. package/out/checker.js.map +1 -1
  4. package/out/typer/collectGlobalDefs.d.ts.map +1 -1
  5. package/out/typer/collectGlobalDefs.js +73 -7
  6. package/out/typer/collectGlobalDefs.js.map +1 -1
  7. package/out/typer/component-def-manager/component-def-manager.d.ts +65 -7
  8. package/out/typer/component-def-manager/component-def-manager.d.ts.map +1 -1
  9. package/out/typer/component-def-manager/component-def-manager.js +400 -8
  10. package/out/typer/component-def-manager/component-def-manager.js.map +1 -1
  11. package/out/typer/dispatch-call.d.ts.map +1 -1
  12. package/out/typer/dispatch-call.js +13 -1
  13. package/out/typer/dispatch-call.js.map +1 -1
  14. package/out/typer/dispatch-view.d.ts.map +1 -1
  15. package/out/typer/dispatch-view.js +342 -141
  16. package/out/typer/dispatch-view.js.map +1 -1
  17. package/out/typer/overload-helper.d.ts.map +1 -1
  18. package/out/typer/overload-helper.js +0 -3
  19. package/out/typer/overload-helper.js.map +1 -1
  20. package/out/typer/sem-diag.js +1 -1
  21. package/out/typer/sem-diag.js.map +1 -1
  22. package/out/typer/solver.d.ts.map +1 -1
  23. package/out/typer/solver.js +2 -2
  24. package/out/typer/solver.js.map +1 -1
  25. package/out/typer/subster.d.ts.map +1 -1
  26. package/out/typer/subster.js +54 -35
  27. package/out/typer/subster.js.map +1 -1
  28. package/out/typer/type-manager.d.ts.map +1 -1
  29. package/out/typer/type-manager.js +4 -0
  30. package/out/typer/type-manager.js.map +1 -1
  31. package/out/typer/type-predicate.d.ts +19 -1
  32. package/out/typer/type-predicate.d.ts.map +1 -1
  33. package/out/typer/type-predicate.js +325 -18
  34. package/out/typer/type-predicate.js.map +1 -1
  35. package/out/typer/typer.d.ts +9 -0
  36. package/out/typer/typer.d.ts.map +1 -1
  37. package/out/typer/typer.js +8 -0
  38. package/out/typer/typer.js.map +1 -1
  39. package/out/typer/unifier.d.ts +8 -0
  40. package/out/typer/unifier.d.ts.map +1 -1
  41. package/out/typer/unifier.js +34 -2
  42. package/out/typer/unifier.js.map +1 -1
  43. package/out/utils/file-node-cache.d.ts.map +1 -1
  44. package/out/utils/file-node-cache.js +5 -4
  45. package/out/utils/file-node-cache.js.map +1 -1
  46. package/out/utils/parseTsClassType.d.ts.map +1 -1
  47. package/out/utils/parseTsClassType.js +6 -0
  48. package/out/utils/parseTsClassType.js.map +1 -1
  49. package/package.json +5 -5
@@ -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;oCAsoKpB,OAAO;sDAPW,gBAAgB,EAAE;;;;sBAhBjD,UAAU,GAAG,SAAS;;;8BA4Df,UAAU;2BAyBb,UAAU;;iDAluFY,GAAG,KAAG,IAAI;;iBA6uFjD,MAAM;kBACL,MAAM;kBACN,MAAM;qBACH,MAAM;;kBAlpKF,UAAU,WAAW,MAAM,YAAY,YAAY;sCA24D/B,IAAI,GAAG,QAAQ;2CA0yGxC,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"}
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 的数据源类型(T 或 T1)
798
- * 参考 util.js 中的 getDataTypeOfViewElement 实现
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
- // 使用 __ViewElementTV 获取类型,与 IDE 前端 getDataTypeOfViewElement 保持一致
807
- if (currentNode.__TypeAnnotation && currentNode.__ViewElementTV?.length) {
808
- // 先查找 T1(动态列),若无再查找 T(普通数据源组件)
809
- const t1 = currentNode.__ViewElementTV.find((x) => x.rawName === 'T1');
810
- if (t1?.renamed)
811
- return t1.renamed;
812
- const t = currentNode.__ViewElementTV.find((x) => x.rawName === 'T');
813
- if (t?.renamed)
814
- return t.renamed;
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' && type?.typeArguments?.[0]?.typeKind === 'primitive') {
4539
- return;
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);