@lcap/nasl 4.4.1-rc.4 → 4.4.2-rc.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 (130) hide show
  1. package/out/generator/release-body/data.js +1 -1
  2. package/out/generator/release-body/data.js.map +1 -1
  3. package/out/generator/release-body/internal.d.ts +1 -0
  4. package/out/generator/release-body/internal.d.ts.map +1 -1
  5. package/out/generator/release-body/internal.js.map +1 -1
  6. package/out/generator/release-body/utils.d.ts +1 -0
  7. package/out/generator/release-body/utils.d.ts.map +1 -1
  8. package/out/generator/release-body/utils.js +1 -0
  9. package/out/generator/release-body/utils.js.map +1 -1
  10. package/out/index.d.ts +1 -1
  11. package/out/index.d.ts.map +1 -1
  12. package/out/index.js +2 -1
  13. package/out/index.js.map +1 -1
  14. package/out/natural/exports/nasl2Files.d.ts.map +1 -1
  15. package/out/natural/exports/nasl2Files.js +32 -1
  16. package/out/natural/exports/nasl2Files.js.map +1 -1
  17. package/out/natural/exports/transform2BatchActions/apply.d.ts +11 -0
  18. package/out/natural/exports/transform2BatchActions/apply.d.ts.map +1 -0
  19. package/out/natural/exports/transform2BatchActions/apply.js +68 -0
  20. package/out/natural/exports/transform2BatchActions/apply.js.map +1 -0
  21. package/out/natural/exports/transform2BatchActions/diff/directories.d.ts +17 -0
  22. package/out/natural/exports/transform2BatchActions/diff/directories.d.ts.map +1 -0
  23. package/out/natural/exports/transform2BatchActions/diff/directories.js +215 -0
  24. package/out/natural/exports/transform2BatchActions/diff/directories.js.map +1 -0
  25. package/out/natural/exports/transform2BatchActions/diff/index.d.ts +21 -0
  26. package/out/natural/exports/transform2BatchActions/diff/index.d.ts.map +1 -0
  27. package/out/natural/exports/transform2BatchActions/diff/index.js +20 -0
  28. package/out/natural/exports/transform2BatchActions/diff/index.js.map +1 -0
  29. package/out/natural/exports/transform2BatchActions/diff/nodes.d.ts +162 -0
  30. package/out/natural/exports/transform2BatchActions/diff/nodes.d.ts.map +1 -0
  31. package/out/natural/exports/transform2BatchActions/diff/nodes.js +464 -0
  32. package/out/natural/exports/transform2BatchActions/diff/nodes.js.map +1 -0
  33. package/out/natural/exports/transform2BatchActions/diff/roles.d.ts +18 -0
  34. package/out/natural/exports/transform2BatchActions/diff/roles.d.ts.map +1 -0
  35. package/out/natural/exports/transform2BatchActions/diff/roles.js +52 -0
  36. package/out/natural/exports/transform2BatchActions/diff/roles.js.map +1 -0
  37. package/out/natural/exports/transform2BatchActions/index.d.ts +41 -0
  38. package/out/natural/exports/transform2BatchActions/index.d.ts.map +1 -0
  39. package/out/natural/exports/transform2BatchActions/index.js +61 -0
  40. package/out/natural/exports/transform2BatchActions/index.js.map +1 -0
  41. package/out/natural/exports/transform2BatchActions/parse.d.ts +24 -0
  42. package/out/natural/exports/transform2BatchActions/parse.d.ts.map +1 -0
  43. package/out/natural/exports/transform2BatchActions/parse.js +234 -0
  44. package/out/natural/exports/transform2BatchActions/parse.js.map +1 -0
  45. package/out/natural/exports/transform2BatchActions/types.d.ts +147 -0
  46. package/out/natural/exports/transform2BatchActions/types.d.ts.map +1 -0
  47. package/out/natural/exports/transform2BatchActions/types.js +7 -0
  48. package/out/natural/exports/transform2BatchActions/types.js.map +1 -0
  49. package/out/natural/old/parser/transformTSCode.js +1 -1
  50. package/out/natural/old/parser/transformTSCode.js.map +1 -1
  51. package/out/natural/parser/parseNaturalTS.d.ts.map +1 -1
  52. package/out/natural/parser/parseNaturalTS.js +61 -1
  53. package/out/natural/parser/parseNaturalTS.js.map +1 -1
  54. package/out/natural/parser/parseNaturalTSXView.d.ts.map +1 -1
  55. package/out/natural/parser/parseNaturalTSXView.js +55 -6
  56. package/out/natural/parser/parseNaturalTSXView.js.map +1 -1
  57. package/out/natural/transforms/checker/checkIdentifierName.d.ts +6 -0
  58. package/out/natural/transforms/checker/checkIdentifierName.d.ts.map +1 -0
  59. package/out/natural/transforms/checker/checkIdentifierName.js +15 -0
  60. package/out/natural/transforms/checker/checkIdentifierName.js.map +1 -0
  61. package/out/natural/transforms/checker/checkViewElement.d.ts.map +1 -1
  62. package/out/natural/transforms/checker/checkViewElement.js +2 -0
  63. package/out/natural/transforms/checker/checkViewElement.js.map +1 -1
  64. package/out/natural/transforms/checker/index.d.ts +1 -0
  65. package/out/natural/transforms/checker/index.d.ts.map +1 -1
  66. package/out/natural/transforms/checker/index.js +3 -1
  67. package/out/natural/transforms/checker/index.js.map +1 -1
  68. package/out/natural/transforms/transform2Config.d.ts +17 -0
  69. package/out/natural/transforms/transform2Config.d.ts.map +1 -0
  70. package/out/natural/transforms/transform2Config.js +114 -0
  71. package/out/natural/transforms/transform2Config.js.map +1 -0
  72. package/out/natural/transforms/transform2GlobalLogicDeclaration.d.ts.map +1 -1
  73. package/out/natural/transforms/transform2GlobalLogicDeclaration.js +4 -1
  74. package/out/natural/transforms/transform2GlobalLogicDeclaration.js.map +1 -1
  75. package/out/natural/transforms/transform2Logic.d.ts.map +1 -1
  76. package/out/natural/transforms/transform2Logic.js +6 -12
  77. package/out/natural/transforms/transform2Logic.js.map +1 -1
  78. package/out/natural/transforms/transform2LogicItem.d.ts +1 -0
  79. package/out/natural/transforms/transform2LogicItem.d.ts.map +1 -1
  80. package/out/natural/transforms/transform2LogicItem.js +80 -42
  81. package/out/natural/transforms/transform2LogicItem.js.map +1 -1
  82. package/out/natural/transforms/transform2Param.d.ts +1 -1
  83. package/out/natural/transforms/transform2Param.d.ts.map +1 -1
  84. package/out/natural/transforms/transform2Param.js +19 -1
  85. package/out/natural/transforms/transform2Param.js.map +1 -1
  86. package/out/natural/transforms/transform2Roles.d.ts +3 -0
  87. package/out/natural/transforms/transform2Roles.d.ts.map +1 -0
  88. package/out/natural/transforms/transform2Roles.js +30 -0
  89. package/out/natural/transforms/transform2Roles.js.map +1 -0
  90. package/out/natural/transforms/transform2TypeAnnotation.d.ts.map +1 -1
  91. package/out/natural/transforms/transform2TypeAnnotation.js +8 -4
  92. package/out/natural/transforms/transform2TypeAnnotation.js.map +1 -1
  93. package/out/natural/transforms/transform2Variable.d.ts.map +1 -1
  94. package/out/natural/transforms/transform2Variable.js +4 -0
  95. package/out/natural/transforms/transform2Variable.js.map +1 -1
  96. package/out/natural/transforms/utils/flattenStatementsWithComments.d.ts +11 -0
  97. package/out/natural/transforms/utils/flattenStatementsWithComments.d.ts.map +1 -0
  98. package/out/natural/transforms/utils/flattenStatementsWithComments.js +36 -0
  99. package/out/natural/transforms/utils/flattenStatementsWithComments.js.map +1 -0
  100. package/out/natural/transforms/utils/parseDecorator.d.ts +2 -2
  101. package/out/natural/transforms/utils/parseDecorator.d.ts.map +1 -1
  102. package/out/natural/transforms/utils/parseDecorator.js +8 -5
  103. package/out/natural/transforms/utils/parseDecorator.js.map +1 -1
  104. package/out/natural/utils/index.d.ts +5 -0
  105. package/out/natural/utils/index.d.ts.map +1 -1
  106. package/out/natural/utils/index.js +11 -1
  107. package/out/natural/utils/index.js.map +1 -1
  108. package/out/natural/utils/nasl-file-types.d.ts +6 -1
  109. package/out/natural/utils/nasl-file-types.d.ts.map +1 -1
  110. package/out/natural/utils/nasl-file-types.js +49 -2
  111. package/out/natural/utils/nasl-file-types.js.map +1 -1
  112. package/out/server/extendBaseNode.d.ts.map +1 -1
  113. package/out/server/extendBaseNode.js +8 -3
  114. package/out/server/extendBaseNode.js.map +1 -1
  115. package/out/service/instruct-ruler/ruler.d.ts +3 -1
  116. package/out/service/instruct-ruler/ruler.d.ts.map +1 -1
  117. package/out/service/instruct-ruler/ruler.js +2 -1
  118. package/out/service/instruct-ruler/ruler.js.map +1 -1
  119. package/out/service/storage/init.d.ts +5 -0
  120. package/out/service/storage/init.d.ts.map +1 -1
  121. package/out/service/storage/init.js +2 -1
  122. package/out/service/storage/init.js.map +1 -1
  123. package/out/service/storage/specTools.js +2 -2
  124. package/out/service/storage/specTools.js.map +1 -1
  125. package/package.json +10 -9
  126. package/sandbox/stdlib/nasl.util.ts +16 -15
  127. package/out/natural/exports/transform2BatchActions.d.ts +0 -114
  128. package/out/natural/exports/transform2BatchActions.d.ts.map +0 -1
  129. package/out/natural/exports/transform2BatchActions.js +0 -1233
  130. package/out/natural/exports/transform2BatchActions.js.map +0 -1
