@lcap/nasl 4.5.0-beta.1 → 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 (229) hide show
  1. package/out/automate/upgrader/2.12.d.ts.map +1 -1
  2. package/out/automate/upgrader/2.12.js +1 -0
  3. package/out/automate/upgrader/2.12.js.map +1 -1
  4. package/out/automate/upgrader/2.14.d.ts.map +1 -1
  5. package/out/automate/upgrader/2.14.js +1 -0
  6. package/out/automate/upgrader/2.14.js.map +1 -1
  7. package/out/automate/upgrader/2.16.d.ts.map +1 -1
  8. package/out/automate/upgrader/2.16.js +1 -0
  9. package/out/automate/upgrader/2.16.js.map +1 -1
  10. package/out/automate/upgrader/2.17.d.ts.map +1 -1
  11. package/out/automate/upgrader/2.17.js +1 -0
  12. package/out/automate/upgrader/2.17.js.map +1 -1
  13. package/out/automate/upgrader/2.18.d.ts.map +1 -1
  14. package/out/automate/upgrader/2.18.js +1 -0
  15. package/out/automate/upgrader/2.18.js.map +1 -1
  16. package/out/automate/upgrader/2.20.d.ts.map +1 -1
  17. package/out/automate/upgrader/2.20.js +1 -0
  18. package/out/automate/upgrader/2.20.js.map +1 -1
  19. package/out/concepts/index.mini.d.ts +10 -0
  20. package/out/concepts/index.mini.d.ts.map +1 -0
  21. package/out/concepts/index.mini.js +26 -0
  22. package/out/concepts/index.mini.js.map +1 -0
  23. package/out/generator/genBundleFiles.js +1 -1
  24. package/out/generator/genBundleFiles.js.map +1 -1
  25. package/out/generator/permission.js +2 -2
  26. package/out/generator/permission.js.map +1 -1
  27. package/out/generator/ui-library-declaration/dependency.d.ts +20 -0
  28. package/out/generator/ui-library-declaration/dependency.d.ts.map +1 -1
  29. package/out/generator/ui-library-declaration/dependency.js +3 -2
  30. package/out/generator/ui-library-declaration/dependency.js.map +1 -1
  31. package/out/generator/ui-library-declaration/index.d.ts +1 -0
  32. package/out/generator/ui-library-declaration/index.d.ts.map +1 -1
  33. package/out/generator/ui-library-declaration/index.js +1 -0
  34. package/out/generator/ui-library-declaration/index.js.map +1 -1
  35. package/out/generator/ui-library-declaration/material.d.ts +2 -2
  36. package/out/generator/ui-library-declaration/material.d.ts.map +1 -1
  37. package/out/generator/ui-library-declaration/material.js +6 -3
  38. package/out/generator/ui-library-declaration/material.js.map +1 -1
  39. package/out/index.d.ts +2 -2
  40. package/out/index.d.ts.map +1 -1
  41. package/out/index.js +7 -1
  42. package/out/index.js.map +1 -1
  43. package/out/index.mini.d.ts +42 -0
  44. package/out/index.mini.d.ts.map +1 -0
  45. package/out/index.mini.js +89 -0
  46. package/out/index.mini.js.map +1 -0
  47. package/out/manager/diagnostic.d.ts +5 -5
  48. package/out/manager/diagnostic.d.ts.map +1 -1
  49. package/out/natural/exports/doctor/doctorView.d.ts +24 -0
  50. package/out/natural/exports/doctor/doctorView.d.ts.map +1 -0
  51. package/out/natural/exports/doctor/doctorView.js +333 -0
  52. package/out/natural/exports/doctor/doctorView.js.map +1 -0
  53. package/out/natural/exports/doctor/index.d.ts +4 -0
  54. package/out/natural/exports/doctor/index.d.ts.map +1 -0
  55. package/out/natural/exports/doctor/index.js +10 -0
  56. package/out/natural/exports/doctor/index.js.map +1 -0
  57. package/out/natural/exports/doctor/types.d.ts +95 -0
  58. package/out/natural/exports/doctor/types.d.ts.map +1 -0
  59. package/out/natural/exports/doctor/types.js +6 -0
  60. package/out/natural/exports/doctor/types.js.map +1 -0
  61. package/out/natural/exports/doctor/viewGraph.d.ts +20 -0
  62. package/out/natural/exports/doctor/viewGraph.d.ts.map +1 -0
  63. package/out/natural/exports/doctor/viewGraph.js +415 -0
  64. package/out/natural/exports/doctor/viewGraph.js.map +1 -0
  65. package/out/natural/exports/nasl2Files.d.ts.map +1 -1
  66. package/out/natural/exports/nasl2Files.js +35 -1
  67. package/out/natural/exports/nasl2Files.js.map +1 -1
  68. package/out/natural/exports/transform2BatchActions/apply.d.ts +11 -0
  69. package/out/natural/exports/transform2BatchActions/apply.d.ts.map +1 -0
  70. package/out/natural/exports/transform2BatchActions/apply.js +68 -0
  71. package/out/natural/exports/transform2BatchActions/apply.js.map +1 -0
  72. package/out/natural/exports/transform2BatchActions/diff/directories.d.ts +17 -0
  73. package/out/natural/exports/transform2BatchActions/diff/directories.d.ts.map +1 -0
  74. package/out/natural/exports/transform2BatchActions/diff/directories.js +215 -0
  75. package/out/natural/exports/transform2BatchActions/diff/directories.js.map +1 -0
  76. package/out/natural/exports/transform2BatchActions/diff/index.d.ts +21 -0
  77. package/out/natural/exports/transform2BatchActions/diff/index.d.ts.map +1 -0
  78. package/out/natural/exports/transform2BatchActions/diff/index.js +20 -0
  79. package/out/natural/exports/transform2BatchActions/diff/index.js.map +1 -0
  80. package/out/natural/exports/transform2BatchActions/diff/nodes.d.ts +162 -0
  81. package/out/natural/exports/transform2BatchActions/diff/nodes.d.ts.map +1 -0
  82. package/out/natural/exports/transform2BatchActions/diff/nodes.js +464 -0
  83. package/out/natural/exports/transform2BatchActions/diff/nodes.js.map +1 -0
  84. package/out/natural/exports/transform2BatchActions/diff/roles.d.ts +18 -0
  85. package/out/natural/exports/transform2BatchActions/diff/roles.d.ts.map +1 -0
  86. package/out/natural/exports/transform2BatchActions/diff/roles.js +61 -0
  87. package/out/natural/exports/transform2BatchActions/diff/roles.js.map +1 -0
  88. package/out/natural/exports/transform2BatchActions/index.d.ts +41 -0
  89. package/out/natural/exports/transform2BatchActions/index.d.ts.map +1 -0
  90. package/out/natural/exports/transform2BatchActions/index.js +61 -0
  91. package/out/natural/exports/transform2BatchActions/index.js.map +1 -0
  92. package/out/natural/exports/transform2BatchActions/parse.d.ts +24 -0
  93. package/out/natural/exports/transform2BatchActions/parse.d.ts.map +1 -0
  94. package/out/natural/exports/transform2BatchActions/parse.js +234 -0
  95. package/out/natural/exports/transform2BatchActions/parse.js.map +1 -0
  96. package/out/natural/exports/transform2BatchActions/types.d.ts +147 -0
  97. package/out/natural/exports/transform2BatchActions/types.d.ts.map +1 -0
  98. package/out/natural/exports/transform2BatchActions/types.js +7 -0
  99. package/out/natural/exports/transform2BatchActions/types.js.map +1 -0
  100. package/out/natural/index.d.ts +1 -0
  101. package/out/natural/index.d.ts.map +1 -1
  102. package/out/natural/index.js +1 -0
  103. package/out/natural/index.js.map +1 -1
  104. package/out/natural/old/parser/transformTS2UI.d.ts.map +1 -1
  105. package/out/natural/old/parser/transformTS2UI.js +4 -1
  106. package/out/natural/old/parser/transformTS2UI.js.map +1 -1
  107. package/out/natural/old/parser/transformTSCode.js +1 -1
  108. package/out/natural/old/parser/transformTSCode.js.map +1 -1
  109. package/out/natural/parser/parseNaturalTS.d.ts.map +1 -1
  110. package/out/natural/parser/parseNaturalTS.js +61 -1
  111. package/out/natural/parser/parseNaturalTS.js.map +1 -1
  112. package/out/natural/parser/parseNaturalTSXView.d.ts.map +1 -1
  113. package/out/natural/parser/parseNaturalTSXView.js +37 -7
  114. package/out/natural/parser/parseNaturalTSXView.js.map +1 -1
  115. package/out/natural/transforms/checker/checkIdentifierName.d.ts +6 -0
  116. package/out/natural/transforms/checker/checkIdentifierName.d.ts.map +1 -0
  117. package/out/natural/transforms/checker/checkIdentifierName.js +15 -0
  118. package/out/natural/transforms/checker/checkIdentifierName.js.map +1 -0
  119. package/out/natural/transforms/checker/checkKeywords.d.ts +33 -0
  120. package/out/natural/transforms/checker/checkKeywords.d.ts.map +1 -0
  121. package/out/natural/transforms/checker/checkKeywords.js +85 -0
  122. package/out/natural/transforms/checker/checkKeywords.js.map +1 -0
  123. package/out/natural/transforms/checker/checkViewElement.d.ts +10 -0
  124. package/out/natural/transforms/checker/checkViewElement.d.ts.map +1 -1
  125. package/out/natural/transforms/checker/checkViewElement.js +28 -1
  126. package/out/natural/transforms/checker/checkViewElement.js.map +1 -1
  127. package/out/natural/transforms/checker/index.d.ts +3 -1
  128. package/out/natural/transforms/checker/index.d.ts.map +1 -1
  129. package/out/natural/transforms/checker/index.js +10 -1
  130. package/out/natural/transforms/checker/index.js.map +1 -1
  131. package/out/natural/transforms/transform2Config.d.ts +17 -0
  132. package/out/natural/transforms/transform2Config.d.ts.map +1 -0
  133. package/out/natural/transforms/transform2Config.js +114 -0
  134. package/out/natural/transforms/transform2Config.js.map +1 -0
  135. package/out/natural/transforms/transform2Entity.d.ts +2 -2
  136. package/out/natural/transforms/transform2Entity.d.ts.map +1 -1
  137. package/out/natural/transforms/transform2Entity.js +11 -2
  138. package/out/natural/transforms/transform2Entity.js.map +1 -1
  139. package/out/natural/transforms/transform2Enum.d.ts.map +1 -1
  140. package/out/natural/transforms/transform2Enum.js +3 -0
  141. package/out/natural/transforms/transform2Enum.js.map +1 -1
  142. package/out/natural/transforms/transform2GlobalLogicDeclaration.d.ts.map +1 -1
  143. package/out/natural/transforms/transform2GlobalLogicDeclaration.js +4 -1
  144. package/out/natural/transforms/transform2GlobalLogicDeclaration.js.map +1 -1
  145. package/out/natural/transforms/transform2Logic.d.ts.map +1 -1
  146. package/out/natural/transforms/transform2Logic.js +6 -12
  147. package/out/natural/transforms/transform2Logic.js.map +1 -1
  148. package/out/natural/transforms/transform2LogicItem.d.ts +2 -0
  149. package/out/natural/transforms/transform2LogicItem.d.ts.map +1 -1
  150. package/out/natural/transforms/transform2LogicItem.js +110 -53
  151. package/out/natural/transforms/transform2LogicItem.js.map +1 -1
  152. package/out/natural/transforms/transform2Param.d.ts +1 -1
  153. package/out/natural/transforms/transform2Param.d.ts.map +1 -1
  154. package/out/natural/transforms/transform2Param.js +19 -1
  155. package/out/natural/transforms/transform2Param.js.map +1 -1
  156. package/out/natural/transforms/transform2Roles.d.ts +3 -0
  157. package/out/natural/transforms/transform2Roles.d.ts.map +1 -0
  158. package/out/natural/transforms/transform2Roles.js +34 -0
  159. package/out/natural/transforms/transform2Roles.js.map +1 -0
  160. package/out/natural/transforms/transform2Structure.d.ts.map +1 -1
  161. package/out/natural/transforms/transform2Structure.js +2 -0
  162. package/out/natural/transforms/transform2Structure.js.map +1 -1
  163. package/out/natural/transforms/transform2TypeAnnotation.d.ts.map +1 -1
  164. package/out/natural/transforms/transform2TypeAnnotation.js +8 -4
  165. package/out/natural/transforms/transform2TypeAnnotation.js.map +1 -1
  166. package/out/natural/transforms/transform2Variable.d.ts.map +1 -1
  167. package/out/natural/transforms/transform2Variable.js +4 -0
  168. package/out/natural/transforms/transform2Variable.js.map +1 -1
  169. package/out/natural/transforms/utils/createComponentLookupMap.js +3 -3
  170. package/out/natural/transforms/utils/createComponentLookupMap.js.map +1 -1
  171. package/out/natural/transforms/utils/ensureBindRoles.d.ts +9 -0
  172. package/out/natural/transforms/utils/ensureBindRoles.d.ts.map +1 -0
  173. package/out/natural/transforms/utils/ensureBindRoles.js +25 -0
  174. package/out/natural/transforms/utils/ensureBindRoles.js.map +1 -0
  175. package/out/natural/transforms/utils/flattenStatementsWithComments.d.ts +11 -0
  176. package/out/natural/transforms/utils/flattenStatementsWithComments.d.ts.map +1 -0
  177. package/out/natural/transforms/utils/flattenStatementsWithComments.js +36 -0
  178. package/out/natural/transforms/utils/flattenStatementsWithComments.js.map +1 -0
  179. package/out/natural/transforms/utils/parseDecorator.d.ts +4 -4
  180. package/out/natural/transforms/utils/parseDecorator.d.ts.map +1 -1
  181. package/out/natural/transforms/utils/parseDecorator.js +29 -25
  182. package/out/natural/transforms/utils/parseDecorator.js.map +1 -1
  183. package/out/natural/utils/index.d.ts +5 -0
  184. package/out/natural/utils/index.d.ts.map +1 -1
  185. package/out/natural/utils/index.js +11 -1
  186. package/out/natural/utils/index.js.map +1 -1
  187. package/out/natural/utils/nasl-file-types.d.ts +6 -1
  188. package/out/natural/utils/nasl-file-types.d.ts.map +1 -1
  189. package/out/natural/utils/nasl-file-types.js +49 -2
  190. package/out/natural/utils/nasl-file-types.js.map +1 -1
  191. package/out/server/extendBaseNode.d.ts.map +1 -1
  192. package/out/server/extendBaseNode.js +9 -3
  193. package/out/server/extendBaseNode.js.map +1 -1
  194. package/out/server/naslServer.d.ts +18 -0
  195. package/out/server/naslServer.d.ts.map +1 -1
  196. package/out/server/naslServer.js +88 -0
  197. package/out/server/naslServer.js.map +1 -1
  198. package/out/server/naslUiComponentTs.d.ts +1 -2
  199. package/out/server/naslUiComponentTs.d.ts.map +1 -1
  200. package/out/server/naslUiComponentTs.default.d.ts +47 -0
  201. package/out/server/naslUiComponentTs.js +25 -49
  202. package/out/server/naslUiComponentTs.js.map +1 -1
  203. package/out/service/autofix/types.d.ts +2 -2
  204. package/out/service/autofix/types.d.ts.map +1 -1
  205. package/out/service/instruct-ruler/ruler.d.ts +3 -1
  206. package/out/service/instruct-ruler/ruler.d.ts.map +1 -1
  207. package/out/service/instruct-ruler/ruler.js +2 -1
  208. package/out/service/instruct-ruler/ruler.js.map +1 -1
  209. package/out/service/storage/init.d.ts +6 -0
  210. package/out/service/storage/init.d.ts.map +1 -1
  211. package/out/service/storage/init.js +22 -9
  212. package/out/service/storage/init.js.map +1 -1
  213. package/out/service/storage/operation.d.ts +9 -1
  214. package/out/service/storage/operation.d.ts.map +1 -1
  215. package/out/service/storage/operation.js +220 -100
  216. package/out/service/storage/operation.js.map +1 -1
  217. package/out/service/storage/specTools.d.ts.map +1 -1
  218. package/out/service/storage/specTools.js +15 -6
  219. package/out/service/storage/specTools.js.map +1 -1
  220. package/out/templator/genQueryComponent.d.ts +13 -1
  221. package/out/templator/genQueryComponent.d.ts.map +1 -1
  222. package/out/templator/genQueryComponent.js +18 -14
  223. package/out/templator/genQueryComponent.js.map +1 -1
  224. package/package.json +11 -10
  225. package/sandbox/stdlib/nasl.util.ts +16 -15
  226. package/out/natural/exports/transform2BatchActions.d.ts +0 -114
  227. package/out/natural/exports/transform2BatchActions.d.ts.map +0 -1
  228. package/out/natural/exports/transform2BatchActions.js +0 -1233
  229. package/out/natural/exports/transform2BatchActions.js.map +0 -1
