@lcap/nasl 4.4.1-rc.5 → 4.4.2-rc.3

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 (126) hide show
  1. package/out/index.d.ts +1 -1
  2. package/out/index.d.ts.map +1 -1
  3. package/out/index.js +2 -1
  4. package/out/index.js.map +1 -1
  5. package/out/natural/exports/nasl2Files.d.ts.map +1 -1
  6. package/out/natural/exports/nasl2Files.js +32 -1
  7. package/out/natural/exports/nasl2Files.js.map +1 -1
  8. package/out/natural/exports/transform2BatchActions/apply.d.ts +11 -0
  9. package/out/natural/exports/transform2BatchActions/apply.d.ts.map +1 -0
  10. package/out/natural/exports/transform2BatchActions/apply.js +68 -0
  11. package/out/natural/exports/transform2BatchActions/apply.js.map +1 -0
  12. package/out/natural/exports/transform2BatchActions/diff/directories.d.ts +17 -0
  13. package/out/natural/exports/transform2BatchActions/diff/directories.d.ts.map +1 -0
  14. package/out/natural/exports/transform2BatchActions/diff/directories.js +215 -0
  15. package/out/natural/exports/transform2BatchActions/diff/directories.js.map +1 -0
  16. package/out/natural/exports/transform2BatchActions/diff/index.d.ts +21 -0
  17. package/out/natural/exports/transform2BatchActions/diff/index.d.ts.map +1 -0
  18. package/out/natural/exports/transform2BatchActions/diff/index.js +20 -0
  19. package/out/natural/exports/transform2BatchActions/diff/index.js.map +1 -0
  20. package/out/natural/exports/transform2BatchActions/diff/nodes.d.ts +162 -0
  21. package/out/natural/exports/transform2BatchActions/diff/nodes.d.ts.map +1 -0
  22. package/out/natural/exports/transform2BatchActions/diff/nodes.js +464 -0
  23. package/out/natural/exports/transform2BatchActions/diff/nodes.js.map +1 -0
  24. package/out/natural/exports/transform2BatchActions/diff/roles.d.ts +18 -0
  25. package/out/natural/exports/transform2BatchActions/diff/roles.d.ts.map +1 -0
  26. package/out/natural/exports/transform2BatchActions/diff/roles.js +52 -0
  27. package/out/natural/exports/transform2BatchActions/diff/roles.js.map +1 -0
  28. package/out/natural/exports/transform2BatchActions/index.d.ts +41 -0
  29. package/out/natural/exports/transform2BatchActions/index.d.ts.map +1 -0
  30. package/out/natural/exports/transform2BatchActions/index.js +61 -0
  31. package/out/natural/exports/transform2BatchActions/index.js.map +1 -0
  32. package/out/natural/exports/transform2BatchActions/parse.d.ts +24 -0
  33. package/out/natural/exports/transform2BatchActions/parse.d.ts.map +1 -0
  34. package/out/natural/exports/transform2BatchActions/parse.js +234 -0
  35. package/out/natural/exports/transform2BatchActions/parse.js.map +1 -0
  36. package/out/natural/exports/transform2BatchActions/types.d.ts +147 -0
  37. package/out/natural/exports/transform2BatchActions/types.d.ts.map +1 -0
  38. package/out/natural/exports/transform2BatchActions/types.js +7 -0
  39. package/out/natural/exports/transform2BatchActions/types.js.map +1 -0
  40. package/out/natural/old/parser/transformTSCode.js +1 -1
  41. package/out/natural/old/parser/transformTSCode.js.map +1 -1
  42. package/out/natural/parser/parseNaturalTS.d.ts.map +1 -1
  43. package/out/natural/parser/parseNaturalTS.js +61 -1
  44. package/out/natural/parser/parseNaturalTS.js.map +1 -1
  45. package/out/natural/parser/parseNaturalTSXView.d.ts.map +1 -1
  46. package/out/natural/parser/parseNaturalTSXView.js +33 -7
  47. package/out/natural/parser/parseNaturalTSXView.js.map +1 -1
  48. package/out/natural/transforms/checker/checkIdentifierName.d.ts +6 -0
  49. package/out/natural/transforms/checker/checkIdentifierName.d.ts.map +1 -0
  50. package/out/natural/transforms/checker/checkIdentifierName.js +15 -0
  51. package/out/natural/transforms/checker/checkIdentifierName.js.map +1 -0
  52. package/out/natural/transforms/checker/checkViewElement.d.ts.map +1 -1
  53. package/out/natural/transforms/checker/checkViewElement.js +2 -0
  54. package/out/natural/transforms/checker/checkViewElement.js.map +1 -1
  55. package/out/natural/transforms/checker/index.d.ts +1 -0
  56. package/out/natural/transforms/checker/index.d.ts.map +1 -1
  57. package/out/natural/transforms/checker/index.js +3 -1
  58. package/out/natural/transforms/checker/index.js.map +1 -1
  59. package/out/natural/transforms/transform2Config.d.ts +17 -0
  60. package/out/natural/transforms/transform2Config.d.ts.map +1 -0
  61. package/out/natural/transforms/transform2Config.js +114 -0
  62. package/out/natural/transforms/transform2Config.js.map +1 -0
  63. package/out/natural/transforms/transform2GlobalLogicDeclaration.d.ts.map +1 -1
  64. package/out/natural/transforms/transform2GlobalLogicDeclaration.js +4 -1
  65. package/out/natural/transforms/transform2GlobalLogicDeclaration.js.map +1 -1
  66. package/out/natural/transforms/transform2Logic.d.ts.map +1 -1
  67. package/out/natural/transforms/transform2Logic.js +6 -12
  68. package/out/natural/transforms/transform2Logic.js.map +1 -1
  69. package/out/natural/transforms/transform2LogicItem.d.ts +1 -0
  70. package/out/natural/transforms/transform2LogicItem.d.ts.map +1 -1
  71. package/out/natural/transforms/transform2LogicItem.js +76 -32
  72. package/out/natural/transforms/transform2LogicItem.js.map +1 -1
  73. package/out/natural/transforms/transform2Param.d.ts +1 -1
  74. package/out/natural/transforms/transform2Param.d.ts.map +1 -1
  75. package/out/natural/transforms/transform2Param.js +19 -1
  76. package/out/natural/transforms/transform2Param.js.map +1 -1
  77. package/out/natural/transforms/transform2Roles.d.ts +3 -0
  78. package/out/natural/transforms/transform2Roles.d.ts.map +1 -0
  79. package/out/natural/transforms/transform2Roles.js +30 -0
  80. package/out/natural/transforms/transform2Roles.js.map +1 -0
  81. package/out/natural/transforms/transform2TypeAnnotation.d.ts.map +1 -1
  82. package/out/natural/transforms/transform2TypeAnnotation.js +8 -4
  83. package/out/natural/transforms/transform2TypeAnnotation.js.map +1 -1
  84. package/out/natural/transforms/transform2Variable.d.ts.map +1 -1
  85. package/out/natural/transforms/transform2Variable.js +4 -0
  86. package/out/natural/transforms/transform2Variable.js.map +1 -1
  87. package/out/natural/transforms/utils/ensureBindRoles.d.ts +9 -0
  88. package/out/natural/transforms/utils/ensureBindRoles.d.ts.map +1 -0
  89. package/out/natural/transforms/utils/ensureBindRoles.js +25 -0
  90. package/out/natural/transforms/utils/ensureBindRoles.js.map +1 -0
  91. package/out/natural/transforms/utils/flattenStatementsWithComments.d.ts +11 -0
  92. package/out/natural/transforms/utils/flattenStatementsWithComments.d.ts.map +1 -0
  93. package/out/natural/transforms/utils/flattenStatementsWithComments.js +36 -0
  94. package/out/natural/transforms/utils/flattenStatementsWithComments.js.map +1 -0
  95. package/out/natural/transforms/utils/parseDecorator.d.ts +2 -2
  96. package/out/natural/transforms/utils/parseDecorator.d.ts.map +1 -1
  97. package/out/natural/transforms/utils/parseDecorator.js +8 -5
  98. package/out/natural/transforms/utils/parseDecorator.js.map +1 -1
  99. package/out/natural/utils/index.d.ts +5 -0
  100. package/out/natural/utils/index.d.ts.map +1 -1
  101. package/out/natural/utils/index.js +11 -1
  102. package/out/natural/utils/index.js.map +1 -1
  103. package/out/natural/utils/nasl-file-types.d.ts +6 -1
  104. package/out/natural/utils/nasl-file-types.d.ts.map +1 -1
  105. package/out/natural/utils/nasl-file-types.js +49 -2
  106. package/out/natural/utils/nasl-file-types.js.map +1 -1
  107. package/out/server/extendBaseNode.d.ts.map +1 -1
  108. package/out/server/extendBaseNode.js +8 -3
  109. package/out/server/extendBaseNode.js.map +1 -1
  110. package/out/service/instruct-ruler/ruler.d.ts +3 -1
  111. package/out/service/instruct-ruler/ruler.d.ts.map +1 -1
  112. package/out/service/instruct-ruler/ruler.js +2 -1
  113. package/out/service/instruct-ruler/ruler.js.map +1 -1
  114. package/out/service/storage/init.d.ts +5 -0
  115. package/out/service/storage/init.d.ts.map +1 -1
  116. package/out/service/storage/init.js +2 -1
  117. package/out/service/storage/init.js.map +1 -1
  118. package/out/service/storage/specTools.d.ts.map +1 -1
  119. package/out/service/storage/specTools.js +14 -5
  120. package/out/service/storage/specTools.js.map +1 -1
  121. package/package.json +10 -9
  122. package/sandbox/stdlib/nasl.util.ts +16 -15
  123. package/out/natural/exports/transform2BatchActions.d.ts +0 -114
  124. package/out/natural/exports/transform2BatchActions.d.ts.map +0 -1
  125. package/out/natural/exports/transform2BatchActions.js +0 -1233
  126. 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,
