@lcap/nasl-language-server-core 4.4.2-rc.5 → 4.5.0-beta.2

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 (40) hide show
  1. package/out/checker.d.ts.map +1 -1
  2. package/out/checker.js +29 -15
  3. package/out/checker.js.map +1 -1
  4. package/out/reference-manager/reference-manager.d.ts.map +1 -1
  5. package/out/reference-manager/reference-manager.js +14 -0
  6. package/out/reference-manager/reference-manager.js.map +1 -1
  7. package/out/typer/collectGlobalDefs.d.ts.map +1 -1
  8. package/out/typer/collectGlobalDefs.js +55 -7
  9. package/out/typer/collectGlobalDefs.js.map +1 -1
  10. package/out/typer/component-def-manager/component-def-manager.d.ts +65 -7
  11. package/out/typer/component-def-manager/component-def-manager.d.ts.map +1 -1
  12. package/out/typer/component-def-manager/component-def-manager.js +400 -8
  13. package/out/typer/component-def-manager/component-def-manager.js.map +1 -1
  14. package/out/typer/dispatch-call.d.ts.map +1 -1
  15. package/out/typer/dispatch-call.js +7 -0
  16. package/out/typer/dispatch-call.js.map +1 -1
  17. package/out/typer/dispatch-view.d.ts.map +1 -1
  18. package/out/typer/dispatch-view.js +335 -141
  19. package/out/typer/dispatch-view.js.map +1 -1
  20. package/out/typer/overload-helper.d.ts.map +1 -1
  21. package/out/typer/overload-helper.js +0 -3
  22. package/out/typer/overload-helper.js.map +1 -1
  23. package/out/typer/subster.d.ts.map +1 -1
  24. package/out/typer/subster.js +54 -35
  25. package/out/typer/subster.js.map +1 -1
  26. package/out/typer/type-predicate.d.ts +14 -1
  27. package/out/typer/type-predicate.d.ts.map +1 -1
  28. package/out/typer/type-predicate.js +303 -3
  29. package/out/typer/type-predicate.js.map +1 -1
  30. package/out/typer/typer.d.ts +1 -0
  31. package/out/typer/typer.d.ts.map +1 -1
  32. package/out/typer/typer.js.map +1 -1
  33. package/out/typer/unifier.d.ts +8 -0
  34. package/out/typer/unifier.d.ts.map +1 -1
  35. package/out/typer/unifier.js +32 -0
  36. package/out/typer/unifier.js.map +1 -1
  37. package/out/utils/file-node-cache.d.ts.map +1 -1
  38. package/out/utils/file-node-cache.js +5 -4
  39. package/out/utils/file-node-cache.js.map +1 -1
  40. package/package.json +6 -6
@@ -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;oCAspKpB,OAAO;sDAPW,gBAAgB,EAAE;;;;sBAhBjD,UAAU,GAAG,SAAS;;;8BA4Df,UAAU;2BAyBb,UAAU;;iDA7uFY,GAAG,KAAG,IAAI;;iBAwvFjD,MAAM;kBACL,MAAM;kBACN,MAAM;qBACH,MAAM;;kBAlqKF,UAAU,WAAW,MAAM,YAAY,YAAY;sCAg5D/B,IAAI,GAAG,QAAQ;2CAqzGxC,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
@@ -794,24 +794,27 @@ function createErrorDiagnoser(context) {
794
794
  return false;
795
795
  }
796
796
  /**
797
- * 获取 ViewElement 的数据源类型(T 或 T1)
798
- * 参考 util.js 中的 getDataTypeOfViewElement 实现
797
+ * 获取 ViewElement 的数据源类型
798
+ * 基于 __ViewElementTV 中存储的 role === 'dataItem' 查找,优先返回有自有数据源的 dataItem。
799
799
  */
800
800
  function getDataSourceTypeAnnotation(viewElement) {
801
- // 向上查找定义了数据源类型的祖先组件
802
801
  let currentNode = viewElement;
803
802
  let depth = 0;
804
803
  const maxSearchDepth = 5;
805
804
  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;
805
+ if (currentNode.__ViewElementTV?.length) {
806
+ // 优先查找有自有数据源的 dataItem(如动态列的 T1)
807
+ for (const tv of currentNode.__ViewElementTV) {
808
+ if (tv.role === 'dataItem' && tv.hasOwnDataSource && tv.renamed) {
809
+ return tv.renamed;
810
+ }
811
+ }
812
+ // 兜底查找无自有数据源的 dataItem(如子组件继承的 T)
813
+ for (const tv of currentNode.__ViewElementTV) {
814
+ if (tv.role === 'dataItem' && tv.renamed) {
815
+ return tv.renamed;
816
+ }
817
+ }
815
818
  }
816
819
  currentNode = currentNode.parentNode;
817
820
  depth++;
@@ -3535,10 +3538,11 @@ function createErrorDiagnoser(context) {
3535
3538
  backend: {
3536
3539
  scope: '服务端',
3537
3540
  forbiddenScope: '前端',
3538
- forbiddenCalleeNamespaces: ['nasl.browser', 'nasl.io'],
3541
+ forbiddenCalleeNamespaces: ['nasl.browser', 'nasl.io', 'nasl.ui'],
3539
3542
  forbiddenCalleeNamesMap: {
3540
3543
  'nasl.auth': ['decryptByAES', 'encryptByAES', 'logout', 'hasAuth'],
3541
3544
  'nasl.configuration': ['getCurrentIp', 'getUserLanguage', 'getI18nList', 'setI18nLocale'],
3545
+ 'nasl.ui': ['showMessage'],
3542
3546
  },
3543
3547
  },
3544
3548
  };
@@ -4535,8 +4539,18 @@ function createErrorDiagnoser(context) {
4535
4539
  const type = env.getType(variable);
4536
4540
  // 如果是复杂数据结构
4537
4541
  if (type?.isComplexType()) {
4538
- if (type?.typeName === 'List' && type?.typeArguments?.[0]?.typeKind === 'primitive') {
4539
- return;
4542
+ if (type?.typeName === 'List') {
4543
+ const typeArgument = type?.typeArguments?.[0];
4544
+ if (typeArgument?.typeKind === 'primitive') {
4545
+ return;
4546
+ }
4547
+ const { parentKey, parentNode } = variable;
4548
+ if (parentKey === 'right' && parentNode?.concept === 'BinaryExpression' && parentNode?.operator === 'in') {
4549
+ const ref = env.resolveRef(typeArgument);
4550
+ if (ref?.concept === 'Enum') {
4551
+ return;
4552
+ }
4553
+ }
4540
4554
  }
4541
4555
  error(node, `数据查询中不可以使用复杂类型!当前类型:${type?.typeChineseTitle}。`, {
4542
4556
  severity: Severity.WARN,