@@ -1,16 +1,15 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
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;
3
+ 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.transformArrayExpression = exports.transform2BinaryExpression = exports.transform2VariadicExpression = exports.transformCallExpressionToBinaryExpression = exports.fixLogicNode = exports.flatIfStatementForMatch = exports.flatMatchPatternsExpression = exports.getSelectMembers = exports.unflatMemberExpression = exports.flatMemberExpression = exports.fixExpression = exports.TransformManager = void 0;
4
+ exports.transform2LogicItem = exports.transform2DefaultValue = exports.transformNode2Directory = exports.transformCall2Paginate = exports.transformCall2GetCustomConfig = exports.transformCall2LogicWithAuth = exports.transformCall2Logic = exports.transformCall2CallViewLogic = exports.transformCall2Extension = exports.transformCall2Connector = exports.transformCall2Interface = void 0;
8
5
  const utils_1 = require("../utils");
9
6
  const misc_1 = require("./utils/misc");
7
+ const flattenStatementsWithComments_1 = require("./utils/flattenStatementsWithComments");
10
8
  const checkDataQueryCalleeNameOrder_1 = require("./checker/checkDataQueryCalleeNameOrder");
9
+ const checkIdentifierName_1 = require("./checker/checkIdentifierName");
11
10
  const transform2TypeAnnotation_1 = require("./transform2TypeAnnotation");
