@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.
- package/out/generator/release-body/data.js +1 -1
- package/out/generator/release-body/data.js.map +1 -1
- package/out/generator/release-body/internal.d.ts +1 -0
- package/out/generator/release-body/internal.d.ts.map +1 -1
- package/out/generator/release-body/internal.js.map +1 -1
- package/out/generator/release-body/utils.d.ts +1 -0
- package/out/generator/release-body/utils.d.ts.map +1 -1
- package/out/generator/release-body/utils.js +1 -0
- package/out/generator/release-body/utils.js.map +1 -1
- package/out/index.d.ts +1 -1
- package/out/index.d.ts.map +1 -1
- package/out/index.js +2 -1
- package/out/index.js.map +1 -1
- package/out/natural/exports/nasl2Files.d.ts.map +1 -1
- package/out/natural/exports/nasl2Files.js +32 -1
- package/out/natural/exports/nasl2Files.js.map +1 -1
- package/out/natural/exports/transform2BatchActions/apply.d.ts +11 -0
- package/out/natural/exports/transform2BatchActions/apply.d.ts.map +1 -0
- package/out/natural/exports/transform2BatchActions/apply.js +68 -0
- package/out/natural/exports/transform2BatchActions/apply.js.map +1 -0
- package/out/natural/exports/transform2BatchActions/diff/directories.d.ts +17 -0
- package/out/natural/exports/transform2BatchActions/diff/directories.d.ts.map +1 -0
- package/out/natural/exports/transform2BatchActions/diff/directories.js +215 -0
- package/out/natural/exports/transform2BatchActions/diff/directories.js.map +1 -0
- package/out/natural/exports/transform2BatchActions/diff/index.d.ts +21 -0
- package/out/natural/exports/transform2BatchActions/diff/index.d.ts.map +1 -0
- package/out/natural/exports/transform2BatchActions/diff/index.js +20 -0
- package/out/natural/exports/transform2BatchActions/diff/index.js.map +1 -0
- package/out/natural/exports/transform2BatchActions/diff/nodes.d.ts +162 -0
- package/out/natural/exports/transform2BatchActions/diff/nodes.d.ts.map +1 -0
- package/out/natural/exports/transform2BatchActions/diff/nodes.js +464 -0
- package/out/natural/exports/transform2BatchActions/diff/nodes.js.map +1 -0
- package/out/natural/exports/transform2BatchActions/diff/roles.d.ts +18 -0
- package/out/natural/exports/transform2BatchActions/diff/roles.d.ts.map +1 -0
- package/out/natural/exports/transform2BatchActions/diff/roles.js +52 -0
- package/out/natural/exports/transform2BatchActions/diff/roles.js.map +1 -0
- package/out/natural/exports/transform2BatchActions/index.d.ts +41 -0
- package/out/natural/exports/transform2BatchActions/index.d.ts.map +1 -0
- package/out/natural/exports/transform2BatchActions/index.js +61 -0
- package/out/natural/exports/transform2BatchActions/index.js.map +1 -0
- package/out/natural/exports/transform2BatchActions/parse.d.ts +24 -0
- package/out/natural/exports/transform2BatchActions/parse.d.ts.map +1 -0
- package/out/natural/exports/transform2BatchActions/parse.js +234 -0
- package/out/natural/exports/transform2BatchActions/parse.js.map +1 -0
- package/out/natural/exports/transform2BatchActions/types.d.ts +147 -0
- package/out/natural/exports/transform2BatchActions/types.d.ts.map +1 -0
- package/out/natural/exports/transform2BatchActions/types.js +7 -0
- package/out/natural/exports/transform2BatchActions/types.js.map +1 -0
- package/out/natural/old/parser/transformTSCode.js +1 -1
- package/out/natural/old/parser/transformTSCode.js.map +1 -1
- package/out/natural/parser/parseNaturalTS.d.ts.map +1 -1
- package/out/natural/parser/parseNaturalTS.js +61 -1
- package/out/natural/parser/parseNaturalTS.js.map +1 -1
- package/out/natural/parser/parseNaturalTSXView.d.ts.map +1 -1
- package/out/natural/parser/parseNaturalTSXView.js +55 -6
- package/out/natural/parser/parseNaturalTSXView.js.map +1 -1
- package/out/natural/transforms/checker/checkIdentifierName.d.ts +6 -0
- package/out/natural/transforms/checker/checkIdentifierName.d.ts.map +1 -0
- package/out/natural/transforms/checker/checkIdentifierName.js +15 -0
- package/out/natural/transforms/checker/checkIdentifierName.js.map +1 -0
- package/out/natural/transforms/checker/checkViewElement.d.ts.map +1 -1
- package/out/natural/transforms/checker/checkViewElement.js +2 -0
- package/out/natural/transforms/checker/checkViewElement.js.map +1 -1
- package/out/natural/transforms/checker/index.d.ts +1 -0
- package/out/natural/transforms/checker/index.d.ts.map +1 -1
- package/out/natural/transforms/checker/index.js +3 -1
- package/out/natural/transforms/checker/index.js.map +1 -1
- package/out/natural/transforms/transform2Config.d.ts +17 -0
- package/out/natural/transforms/transform2Config.d.ts.map +1 -0
- package/out/natural/transforms/transform2Config.js +114 -0
- package/out/natural/transforms/transform2Config.js.map +1 -0
- package/out/natural/transforms/transform2GlobalLogicDeclaration.d.ts.map +1 -1
- package/out/natural/transforms/transform2GlobalLogicDeclaration.js +4 -1
- package/out/natural/transforms/transform2GlobalLogicDeclaration.js.map +1 -1
- package/out/natural/transforms/transform2Logic.d.ts.map +1 -1
- package/out/natural/transforms/transform2Logic.js +6 -12
- package/out/natural/transforms/transform2Logic.js.map +1 -1
- package/out/natural/transforms/transform2LogicItem.d.ts +1 -0
- package/out/natural/transforms/transform2LogicItem.d.ts.map +1 -1
- package/out/natural/transforms/transform2LogicItem.js +80 -42
- package/out/natural/transforms/transform2LogicItem.js.map +1 -1
- package/out/natural/transforms/transform2Param.d.ts +1 -1
- package/out/natural/transforms/transform2Param.d.ts.map +1 -1
- package/out/natural/transforms/transform2Param.js +19 -1
- package/out/natural/transforms/transform2Param.js.map +1 -1
- package/out/natural/transforms/transform2Roles.d.ts +3 -0
- package/out/natural/transforms/transform2Roles.d.ts.map +1 -0
- package/out/natural/transforms/transform2Roles.js +30 -0
- package/out/natural/transforms/transform2Roles.js.map +1 -0
- package/out/natural/transforms/transform2TypeAnnotation.d.ts.map +1 -1
- package/out/natural/transforms/transform2TypeAnnotation.js +8 -4
- package/out/natural/transforms/transform2TypeAnnotation.js.map +1 -1
- package/out/natural/transforms/transform2Variable.d.ts.map +1 -1
- package/out/natural/transforms/transform2Variable.js +4 -0
- package/out/natural/transforms/transform2Variable.js.map +1 -1
- package/out/natural/transforms/utils/flattenStatementsWithComments.d.ts +11 -0
- package/out/natural/transforms/utils/flattenStatementsWithComments.d.ts.map +1 -0
- package/out/natural/transforms/utils/flattenStatementsWithComments.js +36 -0
- package/out/natural/transforms/utils/flattenStatementsWithComments.js.map +1 -0
- package/out/natural/transforms/utils/parseDecorator.d.ts +2 -2
- package/out/natural/transforms/utils/parseDecorator.d.ts.map +1 -1
- package/out/natural/transforms/utils/parseDecorator.js +8 -5
- package/out/natural/transforms/utils/parseDecorator.js.map +1 -1
- package/out/natural/utils/index.d.ts +5 -0
- package/out/natural/utils/index.d.ts.map +1 -1
- package/out/natural/utils/index.js +11 -1
- package/out/natural/utils/index.js.map +1 -1
- package/out/natural/utils/nasl-file-types.d.ts +6 -1
- package/out/natural/utils/nasl-file-types.d.ts.map +1 -1
- package/out/natural/utils/nasl-file-types.js +49 -2
- package/out/natural/utils/nasl-file-types.js.map +1 -1
- package/out/server/extendBaseNode.d.ts.map +1 -1
- package/out/server/extendBaseNode.js +8 -3
- package/out/server/extendBaseNode.js.map +1 -1
- package/out/service/instruct-ruler/ruler.d.ts +3 -1
- package/out/service/instruct-ruler/ruler.d.ts.map +1 -1
- package/out/service/instruct-ruler/ruler.js +2 -1
- package/out/service/instruct-ruler/ruler.js.map +1 -1
- package/out/service/storage/init.d.ts +5 -0
- package/out/service/storage/init.d.ts.map +1 -1
- package/out/service/storage/init.js +2 -1
- package/out/service/storage/init.js.map +1 -1
- package/out/service/storage/specTools.js +2 -2
- package/out/service/storage/specTools.js.map +1 -1
- package/package.json +10 -9
- package/sandbox/stdlib/nasl.util.ts +16 -15
- package/out/natural/exports/transform2BatchActions.d.ts +0 -114
- package/out/natural/exports/transform2BatchActions.d.ts.map +0 -1
- package/out/natural/exports/transform2BatchActions.js +0 -1233
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
}
|
|
1779
|
-
else {
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
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
|
-
|
|
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 (
|
|
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:
|
|
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);
|