@lcap/nasl 4.4.0-beta.9 → 4.4.0-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/genBundleFiles.d.ts.map +1 -1
- package/out/generator/genBundleFiles.js +32 -3
- package/out/generator/genBundleFiles.js.map +1 -1
- package/out/generator/qiankun.d.ts +1 -1
- package/out/generator/qiankun.d.ts.map +1 -1
- package/out/generator/qiankun.js +4 -0
- package/out/generator/qiankun.js.map +1 -1
- package/out/generator/release-body/body.d.ts +0 -1
- package/out/generator/release-body/body.d.ts.map +1 -1
- package/out/generator/release-body/body.js +1 -390
- package/out/generator/release-body/body.js.map +1 -1
- package/out/generator/release-body/data.d.ts.map +1 -1
- package/out/generator/release-body/data.js +1 -10
- package/out/generator/release-body/data.js.map +1 -1
- package/out/generator/release-body/share-content.js.map +1 -1
- package/out/generator/release-body/types.d.ts +1 -0
- package/out/generator/release-body/types.d.ts.map +1 -1
- package/out/generator/templates/chunk.js +1 -1
- package/out/generator/templates/runtime.js +2 -2
- package/out/natural/exports/nasl2Files.d.ts.map +1 -0
- package/out/natural/{getContext → exports}/nasl2Files.js +4 -4
- package/out/natural/exports/nasl2Files.js.map +1 -0
- package/out/natural/{transform2BatchActions.d.ts → exports/transform2BatchActions.d.ts} +1 -1
- package/out/natural/exports/transform2BatchActions.d.ts.map +1 -0
- package/out/natural/{transform2BatchActions.js → exports/transform2BatchActions.js} +68 -19
- package/out/natural/exports/transform2BatchActions.js.map +1 -0
- package/out/natural/index.d.ts +12 -12
- package/out/natural/index.d.ts.map +1 -1
- package/out/natural/index.js +12 -14
- package/out/natural/index.js.map +1 -1
- package/out/natural/{genNaturalTS.d.ts → old/getContext/genNaturalTS.d.ts} +12 -12
- package/out/natural/old/getContext/genNaturalTS.d.ts.map +1 -0
- package/out/natural/{genNaturalTS.js → old/getContext/genNaturalTS.js} +65 -65
- package/out/natural/old/getContext/genNaturalTS.js.map +1 -0
- package/out/natural/old/getContext/genTextualNASL.d.ts.map +1 -0
- package/out/natural/old/getContext/genTextualNASL.js.map +1 -0
- package/out/natural/{getContext → old/getContext}/getUILib.d.ts +1 -1
- package/out/natural/old/getContext/getUILib.d.ts.map +1 -0
- package/out/natural/{getContext → old/getContext}/getUILib.js +14 -14
- package/out/natural/old/getContext/getUILib.js.map +1 -0
- package/out/natural/{getContext → old/getContext}/index.d.ts +3 -3
- package/out/natural/old/getContext/index.d.ts.map +1 -0
- package/out/natural/{getContext → old/getContext}/index.js +4 -4
- package/out/natural/old/getContext/index.js.map +1 -0
- package/out/natural/old/getContext/naslStdlibMap.d.ts.map +1 -0
- package/out/natural/{getContext → old/getContext}/naslStdlibMap.js +10 -10
- package/out/natural/old/getContext/naslStdlibMap.js.map +1 -0
- package/out/natural/{transformTS2UI.d.ts → old/parser/transformTS2UI.d.ts} +2 -2
- package/out/natural/old/parser/transformTS2UI.d.ts.map +1 -0
- package/out/natural/{transformTS2UI.js → old/parser/transformTS2UI.js} +12 -13
- package/out/natural/old/parser/transformTS2UI.js.map +1 -0
- package/out/natural/{transformTSCode.d.ts → old/parser/transformTSCode.d.ts} +1 -1
- package/out/natural/old/parser/transformTSCode.d.ts.map +1 -0
- package/out/natural/{transformTSCode.js → old/parser/transformTSCode.js} +6 -6
- package/out/natural/old/parser/transformTSCode.js.map +1 -0
- package/out/natural/{tools.d.ts → old/tools.d.ts} +0 -4
- package/out/natural/old/tools.d.ts.map +1 -0
- package/out/natural/{tools.js → old/tools.js} +7 -25
- package/out/natural/old/tools.js.map +1 -0
- package/out/natural/{parseNaturalTS.d.ts → parser/parseNaturalTS.d.ts} +1 -1
- package/out/natural/parser/parseNaturalTS.d.ts.map +1 -0
- package/out/natural/{parseNaturalTS.js → parser/parseNaturalTS.js} +14 -10
- package/out/natural/parser/parseNaturalTS.js.map +1 -0
- package/out/natural/{parseNaturalTSXView.d.ts → parser/parseNaturalTSXView.d.ts} +1 -2
- package/out/natural/parser/parseNaturalTSXView.d.ts.map +1 -0
- package/out/natural/{parseNaturalTSXView.js → parser/parseNaturalTSXView.js} +51 -58
- package/out/natural/parser/parseNaturalTSXView.js.map +1 -0
- package/out/natural/transforms/checker/checkDataQueryCalleeNameOrder.d.ts +7 -0
- package/out/natural/transforms/checker/checkDataQueryCalleeNameOrder.d.ts.map +1 -0
- package/out/natural/transforms/checker/checkDataQueryCalleeNameOrder.js +38 -0
- package/out/natural/transforms/checker/checkDataQueryCalleeNameOrder.js.map +1 -0
- package/out/natural/transforms/checker/checkDefaultValue.d.ts +13 -0
- package/out/natural/transforms/checker/checkDefaultValue.d.ts.map +1 -0
- package/out/natural/transforms/checker/checkDefaultValue.js +33 -0
- package/out/natural/transforms/checker/checkDefaultValue.js.map +1 -0
- package/out/natural/transforms/checker/checkViewElement.d.ts +29 -0
- package/out/natural/transforms/checker/checkViewElement.d.ts.map +1 -0
- package/out/natural/transforms/checker/checkViewElement.js +422 -0
- package/out/natural/transforms/checker/checkViewElement.js.map +1 -0
- package/out/natural/transforms/checker/index.d.ts +17 -0
- package/out/natural/transforms/checker/index.d.ts.map +1 -0
- package/out/natural/transforms/checker/index.js +26 -0
- package/out/natural/transforms/checker/index.js.map +1 -0
- package/out/natural/transforms/transform2Entity.d.ts +8 -1
- package/out/natural/transforms/transform2Entity.d.ts.map +1 -1
- package/out/natural/transforms/transform2Entity.js +88 -18
- package/out/natural/transforms/transform2Entity.js.map +1 -1
- package/out/natural/transforms/transform2Enum.d.ts +1 -1
- package/out/natural/transforms/transform2Enum.d.ts.map +1 -1
- package/out/natural/transforms/transform2Enum.js +5 -1
- package/out/natural/transforms/transform2Enum.js.map +1 -1
- package/out/natural/transforms/transform2GlobalLogicDeclaration.d.ts +1 -1
- package/out/natural/transforms/transform2GlobalLogicDeclaration.d.ts.map +1 -1
- package/out/natural/transforms/transform2GlobalLogicDeclaration.js +3 -3
- package/out/natural/transforms/transform2GlobalLogicDeclaration.js.map +1 -1
- package/out/natural/transforms/transform2Logic.d.ts +1 -1
- package/out/natural/transforms/transform2Logic.d.ts.map +1 -1
- package/out/natural/transforms/transform2Logic.js +4 -4
- package/out/natural/transforms/transform2Logic.js.map +1 -1
- package/out/natural/transforms/transform2LogicItem.d.ts +6 -3
- package/out/natural/transforms/transform2LogicItem.d.ts.map +1 -1
- package/out/natural/transforms/transform2LogicItem.js +99 -110
- package/out/natural/transforms/transform2LogicItem.js.map +1 -1
- package/out/natural/transforms/transform2MetadataType.d.ts +1 -1
- package/out/natural/transforms/transform2MetadataType.d.ts.map +1 -1
- package/out/natural/transforms/transform2MetadataType.js +1 -1
- package/out/natural/transforms/transform2MetadataType.js.map +1 -1
- package/out/natural/transforms/transform2Param.d.ts +4 -0
- package/out/natural/transforms/transform2Param.d.ts.map +1 -0
- package/out/natural/transforms/transform2Param.js +114 -0
- package/out/natural/transforms/transform2Param.js.map +1 -0
- package/out/natural/transforms/transform2Structure.d.ts +1 -1
- package/out/natural/transforms/transform2Structure.d.ts.map +1 -1
- package/out/natural/transforms/transform2Structure.js +13 -2
- package/out/natural/transforms/transform2Structure.js.map +1 -1
- package/out/natural/transforms/transform2TypeAnnotation.d.ts +1 -1
- package/out/natural/transforms/transform2TypeAnnotation.d.ts.map +1 -1
- package/out/natural/transforms/transform2TypeAnnotation.js +2 -2
- package/out/natural/transforms/transform2TypeAnnotation.js.map +1 -1
- package/out/natural/transforms/transform2ValidationRule.d.ts +1 -1
- package/out/natural/transforms/transform2ValidationRule.d.ts.map +1 -1
- package/out/natural/transforms/transform2ValidationRule.js +1 -1
- package/out/natural/transforms/transform2ValidationRule.js.map +1 -1
- package/out/natural/transforms/transform2Variable.d.ts +2 -1
- package/out/natural/transforms/transform2Variable.d.ts.map +1 -1
- package/out/natural/transforms/transform2Variable.js +22 -2
- package/out/natural/transforms/transform2Variable.js.map +1 -1
- package/out/natural/transforms/transformThemeAndStyle.d.ts +1 -1
- package/out/natural/transforms/transformThemeAndStyle.d.ts.map +1 -1
- package/out/natural/transforms/transformThemeAndStyle.js +1 -1
- package/out/natural/transforms/transformThemeAndStyle.js.map +1 -1
- package/out/natural/transforms/utils/fetchFromComments.d.ts +3 -0
- package/out/natural/transforms/utils/fetchFromComments.d.ts.map +1 -0
- package/out/natural/transforms/utils/fetchFromComments.js +10 -0
- package/out/natural/transforms/utils/fetchFromComments.js.map +1 -0
- package/out/natural/transforms/utils/misc.d.ts +16 -0
- package/out/natural/transforms/utils/misc.d.ts.map +1 -0
- package/out/natural/transforms/utils/misc.js +240 -0
- package/out/natural/transforms/utils/misc.js.map +1 -0
- package/out/natural/transforms/utils/parseDecorator.d.ts +46 -0
- package/out/natural/transforms/utils/parseDecorator.d.ts.map +1 -0
- package/out/natural/transforms/utils/parseDecorator.js +180 -0
- package/out/natural/transforms/utils/parseDecorator.js.map +1 -0
- package/out/natural/utils/index.d.ts +59 -0
- package/out/natural/utils/index.d.ts.map +1 -0
- package/out/natural/utils/index.js +168 -0
- package/out/natural/utils/index.js.map +1 -0
- package/out/server/extendBaseNode.js +14 -0
- package/out/server/extendBaseNode.js.map +1 -1
- package/out/server/findReference.js +1 -1
- package/out/server/findReference.js.map +1 -1
- package/out/server/naslServer.d.ts.map +1 -1
- package/out/server/naslServer.js +33 -17
- package/out/server/naslServer.js.map +1 -1
- package/out/server/translator.js.map +1 -1
- package/out/service/autofix/rules/rule-convert-incompatible-assignment-to-union.js.map +1 -1
- package/out/service/storage/init.d.ts.map +1 -1
- package/out/service/storage/init.js +9 -2
- package/out/service/storage/init.js.map +1 -1
- package/out/templator/block2nasl/transformBlock2Nasl.js +2 -2
- package/out/templator/block2nasl/transformBlock2Nasl.js.map +1 -1
- package/out/utils/can-i-use.d.ts.map +1 -1
- package/out/utils/can-i-use.js +1 -0
- package/out/utils/can-i-use.js.map +1 -1
- package/package.json +9 -9
- package/sandbox/stdlib/nasl.core.ts +2 -0
- package/sandbox/stdlib/nasl.io.ts +1 -1
- package/sandbox/stdlib/nasl.oql.ts +2 -0
- package/out/natural/genNaturalTS.d.ts.map +0 -1
- package/out/natural/genNaturalTS.js.map +0 -1
- package/out/natural/genTextualNASL.d.ts.map +0 -1
- package/out/natural/genTextualNASL.js.map +0 -1
- package/out/natural/getContext/getUILib.d.ts.map +0 -1
- package/out/natural/getContext/getUILib.js.map +0 -1
- package/out/natural/getContext/index.d.ts.map +0 -1
- package/out/natural/getContext/index.js.map +0 -1
- package/out/natural/getContext/nasl2Files.d.ts.map +0 -1
- package/out/natural/getContext/nasl2Files.js.map +0 -1
- package/out/natural/getContext/naslStdlibMap.d.ts.map +0 -1
- package/out/natural/getContext/naslStdlibMap.js.map +0 -1
- package/out/natural/parseNaturalTS.d.ts.map +0 -1
- package/out/natural/parseNaturalTS.js.map +0 -1
- package/out/natural/parseNaturalTSXView.d.ts.map +0 -1
- package/out/natural/parseNaturalTSXView.js.map +0 -1
- package/out/natural/tools.d.ts.map +0 -1
- package/out/natural/tools.js.map +0 -1
- package/out/natural/transform2BatchActions.d.ts.map +0 -1
- package/out/natural/transform2BatchActions.js.map +0 -1
- package/out/natural/transformTS2UI.d.ts.map +0 -1
- package/out/natural/transformTS2UI.js.map +0 -1
- package/out/natural/transformTSCode.d.ts.map +0 -1
- package/out/natural/transformTSCode.js.map +0 -1
- package/out/natural/transforms/checkViewElement.d.ts +0 -12
- package/out/natural/transforms/checkViewElement.d.ts.map +0 -1
- package/out/natural/transforms/checkViewElement.js +0 -143
- package/out/natural/transforms/checkViewElement.js.map +0 -1
- package/out/natural/transforms/utils.d.ts +0 -137
- package/out/natural/transforms/utils.d.ts.map +0 -1
- package/out/natural/transforms/utils.js +0 -714
- package/out/natural/transforms/utils.js.map +0 -1
- /package/out/natural/{getContext → exports}/nasl2Files.d.ts +0 -0
- /package/out/natural/{genTextualNASL.d.ts → old/getContext/genTextualNASL.d.ts} +0 -0
- /package/out/natural/{genTextualNASL.js → old/getContext/genTextualNASL.js} +0 -0
- /package/out/natural/{getContext → old/getContext}/naslStdlibMap.d.ts +0 -0
|
@@ -3,11 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
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.
|
|
7
|
-
exports.transform2LogicItem = exports.transformNode2Directory = exports.transformCall2Paginate = exports.transformCall2LogicWithAuth = exports.transformCall2Logic = exports.transformCall2CallViewLogic = exports.transformCall2Extension = exports.transformCall2Connector =
|
|
8
|
-
const utils_1 = require("
|
|
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;
|
|
8
|
+
const utils_1 = require("../utils");
|
|
9
|
+
const misc_1 = require("./utils/misc");
|
|
10
|
+
const checkDataQueryCalleeNameOrder_1 = require("./checker/checkDataQueryCalleeNameOrder");
|
|
9
11
|
const transform2TypeAnnotation_1 = require("./transform2TypeAnnotation");
|
|
10
|
-
const
|
|
12
|
+
const transform2Param_1 = require("./transform2Param");
|
|
11
13
|
const server_1 = __importDefault(require("../../server"));
|
|
12
14
|
;
|
|
13
15
|
class TransformManager {
|
|
@@ -63,7 +65,7 @@ exports.TransformManager = TransformManager;
|
|
|
63
65
|
function transformTSCode2SubLogic(node, options) {
|
|
64
66
|
const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
|
|
65
67
|
const logic = new utils_1.naslTypes.SubLogic();
|
|
66
|
-
logic.name = options.transformType === 'logic' && options.logic?.getSubLogicUniqueName ? options.logic.getSubLogicUniqueName() : `subLogic_${(0,
|
|
68
|
+
logic.name = options.transformType === 'logic' && options.logic?.getSubLogicUniqueName ? options.logic.getSubLogicUniqueName() : `subLogic_${(0, utils_1.uuidv4)().slice(0, 2)}`;
|
|
67
69
|
logic.body = logic.body.slice(0, 1);
|
|
68
70
|
let parameters = [];
|
|
69
71
|
let statements = [];
|
|
@@ -77,7 +79,7 @@ function transformTSCode2SubLogic(node, options) {
|
|
|
77
79
|
statements = [...node?.body?.directives, ...node?.body?.body];
|
|
78
80
|
}
|
|
79
81
|
parameters.forEach((node) => {
|
|
80
|
-
const param = transform2Param(node, options);
|
|
82
|
+
const param = (0, transform2Param_1.transform2Param)(node, options);
|
|
81
83
|
if (param && !param?.typeAnnotation) {
|
|
82
84
|
param.typeAnnotation = null;
|
|
83
85
|
}
|
|
@@ -281,79 +283,6 @@ function fixLogicNode(node) {
|
|
|
281
283
|
}
|
|
282
284
|
}
|
|
283
285
|
exports.fixLogicNode = fixLogicNode;
|
|
284
|
-
function transform2Param(node, options) {
|
|
285
|
-
const exclude = ['event'];
|
|
286
|
-
if (node.type === 'ObjectProperty') {
|
|
287
|
-
const typeAnnotation = node?.value?.name ? utils_1.naslTypes.TypeAnnotation.createPrimitive((node?.value).name) : null;
|
|
288
|
-
const name = node.key.name;
|
|
289
|
-
if (exclude.includes(name))
|
|
290
|
-
return null;
|
|
291
|
-
let defaultValueExpression = node.key.optional ? { type: 'NullLiteral' } : undefined;
|
|
292
|
-
return new utils_1.naslTypes.Param({
|
|
293
|
-
name,
|
|
294
|
-
typeAnnotation,
|
|
295
|
-
defaultValue: defaultValueExpression && new utils_1.naslTypes.DefaultValue({
|
|
296
|
-
expression: transform2LogicItem(defaultValueExpression, { ...options, transformType: 'attr', isRestricted: true }),
|
|
297
|
-
}),
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
else if (node.type === 'TSPropertySignature') {
|
|
301
|
-
const typeAnnotation = node.typeAnnotation?.typeAnnotation;
|
|
302
|
-
const name = node.key.name;
|
|
303
|
-
if (exclude.includes(name))
|
|
304
|
-
return null;
|
|
305
|
-
let defaultValueExpression = node.optional ? { type: 'NullLiteral' } : undefined;
|
|
306
|
-
return new utils_1.naslTypes.Param({
|
|
307
|
-
name,
|
|
308
|
-
typeAnnotation: typeAnnotation && (0, transform2TypeAnnotation_1.transform2TypeAnnotation)(typeAnnotation, options) || undefined,
|
|
309
|
-
defaultValue: defaultValueExpression && new utils_1.naslTypes.DefaultValue({
|
|
310
|
-
expression: transform2LogicItem(defaultValueExpression, { ...options, transformType: 'attr', isRestricted: true }),
|
|
311
|
-
}),
|
|
312
|
-
});
|
|
313
|
-
}
|
|
314
|
-
else if (node.type === 'Identifier') {
|
|
315
|
-
const typeAnnotation = node.typeAnnotation?.typeAnnotation;
|
|
316
|
-
const name = node.name;
|
|
317
|
-
if (exclude.includes(name))
|
|
318
|
-
return null;
|
|
319
|
-
let defaultValueExpression = node.optional ? { type: 'NullLiteral' } : undefined;
|
|
320
|
-
return new utils_1.naslTypes.Param({
|
|
321
|
-
name,
|
|
322
|
-
required: !node.optional,
|
|
323
|
-
typeAnnotation: typeAnnotation && (0, transform2TypeAnnotation_1.transform2TypeAnnotation)(typeAnnotation, options) || undefined,
|
|
324
|
-
defaultValue: defaultValueExpression && new utils_1.naslTypes.DefaultValue({
|
|
325
|
-
expression: transform2LogicItem(defaultValueExpression, { ...options, transformType: 'attr', isRestricted: true }),
|
|
326
|
-
}),
|
|
327
|
-
});
|
|
328
|
-
}
|
|
329
|
-
else if (node.type === 'AssignmentPattern') {
|
|
330
|
-
const identifier = node.left;
|
|
331
|
-
const typeAnnotation = identifier.typeAnnotation?.typeAnnotation;
|
|
332
|
-
let defaultValueExpression;
|
|
333
|
-
if (node.type === 'AssignmentPattern') {
|
|
334
|
-
if (node.right)
|
|
335
|
-
defaultValueExpression = node.right;
|
|
336
|
-
else if (identifier.optional) {
|
|
337
|
-
defaultValueExpression = { type: 'NullLiteral' };
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
const exclude = ['event'];
|
|
341
|
-
const name = identifier.name;
|
|
342
|
-
if (exclude.includes(name))
|
|
343
|
-
return null;
|
|
344
|
-
return new utils_1.naslTypes.Param({
|
|
345
|
-
name,
|
|
346
|
-
typeAnnotation: typeAnnotation && (0, transform2TypeAnnotation_1.transform2TypeAnnotation)(typeAnnotation, options) || undefined,
|
|
347
|
-
defaultValue: defaultValueExpression && new utils_1.naslTypes.DefaultValue({
|
|
348
|
-
expression: transform2LogicItem(defaultValueExpression, { ...options, transformType: 'attr', isRestricted: true }),
|
|
349
|
-
}),
|
|
350
|
-
});
|
|
351
|
-
}
|
|
352
|
-
else {
|
|
353
|
-
return (0, utils_1.throwError)(options, '在输入参数中不支持节点类型', node);
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
exports.transform2Param = transform2Param;
|
|
357
286
|
function transformCallExpressionToBinaryExpression(node, calleeName, callee, options) {
|
|
358
287
|
const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
|
|
359
288
|
const argument = node?.arguments;
|
|
@@ -369,10 +298,11 @@ function transformCallExpressionToBinaryExpression(node, calleeName, callee, opt
|
|
|
369
298
|
IN: 'in',
|
|
370
299
|
IS_NULL: 'isNull',
|
|
371
300
|
};
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
}
|
|
301
|
+
// 4.4版本支持使用: https://projectmanage.netease-official.lcap.163yun.com/dashboard/FeatureDetail?id=2903738850213120
|
|
302
|
+
// const limitMap = ['STARTS_WITH', 'ENDS_WITH', 'LIKE', 'IN', 'IS_NULL'];
|
|
303
|
+
// if (limitMap.includes(calleeName) && options.transformType === 'logic' && !options.inCallQueryComponentField) {
|
|
304
|
+
// return throwError(options, `${calleeName} 仅支持在数据查询中使用`, node);
|
|
305
|
+
// }
|
|
376
306
|
if (calleeName === 'IS_NULL') {
|
|
377
307
|
return new utils_1.naslTypes.UnaryExpression({
|
|
378
308
|
operator: 'isNull',
|
|
@@ -412,6 +342,13 @@ function collectExpressions(node, operator, expressions, options) {
|
|
|
412
342
|
}
|
|
413
343
|
}
|
|
414
344
|
}
|
|
345
|
+
/**
|
|
346
|
+
* 检查节点是否为 null 或 undefined
|
|
347
|
+
*/
|
|
348
|
+
function isNullOrUndefined(node) {
|
|
349
|
+
return (node?.type === 'NullLiteral' ||
|
|
350
|
+
(node?.type === 'Identifier' && node.name === 'undefined'));
|
|
351
|
+
}
|
|
415
352
|
function transform2VariadicExpression(node, options) {
|
|
416
353
|
// 创建一个新的 VariadicExpression
|
|
417
354
|
const result = {
|
|
@@ -430,13 +367,13 @@ function transform2BinaryExpression(node, options) {
|
|
|
430
367
|
node.operator = '==';
|
|
431
368
|
if (node.operator === '!==')
|
|
432
369
|
node.operator = '!=';
|
|
433
|
-
if (node.operator === '==' && node.right
|
|
370
|
+
if (node.operator === '==' && isNullOrUndefined(node.right) && options?.inCallQueryComponentField) {
|
|
434
371
|
return new utils_1.naslTypes.UnaryExpression({
|
|
435
372
|
operator: 'isNull',
|
|
436
373
|
argument: transformNodeFunction(node.left, options),
|
|
437
374
|
});
|
|
438
375
|
}
|
|
439
|
-
if (node.operator === '!=' && node.right
|
|
376
|
+
if (node.operator === '!=' && isNullOrUndefined(node.right) && options?.inCallQueryComponentField) {
|
|
440
377
|
return new utils_1.naslTypes.UnaryExpression({
|
|
441
378
|
operator: '!',
|
|
442
379
|
argument: new utils_1.naslTypes.UnaryExpression({
|
|
@@ -623,7 +560,7 @@ function transform2ArrayPattern(decl, options) {
|
|
|
623
560
|
}
|
|
624
561
|
else {
|
|
625
562
|
getVariableNode = new utils_1.naslTypes.Identifier({
|
|
626
|
-
name: `temp_${(0,
|
|
563
|
+
name: `temp_${(0, utils_1.uuidv4)().slice(0, 4)}`,
|
|
627
564
|
});
|
|
628
565
|
logicItems.push(new utils_1.naslTypes.Assignment({
|
|
629
566
|
left: getVariableNode,
|
|
@@ -839,13 +776,13 @@ function transform2SelectQueryFieldExpression(node, options) {
|
|
|
839
776
|
let expression = node.value;
|
|
840
777
|
let asNameNode = node.key;
|
|
841
778
|
if (expression.type === 'Identifier') {
|
|
842
|
-
const isSameName = (0,
|
|
779
|
+
const isSameName = (0, utils_1.firstUpperCase)(asNameNode.name) === expression.name;
|
|
843
780
|
if (!isSameName) {
|
|
844
|
-
return (0, utils_1.throwError)(options, `字段名需为 ${(0,
|
|
781
|
+
return (0, utils_1.throwError)(options, `字段名需为 ${(0, utils_1.firstLowerCase)(expression.name)}, 目前为: ${asNameNode.name}, 相关代码如下`, node);
|
|
845
782
|
}
|
|
846
783
|
return new utils_1.naslTypes.QueryFieldExpression({
|
|
847
784
|
isDotStar: true,
|
|
848
|
-
asName: (0,
|
|
785
|
+
asName: (0, utils_1.firstUpperCase)(asNameNode.name) === expression.name ? undefined : asNameNode.name,
|
|
849
786
|
entityAsName: expression.name,
|
|
850
787
|
propertyName: '',
|
|
851
788
|
});
|
|
@@ -853,7 +790,7 @@ function transform2SelectQueryFieldExpression(node, options) {
|
|
|
853
790
|
else if (expression.type === 'MemberExpression') {
|
|
854
791
|
return new utils_1.naslTypes.QueryFieldExpression({
|
|
855
792
|
isDotStar: false,
|
|
856
|
-
asName: (0,
|
|
793
|
+
asName: (0, utils_1.firstUpperCase)(asNameNode.name) === expression.property.name ? undefined : asNameNode.name,
|
|
857
794
|
entityAsName: expression.object.name,
|
|
858
795
|
propertyName: expression.property.name,
|
|
859
796
|
});
|
|
@@ -887,7 +824,7 @@ function transform2AnonymousFunction(node, options) {
|
|
|
887
824
|
return (0, utils_1.throwError)(options, 'Anonymous function with block statement is not supported', node);
|
|
888
825
|
const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
|
|
889
826
|
return new utils_1.naslTypes.AnonymousFunction({
|
|
890
|
-
params: node.params.map((param) => transform2Param(param, options)).filter(Boolean),
|
|
827
|
+
params: node.params.map((param) => (0, transform2Param_1.transform2Param)(param, options)).filter(Boolean),
|
|
891
828
|
body: transformNodeFunction(node.body, options),
|
|
892
829
|
});
|
|
893
830
|
}
|
|
@@ -1024,6 +961,22 @@ function transform2StringInterpolation(node, options) {
|
|
|
1024
961
|
end: element.end,
|
|
1025
962
|
}))];
|
|
1026
963
|
expressions.sort((a, b) => a.start - b.start);
|
|
964
|
+
// 在数据查询组件字段中,将模板字符串转换为 SQL CONCAT 函数
|
|
965
|
+
if (options?.inCallQueryComponentField) {
|
|
966
|
+
const transformedExpressions = expressions
|
|
967
|
+
// 过滤掉空字符串
|
|
968
|
+
.filter((item) => !(item.type === 'StringLiteral' && item.value === ''))
|
|
969
|
+
.map((item) => transformNodeFunction(item, options))
|
|
970
|
+
.filter(Boolean);
|
|
971
|
+
return new utils_1.naslTypes.CallFunction({
|
|
972
|
+
calleeNamespace: 'nasl.sqlFunction',
|
|
973
|
+
calleeName: 'CONCAT',
|
|
974
|
+
arguments: transformedExpressions.map((expr, index) => new utils_1.naslTypes.Argument({
|
|
975
|
+
expression: expr,
|
|
976
|
+
keyword: `param${index + 1}`,
|
|
977
|
+
})),
|
|
978
|
+
});
|
|
979
|
+
}
|
|
1027
980
|
return new utils_1.naslTypes.StringInterpolation({
|
|
1028
981
|
expressions: expressions.map((item) => transformNodeFunction(item, options))?.filter(Boolean),
|
|
1029
982
|
});
|
|
@@ -1357,7 +1310,7 @@ function transformCallFunctionExpression2Match(node, calleeName, callee, options
|
|
|
1357
1310
|
return (0, utils_1.throwError)(options, 'Match Case 的 if 中只能写一个 return 语句', _case.consequent);
|
|
1358
1311
|
}
|
|
1359
1312
|
}
|
|
1360
|
-
let bodyNode = transformNodeFunction(argument, options);
|
|
1313
|
+
let bodyNode = argument ? transformNodeFunction(argument, options) : undefined;
|
|
1361
1314
|
let body = [];
|
|
1362
1315
|
if (bodyNode) {
|
|
1363
1316
|
body = [bodyNode];
|
|
@@ -1616,7 +1569,7 @@ function transform2CallOtherNASLLogic(node, calleeName, callee, options) {
|
|
|
1616
1569
|
}
|
|
1617
1570
|
exports.transform2CallOtherNASLLogic = transform2CallOtherNASLLogic;
|
|
1618
1571
|
function transform2CallFunction(node, calleeName, argument, options) {
|
|
1619
|
-
calleeName =
|
|
1572
|
+
calleeName = misc_1.replaceCallFunctionMap?.[calleeName] || calleeName;
|
|
1620
1573
|
const func = server_1.default ? server_1.default.getBuildInFunction(calleeName) : null;
|
|
1621
1574
|
let newArguments = argument.map((arg, index) => {
|
|
1622
1575
|
let supportSubLogic = false;
|
|
@@ -1663,6 +1616,16 @@ function transform2CallFunction(node, calleeName, argument, options) {
|
|
|
1663
1616
|
new utils_1.naslTypes.TypeAnnotation()
|
|
1664
1617
|
];
|
|
1665
1618
|
}
|
|
1619
|
+
if (calleeName === 'FromString') {
|
|
1620
|
+
if (newTypeArguments?.[0]?.typeName === 'Time' && newArguments?.[0]?.expression?.concept === 'StringLiteral') {
|
|
1621
|
+
const timeValue = newArguments?.[0]?.expression?.value;
|
|
1622
|
+
// 验证时分秒格式:严格的 HH:mm:ss (两位数字)
|
|
1623
|
+
const timeRegex = /^([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/;
|
|
1624
|
+
if (timeValue && !timeRegex.test(timeValue)) {
|
|
1625
|
+
return (0, utils_1.throwError)(options, `FromString<Time> 的参数值 "${timeValue}" 不符合时分秒格式,必须为 HH:mm:ss 格式`, node);
|
|
1626
|
+
}
|
|
1627
|
+
}
|
|
1628
|
+
}
|
|
1666
1629
|
if (func) {
|
|
1667
1630
|
const needTypeMap = [
|
|
1668
1631
|
'ListDistinctBy',
|
|
@@ -1709,6 +1672,14 @@ function transform2CallFunction(node, calleeName, argument, options) {
|
|
|
1709
1672
|
expression: utils_1.naslTypes.BaseNode.from(p.defaultExpression.toJSON()),
|
|
1710
1673
|
}));
|
|
1711
1674
|
}
|
|
1675
|
+
if (np && p?.defaultExpression?.concept === 'AnonymousFunction' && p?.name === 'by' && p?.parentKey === 'params') {
|
|
1676
|
+
// 特殊处理下,因为 Params 中有默认行为,需要占个位
|
|
1677
|
+
if (np.expression?.params) {
|
|
1678
|
+
np.expression.params.forEach((param) => {
|
|
1679
|
+
param.typeAnnotation = null;
|
|
1680
|
+
});
|
|
1681
|
+
}
|
|
1682
|
+
}
|
|
1712
1683
|
// 类型不匹配时,使用默认值
|
|
1713
1684
|
if (calleeName === "GetDateCount" && idx === func.params?.length - 1 && np?.expression?.concept !== 'StringLiteral') {
|
|
1714
1685
|
np &&
|
|
@@ -1751,13 +1722,13 @@ function transform2CallFunction(node, calleeName, argument, options) {
|
|
|
1751
1722
|
}
|
|
1752
1723
|
const nodeElement = new utils_1.naslTypes.CallFunction({
|
|
1753
1724
|
calleeNamespace: 'nasl.util',
|
|
1754
|
-
calleeName:
|
|
1725
|
+
calleeName: misc_1.replaceCallFunctionMap?.[calleeName] || calleeName,
|
|
1755
1726
|
arguments: newArguments,
|
|
1756
1727
|
typeArguments: newTypeArguments
|
|
1757
1728
|
// typeArguments: node?.typeParameters?.params.map((curType: any) => transform2TypeAnnotation({ ...curType, typeNamespace })),
|
|
1758
1729
|
});
|
|
1759
1730
|
if (calleeName === 'ListSort') {
|
|
1760
|
-
const handledNode = (0,
|
|
1731
|
+
const handledNode = (0, misc_1.handleListSort)(nodeElement?.toJSON(), options);
|
|
1761
1732
|
if (handledNode === null) {
|
|
1762
1733
|
return (0, utils_1.throwError)(options, 'ListSort 函数使用错误,ListSort 定义如下:export function ListSort<T>(list: List<T>, ...fns: ((item: T) => { asc: Boolean, by: Boolean | Long | Decimal | String | Date | Time | DateTime; })[]): List<T>;', node);
|
|
1763
1734
|
}
|
|
@@ -1792,7 +1763,7 @@ function transform2SqlFunction(node, calleeName, argument, options) {
|
|
|
1792
1763
|
}));
|
|
1793
1764
|
const nodeElement = new utils_1.naslTypes.CallFunction({
|
|
1794
1765
|
calleeNamespace: 'nasl.sqlFunction',
|
|
1795
|
-
calleeName:
|
|
1766
|
+
calleeName: misc_1.replaceCallFunctionMap?.[calleeName] || calleeName,
|
|
1796
1767
|
arguments: [...addArguments, ...newArguments],
|
|
1797
1768
|
typeArguments: node?.typeParameters?.params.map((curType) => (0, transform2TypeAnnotation_1.transform2TypeAnnotation)({ ...curType }, options)).filter(Boolean),
|
|
1798
1769
|
// typeArguments: node?.typeParameters?.params.map((curType: any) => transform2TypeAnnotation({ ...curType, typeNamespace })),
|
|
@@ -1912,12 +1883,12 @@ function transform2ForEachStatement(node, calleeName, callee, options) {
|
|
|
1912
1883
|
each: transformNodeFunction(newCallee[0], options),
|
|
1913
1884
|
start: transformNodeFunction(newCallee[1], options),
|
|
1914
1885
|
end: newCallee[2]?.name === '__IDENTIFIER__' ? undefined : transformNodeFunction(newCallee[2], options),
|
|
1915
|
-
item: arrowFunction?.params?.[0] ? transform2Param(arrowFunction.params[0], options) || undefined : new utils_1.naslTypes.Param({
|
|
1886
|
+
item: arrowFunction?.params?.[0] ? (0, transform2Param_1.transform2Param)(arrowFunction.params[0], options, true) || undefined : new utils_1.naslTypes.Param({
|
|
1916
1887
|
name: 'item',
|
|
1917
1888
|
typeAnnotation: undefined,
|
|
1918
1889
|
}),
|
|
1919
|
-
index: arrowFunction?.params?.[1] ? transform2Param(arrowFunction.params[1], options) || undefined : new utils_1.naslTypes.Param({
|
|
1920
|
-
name: `index_${(0,
|
|
1890
|
+
index: arrowFunction?.params?.[1] ? (0, transform2Param_1.transform2Param)(arrowFunction.params[1], options, true) || undefined : new utils_1.naslTypes.Param({
|
|
1891
|
+
name: `index_${(0, utils_1.uuidv4)().slice(0, 4)}`,
|
|
1921
1892
|
typeAnnotation: utils_1.naslTypes.TypeAnnotation.createPrimitive('Long'),
|
|
1922
1893
|
}),
|
|
1923
1894
|
body: transformBlockBody(body, options),
|
|
@@ -1960,12 +1931,12 @@ function transformForOf2ForEachStatement(node, options) {
|
|
|
1960
1931
|
typeAnnotation: utils_1.naslTypes.TypeAnnotation.createPrimitive('Long'),
|
|
1961
1932
|
}),
|
|
1962
1933
|
end: endNode?.name === '__IDENTIFIER__' ? undefined : endNode ? transformNodeFunction(endNode, options) : undefined,
|
|
1963
|
-
item: itemNode ? transform2Param(itemNode, options) || undefined : new utils_1.naslTypes.Param({
|
|
1934
|
+
item: itemNode ? (0, transform2Param_1.transform2Param)(itemNode, options, true) || undefined : new utils_1.naslTypes.Param({
|
|
1964
1935
|
name: 'item',
|
|
1965
1936
|
typeAnnotation: undefined,
|
|
1966
1937
|
}),
|
|
1967
|
-
index: indexNode ? transform2Param(indexNode, options) || undefined : new utils_1.naslTypes.Param({
|
|
1968
|
-
name: `index_${(0,
|
|
1938
|
+
index: indexNode ? (0, transform2Param_1.transform2Param)(indexNode, options, true) || undefined : new utils_1.naslTypes.Param({
|
|
1939
|
+
name: `index_${(0, utils_1.uuidv4)().slice(0, 2)}`,
|
|
1969
1940
|
typeAnnotation: utils_1.naslTypes.TypeAnnotation.createPrimitive('Long'),
|
|
1970
1941
|
}),
|
|
1971
1942
|
body: transformBlockBody(body, options),
|
|
@@ -1984,9 +1955,9 @@ function transformForEach2ForEachStatement(node, calleeName, callee, options) {
|
|
|
1984
1955
|
value: '0',
|
|
1985
1956
|
typeAnnotation: utils_1.naslTypes.TypeAnnotation.createPrimitive('Long'),
|
|
1986
1957
|
}),
|
|
1987
|
-
item: transform2Param(arrowFunction.params[0], options) || undefined,
|
|
1988
|
-
index: arrowFunction.params[1] ? transform2Param(arrowFunction.params[1], options) || undefined : new utils_1.naslTypes.Param({
|
|
1989
|
-
name: `index_${(0,
|
|
1958
|
+
item: (0, transform2Param_1.transform2Param)(arrowFunction.params[0], options) || undefined,
|
|
1959
|
+
index: arrowFunction.params[1] ? (0, transform2Param_1.transform2Param)(arrowFunction.params[1], options) || undefined : new utils_1.naslTypes.Param({
|
|
1960
|
+
name: `index_${(0, utils_1.uuidv4)().slice(0, 2)}`,
|
|
1990
1961
|
typeAnnotation: utils_1.naslTypes.TypeAnnotation.createPrimitive('Long'),
|
|
1991
1962
|
}),
|
|
1992
1963
|
body: transformBlockBody(body, options),
|
|
@@ -2103,7 +2074,7 @@ exports.transformCall2CallViewLogic = transformCall2CallViewLogic;
|
|
|
2103
2074
|
function transformCall2Logic(node, calleeName, callee, options) {
|
|
2104
2075
|
if (options?.isRestricted)
|
|
2105
2076
|
return (0, utils_1.throwError)(options, '调用逻辑不支持在组件或默认值表达式中使用,请尝试单独赋值', node);
|
|
2106
|
-
if (
|
|
2077
|
+
if (misc_1.callFunctionMap.includes(calleeName)) {
|
|
2107
2078
|
// 未带前缀,补一下
|
|
2108
2079
|
return transform2CallFunction(node, calleeName, node?.arguments || [], options);
|
|
2109
2080
|
}
|
|
@@ -2247,7 +2218,7 @@ function transformCall2DataQuery(node, calleeName, callee, options) {
|
|
|
2247
2218
|
if (!flatted)
|
|
2248
2219
|
return;
|
|
2249
2220
|
const calleeNames = flatted && flatted.map((item) => item?.calleeName).filter((name) => name !== '$');
|
|
2250
|
-
const isOrderCorrect = (0,
|
|
2221
|
+
const isOrderCorrect = (0, checkDataQueryCalleeNameOrder_1.checkDataQueryCalleeNameOrder)(calleeNames);
|
|
2251
2222
|
if (!isOrderCorrect) {
|
|
2252
2223
|
return (0, utils_1.throwError)(options, '调用顺序错误,期望的调用顺序为 FROM -> JOIN -> WHERE -> GROUP_BY -> SELECT/AGGR_SELECT -> HAVING -> ORDER_BY。其中,FROM在最外层,FROM内部是零到多层JOIN嵌套调用,在最内层的JOIN内部是 WHERE -> GROUP_BY -> SELECT/AGGR_SELECT -> HAVING -> ORDER_BY 的调用顺序。', node);
|
|
2253
2224
|
}
|
|
@@ -2381,11 +2352,11 @@ function transformCall2DataQuery(node, calleeName, callee, options) {
|
|
|
2381
2352
|
}
|
|
2382
2353
|
const originName = arg.key?.name || '';
|
|
2383
2354
|
if (originName && originName.charAt(0) === originName.charAt(0).toUpperCase()) {
|
|
2384
|
-
const needName = (0,
|
|
2355
|
+
const needName = (0, utils_1.firstLowerCase)(originName);
|
|
2385
2356
|
return (0, utils_1.throwError)(options, `SELECT 局部列第一层命名不符合规范, 应为${needName}, 但实际为${originName}`, node);
|
|
2386
2357
|
}
|
|
2387
|
-
const entityName = (0,
|
|
2388
|
-
const needNameList = entityAsNames.map(item => (0,
|
|
2358
|
+
const entityName = (0, utils_1.firstUpperCase)(originName);
|
|
2359
|
+
const needNameList = entityAsNames.map(item => (0, utils_1.firstLowerCase)(item))?.join('或');
|
|
2389
2360
|
if (!entityAsNames.includes(entityName)) {
|
|
2390
2361
|
return (0, utils_1.throwError)(options, `SELECT 局部列第一层命名不符合规范, 应为${needNameList}, 但实际为${originName}`, node);
|
|
2391
2362
|
}
|
|
@@ -2535,6 +2506,24 @@ function transformNode2Directory(node) {
|
|
|
2535
2506
|
return newNode;
|
|
2536
2507
|
}
|
|
2537
2508
|
exports.transformNode2Directory = transformNode2Directory;
|
|
2509
|
+
/**
|
|
2510
|
+
* 将默认值表达式转换为 NASL DefaultValue 对象
|
|
2511
|
+
*/
|
|
2512
|
+
function transform2DefaultValue(node, options) {
|
|
2513
|
+
const defaultValue = new utils_1.naslTypes.DefaultValue();
|
|
2514
|
+
try {
|
|
2515
|
+
const expression = transform2LogicItem(node, options);
|
|
2516
|
+
if (expression) {
|
|
2517
|
+
defaultValue.expression = expression;
|
|
2518
|
+
return defaultValue;
|
|
2519
|
+
}
|
|
2520
|
+
}
|
|
2521
|
+
catch (error) {
|
|
2522
|
+
return (0, utils_1.throwError)(options, `默认值解析失败: ${error.message}`, node);
|
|
2523
|
+
}
|
|
2524
|
+
return undefined;
|
|
2525
|
+
}
|
|
2526
|
+
exports.transform2DefaultValue = transform2DefaultValue;
|
|
2538
2527
|
function transform2LogicItem(node, options) {
|
|
2539
2528
|
fixLogicNode(node);
|
|
2540
2529
|
const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
|