@@ -431,6 +423,9 @@ function transformConditionalExpression(node, options) {
431
423
  });
432
424
  }
433
425
  function transformArrayExpression(node, options) {
426
+ if (options?.inCallQueryComponentField) {
427
+ return (0, utils_1.throwError)(options, '数据查询中不支持使用 NewList(直接声明数组),请将对应操作放在数据查询外部进行处理', node);
428
+ }
434
429
  let typeAnnotation = options.typeAnnotation;
435
430
  delete options.typeAnnotation;
436
431
  const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
@@ -440,6 +435,9 @@ function transformArrayExpression(node, options) {
440
435
  });
441
436
  }
442
437
  function transform2NewAnonymousStructure(node, options) {
438
+ if (options?.inCallQueryComponentField) {
439
+ return (0, utils_1.throwError)(options, '数据查询中不支持使用 NewComposite(直接声明匿名结构),请将对应操作放在数据查询外部进行处理', node);
440
+ }
443
441
  for (let i = 0; i < node.properties.length; i++) {
444
442
  const item = node.properties[i];
445
443
  const itemValue = item?.value;
@@ -478,6 +476,9 @@ function transform2NewStructure(namespaceAndName, objectExpression, options) {
478
476
  return newComposite;
479
477
  }
480
478
  function transform2NewExpression(calleeName, node, options) {
479
+ if (options?.inCallQueryComponentField) {
480
+ return (0, utils_1.throwError)(options, `数据查询中不支持使用 ${calleeName},请将对应操作放在数据查询外部进行处理`, node);
481
+ }
481
482
  const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
482
483
  if (calleeName === 'NewList') {
483
484
  let typeAnnotation;
@@ -592,6 +593,7 @@ function transform2ArrayPattern(decl, options) {
592
593
  if (element.type === 'Identifier') {
593
594
  const varTypeAnnotation = element.typeAnnotation?.typeAnnotation;
594
595
  if (options.transformType === 'logic') {
596
+ (0, checkIdentifierName_1.checkIdentifierName)(element.name, '变量', options, element);
595
597
  options.logic.variables.push(new utils_1.naslTypes.Variable({
596
598
  name: element.name,
597
599
  typeAnnotation: varTypeAnnotation && (0, transform2TypeAnnotation_1.transform2TypeAnnotation)(varTypeAnnotation, options) || undefined,
@@ -636,6 +638,7 @@ function transform2VariableAndAddAssignment(node, options) {
636
638
  }
637
639
  let typeAnnotation;
638
640
  if (options.transformType === 'logic' && ![...options.logic.variables, ...options.logic.returns].some((variable) => variable.name === variableName)) {
641
+ (0, checkIdentifierName_1.checkIdentifierName)(variableName, '变量', options, decl.id);
639
642
  const varTypeAnnotation = decl.id.typeAnnotation?.typeAnnotation;
640
643
  typeAnnotation = varTypeAnnotation && (0, transform2TypeAnnotation_1.transform2TypeAnnotation)(varTypeAnnotation, options) || undefined;
641
644
  const variable = new utils_1.naslTypes.Variable({
@@ -680,15 +683,7 @@ function flatCommentWithNode(node) {
680
683
  newNodeList = [...node?.innerComments];
681
684
  }
682
685
  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
- });
686
+ newNodeList.push(...(0, flattenStatementsWithComments_1.flattenStatementsWithComments)(node.body));
692
687
  }
693
688
  return newNodeList;
694
689
  }
@@ -1005,16 +1000,24 @@ function transform2StringInterpolation(node, options) {
1005
1000
  });
1006
1001
  }
1007
1002
  exports.transform2StringInterpolation = transform2StringInterpolation;
1003
+ function transformRequire2JSBlock(node, calleeName, callee, options) {
1004
+ const arg0 = node.arguments[0].value;
1005
+ const filename = arg0.replace('./tmp/', '');
1006
+ return new utils_1.naslTypes.JSBlock({ code: options.externalFiles?.get(filename) ?? '' });
1007
+ }
1008
1008
  function transform2Comment(node, options) {
1009
1009
  if (node.type === 'EmptyStatement') {
1010
1010
  if (node?.leadingComments) {
1011
- const newValue = node?.leadingComments?.[0]?.value?.replace(/\n/g, '<br>');
1011
+ // trim() 防止 Babel 解析 /* ... */ 时将内侧空格存入 value
1012
+ // 导致每次 files2nasl → nasl2files 轮回后注释空格累积 +1
1013
+ const newValue = node?.leadingComments?.[0]?.value?.trim().replace(/\n/g, '<br>');
1012
1014
  return new utils_1.naslTypes.Comment({
1013
1015
  value: String(newValue),
1014
1016
  });
1015
1017
  }
1016
1018
  }
1017
- const newValue = node?.value?.replace(/\n/g, '<br>');
1019
+ // trim() 同上,防止空格在每次 prepare-src 轮回中递增
1020
+ const newValue = node?.value?.trim().replace(/\n/g, '<br>');
1018
1021
  return new utils_1.naslTypes.Comment({
1019
1022
  value: String(newValue || ''),
1020
1023
  });
@@ -1148,6 +1151,9 @@ function transformNewExpression(node, options) {
1148
1151
  return transform2NewRegex(node, options);
1149
1152
  }
1150
1153
  else if (calleeName.includes('.entities.') || calleeName.includes('.structures.')) {
1154
+ if (options?.inCallQueryComponentField) {
1155
+ return (0, utils_1.throwError)(options, `数据查询中不支持使用 new ${calleeName},请将对应操作放在数据查询外部进行处理`, node);
1156
+ }
1151
1157
  return transform2NewStructure(calleeName, node.arguments[0], options);
1152
1158
  }
1153
1159
  return (0, utils_1.throwError)(options, '在新建表达式中不支持节点类型', node.type, node);
@@ -1258,6 +1264,14 @@ function transformMemberExpression(node, options) {
1258
1264
  return newNode;
1259
1265
  }
1260
1266
  }
1267
+ const configPropertyRegex = /^(app|extensions\.\w+)\.configuration\.(?:groups\.)?(\w+)\.(?:properties\.)?(\w+)$/;
1268
+ if (configPropertyRegex.test(calleeName)) {
1269
+ const [, prefix, groupName, propName] = calleeName.match(configPropertyRegex);
1270
+ return new utils_1.naslTypes.Identifier({
1271
+ namespace: `${prefix}.configuration.groups.${groupName}.properties`,
1272
+ name: propName,
1273
+ });
1274
+ }
1261
1275
  if (node.property.type === 'NumericLiteral' || node?.property?.type === 'BinaryExpression') {
1262
1276
  return new utils_1.naslTypes.CallFunction({
1263
1277
  calleeNamespace: 'nasl.util',
@@ -1680,11 +1694,6 @@ function transform2CallFunction(node, calleeName, argument, options) {
1680
1694
  });
1681
1695
  }
1682
1696
  }
1683
- if (calleeName === 'Convert' && !newTypeArguments) {
1684
- newTypeArguments = [
1685
- new utils_1.naslTypes.TypeAnnotation()
1686
- ];
1687
- }
1688
1697
  if (calleeName === 'FromString') {
1689
1698
  if (newTypeArguments?.[0]?.typeName === 'Time' && newArguments?.[0]?.expression?.concept === 'StringLiteral') {
1690
1699
  const timeValue = newArguments?.[0]?.expression?.value;
@@ -1859,8 +1868,15 @@ function transformCall2CallFunction(node, calleeName, callee, options) {
1859
1868
  return transform2CallFunction(node, curCalleeName, argument, options);
1860
1869
  }
1861
1870
  exports.transformCall2CallFunction = transformCall2CallFunction;
1871
+ const SUPPORTED_NASL_UI_FUNCTIONS = ['showMessage', 'destination', 'gotoLink'];
1862
1872
  function transform2UIFunction(node, calleeName, callee, options) {
1863
- if (callee[2].name === 'destination') {
1873
+ const uiFunctionName = callee[2].name;
1874
+ if (!SUPPORTED_NASL_UI_FUNCTIONS.includes(uiFunctionName)) {
1875
+ return (0, utils_1.throwError)(options, `nasl.ui 仅支持 ${SUPPORTED_NASL_UI_FUNCTIONS.map((f) => `nasl.ui.${f}`).join('、')},不支持 nasl.ui.${uiFunctionName}`, node);
1876
+ }
1877
+ if (uiFunctionName === 'destination') {
1878
+ if (!node.arguments[0])
1879
+ return (0, utils_1.throwError)(options, 'nasl.ui.destination 缺少目标页面参数', node);
1864
1880
  let namespaceNode = node.arguments[0];
1865
1881
  let namespace = '';
1866
1882
  if (namespaceNode.type === 'TemplateLiteral') {
@@ -1906,7 +1922,9 @@ function transform2UIFunction(node, calleeName, callee, options) {
1906
1922
  arguments: argument,
1907
1923
  });
1908
1924
  }
1909
- if (callee[2].name === 'gotoLink') {
1925
+ if (uiFunctionName === 'gotoLink') {
1926
+ if (!node.arguments[0])
1927
+ return (0, utils_1.throwError)(options, 'nasl.ui.gotoLink 缺少链接参数', node);
1910
1928
  return new utils_1.naslTypes.ExternalDestination({
1911
1929
  link: fixExpression(node?.arguments[0], options),
1912
1930
  });
@@ -1918,7 +1936,7 @@ function transform2UIFunction(node, calleeName, callee, options) {
1918
1936
  // }
1919
1937
  return new utils_1.naslTypes.CallLogic({
1920
1938
  calleeNamespace: 'nasl.ui',
1921
- calleeName: callee[2].name,
1939
+ calleeName: uiFunctionName,
1922
1940
  shortcut: true,
1923
1941
  /**
1924
1942
  * 这个函数是修复 AI 翻译出错的情况,与正常的 transform 做个区分
@@ -2177,6 +2195,30 @@ function transformCall2LogicWithAuth(node, calleeName, callee, options) {
2177
2195
  });
2178
2196
  }
2179
2197
  exports.transformCall2LogicWithAuth = transformCall2LogicWithAuth;
2198
+ function transformCall2GetCustomConfig(node, calleeName, callee, options) {
2199
+ const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
2200
+ const arg = node.arguments?.[0];
2201
+ if (!arg || arg.type !== 'MemberExpression') {
2202
+ return (0, utils_1.throwError)(options, 'nasl.configuration.getCustomConfig 的参数必须是 {app|extensions.xxx}.configuration.{group}.{name} 形式的成员访问', node);
2203
+ }
2204
+ const flatCallee = flatMemberExpression(arg);
2205
+ const argName = flatCallee.map((n) => n.name).join('.');
2206
+ const configPropertyRegex = /^(app|extensions\.\w+)\.configuration\.(\w+)\.(\w+)$/;
2207
+ if (!configPropertyRegex.test(argName)) {
2208
+ return (0, utils_1.throwError)(options, `nasl.configuration.getCustomConfig 参数路径格式不正确,期望 {app|extensions.xxx}.configuration.{group}.{name},实际为 ${argName}`, node);
2209
+ }
2210
+ return new utils_1.naslTypes.CallLogic({
2211
+ calleeNamespace: 'nasl.configuration',
2212
+ calleeName: 'getCustomConfig',
2213
+ arguments: [
2214
+ new utils_1.naslTypes.Argument({
2215
+ keyword: 'name',
2216
+ expression: transformNodeFunction(arg, options),
2217
+ }),
2218
+ ],
2219
+ });
2220
+ }
2221
+ exports.transformCall2GetCustomConfig = transformCall2GetCustomConfig;
2180
2222
  function transformCall2Paginate(node, calleeName, callee, options) {
2181
2223
  const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
2182
2224
  const newCallee = node.arguments || [];
@@ -2654,10 +2696,12 @@ function transform2LogicItem(node, options) {
2654
2696
  });
2655
2697
  transformManager.register('MemberExpression', transformMemberExpression);
2656
2698
  transformManager.register('OptionalMemberExpression', transformMemberExpression);
2699
+ transformManager.registerCallExpression((node, calleeName) => calleeName === 'require' && node.arguments[0]?.value?.startsWith('./tmp/'), transformRequire2JSBlock);
2657
2700
  transformManager.registerCallExpression((node, calleeName, callee) => callee.length === 1 && (node.callee.type === 'FunctionExpression' && node.callee.id?.name === 'match' || node.callee.type === 'ArrowFunctionExpression'), transformCallFunctionExpression2Match);
2658
2701
  transformManager.registerCallExpression((node, calleeName) => /^\$refs\./.test(calleeName), transformCall2CallViewElementLogic);
2659
2702
  transformManager.registerCallExpression((node, calleeName, callee) => callee.length === 2 && callee[0].type === 'Identifier' && callee[0].name.endsWith('Entity'), transformCall2CallEntityLogic);
2660
2703
  transformManager.registerCallExpression('nasl.oql.query', transformCall2OQLQuery);
2704
+ transformManager.registerCallExpression('nasl.configuration.getCustomConfig', transformCall2GetCustomConfig);
2661
2705
  transformManager.registerCallExpression('nasl.util.consoleLog', transformCall2ConsoleLog);
2662
2706
  transformManager.registerCallExpression('console.log', transformCall2ConsoleLog);
2663
2707
  transformManager.registerCallExpression((node, calleeName) => calleeName.startsWith('nasl.logging.'), transformCall2Logging);