@lcap/nasl 4.5.0-beta.1 → 4.5.0-beta.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/automate/upgrader/2.12.d.ts.map +1 -1
- package/out/automate/upgrader/2.12.js +1 -0
- package/out/automate/upgrader/2.12.js.map +1 -1
- package/out/automate/upgrader/2.14.d.ts.map +1 -1
- package/out/automate/upgrader/2.14.js +1 -0
- package/out/automate/upgrader/2.14.js.map +1 -1
- package/out/automate/upgrader/2.16.d.ts.map +1 -1
- package/out/automate/upgrader/2.16.js +1 -0
- package/out/automate/upgrader/2.16.js.map +1 -1
- package/out/automate/upgrader/2.17.d.ts.map +1 -1
- package/out/automate/upgrader/2.17.js +1 -0
- package/out/automate/upgrader/2.17.js.map +1 -1
- package/out/automate/upgrader/2.18.d.ts.map +1 -1
- package/out/automate/upgrader/2.18.js +1 -0
- package/out/automate/upgrader/2.18.js.map +1 -1
- package/out/automate/upgrader/2.20.d.ts.map +1 -1
- package/out/automate/upgrader/2.20.js +1 -0
- package/out/automate/upgrader/2.20.js.map +1 -1
- package/out/concepts/index.mini.d.ts +10 -0
- package/out/concepts/index.mini.d.ts.map +1 -0
- package/out/concepts/index.mini.js +26 -0
- package/out/concepts/index.mini.js.map +1 -0
- package/out/generator/genBundleFiles.d.ts.map +1 -1
- package/out/generator/genBundleFiles.js +161 -24
- package/out/generator/genBundleFiles.js.map +1 -1
- package/out/generator/permission.js +2 -2
- package/out/generator/permission.js.map +1 -1
- package/out/generator/release-body/utils.d.ts +1 -1
- package/out/generator/release-body/utils.d.ts.map +1 -1
- package/out/generator/release-body/utils.js +8 -6
- package/out/generator/release-body/utils.js.map +1 -1
- package/out/generator/rspack-broswer/bundle.d.ts +24 -0
- package/out/generator/rspack-broswer/bundle.d.ts.map +1 -0
- package/out/generator/rspack-broswer/bundle.js +442 -0
- package/out/generator/rspack-broswer/bundle.js.map +1 -0
- package/out/generator/rspack-broswer/container/client-lazyload-template.d.ts +9 -0
- package/out/generator/rspack-broswer/container/client-lazyload-template.d.ts.map +1 -0
- package/out/generator/rspack-broswer/container/client-lazyload-template.js +88 -0
- package/out/generator/rspack-broswer/container/client-lazyload-template.js.map +1 -0
- package/out/generator/rspack-broswer/container/file-system.d.ts +12 -0
- package/out/generator/rspack-broswer/container/file-system.d.ts.map +1 -0
- package/out/generator/rspack-broswer/container/file-system.js +58 -0
- package/out/generator/rspack-broswer/container/file-system.js.map +1 -0
- package/out/generator/rspack-broswer/container/index.d.ts +3 -0
- package/out/generator/rspack-broswer/container/index.d.ts.map +1 -0
- package/out/generator/rspack-broswer/container/index.js +15 -0
- package/out/generator/rspack-broswer/container/index.js.map +1 -0
- package/out/generator/rspack-broswer/index.d.ts +3 -0
- package/out/generator/rspack-broswer/index.d.ts.map +1 -0
- package/out/generator/rspack-broswer/index.js +19 -0
- package/out/generator/rspack-broswer/index.js.map +1 -0
- package/out/generator/rspack-broswer/loaders/vue/index.d.ts +2 -0
- package/out/generator/rspack-broswer/loaders/vue/index.d.ts.map +1 -0
- package/out/generator/rspack-broswer/loaders/vue/index.js +228 -0
- package/out/generator/rspack-broswer/loaders/vue/index.js.map +1 -0
- package/out/generator/rspack-broswer/plugins/lcap/constant.d.ts +3 -0
- package/out/generator/rspack-broswer/plugins/lcap/constant.d.ts.map +1 -0
- package/out/generator/rspack-broswer/plugins/lcap/constant.js +213 -0
- package/out/generator/rspack-broswer/plugins/lcap/constant.js.map +1 -0
- package/out/generator/rspack-broswer/plugins/lcap/index.d.ts +6 -0
- package/out/generator/rspack-broswer/plugins/lcap/index.d.ts.map +1 -0
- package/out/generator/rspack-broswer/plugins/lcap/index.js +175 -0
- package/out/generator/rspack-broswer/plugins/lcap/index.js.map +1 -0
- package/out/generator/rspack-broswer/plugins/missing-css-fallback/index.d.ts +10 -0
- package/out/generator/rspack-broswer/plugins/missing-css-fallback/index.d.ts.map +1 -0
- package/out/generator/rspack-broswer/plugins/missing-css-fallback/index.js +50 -0
- package/out/generator/rspack-broswer/plugins/missing-css-fallback/index.js.map +1 -0
- package/out/generator/ui-library-declaration/dependency.d.ts +20 -0
- package/out/generator/ui-library-declaration/dependency.d.ts.map +1 -1
- package/out/generator/ui-library-declaration/dependency.js +3 -2
- package/out/generator/ui-library-declaration/dependency.js.map +1 -1
- package/out/generator/ui-library-declaration/index.d.ts +1 -0
- package/out/generator/ui-library-declaration/index.d.ts.map +1 -1
- package/out/generator/ui-library-declaration/index.js +1 -0
- package/out/generator/ui-library-declaration/index.js.map +1 -1
- package/out/generator/ui-library-declaration/material.d.ts +2 -2
- package/out/generator/ui-library-declaration/material.d.ts.map +1 -1
- package/out/generator/ui-library-declaration/material.js +7 -3
- package/out/generator/ui-library-declaration/material.js.map +1 -1
- package/out/index.d.ts +2 -2
- package/out/index.d.ts.map +1 -1
- package/out/index.js +7 -1
- package/out/index.js.map +1 -1
- package/out/index.mini.d.ts +42 -0
- package/out/index.mini.d.ts.map +1 -0
- package/out/index.mini.js +89 -0
- package/out/index.mini.js.map +1 -0
- package/out/manager/diagnostic.d.ts +5 -5
- package/out/manager/diagnostic.d.ts.map +1 -1
- package/out/natural/exports/doctor/doctorView.d.ts +24 -0
- package/out/natural/exports/doctor/doctorView.d.ts.map +1 -0
- package/out/natural/exports/doctor/doctorView.js +351 -0
- package/out/natural/exports/doctor/doctorView.js.map +1 -0
- package/out/natural/exports/doctor/index.d.ts +4 -0
- package/out/natural/exports/doctor/index.d.ts.map +1 -0
- package/out/natural/exports/doctor/index.js +10 -0
- package/out/natural/exports/doctor/index.js.map +1 -0
- package/out/natural/exports/doctor/types.d.ts +109 -0
- package/out/natural/exports/doctor/types.d.ts.map +1 -0
- package/out/natural/exports/doctor/types.js +6 -0
- package/out/natural/exports/doctor/types.js.map +1 -0
- package/out/natural/exports/doctor/viewGraph.d.ts +20 -0
- package/out/natural/exports/doctor/viewGraph.d.ts.map +1 -0
- package/out/natural/exports/doctor/viewGraph.js +448 -0
- package/out/natural/exports/doctor/viewGraph.js.map +1 -0
- package/out/natural/exports/nasl2Files.d.ts.map +1 -1
- package/out/natural/exports/nasl2Files.js +113 -9
- 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 +186 -0
- package/out/natural/exports/transform2BatchActions/diff/nodes.d.ts.map +1 -0
- package/out/natural/exports/transform2BatchActions/diff/nodes.js +498 -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 +61 -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 +257 -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/index.d.ts +1 -0
- package/out/natural/index.d.ts.map +1 -1
- package/out/natural/index.js +1 -0
- package/out/natural/index.js.map +1 -1
- package/out/natural/old/parser/transformTS2UI.d.ts.map +1 -1
- package/out/natural/old/parser/transformTS2UI.js +4 -1
- package/out/natural/old/parser/transformTS2UI.js.map +1 -1
- 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 +106 -2
- 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 +60 -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/checkKeywords.d.ts +33 -0
- package/out/natural/transforms/checker/checkKeywords.d.ts.map +1 -0
- package/out/natural/transforms/checker/checkKeywords.js +85 -0
- package/out/natural/transforms/checker/checkKeywords.js.map +1 -0
- package/out/natural/transforms/checker/checkViewElement.d.ts +10 -0
- package/out/natural/transforms/checker/checkViewElement.d.ts.map +1 -1
- package/out/natural/transforms/checker/checkViewElement.js +28 -1
- package/out/natural/transforms/checker/checkViewElement.js.map +1 -1
- package/out/natural/transforms/checker/index.d.ts +3 -1
- package/out/natural/transforms/checker/index.d.ts.map +1 -1
- package/out/natural/transforms/checker/index.js +10 -1
- package/out/natural/transforms/checker/index.js.map +1 -1
- package/out/natural/transforms/transform2AuthLogic.d.ts +4 -0
- package/out/natural/transforms/transform2AuthLogic.d.ts.map +1 -0
- package/out/natural/transforms/transform2AuthLogic.js +116 -0
- package/out/natural/transforms/transform2AuthLogic.js.map +1 -0
- 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/transform2Entity.d.ts +2 -2
- package/out/natural/transforms/transform2Entity.d.ts.map +1 -1
- package/out/natural/transforms/transform2Entity.js +11 -2
- package/out/natural/transforms/transform2Entity.js.map +1 -1
- package/out/natural/transforms/transform2Enum.d.ts.map +1 -1
- package/out/natural/transforms/transform2Enum.js +8 -1
- package/out/natural/transforms/transform2Enum.js.map +1 -1
- package/out/natural/transforms/transform2ExportInterface.d.ts +3 -0
- package/out/natural/transforms/transform2ExportInterface.d.ts.map +1 -0
- package/out/natural/transforms/transform2ExportInterface.js +96 -0
- package/out/natural/transforms/transform2ExportInterface.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 +8 -38
- package/out/natural/transforms/transform2Logic.js.map +1 -1
- package/out/natural/transforms/transform2LogicItem.d.ts +9 -2
- package/out/natural/transforms/transform2LogicItem.d.ts.map +1 -1
- package/out/natural/transforms/transform2LogicItem.js +169 -61
- package/out/natural/transforms/transform2LogicItem.js.map +1 -1
- package/out/natural/transforms/transform2OverriddenLogic.d.ts +3 -0
- package/out/natural/transforms/transform2OverriddenLogic.d.ts.map +1 -0
- package/out/natural/transforms/transform2OverriddenLogic.js +83 -0
- package/out/natural/transforms/transform2OverriddenLogic.js.map +1 -0
- 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 +34 -0
- package/out/natural/transforms/transform2Roles.js.map +1 -0
- package/out/natural/transforms/transform2Structure.d.ts.map +1 -1
- package/out/natural/transforms/transform2Structure.js +2 -0
- package/out/natural/transforms/transform2Structure.js.map +1 -1
- 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/createComponentLookupMap.js +3 -3
- package/out/natural/transforms/utils/createComponentLookupMap.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 +4 -4
- package/out/natural/transforms/utils/parseDecorator.d.ts.map +1 -1
- package/out/natural/transforms/utils/parseDecorator.js +40 -24
- package/out/natural/transforms/utils/parseDecorator.js.map +1 -1
- package/out/natural/transforms/utils/parseLogicBody.d.ts +17 -0
- package/out/natural/transforms/utils/parseLogicBody.d.ts.map +1 -0
- package/out/natural/transforms/utils/parseLogicBody.js +47 -0
- package/out/natural/transforms/utils/parseLogicBody.js.map +1 -0
- 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 +77 -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 +9 -3
- package/out/server/extendBaseNode.js.map +1 -1
- package/out/server/naslServer.d.ts +18 -0
- package/out/server/naslServer.d.ts.map +1 -1
- package/out/server/naslServer.js +89 -0
- package/out/server/naslServer.js.map +1 -1
- package/out/server/naslUiComponentTs.d.ts +1 -2
- package/out/server/naslUiComponentTs.d.ts.map +1 -1
- package/out/server/naslUiComponentTs.default.d.ts +47 -0
- package/out/server/naslUiComponentTs.js +25 -49
- package/out/server/naslUiComponentTs.js.map +1 -1
- package/out/service/autofix/types.d.ts +2 -2
- package/out/service/autofix/types.d.ts.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 +6 -0
- package/out/service/storage/init.d.ts.map +1 -1
- package/out/service/storage/init.js +22 -9
- package/out/service/storage/init.js.map +1 -1
- package/out/service/storage/operation.d.ts +9 -1
- package/out/service/storage/operation.d.ts.map +1 -1
- package/out/service/storage/operation.js +220 -100
- package/out/service/storage/operation.js.map +1 -1
- package/out/service/storage/specTools.d.ts.map +1 -1
- package/out/service/storage/specTools.js +25 -13
- package/out/service/storage/specTools.js.map +1 -1
- package/out/templator/genQueryComponent.d.ts +13 -1
- package/out/templator/genQueryComponent.d.ts.map +1 -1
- package/out/templator/genQueryComponent.js +18 -14
- package/out/templator/genQueryComponent.js.map +1 -1
- package/package.json +16 -10
- 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
|
@@ -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.
|
|
7
|
-
exports.transform2LogicItem = exports.transform2DefaultValue = exports.transformNode2Directory = exports.transformCall2Paginate = exports.transformCall2LogicWithAuth = exports.transformCall2Logic = exports.transformCall2CallViewLogic = exports.transformCall2Extension = exports.transformCall2Connector = void 0;
|
|
3
|
+
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.transform2ExcelField = 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 = exports.transformAlert2ShowMessage = 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
|
|
12
|
+
const service_1 = require("@lcap/nasl-concepts/service");
|
|
14
13
|
const parseDecorator_1 = require("./utils/parseDecorator");
|
|
15
14
|
;
|
|
16
15
|
class TransformManager {
|
|
@@ -66,7 +65,7 @@ exports.TransformManager = TransformManager;
|
|
|
66
65
|
function transformTSCode2SubLogic(node, options) {
|
|
67
66
|
const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
|
|
68
67
|
const logic = new utils_1.naslTypes.SubLogic();
|
|
69
|
-
logic.name = options.transformType === 'logic' && options.logic?.getSubLogicUniqueName ? options.logic.getSubLogicUniqueName() : `subLogic_${(0, utils_1.uuidv4)().slice(0, 2)}`;
|
|
68
|
+
logic.name = options.transformType === 'logic' && 'getSubLogicUniqueName' in (options.logic ?? {}) && options.logic?.getSubLogicUniqueName ? options.logic.getSubLogicUniqueName() : `subLogic_${(0, utils_1.uuidv4)().slice(0, 2)}`;
|
|
70
69
|
logic.body = logic.body.slice(0, 1);
|
|
71
70
|
let parameters = [];
|
|
72
71
|
let statements = [];
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
});
|
|
@@ -1135,6 +1145,27 @@ function transform2NewRegex(node, options) {
|
|
|
1135
1145
|
});
|
|
1136
1146
|
}
|
|
1137
1147
|
exports.transform2NewRegex = transform2NewRegex;
|
|
1148
|
+
function transform2ExcelField(node, options) {
|
|
1149
|
+
const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
|
|
1150
|
+
const objExpr = node.arguments[0];
|
|
1151
|
+
const properties = (objExpr?.properties || []).map((prop) => {
|
|
1152
|
+
const propName = prop.key?.name ?? prop.key?.value;
|
|
1153
|
+
const propValue = prop.value;
|
|
1154
|
+
if (propName === 'format' && (propValue.type === 'ArrowFunctionExpression' || propValue.type === 'FunctionExpression')) {
|
|
1155
|
+
const firstParam = propValue.params?.[0];
|
|
1156
|
+
if (!firstParam || !firstParam.typeAnnotation) {
|
|
1157
|
+
return (0, utils_1.throwError)(options, 'nasl.io.ExcelField 的 format 函数参数必须声明类型,例如:(item: app.dataSources.defaultDS.entities.MyEntity) => ...', propValue);
|
|
1158
|
+
}
|
|
1159
|
+
}
|
|
1160
|
+
const expression = transformNodeFunction(propValue, options);
|
|
1161
|
+
return new utils_1.naslTypes.StructureProperty({
|
|
1162
|
+
name: propName,
|
|
1163
|
+
defaultValue: new utils_1.naslTypes.DefaultValue({ expression }),
|
|
1164
|
+
});
|
|
1165
|
+
});
|
|
1166
|
+
return new utils_1.naslTypes.NewStructure({ properties });
|
|
1167
|
+
}
|
|
1168
|
+
exports.transform2ExcelField = transform2ExcelField;
|
|
1138
1169
|
function transformNewExpression(node, options) {
|
|
1139
1170
|
const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
|
|
1140
1171
|
const calleeName = (0, utils_1.generate)(node.callee).code;
|
|
@@ -1147,7 +1178,13 @@ function transformNewExpression(node, options) {
|
|
|
1147
1178
|
else if (calleeName === 'RegExp') {
|
|
1148
1179
|
return transform2NewRegex(node, options);
|
|
1149
1180
|
}
|
|
1181
|
+
else if (calleeName === 'nasl.io.ExcelField') {
|
|
1182
|
+
return transform2ExcelField(node, options);
|
|
1183
|
+
}
|
|
1150
1184
|
else if (calleeName.includes('.entities.') || calleeName.includes('.structures.')) {
|
|
1185
|
+
if (options?.inCallQueryComponentField) {
|
|
1186
|
+
return (0, utils_1.throwError)(options, `数据查询中不支持使用 new ${calleeName},请将对应操作放在数据查询外部进行处理`, node);
|
|
1187
|
+
}
|
|
1151
1188
|
return transform2NewStructure(calleeName, node.arguments[0], options);
|
|
1152
1189
|
}
|
|
1153
1190
|
return (0, utils_1.throwError)(options, '在新建表达式中不支持节点类型', node.type, node);
|
|
@@ -1258,6 +1295,14 @@ function transformMemberExpression(node, options) {
|
|
|
1258
1295
|
return newNode;
|
|
1259
1296
|
}
|
|
1260
1297
|
}
|
|
1298
|
+
const configPropertyRegex = /^(app|extensions\.\w+)\.configuration\.(?:groups\.)?(\w+)\.(?:properties\.)?(\w+)$/;
|
|
1299
|
+
if (configPropertyRegex.test(calleeName)) {
|
|
1300
|
+
const [, prefix, groupName, propName] = calleeName.match(configPropertyRegex);
|
|
1301
|
+
return new utils_1.naslTypes.Identifier({
|
|
1302
|
+
namespace: `${prefix}.configuration.groups.${groupName}.properties`,
|
|
1303
|
+
name: propName,
|
|
1304
|
+
});
|
|
1305
|
+
}
|
|
1261
1306
|
if (node.property.type === 'NumericLiteral' || node?.property?.type === 'BinaryExpression') {
|
|
1262
1307
|
return new utils_1.naslTypes.CallFunction({
|
|
1263
1308
|
calleeNamespace: 'nasl.util',
|
|
@@ -1470,6 +1515,7 @@ function transformCall2CallDataSourceLogic(node, calleeName, callee, options) {
|
|
|
1470
1515
|
if (newArguments?.[0])
|
|
1471
1516
|
newArguments[0].keyword = 'body';
|
|
1472
1517
|
if (newArguments?.[1]) {
|
|
1518
|
+
newArguments[1].keyword = 'properties';
|
|
1473
1519
|
if (newArguments[1]?.expression.concept === 'AnonymousFunction' && newArguments[1]?.expression?.params?.[0]?.name) {
|
|
1474
1520
|
newArguments[1].expression.params[0].typeAnnotation = utils_1.naslTypes.TypeAnnotation.createReference(entityName, {
|
|
1475
1521
|
typeNamespace: calleeNamespace,
|
|
@@ -1497,6 +1543,7 @@ function transformCall2CallDataSourceLogic(node, calleeName, callee, options) {
|
|
|
1497
1543
|
}
|
|
1498
1544
|
const expressionJson = expression?.toJSON();
|
|
1499
1545
|
const argument2 = newArguments?.[1];
|
|
1546
|
+
const argument3 = newArguments?.[2];
|
|
1500
1547
|
newArguments = [new utils_1.naslTypes.Argument({
|
|
1501
1548
|
expression: new utils_1.naslTypes.Function({
|
|
1502
1549
|
name: "filter",
|
|
@@ -1523,6 +1570,10 @@ function transformCall2CallDataSourceLogic(node, calleeName, callee, options) {
|
|
|
1523
1570
|
else {
|
|
1524
1571
|
newArguments.push(new utils_1.naslTypes.Argument({}));
|
|
1525
1572
|
}
|
|
1573
|
+
if (argument3?.expression?.concept === 'AnonymousFunction') {
|
|
1574
|
+
argument3.keyword = 'properties';
|
|
1575
|
+
newArguments.push(argument3);
|
|
1576
|
+
}
|
|
1526
1577
|
}
|
|
1527
1578
|
}
|
|
1528
1579
|
return new utils_1.naslTypes.CallLogic({
|
|
@@ -1545,6 +1596,8 @@ function transformCall2OQLQuery(node, calleeName, callee, options) {
|
|
|
1545
1596
|
return (0, utils_1.throwError)(options, 'OQL组件不支持在前端使用', node);
|
|
1546
1597
|
if (options?.isRestricted)
|
|
1547
1598
|
return (0, utils_1.throwError)(options, 'OQL组件不支持在组件或默认值表达式中使用', node);
|
|
1599
|
+
if (options?.restrictDataQuery)
|
|
1600
|
+
return (0, utils_1.throwError)(options, '鉴权逻辑中不支持使用数据查询', node);
|
|
1548
1601
|
if (options.transformType === 'logic' && options?.logicType === 'global_logic') {
|
|
1549
1602
|
// const _typeAnnotation = node?.typeParameters?.params?.length > 0 ? naslTypes.TypeAnnotation.createGeneric('List', {
|
|
1550
1603
|
// typeArguments: node?.typeParameters?.params.map((curType: any) => transform2TypeAnnotation({ ...curType })),
|
|
@@ -1633,7 +1686,7 @@ function transform2CallOtherNASLLogic(node, calleeName, callee, options) {
|
|
|
1633
1686
|
exports.transform2CallOtherNASLLogic = transform2CallOtherNASLLogic;
|
|
1634
1687
|
function transform2CallFunction(node, calleeName, argument, options) {
|
|
1635
1688
|
calleeName = misc_1.replaceCallFunctionMap?.[calleeName] || calleeName;
|
|
1636
|
-
const func =
|
|
1689
|
+
const func = (0, service_1.getBuildInFunction)(calleeName);
|
|
1637
1690
|
let newArguments = argument.map((arg, index) => {
|
|
1638
1691
|
let supportSubLogic = false;
|
|
1639
1692
|
if (arg?.type === 'FunctionExpression' || (arg?.type === 'ArrowFunctionExpression' && arg?.body?.type === 'BlockStatement')) {
|
|
@@ -1644,13 +1697,16 @@ function transform2CallFunction(node, calleeName, argument, options) {
|
|
|
1644
1697
|
keyword: func && func?.params[index]?.name || `param${index + 1}`,
|
|
1645
1698
|
});
|
|
1646
1699
|
});
|
|
1647
|
-
let newTypeArguments = node?.typeParameters?.params
|
|
1700
|
+
let newTypeArguments = node?.typeParameters?.params?.map((curType) => (0, transform2TypeAnnotation_1.transform2TypeAnnotation)({ ...curType }, options)).filter(Boolean);
|
|
1648
1701
|
// 补齐场景下补充类型参数
|
|
1649
1702
|
if (options?.source !== 'creator' && calleeName === 'ListRepeat') {
|
|
1650
1703
|
newTypeArguments = [
|
|
1651
1704
|
new utils_1.naslTypes.TypeAnnotation()
|
|
1652
1705
|
];
|
|
1653
1706
|
}
|
|
1707
|
+
else if (options?.source === 'creator' && calleeName === 'ListRepeat' && !newTypeArguments?.length) {
|
|
1708
|
+
return (0, utils_1.throwError)(options, 'ListRepeat 必须指定类型参数。函数签名: ListRepeat<T>(item: T, length: Integer): List<T>', node);
|
|
1709
|
+
}
|
|
1654
1710
|
if (calleeName === 'Convert' && !newTypeArguments) {
|
|
1655
1711
|
newTypeArguments = [
|
|
1656
1712
|
new utils_1.naslTypes.TypeAnnotation()
|
|
@@ -1674,11 +1730,6 @@ function transform2CallFunction(node, calleeName, argument, options) {
|
|
|
1674
1730
|
});
|
|
1675
1731
|
}
|
|
1676
1732
|
}
|
|
1677
|
-
if (calleeName === 'Convert' && !newTypeArguments) {
|
|
1678
|
-
newTypeArguments = [
|
|
1679
|
-
new utils_1.naslTypes.TypeAnnotation()
|
|
1680
|
-
];
|
|
1681
|
-
}
|
|
1682
1733
|
if (calleeName === 'FromString') {
|
|
1683
1734
|
if (newTypeArguments?.[0]?.typeName === 'Time' && newArguments?.[0]?.expression?.concept === 'StringLiteral') {
|
|
1684
1735
|
const timeValue = newArguments?.[0]?.expression?.value;
|
|
@@ -1772,16 +1823,16 @@ function transform2CallFunction(node, calleeName, argument, options) {
|
|
|
1772
1823
|
else {
|
|
1773
1824
|
// 最后判断一下参数数量是否匹配
|
|
1774
1825
|
// 这两个参数比较特殊,可以无限加参数,不再判断参数数量
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
}
|
|
1779
|
-
else {
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
}
|
|
1826
|
+
// 走LS检查,不在transform中判断了
|
|
1827
|
+
// const excludes = ['HasValue', 'ListSort']
|
|
1828
|
+
// if (func.params?.length !== newArguments?.length && !excludes.includes(calleeName)) {
|
|
1829
|
+
// return throwError(options, `函数${calleeName}生成不符合标准的函数调用,参数数量不匹配`, node.callee, node);
|
|
1830
|
+
// } else {
|
|
1831
|
+
// }
|
|
1832
|
+
newArguments?.forEach((arg, idx) => {
|
|
1833
|
+
if (func?.params[idx]?.name)
|
|
1834
|
+
arg.keyword = func?.params[idx]?.name;
|
|
1835
|
+
});
|
|
1785
1836
|
}
|
|
1786
1837
|
const nodeElement = new utils_1.naslTypes.CallFunction({
|
|
1787
1838
|
calleeNamespace: 'nasl.util',
|
|
@@ -1809,7 +1860,7 @@ function transform2SqlFunction(node, calleeName, argument, options) {
|
|
|
1809
1860
|
}
|
|
1810
1861
|
const specFunList = ['COUNT', 'COUNTD', 'SUM', 'AVG', 'MAX', 'MIN'];
|
|
1811
1862
|
// TODO: 先写死了 mysql,后续需要传入: 参考 requestSqlFunctions
|
|
1812
|
-
const func =
|
|
1863
|
+
const func = (0, service_1.getSqlFunction)('mysql', calleeName);
|
|
1813
1864
|
let addArguments = [];
|
|
1814
1865
|
if (specFunList.includes(calleeName)) {
|
|
1815
1866
|
const value = calleeName === 'COUNTD' ? 'DISTINCT' : 'ALL';
|
|
@@ -1853,8 +1904,15 @@ function transformCall2CallFunction(node, calleeName, callee, options) {
|
|
|
1853
1904
|
return transform2CallFunction(node, curCalleeName, argument, options);
|
|
1854
1905
|
}
|
|
1855
1906
|
exports.transformCall2CallFunction = transformCall2CallFunction;
|
|
1907
|
+
const SUPPORTED_NASL_UI_FUNCTIONS = ['showMessage', 'destination', 'gotoLink'];
|
|
1856
1908
|
function transform2UIFunction(node, calleeName, callee, options) {
|
|
1857
|
-
|
|
1909
|
+
const uiFunctionName = callee[2].name;
|
|
1910
|
+
if (!SUPPORTED_NASL_UI_FUNCTIONS.includes(uiFunctionName)) {
|
|
1911
|
+
return (0, utils_1.throwError)(options, `nasl.ui 仅支持 ${SUPPORTED_NASL_UI_FUNCTIONS.map((f) => `nasl.ui.${f}`).join('、')},不支持 nasl.ui.${uiFunctionName}`, node);
|
|
1912
|
+
}
|
|
1913
|
+
if (uiFunctionName === 'destination') {
|
|
1914
|
+
if (!node.arguments[0])
|
|
1915
|
+
return (0, utils_1.throwError)(options, 'nasl.ui.destination 缺少目标页面参数', node);
|
|
1858
1916
|
let namespaceNode = node.arguments[0];
|
|
1859
1917
|
let namespace = '';
|
|
1860
1918
|
if (namespaceNode.type === 'TemplateLiteral') {
|
|
@@ -1900,7 +1958,9 @@ function transform2UIFunction(node, calleeName, callee, options) {
|
|
|
1900
1958
|
arguments: argument,
|
|
1901
1959
|
});
|
|
1902
1960
|
}
|
|
1903
|
-
if (
|
|
1961
|
+
if (uiFunctionName === 'gotoLink') {
|
|
1962
|
+
if (!node.arguments[0])
|
|
1963
|
+
return (0, utils_1.throwError)(options, 'nasl.ui.gotoLink 缺少链接参数', node);
|
|
1904
1964
|
return new utils_1.naslTypes.ExternalDestination({
|
|
1905
1965
|
link: fixExpression(node?.arguments[0], options),
|
|
1906
1966
|
});
|
|
@@ -1912,7 +1972,7 @@ function transform2UIFunction(node, calleeName, callee, options) {
|
|
|
1912
1972
|
// }
|
|
1913
1973
|
return new utils_1.naslTypes.CallLogic({
|
|
1914
1974
|
calleeNamespace: 'nasl.ui',
|
|
1915
|
-
calleeName:
|
|
1975
|
+
calleeName: uiFunctionName,
|
|
1916
1976
|
shortcut: true,
|
|
1917
1977
|
/**
|
|
1918
1978
|
* 这个函数是修复 AI 翻译出错的情况,与正常的 transform 做个区分
|
|
@@ -2047,13 +2107,33 @@ exports.transformAlert2ShowMessage = transformAlert2ShowMessage;
|
|
|
2047
2107
|
function transformCall2Interface(node, calleeName, callee, options) {
|
|
2048
2108
|
if (options?.isRestricted)
|
|
2049
2109
|
return (0, utils_1.throwError)(options, '调用接口不支持在组件或默认值表达式中使用', node);
|
|
2110
|
+
const calleeNamespace = (0, utils_1.generate)(node.callee.object).code;
|
|
2111
|
+
const interfaceName = callee[callee.length - 1].name;
|
|
2112
|
+
const firstArg = node.arguments[0];
|
|
2113
|
+
const interfaceArguments = firstArg?.properties?.map((item) => new utils_1.naslTypes.Argument({
|
|
2114
|
+
keyword: item?.key?.name?.replace('_r_', '-'),
|
|
2115
|
+
expression: fixExpression(item?.value, options),
|
|
2116
|
+
})) || [];
|
|
2117
|
+
const secondArg = node.arguments[1];
|
|
2118
|
+
if (secondArg?.type === 'CallExpression') {
|
|
2119
|
+
const authCalleeName = (0, utils_1.generate)(secondArg.callee).code;
|
|
2120
|
+
if (authCalleeName.includes('authLogicsForCallInterface')) {
|
|
2121
|
+
const authArguments = secondArg.arguments[0]?.properties?.map((item) => new utils_1.naslTypes.Argument({
|
|
2122
|
+
keyword: item?.key?.name,
|
|
2123
|
+
expression: fixExpression(item?.value, options),
|
|
2124
|
+
})) || [];
|
|
2125
|
+
return new utils_1.naslTypes.CallAuthInterface({
|
|
2126
|
+
calleeNamespace,
|
|
2127
|
+
calleeName: interfaceName,
|
|
2128
|
+
arguments: interfaceArguments,
|
|
2129
|
+
authArguments,
|
|
2130
|
+
});
|
|
2131
|
+
}
|
|
2132
|
+
}
|
|
2050
2133
|
return new utils_1.naslTypes.CallInterface({
|
|
2051
|
-
calleeNamespace
|
|
2052
|
-
calleeName:
|
|
2053
|
-
arguments:
|
|
2054
|
-
keyword: item?.key?.name?.replace('_r_', '-'),
|
|
2055
|
-
expression: fixExpression(item?.value, options),
|
|
2056
|
-
})) || []).flat() || [],
|
|
2134
|
+
calleeNamespace,
|
|
2135
|
+
calleeName: interfaceName,
|
|
2136
|
+
arguments: interfaceArguments,
|
|
2057
2137
|
});
|
|
2058
2138
|
}
|
|
2059
2139
|
exports.transformCall2Interface = transformCall2Interface;
|
|
@@ -2140,7 +2220,7 @@ function transformCall2Logic(node, calleeName, callee, options) {
|
|
|
2140
2220
|
// 未带前缀,补一下
|
|
2141
2221
|
return transform2CallFunction(node, calleeName, node?.arguments || [], options);
|
|
2142
2222
|
}
|
|
2143
|
-
else if (
|
|
2223
|
+
else if ((0, service_1.getSqlFunction)('mysql', calleeName) || calleeName === 'COUNTD') {
|
|
2144
2224
|
return transform2SqlFunction(node, calleeName, node?.arguments || [], options);
|
|
2145
2225
|
}
|
|
2146
2226
|
let newCalleeName = calleeName?.includes('__IDENTIFIER__') ? undefined : calleeName;
|
|
@@ -2171,6 +2251,30 @@ function transformCall2LogicWithAuth(node, calleeName, callee, options) {
|
|
|
2171
2251
|
});
|
|
2172
2252
|
}
|
|
2173
2253
|
exports.transformCall2LogicWithAuth = transformCall2LogicWithAuth;
|
|
2254
|
+
function transformCall2GetCustomConfig(node, calleeName, callee, options) {
|
|
2255
|
+
const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
|
|
2256
|
+
const arg = node.arguments?.[0];
|
|
2257
|
+
if (!arg || arg.type !== 'MemberExpression') {
|
|
2258
|
+
return (0, utils_1.throwError)(options, 'nasl.configuration.getCustomConfig 的参数必须是 {app|extensions.xxx}.configuration.{group}.{name} 形式的成员访问', node);
|
|
2259
|
+
}
|
|
2260
|
+
const flatCallee = flatMemberExpression(arg);
|
|
2261
|
+
const argName = flatCallee.map((n) => n.name).join('.');
|
|
2262
|
+
const configPropertyRegex = /^(app|extensions\.\w+)\.configuration\.(\w+)\.(\w+)$/;
|
|
2263
|
+
if (!configPropertyRegex.test(argName)) {
|
|
2264
|
+
return (0, utils_1.throwError)(options, `nasl.configuration.getCustomConfig 参数路径格式不正确,期望 {app|extensions.xxx}.configuration.{group}.{name},实际为 ${argName}`, node);
|
|
2265
|
+
}
|
|
2266
|
+
return new utils_1.naslTypes.CallLogic({
|
|
2267
|
+
calleeNamespace: 'nasl.configuration',
|
|
2268
|
+
calleeName: 'getCustomConfig',
|
|
2269
|
+
arguments: [
|
|
2270
|
+
new utils_1.naslTypes.Argument({
|
|
2271
|
+
keyword: 'name',
|
|
2272
|
+
expression: transformNodeFunction(arg, options),
|
|
2273
|
+
}),
|
|
2274
|
+
],
|
|
2275
|
+
});
|
|
2276
|
+
}
|
|
2277
|
+
exports.transformCall2GetCustomConfig = transformCall2GetCustomConfig;
|
|
2174
2278
|
function transformCall2Paginate(node, calleeName, callee, options) {
|
|
2175
2279
|
const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
|
|
2176
2280
|
const newCallee = node.arguments || [];
|
|
@@ -2268,6 +2372,8 @@ function transformCall2DataQuery(node, calleeName, callee, options) {
|
|
|
2268
2372
|
return (0, utils_1.throwError)(options, '数据查询组件不支持在前端使用', node);
|
|
2269
2373
|
if (options?.isRestricted)
|
|
2270
2374
|
return (0, utils_1.throwError)(options, '数据查询组件不支持在组件或默认值表达式中使用', node);
|
|
2375
|
+
if (options?.restrictDataQuery)
|
|
2376
|
+
return (0, utils_1.throwError)(options, '鉴权逻辑中不支持使用数据查询', node);
|
|
2271
2377
|
if (options?.inCallQueryComponentField)
|
|
2272
2378
|
return (0, utils_1.throwError)(options, '数据查询组件不支持嵌套使用,请将内层数据查询提取为独立的逻辑变量,再在外层查询中引用', node);
|
|
2273
2379
|
const transformNodeFunction = options?.transformNodeFunction || transform2LogicItem;
|
|
@@ -2648,10 +2754,12 @@ function transform2LogicItem(node, options) {
|
|
|
2648
2754
|
});
|
|
2649
2755
|
transformManager.register('MemberExpression', transformMemberExpression);
|
|
2650
2756
|
transformManager.register('OptionalMemberExpression', transformMemberExpression);
|
|
2757
|
+
transformManager.registerCallExpression((node, calleeName) => calleeName === 'require' && node.arguments[0]?.value?.startsWith('./tmp/'), transformRequire2JSBlock);
|
|
2651
2758
|
transformManager.registerCallExpression((node, calleeName, callee) => callee.length === 1 && (node.callee.type === 'FunctionExpression' && node.callee.id?.name === 'match' || node.callee.type === 'ArrowFunctionExpression'), transformCallFunctionExpression2Match);
|
|
2652
2759
|
transformManager.registerCallExpression((node, calleeName) => /^\$refs\./.test(calleeName), transformCall2CallViewElementLogic);
|
|
2653
2760
|
transformManager.registerCallExpression((node, calleeName, callee) => callee.length === 2 && callee[0].type === 'Identifier' && callee[0].name.endsWith('Entity'), transformCall2CallEntityLogic);
|
|
2654
2761
|
transformManager.registerCallExpression('nasl.oql.query', transformCall2OQLQuery);
|
|
2762
|
+
transformManager.registerCallExpression('nasl.configuration.getCustomConfig', transformCall2GetCustomConfig);
|
|
2655
2763
|
transformManager.registerCallExpression('nasl.util.consoleLog', transformCall2ConsoleLog);
|
|
2656
2764
|
transformManager.registerCallExpression('console.log', transformCall2ConsoleLog);
|
|
2657
2765
|
transformManager.registerCallExpression((node, calleeName) => calleeName.startsWith('nasl.logging.'), transformCall2Logging);
|