@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.
- 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 +33 -7
- 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 +76 -32
- 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/ensureBindRoles.d.ts +9 -0
- package/out/natural/transforms/utils/ensureBindRoles.d.ts.map +1 -0
- package/out/natural/transforms/utils/ensureBindRoles.js +25 -0
- package/out/natural/transforms/utils/ensureBindRoles.js.map +1 -0
- 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.d.ts.map +1 -1
- package/out/service/storage/specTools.js +14 -5
- 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,
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
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:
|
|
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);
|