@@ -4,10 +4,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.transformCall2Interface = exports.transformAlert2ShowMessage = exports.transformForEach2ForEachStatement = exports.transformForOf2ForEachStatement = exports.transform2ForEachStatement = exports.transformMap2ListTransform = exports.transform2UIFunction = exports.transformCall2CallFunction = exports.transform2CallFunction = exports.transform2CallOtherNASLLogic = exports.transform2CallEventLogic = exports.transformCall2JSONFunctions = exports.transformCall2Logging = exports.transformCall2ConsoleLog = exports.transformCall2CallDataSourceLogic = exports.transformCall2CallEntityLogic = exports.transformCall2CallViewElementLogic = exports.transformCallFunctionExpression2Match = exports.transformMemberExpression = exports.transformNewExpression = exports.transform2NewRegex = exports.transform2PartialNewComposite = exports.transform2Comment = exports.transform2StringInterpolation = exports.transformReturnStatement2AssignmentOrEnd = exports.transform2NullLiteral = exports.transform2NumericLiteral = exports.transform2DirectiveLiteral = exports.transform2StringLiteral = exports.transform2BooleanLiteral = exports.transformUpdateExpression2Assignment = exports.transform2Assignment = exports.transform2AnonymousFunction = exports.transformIdentifier = exports.transformSwitchStatement2Match = exports.transform2WhileStatement = exports.transform2Break = exports.transform2Continue = exports.transform2IfStatement = exports.transform2BinaryExpression = exports.transform2VariadicExpression = exports.transformCallExpressionToBinaryExpression = exports.fixLogicNode = exports.flatIfStatementForMatch = exports.flatMatchPatternsExpression = exports.getSelectMembers = exports.unflatMemberExpression = exports.flatMemberExpression = exports.fixExpression = exports.TransformManager = void 0;
7
- exports.transform2LogicItem = exports.transform2DefaultValue = exports.transformNode2Directory = exports.transformCall2Paginate = exports.transformCall2LogicWithAuth = exports.transformCall2Logic = exports.transformCall2CallViewLogic = exports.transformCall2Extension = exports.transformCall2Connector = void 0;
7
+ exports.transform2LogicItem = exports.transform2DefaultValue = exports.transformNode2Directory = exports.transformCall2Paginate = exports.transformCall2GetCustomConfig = exports.transformCall2LogicWithAuth = exports.transformCall2Logic = exports.transformCall2CallViewLogic = exports.transformCall2Extension = exports.transformCall2Connector = void 0;
8
8
  const utils_1 = require("../utils");