12
11
  const transform2Param_1 = require("./transform2Param");
13
- const server_1 = __importDefault(require("../../server"));
12
+ const service_1 = require("@lcap/nasl-concepts/service");
14
13
  const parseDecorator_1 = require("./utils/parseDecorator");
15
14
  ;
16
15
  class TransformManager {
@@ -80,23 +79,13 @@ function transformTSCode2SubLogic(node, options) {
80
79
  statements = [...node?.body?.directives, ...node?.body?.body];
81
80
  }
82
81
  parameters.forEach((node) => {
83
- const param = (0, transform2Param_1.transform2Param)(node, options);
82
+ const param = (0, transform2Param_1.transform2Param)(node, options, undefined, true);
84
83
  if (param && !param?.typeAnnotation) {
85
84
  param.typeAnnotation = null;
86
85
  }
87
86
  param && logic.addParam(param);
88
87
  });
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;
88
+ statements = (0, flattenStatementsWithComments_1.flattenStatementsWithComments)(statements);
100
89
  const body = statements.map((node) => transformNodeFunction(node, {
101
90
  ...options,
102
91
  logic,
@@ -431,6 +420,9 @@ function transformConditionalExpression(node, options) {
431
420
  });
432
421
  }
433
422
  function transformArrayExpression(node, options) {
423
+ if (options?.inCallQueryComponentField) {
424
+ return (0, utils_1.throwError)(options, '数据查询中不支持使用 NewList(直接声明数组),请将对应操作放在数据查询外部进行处理', node);
425
+ }
434
426
  let typeAnnotation = options.typeAnnotation;
435
427
  delete options.typeAnnotation;
436
428
  const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
@@ -439,7 +431,11 @@ function transformArrayExpression(node, options) {
439
431
  items: node?.elements?.map((arg) => transformNodeFunction(arg, { ...options, typeAnnotation: undefined })).filter(Boolean),
440
432
  });
441
433
  }
434
+ exports.transformArrayExpression = transformArrayExpression;
442
435
  function transform2NewAnonymousStructure(node, options) {
436
+ if (options?.inCallQueryComponentField) {
437
+ return (0, utils_1.throwError)(options, '数据查询中不支持使用 NewComposite(直接声明匿名结构),请将对应操作放在数据查询外部进行处理', node);
438
+ }
443
439
  for (let i = 0; i < node.properties.length; i++) {
444
440
  const item = node.properties[i];
445
441
  const itemValue = item?.value;
@@ -462,7 +458,7 @@ function transform2NewAnonymousStructure(node, options) {
462
458
  const structureProperties = [];
463
459
  newProperties.forEach((arg, index) => {
464
460
  structureProperties.push(new utils_1.naslTypes.StructureProperty({
465
- name: arg.key.name,
461
+ name: arg.key.name ?? arg.key.value,
466
462
  typeAnnotation: arg.naslType || null,
467
463
  }));
468
464
  });
@@ -478,6 +474,9 @@ function transform2NewStructure(namespaceAndName, objectExpression, options) {
478
474
  return newComposite;
479
475
  }
480
476
  function transform2NewExpression(calleeName, node, options) {
477
+ if (options?.inCallQueryComponentField) {
478
+ return (0, utils_1.throwError)(options, `数据查询中不支持使用 ${calleeName},请将对应操作放在数据查询外部进行处理`, node);
479
+ }
481
480
  const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
482
481
  if (calleeName === 'NewList') {
483
482
  let typeAnnotation;
@@ -592,6 +591,7 @@ function transform2ArrayPattern(decl, options) {
592
591
  if (element.type === 'Identifier') {
593
592
  const varTypeAnnotation = element.typeAnnotation?.typeAnnotation;
594
593
  if (options.transformType === 'logic') {
594
+ (0, checkIdentifierName_1.checkIdentifierName)(element.name, '变量', options, element);
595
595
  options.logic.variables.push(new utils_1.naslTypes.Variable({
596
596
  name: element.name,
597
597
  typeAnnotation: varTypeAnnotation && (0, transform2TypeAnnotation_1.transform2TypeAnnotation)(varTypeAnnotation, options) || undefined,
@@ -636,6 +636,7 @@ function transform2VariableAndAddAssignment(node, options) {
636
636
  }
637
637
  let typeAnnotation;
638
638
  if (options.transformType === 'logic' && ![...options.logic.variables, ...options.logic.returns].some((variable) => variable.name === variableName)) {
639
+ (0, checkIdentifierName_1.checkIdentifierName)(variableName, '变量', options, decl.id);
639
640
  const varTypeAnnotation = decl.id.typeAnnotation?.typeAnnotation;
640
641
  typeAnnotation = varTypeAnnotation && (0, transform2TypeAnnotation_1.transform2TypeAnnotation)(varTypeAnnotation, options) || undefined;
641
642
  const variable = new utils_1.naslTypes.Variable({
@@ -680,15 +681,7 @@ function flatCommentWithNode(node) {
680
681
  newNodeList = [...node?.innerComments];
681
682
  }
682
683
  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
- });
684
+ newNodeList.push(...(0, flattenStatementsWithComments_1.flattenStatementsWithComments)(node.body));
692
685
  }
693
686
  return newNodeList;
694
687
  }
@@ -1005,16 +998,24 @@ function transform2StringInterpolation(node, options) {
1005
998
  });
1006
999
  }
1007
1000
  exports.transform2StringInterpolation = transform2StringInterpolation;
1001
+ function transformRequire2JSBlock(node, calleeName, callee, options) {
1002
+ const arg0 = node.arguments[0].value;
1003
+ const filename = arg0.replace('./tmp/', '');
1004
+ return new utils_1.naslTypes.JSBlock({ code: options.externalFiles?.get(filename) ?? '' });
1005
+ }
1008
1006
  function transform2Comment(node, options) {
1009
1007
  if (node.type === 'EmptyStatement') {
1010
1008
  if (node?.leadingComments) {
1011
- const newValue = node?.leadingComments?.[0]?.value?.replace(/\n/g, '<br>');
1009
+ // trim() 防止 Babel 解析 /* ... */ 时将内侧空格存入 value
1010
+ // 导致每次 files2nasl → nasl2files 轮回后注释空格累积 +1
1011
+ const newValue = node?.leadingComments?.[0]?.value?.trim().replace(/\n/g, '<br>');
1012
1012
  return new utils_1.naslTypes.Comment({
1013
1013
  value: String(newValue),
1014
1014
  });
1015
1015
  }
1016
1016
  }
1017
- const newValue = node?.value?.replace(/\n/g, '<br>');
1017
+ // trim() 同上,防止空格在每次 prepare-src 轮回中递增
1018
+ const newValue = node?.value?.trim().replace(/\n/g, '<br>');
1018
1019
  return new utils_1.naslTypes.Comment({
1019
1020
  value: String(newValue || ''),
1020
1021
  });
@@ -1037,7 +1038,16 @@ function transform2PartialNewComposite(node, options) {
1037
1038
  const newProperties = (node?.properties || node?.arguments?.[0]?.properties);
1038
1039
  let idx = 0;
1039
1040
  newProperties?.forEach((arg, index) => {
1040
- properties.push(transformNodeFunction(arg.key, options));
1041
+ // StringLiteral 类型的键(如 JSON 格式的 "name")统一转换为 Identifier 处理,并校验命名规则
1042
+ let keyNode;
1043
+ if (arg.key?.type === 'StringLiteral') {
1044
+ (0, checkIdentifierName_1.checkIdentifierName)(arg.key.value, '属性', options, arg.key);
1045
+ keyNode = utils_1.babelTypes.identifier(arg.key.value);
1046
+ }
1047
+ else {
1048
+ keyNode = arg.key;
1049
+ }
1050
+ properties.push(transformNodeFunction(keyNode, options));
1041
1051
  const calleeName = (0, utils_1.generate)(arg.value).code;
1042
1052
  let sliceMembers = false;
1043
1053
  if (arg.value.type === 'MemberExpression') {
@@ -1103,7 +1113,7 @@ function transform2PartialNewComposite(node, options) {
1103
1113
  }
1104
1114
  }
1105
1115
  structureProperties.push(new utils_1.naslTypes.StructureProperty({
1106
- name: arg?.key?.name,
1116
+ name: arg?.key?.name ?? arg?.key?.value,
1107
1117
  typeAnnotation: null
1108
1118
  }));
1109
1119
  });
@@ -1148,6 +1158,9 @@ function transformNewExpression(node, options) {
1148
1158
  return transform2NewRegex(node, options);
1149
1159
  }
1150
1160
  else if (calleeName.includes('.entities.') || calleeName.includes('.structures.')) {
1161
+ if (options?.inCallQueryComponentField) {
1162
+ return (0, utils_1.throwError)(options, `数据查询中不支持使用 new ${calleeName},请将对应操作放在数据查询外部进行处理`, node);
1163
+ }
1151
1164
  return transform2NewStructure(calleeName, node.arguments[0], options);
1152
1165
  }
1153
1166
  return (0, utils_1.throwError)(options, '在新建表达式中不支持节点类型', node.type, node);
@@ -1258,6 +1271,14 @@ function transformMemberExpression(node, options) {
1258
1271
  return newNode;
1259
1272
  }
1260
1273
  }
1274
+ const configPropertyRegex = /^(app|extensions\.\w+)\.configuration\.(?:groups\.)?(\w+)\.(?:properties\.)?(\w+)$/;
1275
+ if (configPropertyRegex.test(calleeName)) {
1276
+ const [, prefix, groupName, propName] = calleeName.match(configPropertyRegex);
1277
+ return new utils_1.naslTypes.Identifier({
1278
+ namespace: `${prefix}.configuration.groups.${groupName}.properties`,
1279
+ name: propName,
1280
+ });
1281
+ }
1261
1282
  if (node.property.type === 'NumericLiteral' || node?.property?.type === 'BinaryExpression') {
1262
1283
  return new utils_1.naslTypes.CallFunction({
1263
1284
  calleeNamespace: 'nasl.util',
@@ -1470,6 +1491,7 @@ function transformCall2CallDataSourceLogic(node, calleeName, callee, options) {
1470
1491
  if (newArguments?.[0])
1471
1492
  newArguments[0].keyword = 'body';
1472
1493
  if (newArguments?.[1]) {
1494
+ newArguments[1].keyword = 'properties';
1473
1495
  if (newArguments[1]?.expression.concept === 'AnonymousFunction' && newArguments[1]?.expression?.params?.[0]?.name) {
1474
1496
  newArguments[1].expression.params[0].typeAnnotation = utils_1.naslTypes.TypeAnnotation.createReference(entityName, {
1475
1497
  typeNamespace: calleeNamespace,
@@ -1497,6 +1519,7 @@ function transformCall2CallDataSourceLogic(node, calleeName, callee, options) {
1497
1519
  }
1498
1520
  const expressionJson = expression?.toJSON();
1499
1521
  const argument2 = newArguments?.[1];
1522
+ const argument3 = newArguments?.[2];
1500
1523
  newArguments = [new utils_1.naslTypes.Argument({
1501
1524
  expression: new utils_1.naslTypes.Function({
1502
1525
  name: "filter",
@@ -1523,6 +1546,10 @@ function transformCall2CallDataSourceLogic(node, calleeName, callee, options) {
1523
1546
  else {
1524
1547
  newArguments.push(new utils_1.naslTypes.Argument({}));
1525
1548
  }
1549
+ if (argument3?.expression?.concept === 'AnonymousFunction') {
1550
+ argument3.keyword = 'properties';
1551
+ newArguments.push(argument3);
1552
+ }
1526
1553
  }
1527
1554
  }
1528
1555
  return new utils_1.naslTypes.CallLogic({
@@ -1633,7 +1660,7 @@ function transform2CallOtherNASLLogic(node, calleeName, callee, options) {
1633
1660
  exports.transform2CallOtherNASLLogic = transform2CallOtherNASLLogic;
1634
1661
  function transform2CallFunction(node, calleeName, argument, options) {
1635
1662
  calleeName = misc_1.replaceCallFunctionMap?.[calleeName] || calleeName;
1636
- const func = server_1.default ? server_1.default.getBuildInFunction(calleeName) : null;
1663
+ const func = (0, service_1.getBuildInFunction)(calleeName);
1637
1664
  let newArguments = argument.map((arg, index) => {
1638
1665
  let supportSubLogic = false;
1639
1666
  if (arg?.type === 'FunctionExpression' || (arg?.type === 'ArrowFunctionExpression' && arg?.body?.type === 'BlockStatement')) {
@@ -1674,11 +1701,6 @@ function transform2CallFunction(node, calleeName, argument, options) {
1674
1701
  });
1675
1702
  }
1676
1703
  }
1677
- if (calleeName === 'Convert' && !newTypeArguments) {
1678
- newTypeArguments = [
1679
- new utils_1.naslTypes.TypeAnnotation()
1680
- ];
1681
- }
1682
1704
  if (calleeName === 'FromString') {
1683
1705
  if (newTypeArguments?.[0]?.typeName === 'Time' && newArguments?.[0]?.expression?.concept === 'StringLiteral') {
1684
1706
  const timeValue = newArguments?.[0]?.expression?.value;
@@ -1772,16 +1794,16 @@ function transform2CallFunction(node, calleeName, argument, options) {
1772
1794
  else {
1773
1795
  // 最后判断一下参数数量是否匹配
1774
1796
  // 这两个参数比较特殊,可以无限加参数,不再判断参数数量
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
- }
1797
+ // 走LS检查,不在transform中判断了
1798
+ // const excludes = ['HasValue', 'ListSort']
1799
+ // if (func.params?.length !== newArguments?.length && !excludes.includes(calleeName)) {
1800
+ // return throwError(options, `函数${calleeName}生成不符合标准的函数调用,参数数量不匹配`, node.callee, node);
1801
+ // } else {
1802
+ // }
1803
+ newArguments?.forEach((arg, idx) => {
1804
+ if (func?.params[idx]?.name)
1805
+ arg.keyword = func?.params[idx]?.name;
1806
+ });
1785
1807
  }
1786
1808
  const nodeElement = new utils_1.naslTypes.CallFunction({
1787
1809
  calleeNamespace: 'nasl.util',
@@ -1809,7 +1831,7 @@ function transform2SqlFunction(node, calleeName, argument, options) {
1809
1831
  }
1810
1832
  const specFunList = ['COUNT', 'COUNTD', 'SUM', 'AVG', 'MAX', 'MIN'];
1811
1833
  // TODO: 先写死了 mysql,后续需要传入: 参考 requestSqlFunctions
1812
- const func = server_1.default ? server_1.default?.getSqlFunction('mysql', calleeName) : null;
1834
+ const func = (0, service_1.getSqlFunction)('mysql', calleeName);
1813
1835
  let addArguments = [];
1814
1836
  if (specFunList.includes(calleeName)) {
1815
1837
  const value = calleeName === 'COUNTD' ? 'DISTINCT' : 'ALL';
@@ -1853,8 +1875,15 @@ function transformCall2CallFunction(node, calleeName, callee, options) {
1853
1875
  return transform2CallFunction(node, curCalleeName, argument, options);
1854
1876
  }
1855
1877
  exports.transformCall2CallFunction = transformCall2CallFunction;
1878
+ const SUPPORTED_NASL_UI_FUNCTIONS = ['showMessage', 'destination', 'gotoLink'];
1856
1879
  function transform2UIFunction(node, calleeName, callee, options) {
1857
- if (callee[2].name === 'destination') {
1880
+ const uiFunctionName = callee[2].name;
1881
+ if (!SUPPORTED_NASL_UI_FUNCTIONS.includes(uiFunctionName)) {
1882
+ return (0, utils_1.throwError)(options, `nasl.ui 仅支持 ${SUPPORTED_NASL_UI_FUNCTIONS.map((f) => `nasl.ui.${f}`).join('、')},不支持 nasl.ui.${uiFunctionName}`, node);
1883
+ }
1884
+ if (uiFunctionName === 'destination') {
1885
+ if (!node.arguments[0])
1886
+ return (0, utils_1.throwError)(options, 'nasl.ui.destination 缺少目标页面参数', node);
1858
1887
  let namespaceNode = node.arguments[0];
1859
1888
  let namespace = '';
1860
1889
  if (namespaceNode.type === 'TemplateLiteral') {
@@ -1900,7 +1929,9 @@ function transform2UIFunction(node, calleeName, callee, options) {
1900
1929
  arguments: argument,
1901
1930
  });
1902
1931
  }
1903
- if (callee[2].name === 'gotoLink') {
1932
+ if (uiFunctionName === 'gotoLink') {
1933
+ if (!node.arguments[0])
1934
+ return (0, utils_1.throwError)(options, 'nasl.ui.gotoLink 缺少链接参数', node);
1904
1935
  return new utils_1.naslTypes.ExternalDestination({
1905
1936
  link: fixExpression(node?.arguments[0], options),
1906
1937
  });
@@ -1912,7 +1943,7 @@ function transform2UIFunction(node, calleeName, callee, options) {
1912
1943
  // }
1913
1944
  return new utils_1.naslTypes.CallLogic({
1914
1945
  calleeNamespace: 'nasl.ui',
1915
- calleeName: callee[2].name,
1946
+ calleeName: uiFunctionName,
1916
1947
  shortcut: true,
1917
1948
  /**
1918
1949
  * 这个函数是修复 AI 翻译出错的情况,与正常的 transform 做个区分
@@ -2140,7 +2171,7 @@ function transformCall2Logic(node, calleeName, callee, options) {
2140
2171
  // 未带前缀,补一下
2141
2172
  return transform2CallFunction(node, calleeName, node?.arguments || [], options);
2142
2173
  }
2143
- else if (server_1.default.getSqlFunction('mysql', calleeName) || calleeName === 'COUNTD') {
2174
+ else if ((0, service_1.getSqlFunction)('mysql', calleeName) || calleeName === 'COUNTD') {
2144
2175
  return transform2SqlFunction(node, calleeName, node?.arguments || [], options);
2145
2176
  }
2146
2177
  let newCalleeName = calleeName?.includes('__IDENTIFIER__') ? undefined : calleeName;
@@ -2171,6 +2202,30 @@ function transformCall2LogicWithAuth(node, calleeName, callee, options) {
2171
2202
  });
2172
2203
  }
2173
2204
  exports.transformCall2LogicWithAuth = transformCall2LogicWithAuth;
2205
+ function transformCall2GetCustomConfig(node, calleeName, callee, options) {
2206
+ const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
2207
+ const arg = node.arguments?.[0];
2208
+ if (!arg || arg.type !== 'MemberExpression') {
2209
+ return (0, utils_1.throwError)(options, 'nasl.configuration.getCustomConfig 的参数必须是 {app|extensions.xxx}.configuration.{group}.{name} 形式的成员访问', node);
2210
+ }
2211
+ const flatCallee = flatMemberExpression(arg);
2212
+ const argName = flatCallee.map((n) => n.name).join('.');
2213
+ const configPropertyRegex = /^(app|extensions\.\w+)\.configuration\.(\w+)\.(\w+)$/;
2214
+ if (!configPropertyRegex.test(argName)) {
2215
+ return (0, utils_1.throwError)(options, `nasl.configuration.getCustomConfig 参数路径格式不正确,期望 {app|extensions.xxx}.configuration.{group}.{name},实际为 ${argName}`, node);
2216
+ }
2217
+ return new utils_1.naslTypes.CallLogic({
2218
+ calleeNamespace: 'nasl.configuration',
2219
+ calleeName: 'getCustomConfig',
2220
+ arguments: [
2221
+ new utils_1.naslTypes.Argument({
2222
+ keyword: 'name',
2223
+ expression: transformNodeFunction(arg, options),
2224
+ }),
2225
+ ],
2226
+ });
2227
+ }
2228
+ exports.transformCall2GetCustomConfig = transformCall2GetCustomConfig;
2174
2229
  function transformCall2Paginate(node, calleeName, callee, options) {
2175
2230
  const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
2176
2231
  const newCallee = node.arguments || [];
@@ -2648,10 +2703,12 @@ function transform2LogicItem(node, options) {
2648
2703
  });
2649
2704
  transformManager.register('MemberExpression', transformMemberExpression);
2650
2705
  transformManager.register('OptionalMemberExpression', transformMemberExpression);
2706
+ transformManager.registerCallExpression((node, calleeName) => calleeName === 'require' && node.arguments[0]?.value?.startsWith('./tmp/'), transformRequire2JSBlock);
2651
2707
  transformManager.registerCallExpression((node, calleeName, callee) => callee.length === 1 && (node.callee.type === 'FunctionExpression' && node.callee.id?.name === 'match' || node.callee.type === 'ArrowFunctionExpression'), transformCallFunctionExpression2Match);
2652
2708
  transformManager.registerCallExpression((node, calleeName) => /^\$refs\./.test(calleeName), transformCall2CallViewElementLogic);
2653
2709
  transformManager.registerCallExpression((node, calleeName, callee) => callee.length === 2 && callee[0].type === 'Identifier' && callee[0].name.endsWith('Entity'), transformCall2CallEntityLogic);
2654
2710
  transformManager.registerCallExpression('nasl.oql.query', transformCall2OQLQuery);
2711
+ transformManager.registerCallExpression('nasl.configuration.getCustomConfig', transformCall2GetCustomConfig);
2655
2712
  transformManager.registerCallExpression('nasl.util.consoleLog', transformCall2ConsoleLog);
2656
2713
  transformManager.registerCallExpression('console.log', transformCall2ConsoleLog);
2657
2714
  transformManager.registerCallExpression((node, calleeName) => calleeName.startsWith('nasl.logging.'), transformCall2Logging);