9
9
  const misc_1 = require("./utils/misc");
10
+ const flattenStatementsWithComments_1 = require("./utils/flattenStatementsWithComments");
10
11
  const checkDataQueryCalleeNameOrder_1 = require("./checker/checkDataQueryCalleeNameOrder");
12
+ const checkIdentifierName_1 = require("./checker/checkIdentifierName");
11
13
  const transform2TypeAnnotation_1 = require("./transform2TypeAnnotation");
12
14
  const transform2Param_1 = require("./transform2Param");
13
15
  const server_1 = __importDefault(require("../../server"));
@@ -80,23 +82,13 @@ function transformTSCode2SubLogic(node, options) {
80
82
  statements = [...node?.body?.directives, ...node?.body?.body];
81
83
  }
82
84
  parameters.forEach((node) => {
83
- const param = (0, transform2Param_1.transform2Param)(node, options);
85
+ const param = (0, transform2Param_1.transform2Param)(node, options, undefined, true);
84
86
  if (param && !param?.typeAnnotation) {
85
87
  param.typeAnnotation = null;
86
88
  }
87
89
  param && logic.addParam(param);
88
90
  });
89
- const newStatements = [];
90
- statements.forEach((node, index) => {
91
- if (node?.leadingComments?.length) {
92
- newStatements.push(...node?.leadingComments);
93
- }
94
- if (node?.trailingComments?.length && index === statements.length - 1) {
95
- newStatements.push(...node?.trailingComments);
96
- }
97
- newStatements.push(node);
98
- });
99
- statements = newStatements;
91
+ statements = (0, flattenStatementsWithComments_1.flattenStatementsWithComments)(statements);
100
92
  const body = statements.map((node) => transformNodeFunction(node, {
101
93
  ...options,
102
94
  logic,
@@ -592,6 +584,7 @@ function transform2ArrayPattern(decl, options) {
592
584
  if (element.type === 'Identifier') {
593
585
  const varTypeAnnotation = element.typeAnnotation?.typeAnnotation;
594
586
  if (options.transformType === 'logic') {
587
+ (0, checkIdentifierName_1.checkIdentifierName)(element.name, '变量', options, element);
595
588
  options.logic.variables.push(new utils_1.naslTypes.Variable({
596
589
  name: element.name,
597
590
  typeAnnotation: varTypeAnnotation && (0, transform2TypeAnnotation_1.transform2TypeAnnotation)(varTypeAnnotation, options) || undefined,
@@ -636,6 +629,7 @@ function transform2VariableAndAddAssignment(node, options) {
636
629
  }
637
630
  let typeAnnotation;
638
631
  if (options.transformType === 'logic' && ![...options.logic.variables, ...options.logic.returns].some((variable) => variable.name === variableName)) {
632
+ (0, checkIdentifierName_1.checkIdentifierName)(variableName, '变量', options, decl.id);
639
633
  const varTypeAnnotation = decl.id.typeAnnotation?.typeAnnotation;
640
634
  typeAnnotation = varTypeAnnotation && (0, transform2TypeAnnotation_1.transform2TypeAnnotation)(varTypeAnnotation, options) || undefined;
641
635
  const variable = new utils_1.naslTypes.Variable({
@@ -680,15 +674,7 @@ function flatCommentWithNode(node) {
680
674
  newNodeList = [...node?.innerComments];
681
675
  }
682
676
  if (node?.body?.length) {
683
- node?.body.forEach((item, index) => {
684
- if (item?.leadingComments?.length) {
685
- newNodeList.push(...item?.leadingComments);
686
- }
687
- if (item?.trailingComments?.length && index === node?.body.length - 1) {
688
- newNodeList.push(...item?.trailingComments);
689
- }
690
- newNodeList.push(item);
691
- });
677
+ newNodeList.push(...(0, flattenStatementsWithComments_1.flattenStatementsWithComments)(node.body));
692
678
  }
693
679
  return newNodeList;
694
680
  }
@@ -1005,16 +991,24 @@ function transform2StringInterpolation(node, options) {
1005
991
  });
1006
992
  }
1007
993
  exports.transform2StringInterpolation = transform2StringInterpolation;
994
+ function transformRequire2JSBlock(node, calleeName, callee, options) {
995
+ const arg0 = node.arguments[0].value;
996
+ const filename = arg0.replace('./tmp/', '');
997
+ return new utils_1.naslTypes.JSBlock({ code: options.externalFiles?.get(filename) ?? '' });
998
+ }
1008
999
  function transform2Comment(node, options) {
1009
1000
  if (node.type === 'EmptyStatement') {
1010
1001
  if (node?.leadingComments) {
1011
- const newValue = node?.leadingComments?.[0]?.value?.replace(/\n/g, '<br>');
1002
+ // trim() 防止 Babel 解析 /* ... */ 时将内侧空格存入 value
1003
+ // 导致每次 files2nasl → nasl2files 轮回后注释空格累积 +1
1004
+ const newValue = node?.leadingComments?.[0]?.value?.trim().replace(/\n/g, '<br>');
1012
1005
  return new utils_1.naslTypes.Comment({
1013
1006
  value: String(newValue),
1014
1007
  });
1015
1008
  }
1016
1009
  }
1017
- const newValue = node?.value?.replace(/\n/g, '<br>');
1010
+ // trim() 同上,防止空格在每次 prepare-src 轮回中递增
1011
+ const newValue = node?.value?.trim().replace(/\n/g, '<br>');
1018
1012
  return new utils_1.naslTypes.Comment({
1019
1013
  value: String(newValue || ''),
1020
1014
  });
@@ -1258,6 +1252,14 @@ function transformMemberExpression(node, options) {
1258
1252
  return newNode;
1259
1253
  }
1260
1254
  }
1255
+ const configPropertyRegex = /^(app|extensions\.\w+)\.configuration\.(?:groups\.)?(\w+)\.(?:properties\.)?(\w+)$/;
1256
+ if (configPropertyRegex.test(calleeName)) {
1257
+ const [, prefix, groupName, propName] = calleeName.match(configPropertyRegex);
1258
+ return new utils_1.naslTypes.Identifier({
1259
+ namespace: `${prefix}.configuration.groups.${groupName}.properties`,
1260
+ name: propName,
1261
+ });
1262
+ }
1261
1263
  if (node.property.type === 'NumericLiteral' || node?.property?.type === 'BinaryExpression') {
1262
1264
  return new utils_1.naslTypes.CallFunction({
1263
1265
  calleeNamespace: 'nasl.util',
@@ -1470,6 +1472,7 @@ function transformCall2CallDataSourceLogic(node, calleeName, callee, options) {
1470
1472
  if (newArguments?.[0])
1471
1473
  newArguments[0].keyword = 'body';
1472
1474
  if (newArguments?.[1]) {
1475
+ newArguments[1].keyword = 'properties';
1473
1476
  if (newArguments[1]?.expression.concept === 'AnonymousFunction' && newArguments[1]?.expression?.params?.[0]?.name) {
1474
1477
  newArguments[1].expression.params[0].typeAnnotation = utils_1.naslTypes.TypeAnnotation.createReference(entityName, {
1475
1478
  typeNamespace: calleeNamespace,
@@ -1497,6 +1500,7 @@ function transformCall2CallDataSourceLogic(node, calleeName, callee, options) {
1497
1500
  }
1498
1501
  const expressionJson = expression?.toJSON();
1499
1502
  const argument2 = newArguments?.[1];
1503
+ const argument3 = newArguments?.[2];
1500
1504
  newArguments = [new utils_1.naslTypes.Argument({
1501
1505
  expression: new utils_1.naslTypes.Function({
1502
1506
  name: "filter",
@@ -1523,6 +1527,10 @@ function transformCall2CallDataSourceLogic(node, calleeName, callee, options) {
1523
1527
  else {
1524
1528
  newArguments.push(new utils_1.naslTypes.Argument({}));
1525
1529
  }
1530
+ if (argument3?.expression?.concept === 'AnonymousFunction') {
1531
+ argument3.keyword = 'properties';
1532
+ newArguments.push(argument3);
1533
+ }
1526
1534
  }
1527
1535
  }
1528
1536
  return new utils_1.naslTypes.CallLogic({
@@ -1674,11 +1682,6 @@ function transform2CallFunction(node, calleeName, argument, options) {
1674
1682
  });
1675
1683
  }
1676
1684
  }
1677
- if (calleeName === 'Convert' && !newTypeArguments) {
1678
- newTypeArguments = [
1679
- new utils_1.naslTypes.TypeAnnotation()
1680
- ];
1681
- }
1682
1685
  if (calleeName === 'FromString') {
1683
1686
  if (newTypeArguments?.[0]?.typeName === 'Time' && newArguments?.[0]?.expression?.concept === 'StringLiteral') {
1684
1687
  const timeValue = newArguments?.[0]?.expression?.value;
@@ -1772,16 +1775,16 @@ function transform2CallFunction(node, calleeName, argument, options) {
1772
1775
  else {
1773
1776
  // 最后判断一下参数数量是否匹配
1774
1777
  // 这两个参数比较特殊,可以无限加参数,不再判断参数数量
1775
- const excludes = ['HasValue', 'ListSort'];
1776
- if (func.params?.length !== newArguments?.length && !excludes.includes(calleeName)) {
1777
- return (0, utils_1.throwError)(options, `函数${calleeName}生成不符合标准的函数调用,参数数量不匹配`, node.callee, node);
1778
- }
1779
- else {
1780
- newArguments?.forEach((arg, idx) => {
1781
- if (func?.params[idx]?.name)
1782
- arg.keyword = func?.params[idx]?.name;
1783
- });
1784
- }
1778
+ // 走LS检查,不在transform中判断了
1779
+ // const excludes = ['HasValue', 'ListSort']
1780
+ // if (func.params?.length !== newArguments?.length && !excludes.includes(calleeName)) {
1781
+ // return throwError(options, `函数${calleeName}生成不符合标准的函数调用,参数数量不匹配`, node.callee, node);
1782
+ // } else {
1783
+ // }
1784
+ newArguments?.forEach((arg, idx) => {
1785
+ if (func?.params[idx]?.name)
1786
+ arg.keyword = func?.params[idx]?.name;
1787
+ });
1785
1788
  }
1786
1789
  const nodeElement = new utils_1.naslTypes.CallFunction({
1787
1790
  calleeNamespace: 'nasl.util',
@@ -1853,8 +1856,15 @@ function transformCall2CallFunction(node, calleeName, callee, options) {
1853
1856
  return transform2CallFunction(node, curCalleeName, argument, options);
1854
1857
  }
1855
1858
  exports.transformCall2CallFunction = transformCall2CallFunction;
1859
+ const SUPPORTED_NASL_UI_FUNCTIONS = ['showMessage', 'destination', 'gotoLink'];
1856
1860
  function transform2UIFunction(node, calleeName, callee, options) {
1857
- if (callee[2].name === 'destination') {
1861
+ const uiFunctionName = callee[2].name;
1862
+ if (!SUPPORTED_NASL_UI_FUNCTIONS.includes(uiFunctionName)) {
1863
+ return (0, utils_1.throwError)(options, `nasl.ui 仅支持 ${SUPPORTED_NASL_UI_FUNCTIONS.map((f) => `nasl.ui.${f}`).join('、')},不支持 nasl.ui.${uiFunctionName}`, node);
1864
+ }
1865
+ if (uiFunctionName === 'destination') {
1866
+ if (!node.arguments[0])
1867
+ return (0, utils_1.throwError)(options, 'nasl.ui.destination 缺少目标页面参数', node);
1858
1868
  let namespaceNode = node.arguments[0];
1859
1869
  let namespace = '';
1860
1870
  if (namespaceNode.type === 'TemplateLiteral') {
@@ -1900,7 +1910,9 @@ function transform2UIFunction(node, calleeName, callee, options) {
1900
1910
  arguments: argument,
1901
1911
  });
1902
1912
  }
1903
- if (callee[2].name === 'gotoLink') {
1913
+ if (uiFunctionName === 'gotoLink') {
1914
+ if (!node.arguments[0])
1915
+ return (0, utils_1.throwError)(options, 'nasl.ui.gotoLink 缺少链接参数', node);
1904
1916
  return new utils_1.naslTypes.ExternalDestination({
1905
1917
  link: fixExpression(node?.arguments[0], options),
1906
1918
  });
@@ -1912,7 +1924,7 @@ function transform2UIFunction(node, calleeName, callee, options) {
1912
1924
  // }
1913
1925
  return new utils_1.naslTypes.CallLogic({
1914
1926
  calleeNamespace: 'nasl.ui',
1915
- calleeName: callee[2].name,
1927
+ calleeName: uiFunctionName,
1916
1928
  shortcut: true,
1917
1929
  /**
1918
1930
  * 这个函数是修复 AI 翻译出错的情况,与正常的 transform 做个区分
@@ -2171,6 +2183,30 @@ function transformCall2LogicWithAuth(node, calleeName, callee, options) {
2171
2183
  });
2172
2184
  }
2173
2185
  exports.transformCall2LogicWithAuth = transformCall2LogicWithAuth;
2186
+ function transformCall2GetCustomConfig(node, calleeName, callee, options) {
2187
+ const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
2188
+ const arg = node.arguments?.[0];
2189
+ if (!arg || arg.type !== 'MemberExpression') {
2190
+ return (0, utils_1.throwError)(options, 'nasl.configuration.getCustomConfig 的参数必须是 {app|extensions.xxx}.configuration.{group}.{name} 形式的成员访问', node);
2191
+ }
2192
+ const flatCallee = flatMemberExpression(arg);
2193
+ const argName = flatCallee.map((n) => n.name).join('.');
2194
+ const configPropertyRegex = /^(app|extensions\.\w+)\.configuration\.(\w+)\.(\w+)$/;
2195
+ if (!configPropertyRegex.test(argName)) {
2196
+ return (0, utils_1.throwError)(options, `nasl.configuration.getCustomConfig 参数路径格式不正确,期望 {app|extensions.xxx}.configuration.{group}.{name},实际为 ${argName}`, node);
2197
+ }
2198
+ return new utils_1.naslTypes.CallLogic({
2199
+ calleeNamespace: 'nasl.configuration',
2200
+ calleeName: 'getCustomConfig',
2201
+ arguments: [
2202
+ new utils_1.naslTypes.Argument({
2203
+ keyword: 'name',
2204
+ expression: transformNodeFunction(arg, options),
2205
+ }),
2206
+ ],
2207
+ });
2208
+ }
2209
+ exports.transformCall2GetCustomConfig = transformCall2GetCustomConfig;
2174
2210
  function transformCall2Paginate(node, calleeName, callee, options) {
2175
2211
  const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
2176
2212
  const newCallee = node.arguments || [];
@@ -2648,10 +2684,12 @@ function transform2LogicItem(node, options) {
2648
2684
  });
2649
2685
  transformManager.register('MemberExpression', transformMemberExpression);
2650
2686
  transformManager.register('OptionalMemberExpression', transformMemberExpression);
2687
+ transformManager.registerCallExpression((node, calleeName) => calleeName === 'require' && node.arguments[0]?.value?.startsWith('./tmp/'), transformRequire2JSBlock);
2651
2688
  transformManager.registerCallExpression((node, calleeName, callee) => callee.length === 1 && (node.callee.type === 'FunctionExpression' && node.callee.id?.name === 'match' || node.callee.type === 'ArrowFunctionExpression'), transformCallFunctionExpression2Match);
2652
2689
  transformManager.registerCallExpression((node, calleeName) => /^\$refs\./.test(calleeName), transformCall2CallViewElementLogic);
2653
2690
  transformManager.registerCallExpression((node, calleeName, callee) => callee.length === 2 && callee[0].type === 'Identifier' && callee[0].name.endsWith('Entity'), transformCall2CallEntityLogic);
2654
2691
  transformManager.registerCallExpression('nasl.oql.query', transformCall2OQLQuery);
2692
+ transformManager.registerCallExpression('nasl.configuration.getCustomConfig', transformCall2GetCustomConfig);
2655
2693
  transformManager.registerCallExpression('nasl.util.consoleLog', transformCall2ConsoleLog);
2656
2694
  transformManager.registerCallExpression('console.log', transformCall2ConsoleLog);
2657
2695
  transformManager.registerCallExpression((node, calleeName) => calleeName.startsWith('nasl.logging.'), transformCall2Logging);