@lcap/nasl 1.0.0-alpha.9 → 1.0.0
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/engine/index.d.ts +3 -0
- package/out/automate/engine/index.js +513 -0
- package/out/automate/engine/index.js.map +1 -0
- package/out/automate/engine/utils.d.ts +24 -0
- package/out/automate/engine/utils.js +363 -0
- package/out/automate/engine/utils.js.map +1 -0
- package/out/common/BaseNode.d.ts +20 -0
- package/out/common/BaseNode.js +219 -81
- package/out/common/BaseNode.js.map +1 -1
- package/out/concepts/App__.d.ts +18 -1
- package/out/concepts/App__.js +75 -35
- package/out/concepts/App__.js.map +1 -1
- package/out/concepts/Argument__.d.ts +5 -1
- package/out/concepts/Argument__.js +21 -3
- package/out/concepts/Argument__.js.map +1 -1
- package/out/concepts/Assignee__.d.ts +190 -0
- package/out/concepts/Assignee__.js +264 -0
- package/out/concepts/Assignee__.js.map +1 -0
- package/out/concepts/Assignment__.js +5 -0
- package/out/concepts/Assignment__.js.map +1 -1
- package/out/concepts/BinaryExpression__.js +8 -7
- package/out/concepts/BinaryExpression__.js.map +1 -1
- package/out/concepts/BindAttribute__.d.ts +19 -0
- package/out/concepts/BindAttribute__.js +54 -9
- package/out/concepts/BindAttribute__.js.map +1 -1
- package/out/concepts/BindDirective__.js +22 -2
- package/out/concepts/BindDirective__.js.map +1 -1
- package/out/concepts/BindEvent__.d.ts +2 -2
- package/out/concepts/BindEvent__.js +67 -34
- package/out/concepts/BindEvent__.js.map +1 -1
- package/out/concepts/BooleanLiteral__.d.ts +2 -0
- package/out/concepts/BooleanLiteral__.js +10 -0
- package/out/concepts/BooleanLiteral__.js.map +1 -1
- package/out/concepts/CallFunction__.js +41 -23
- package/out/concepts/CallFunction__.js.map +1 -1
- package/out/concepts/CallInterface__.d.ts +5 -0
- package/out/concepts/CallInterface__.js +238 -31
- package/out/concepts/CallInterface__.js.map +1 -1
- package/out/concepts/CallLogic__.d.ts +4 -4
- package/out/concepts/CallLogic__.js +110 -53
- package/out/concepts/CallLogic__.js.map +1 -1
- package/out/concepts/CallQueryComponent__.d.ts +7 -1
- package/out/concepts/CallQueryComponent__.js +44 -25
- package/out/concepts/CallQueryComponent__.js.map +1 -1
- package/out/concepts/Comment__.js +6 -2
- package/out/concepts/Comment__.js.map +1 -1
- package/out/concepts/CompletionProperty__.d.ts +3 -1
- package/out/concepts/CompletionProperty__.js +2 -0
- package/out/concepts/CompletionProperty__.js.map +1 -1
- package/out/concepts/ConfigGroup__.js +2 -2
- package/out/concepts/ConfigGroup__.js.map +1 -1
- package/out/concepts/ConfigProperty__.js +2 -2
- package/out/concepts/ConfigProperty__.js.map +1 -1
- package/out/concepts/Configuration__.js +2 -2
- package/out/concepts/Configuration__.js.map +1 -1
- package/out/concepts/Constant__.d.ts +1 -0
- package/out/concepts/Constant__.js +14 -0
- package/out/concepts/Constant__.js.map +1 -1
- package/out/concepts/Destination__.d.ts +12 -0
- package/out/concepts/Destination__.js +94 -18
- package/out/concepts/Destination__.js.map +1 -1
- package/out/concepts/End__.js +9 -1
- package/out/concepts/End__.js.map +1 -1
- package/out/concepts/EntityProperty__.d.ts +11 -0
- package/out/concepts/EntityProperty__.js +73 -5
- package/out/concepts/EntityProperty__.js.map +1 -1
- package/out/concepts/Entity__.d.ts +4 -1
- package/out/concepts/Entity__.js +37 -15
- package/out/concepts/Entity__.js.map +1 -1
- package/out/concepts/Enum__.d.ts +4 -0
- package/out/concepts/Enum__.js +18 -10
- package/out/concepts/Enum__.js.map +1 -1
- package/out/concepts/Event__.js +2 -2
- package/out/concepts/Event__.js.map +1 -1
- package/out/concepts/ForEachStatement__.js +9 -13
- package/out/concepts/ForEachStatement__.js.map +1 -1
- package/out/concepts/Function__.js +9 -9
- package/out/concepts/Function__.js.map +1 -1
- package/out/concepts/Identifier__.d.ts +3 -0
- package/out/concepts/Identifier__.js +76 -29
- package/out/concepts/Identifier__.js.map +1 -1
- package/out/concepts/IfStatement__.js +4 -4
- package/out/concepts/IfStatement__.js.map +1 -1
- package/out/concepts/InterfaceParam__.d.ts +6 -4
- package/out/concepts/InterfaceParam__.js +52 -19
- package/out/concepts/InterfaceParam__.js.map +1 -1
- package/out/concepts/Interface__.d.ts +42 -30
- package/out/concepts/Interface__.js +131 -15
- package/out/concepts/Interface__.js.map +1 -1
- package/out/concepts/JSBlock__.d.ts +1 -0
- package/out/concepts/JSBlock__.js +3 -0
- package/out/concepts/JSBlock__.js.map +1 -1
- package/out/concepts/LogicItem__.d.ts +2 -1
- package/out/concepts/LogicItem__.js +14 -0
- package/out/concepts/LogicItem__.js.map +1 -1
- package/out/concepts/Logic__.d.ts +16 -1
- package/out/concepts/Logic__.js +176 -33
- package/out/concepts/Logic__.js.map +1 -1
- package/out/concepts/MemberExpression__.d.ts +2 -0
- package/out/concepts/MemberExpression__.js +49 -12
- package/out/concepts/MemberExpression__.js.map +1 -1
- package/out/concepts/Module__.d.ts +126 -120
- package/out/concepts/Module__.js +28 -18
- package/out/concepts/Module__.js.map +1 -1
- package/out/concepts/Namespace__.d.ts +5 -1
- package/out/concepts/Namespace__.js +36 -25
- package/out/concepts/Namespace__.js.map +1 -1
- package/out/concepts/NullLiteral__.d.ts +3 -0
- package/out/concepts/NullLiteral__.js +11 -1
- package/out/concepts/NullLiteral__.js.map +1 -1
- package/out/concepts/NumericLiteral__.d.ts +1 -1
- package/out/concepts/NumericLiteral__.js +17 -6
- package/out/concepts/NumericLiteral__.js.map +1 -1
- package/out/concepts/Param__.d.ts +7 -3
- package/out/concepts/Param__.js +57 -28
- package/out/concepts/Param__.js.map +1 -1
- package/out/concepts/ProcessComponent__.js +4 -4
- package/out/concepts/ProcessComponent__.js.map +1 -1
- package/out/concepts/ProcessElement__.d.ts +0 -4
- package/out/concepts/ProcessElement__.js +112 -49
- package/out/concepts/ProcessElement__.js.map +1 -1
- package/out/concepts/ProcessOutcome__.js +1 -1
- package/out/concepts/ProcessOutcome__.js.map +1 -1
- package/out/concepts/Process__.d.ts +7 -1
- package/out/concepts/Process__.js +77 -81
- package/out/concepts/Process__.js.map +1 -1
- package/out/concepts/QueryAggregateExpression__.js +1 -1
- package/out/concepts/QueryAggregateExpression__.js.map +1 -1
- package/out/concepts/QueryFromExpression__.js +2 -2
- package/out/concepts/QueryFromExpression__.js.map +1 -1
- package/out/concepts/QueryJoinExpression__.js +4 -4
- package/out/concepts/QueryJoinExpression__.js.map +1 -1
- package/out/concepts/QueryLimitExpression__.js +3 -3
- package/out/concepts/QueryLimitExpression__.js.map +1 -1
- package/out/concepts/QuerySelectExpression__.js +2 -2
- package/out/concepts/QuerySelectExpression__.js.map +1 -1
- package/out/concepts/Return__.d.ts +4 -1
- package/out/concepts/Return__.js +67 -21
- package/out/concepts/Return__.js.map +1 -1
- package/out/concepts/Role__.d.ts +4 -0
- package/out/concepts/Role__.js +13 -4
- package/out/concepts/Role__.js.map +1 -1
- package/out/concepts/SqlQueryComponent__.js +2 -2
- package/out/concepts/SqlQueryComponent__.js.map +1 -1
- package/out/concepts/StringLiteral__.d.ts +1 -1
- package/out/concepts/StringLiteral__.js +21 -31
- package/out/concepts/StringLiteral__.js.map +1 -1
- package/out/concepts/StructureProperty__.d.ts +5 -4
- package/out/concepts/StructureProperty__.js +55 -26
- package/out/concepts/StructureProperty__.js.map +1 -1
- package/out/concepts/Structure__.d.ts +44 -30
- package/out/concepts/Structure__.js +42 -10
- package/out/concepts/Structure__.js.map +1 -1
- package/out/concepts/SwitchCase__.js +4 -4
- package/out/concepts/SwitchCase__.js.map +1 -1
- package/out/concepts/SwitchStatement__.js +2 -2
- package/out/concepts/SwitchStatement__.js.map +1 -1
- package/out/concepts/TypeAnnotation__.d.ts +5 -5
- package/out/concepts/TypeAnnotation__.js +74 -20
- package/out/concepts/TypeAnnotation__.js.map +1 -1
- package/out/concepts/UnaryExpression__.js +10 -8
- package/out/concepts/UnaryExpression__.js.map +1 -1
- package/out/concepts/Unparsed__.js +1 -1
- package/out/concepts/Unparsed__.js.map +1 -1
- package/out/concepts/ValidationRule__.d.ts +1 -0
- package/out/concepts/ValidationRule__.js +48 -13
- package/out/concepts/ValidationRule__.js.map +1 -1
- package/out/concepts/Variable__.d.ts +10 -1
- package/out/concepts/Variable__.js +70 -18
- package/out/concepts/Variable__.js.map +1 -1
- package/out/concepts/ViewComponent__.js +10 -10
- package/out/concepts/ViewComponent__.js.map +1 -1
- package/out/concepts/ViewElement__.d.ts +17 -11
- package/out/concepts/ViewElement__.js +299 -201
- package/out/concepts/ViewElement__.js.map +1 -1
- package/out/concepts/View__.d.ts +12 -13
- package/out/concepts/View__.js +106 -103
- package/out/concepts/View__.js.map +1 -1
- package/out/concepts/WhileStatement__.js +3 -3
- package/out/concepts/WhileStatement__.js.map +1 -1
- package/out/concepts/basics/stdlib/index.js +4 -1
- package/out/concepts/basics/stdlib/index.js.map +1 -1
- package/out/concepts/basics/stdlib/{nasl.validate.d.ts → nasl.auth.d.ts} +0 -0
- package/out/concepts/basics/stdlib/nasl.auth.js +30 -0
- package/out/concepts/basics/stdlib/nasl.auth.js.map +1 -0
- package/out/concepts/basics/stdlib/nasl.browser copy.d.ts +3 -0
- package/out/concepts/basics/stdlib/nasl.browser copy.js +70 -0
- package/out/concepts/basics/stdlib/nasl.browser copy.js.map +1 -0
- package/out/concepts/basics/stdlib/nasl.browser.d.ts +3 -0
- package/out/concepts/basics/stdlib/nasl.browser.js +41 -0
- package/out/concepts/basics/stdlib/nasl.browser.js.map +1 -0
- package/out/concepts/basics/stdlib/nasl.configuration.d.ts +3 -0
- package/out/concepts/basics/stdlib/nasl.configuration.js +25 -0
- package/out/concepts/basics/stdlib/nasl.configuration.js.map +1 -0
- package/out/concepts/basics/stdlib/nasl.ui.js +20 -0
- package/out/concepts/basics/stdlib/nasl.ui.js.map +1 -1
- package/out/concepts/basics/stdlib/nasl.util.js +149 -13
- package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
- package/out/concepts/basics/stdlib/nasl.validation.js +54 -20
- package/out/concepts/basics/stdlib/nasl.validation.js.map +1 -1
- package/out/concepts/basics/types/coreTypeList.js +11 -10
- package/out/concepts/basics/types/coreTypeList.js.map +1 -1
- package/out/concepts/index__.d.ts +1 -0
- package/out/concepts/index__.js +1 -0
- package/out/concepts/index__.js.map +1 -1
- package/out/config.d.ts +1 -2
- package/out/config.js +1 -2
- package/out/config.js.map +1 -1
- package/out/enums/KEYWORDS.d.ts +3 -0
- package/out/enums/KEYWORDS.js +1208 -0
- package/out/enums/KEYWORDS.js.map +1 -0
- package/out/enums/LEVEL_NAME_MAP.d.ts +26 -0
- package/out/enums/LEVEL_NAME_MAP.js +30 -0
- package/out/enums/LEVEL_NAME_MAP.js.map +1 -0
- package/out/eventBus.d.ts +3 -0
- package/out/eventBus.js +7 -0
- package/out/eventBus.js.map +1 -0
- package/out/generator/genBundleFiles.d.ts +7 -2
- package/out/generator/genBundleFiles.js +168 -27
- package/out/generator/genBundleFiles.js.map +1 -1
- package/out/generator/genMetaData.d.ts +20 -20
- package/out/generator/genMetaData.js +50 -15
- package/out/generator/genMetaData.js.map +1 -1
- package/out/index.d.ts +2 -0
- package/out/index.js +2 -0
- package/out/index.js.map +1 -1
- package/out/manager/diagnostic.d.ts +1 -1
- package/out/server/createUiTs.d.ts +1 -0
- package/out/server/createUiTs.js +49 -5
- package/out/server/createUiTs.js.map +1 -1
- package/out/server/entity2LogicNamespace.js +38 -23
- package/out/server/entity2LogicNamespace.js.map +1 -1
- package/out/server/getExtensionModules.js +2 -0
- package/out/server/getExtensionModules.js.map +1 -1
- package/out/server/getFunctions.d.ts +1 -0
- package/out/server/getFunctions.js +7 -1
- package/out/server/getFunctions.js.map +1 -1
- package/out/server/getLogics.js +63 -18
- package/out/server/getLogics.js.map +1 -1
- package/out/server/getMemberIdentifier.d.ts +16 -1
- package/out/server/getMemberIdentifier.js +279 -36
- package/out/server/getMemberIdentifier.js.map +1 -1
- package/out/server/getProcesses.d.ts +6 -1
- package/out/server/getProcesses.js +243 -1
- package/out/server/getProcesses.js.map +1 -1
- package/out/server/getScope.d.ts +11 -0
- package/out/server/getScope.js +45 -0
- package/out/server/getScope.js.map +1 -0
- package/out/server/index.js +4 -0
- package/out/server/index.js.map +1 -1
- package/out/server/naslServer.d.ts +30 -53
- package/out/server/naslServer.js +682 -363
- package/out/server/naslServer.js.map +1 -1
- package/out/server/process2LogicNamespace.d.ts +10 -0
- package/out/server/process2LogicNamespace.js +29 -1
- package/out/server/process2LogicNamespace.js.map +1 -1
- package/out/server/translator.d.ts +22 -3
- package/out/server/translator.js +367 -123
- package/out/server/translator.js.map +1 -1
- package/out/service/creator/add.configs.d.ts +1 -0
- package/out/service/creator/add.configs.js +68 -0
- package/out/service/creator/add.configs.js.map +1 -0
- package/out/service/creator/errHandles.d.ts +18 -0
- package/out/service/creator/errHandles.js +60 -0
- package/out/service/creator/errHandles.js.map +1 -0
- package/out/service/creator/index.d.ts +1 -0
- package/out/service/creator/index.js +72 -0
- package/out/service/creator/index.js.map +1 -0
- package/out/service/storage/api.d.ts +18 -0
- package/out/service/storage/api.js +17 -0
- package/out/service/storage/api.js.map +1 -0
- package/out/service/storage/init.js +200 -37
- package/out/service/storage/init.js.map +1 -1
- package/out/service/storage/service.d.ts +2 -0
- package/out/service/storage/service.js +10 -0
- package/out/service/storage/service.js.map +1 -0
- package/out/service/storage/storagePoint.d.ts +1 -14
- package/out/service/storage/storagePoint.js +16 -16
- package/out/service/storage/storagePoint.js.map +1 -1
- package/out/templator/genCreateBlock.js +6 -6
- package/out/templator/genCreateBlock.js.map +1 -1
- package/out/templator/genCurdEditMultipleKeyBlock.js +13 -17
- package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
- package/out/templator/genCurdMultipleKeyBlock.js +11 -11
- package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
- package/out/templator/genEditTableBlock.js +5 -5
- package/out/templator/genEditTableBlock.js.map +1 -1
- package/out/templator/genEnumSelectBlock.js +2 -2
- package/out/templator/genEnumSelectBlock.js.map +1 -1
- package/out/templator/genGetBlock.js +5 -3
- package/out/templator/genGetBlock.js.map +1 -1
- package/out/templator/genGridViewBlock.d.ts +3 -1
- package/out/templator/genGridViewBlock.js +61 -6
- package/out/templator/genGridViewBlock.js.map +1 -1
- package/out/templator/genQueryComponent.d.ts +2 -0
- package/out/templator/genQueryComponent.js +27 -14
- package/out/templator/genQueryComponent.js.map +1 -1
- package/out/templator/genTableBlock.d.ts +1 -1
- package/out/templator/genTableBlock.js +4 -5
- package/out/templator/genTableBlock.js.map +1 -1
- package/out/templator/genUpdateBlock.js +9 -10
- package/out/templator/genUpdateBlock.js.map +1 -1
- package/out/templator/utils.d.ts +13 -4
- package/out/templator/utils.js +8 -4
- package/out/templator/utils.js.map +1 -1
- package/out/test/fixtures/env.js +0 -1
- package/out/test/fixtures/env.js.map +1 -1
- package/out/test/units/page/Element.spec.js +3 -3
- package/out/test/units/page/Element.spec.js.map +1 -1
- package/out/test/units/temp/temp.spec.js +1 -1
- package/out/test/units/temp/temp.spec.js.map +1 -1
- package/out/utils/index.d.ts +6 -0
- package/out/utils/index.js +20 -1
- package/out/utils/index.js.map +1 -1
- package/package.json +2 -1
- package/src/automate/engine/index.js +116 -39
- package/src/automate/engine/utils.js +49 -19
- package/src/common/BaseNode.ts +215 -71
- package/src/concepts/App__.ts +77 -37
- package/src/concepts/Argument__.ts +23 -3
- package/src/concepts/Assignee__.ts +437 -0
- package/src/concepts/Assignment__.ts +4 -1
- package/src/concepts/BinaryExpression__.ts +9 -7
- package/src/concepts/BindAttribute__.ts +68 -8
- package/src/concepts/BindDirective__.ts +21 -2
- package/src/concepts/BindEvent__.ts +67 -23
- package/src/concepts/BooleanLiteral__.ts +8 -0
- package/src/concepts/CallFunction__.ts +38 -21
- package/src/concepts/CallInterface__.ts +236 -26
- package/src/concepts/CallLogic__.ts +114 -86
- package/src/concepts/CallQueryComponent__.ts +23 -15
- package/src/concepts/Comment__.ts +6 -2
- package/src/concepts/CompletionProperty__.ts +5 -1
- package/src/concepts/ConfigGroup__.ts +2 -2
- package/src/concepts/ConfigProperty__.ts +2 -2
- package/src/concepts/Configuration__.ts +2 -2
- package/src/concepts/Constant__.ts +12 -0
- package/src/concepts/Destination__.ts +101 -17
- package/src/concepts/End__.ts +8 -1
- package/src/concepts/EntityProperty__.ts +58 -5
- package/src/concepts/Entity__.ts +40 -23
- package/src/concepts/Enum__.ts +16 -11
- package/src/concepts/Event__.ts +2 -2
- package/src/concepts/ForEachStatement__.ts +14 -19
- package/src/concepts/Function__.ts +9 -9
- package/src/concepts/Identifier__.ts +83 -32
- package/src/concepts/IfStatement__.ts +4 -4
- package/src/concepts/InterfaceParam__.ts +52 -16
- package/src/concepts/Interface__.ts +128 -14
- package/src/concepts/JSBlock__.ts +4 -0
- package/src/concepts/LogicItem__.ts +16 -1
- package/src/concepts/Logic__.ts +173 -35
- package/src/concepts/MemberExpression__.ts +58 -14
- package/src/concepts/Module__.ts +27 -16
- package/src/concepts/Namespace__.ts +37 -25
- package/src/concepts/NullLiteral__.ts +8 -1
- package/src/concepts/NumericLiteral__.ts +17 -6
- package/src/concepts/Param__.ts +56 -15
- package/src/concepts/ProcessComponent__.ts +4 -4
- package/src/concepts/ProcessElement__.ts +138 -39
- package/src/concepts/ProcessOutcome__.ts +1 -1
- package/src/concepts/Process__.ts +81 -94
- package/src/concepts/QueryAggregateExpression__.ts +1 -1
- package/src/concepts/QueryFromExpression__.ts +2 -2
- package/src/concepts/QueryJoinExpression__.ts +4 -4
- package/src/concepts/QueryLimitExpression__.ts +3 -12
- package/src/concepts/QuerySelectExpression__.ts +2 -2
- package/src/concepts/Return__.ts +62 -15
- package/src/concepts/Role__.ts +5 -4
- package/src/concepts/SqlQueryComponent__.ts +2 -2
- package/src/concepts/StringLiteral__.ts +20 -31
- package/src/concepts/StructureProperty__.ts +50 -18
- package/src/concepts/Structure__.ts +30 -8
- package/src/concepts/SwitchCase__.ts +4 -4
- package/src/concepts/SwitchStatement__.ts +2 -2
- package/src/concepts/TypeAnnotation__.ts +58 -15
- package/src/concepts/UnaryExpression__.ts +10 -8
- package/src/concepts/Unparsed__.ts +1 -1
- package/src/concepts/ValidationRule__.ts +44 -14
- package/src/concepts/Variable__.ts +63 -14
- package/src/concepts/ViewComponent__.ts +10 -10
- package/src/concepts/ViewElement__.ts +285 -162
- package/src/concepts/View__.ts +116 -70
- package/src/concepts/WhileStatement__.ts +4 -4
- package/src/concepts/basics/stdlib/index.ts +4 -2
- package/src/concepts/basics/stdlib/nasl.auth.ts +26 -0
- package/src/concepts/basics/stdlib/nasl.browser.ts +37 -0
- package/src/concepts/basics/stdlib/nasl.configuration.ts +21 -0
- package/src/concepts/basics/stdlib/nasl.ui.ts +20 -1
- package/src/concepts/basics/stdlib/nasl.util.ts +151 -13
- package/src/concepts/basics/stdlib/nasl.validation.ts +45 -11
- package/src/concepts/basics/types/coreTypeList.ts +11 -11
- package/src/concepts/index__.ts +1 -0
- package/src/config.ts +1 -2
- package/src/enums/KEYWORDS.ts +1206 -0
- package/src/{terms → enums}/LEVEL_NAME_MAP.ts +0 -0
- package/src/eventBus.ts +5 -0
- package/src/generator/genBundleFiles.ts +182 -30
- package/src/generator/genMetaData.ts +72 -21
- package/src/index.ts +2 -0
- package/src/manager/diagnostic.ts +1 -1
- package/src/server/createUiTs.ts +45 -7
- package/src/server/entity2LogicNamespace.ts +41 -25
- package/src/server/getExtensionModules.ts +2 -0
- package/src/server/getFunctions.ts +6 -0
- package/src/server/getLogics.ts +66 -19
- package/src/server/getMemberIdentifier.ts +233 -63
- package/src/server/getProcesses.ts +248 -4
- package/src/server/getScope.ts +50 -0
- package/src/server/index.ts +12 -1
- package/src/server/naslServer.ts +685 -387
- package/src/server/process2LogicNamespace.ts +30 -2
- package/src/server/translator.ts +423 -128
- package/src/service/config/index.js +1 -1
- package/src/service/creator/errHandles.js +5 -2
- package/src/service/creator/index.js +0 -6
- package/src/service/storage/api.js +14 -0
- package/src/service/storage/init.ts +198 -45
- package/src/service/storage/service.ts +6 -0
- package/src/service/storage/storagePoint.ts +16 -16
- package/src/templator/genCreateBlock.ts +6 -6
- package/src/templator/genCurdEditMultipleKeyBlock.ts +29 -30
- package/src/templator/genCurdMultipleKeyBlock.ts +11 -11
- package/src/templator/genEditTableBlock.ts +5 -5
- package/src/templator/genEnumSelectBlock.ts +2 -2
- package/src/templator/genGetBlock.ts +6 -8
- package/src/templator/genGridViewBlock.ts +59 -9
- package/src/templator/genQueryComponent.ts +39 -28
- package/src/templator/genTableBlock.ts +5 -9
- package/src/templator/genUpdateBlock.ts +9 -11
- package/src/templator/utils.ts +9 -6
- package/src/test/fixtures/env.ts +0 -2
- package/src/test/units/page/Element.spec.ts +3 -3
- package/src/test/units/temp/temp.spec.ts +1 -1
- package/src/utils/index.ts +19 -0
- package/out/concepts/basics/stdlib/nasl.validate.js +0 -527
- package/out/concepts/basics/stdlib/nasl.validate.js.map +0 -1
- package/out/data/Module.d.ts +0 -34
- package/out/data/Module.js +0 -53
- package/out/data/Module.js.map +0 -1
- package/src/automate/engine/index.d.ts +0 -3
|
@@ -46,38 +46,62 @@ export interface ElementToVueOptions {
|
|
|
46
46
|
getExtraParts?: (element?: ViewElement) => Array<string>;
|
|
47
47
|
attrFormat?: (attr: BindAttribute | BindEvent | BindDirective, element?: ViewElement, defaultResult?: string) => string | false;
|
|
48
48
|
finalCode?: boolean;
|
|
49
|
+
scopeList?: string[];
|
|
49
50
|
}
|
|
50
51
|
|
|
51
|
-
function transAstNodeToNaslNode(astNode: any): any {
|
|
52
|
+
function transAstNodeToNaslNode(astNode: any, namespace?: string): any {
|
|
52
53
|
let node = null;
|
|
53
54
|
if (astNode.type === 'CallExpression' && astNode.callee.object.name === '$utils') {
|
|
54
55
|
const calleeName = astNode.callee.property.name || astNode.callee.property.value;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
56
|
+
|
|
57
|
+
if (calleeName === 'EnumList') {
|
|
58
|
+
const args = astNode.arguments;
|
|
59
|
+
let name = '';
|
|
60
|
+
let namespace = 'app.enums';
|
|
61
|
+
if (Array.isArray(args)) {
|
|
62
|
+
name = args[0]?.value;
|
|
63
|
+
namespace = args[1]?.value ? args[1]?.value : 'app.enums';
|
|
64
|
+
}
|
|
65
|
+
node = {
|
|
66
|
+
concept: 'Identifier',
|
|
67
|
+
name,
|
|
68
|
+
namespace,
|
|
69
|
+
kind: 'Expression',
|
|
70
|
+
};
|
|
71
|
+
} else {
|
|
72
|
+
node = {
|
|
73
|
+
concept: 'CallFunction',
|
|
64
74
|
name: '',
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
75
|
+
label: '调用内置函数',
|
|
76
|
+
kind: 'Expression',
|
|
77
|
+
calleeNamespace: 'nasl.util',
|
|
78
|
+
calleeName,
|
|
79
|
+
arguments: astNode.arguments.map((argument: any) => ({
|
|
80
|
+
concept: 'Argument',
|
|
81
|
+
name: '',
|
|
82
|
+
kind: 'Statement',
|
|
83
|
+
keyword: '',
|
|
84
|
+
expression: transAstNodeToNaslNode(Object.assign({}, argument)),
|
|
85
|
+
})),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
70
88
|
} else if (astNode.type === 'MemberExpression') {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
89
|
+
if (astNode.object?.name === '$global') {
|
|
90
|
+
// 目前只有权限相关的
|
|
91
|
+
node = transAstNodeToNaslNode(astNode.property, 'nasl.auth');
|
|
92
|
+
} else {
|
|
93
|
+
node = {
|
|
94
|
+
concept: 'MemberExpression',
|
|
95
|
+
name: '',
|
|
96
|
+
kind: 'Expression',
|
|
97
|
+
object: transAstNodeToNaslNode(astNode.object),
|
|
98
|
+
property: transAstNodeToNaslNode(astNode.property),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
78
101
|
} else if (astNode.type === 'Identifier') {
|
|
79
102
|
node = {
|
|
80
103
|
concept: 'Identifier',
|
|
104
|
+
namespace: namespace || '',
|
|
81
105
|
name: astNode.name,
|
|
82
106
|
kind: 'Expression',
|
|
83
107
|
};
|
|
@@ -94,6 +118,17 @@ function transAstNodeToNaslNode(astNode: any): any {
|
|
|
94
118
|
name: '',
|
|
95
119
|
value: astNode.value,
|
|
96
120
|
};
|
|
121
|
+
} else if (astNode.type === 'UnaryExpression') {
|
|
122
|
+
node = {
|
|
123
|
+
concept: 'UnaryExpression',
|
|
124
|
+
kind: 'Expression',
|
|
125
|
+
name: '',
|
|
126
|
+
operator: astNode.operator,
|
|
127
|
+
argument: transAstNodeToNaslNode(astNode.argument),
|
|
128
|
+
};
|
|
129
|
+
} else {
|
|
130
|
+
node = astNode;
|
|
131
|
+
node.concept = astNode.type;
|
|
97
132
|
}
|
|
98
133
|
return node;
|
|
99
134
|
}
|
|
@@ -309,7 +344,7 @@ export class ViewElement extends BaseNode {
|
|
|
309
344
|
name: options,
|
|
310
345
|
}, this, 'bindAttrs');
|
|
311
346
|
} else if (options instanceof BindAttribute) {
|
|
312
|
-
options.
|
|
347
|
+
options.ensureDelete(); // 同一实例不支持多处存在
|
|
313
348
|
bindAttribute = options;
|
|
314
349
|
Object.assign(bindAttribute, relationOptions);
|
|
315
350
|
} else {
|
|
@@ -397,7 +432,7 @@ export class ViewElement extends BaseNode {
|
|
|
397
432
|
|
|
398
433
|
addBindAttribute(options?: string | Partial<BindAttribute> | BindAttribute) {
|
|
399
434
|
const node = this._addBindAttribute(options as any);
|
|
400
|
-
const index = this.bindAttrs.
|
|
435
|
+
const index = this.bindAttrs.indexOf(node);
|
|
401
436
|
node.create({
|
|
402
437
|
index,
|
|
403
438
|
parentNode: this,
|
|
@@ -451,7 +486,7 @@ export class ViewElement extends BaseNode {
|
|
|
451
486
|
name: options,
|
|
452
487
|
}, this, 'bindEvents');
|
|
453
488
|
} else if (options instanceof BindEvent) {
|
|
454
|
-
options.
|
|
489
|
+
options.ensureDelete(); // 同一实例不支持多处存在
|
|
455
490
|
bindEvent = options;
|
|
456
491
|
Object.assign(bindEvent, relationOptions);
|
|
457
492
|
} else {
|
|
@@ -539,7 +574,7 @@ export class ViewElement extends BaseNode {
|
|
|
539
574
|
|
|
540
575
|
addBindEvent(options?: string | Partial<BindEvent> | BindEvent) {
|
|
541
576
|
const node = this._addBindEvent(options as any);
|
|
542
|
-
const index = this.bindEvents.
|
|
577
|
+
const index = this.bindEvents.indexOf(node);
|
|
543
578
|
node.create({
|
|
544
579
|
index,
|
|
545
580
|
parentNode: this,
|
|
@@ -593,7 +628,7 @@ export class ViewElement extends BaseNode {
|
|
|
593
628
|
name: options,
|
|
594
629
|
}, this, 'bindDirectives');
|
|
595
630
|
} else if (options instanceof BindDirective) {
|
|
596
|
-
options.
|
|
631
|
+
options.ensureDelete(); // 同一实例不支持多处存在
|
|
597
632
|
bindDirective = options;
|
|
598
633
|
Object.assign(bindDirective, relationOptions);
|
|
599
634
|
} else {
|
|
@@ -681,7 +716,7 @@ export class ViewElement extends BaseNode {
|
|
|
681
716
|
|
|
682
717
|
addBindDirective(options?: string | Partial<BindDirective> | BindDirective) {
|
|
683
718
|
const node = this._addBindDirective(options as any);
|
|
684
|
-
const index = this.bindDirectives.
|
|
719
|
+
const index = this.bindDirectives.indexOf(node);
|
|
685
720
|
node.create({
|
|
686
721
|
index,
|
|
687
722
|
parentNode: this,
|
|
@@ -731,7 +766,7 @@ export class ViewElement extends BaseNode {
|
|
|
731
766
|
name: options,
|
|
732
767
|
}, this, 'children');
|
|
733
768
|
} else if (options instanceof ViewElement) {
|
|
734
|
-
options.
|
|
769
|
+
options.ensureDelete(); // 同一实例不支持多处存在
|
|
735
770
|
viewElement = options;
|
|
736
771
|
Object.assign(viewElement, relationOptions);
|
|
737
772
|
} else {
|
|
@@ -819,7 +854,7 @@ export class ViewElement extends BaseNode {
|
|
|
819
854
|
|
|
820
855
|
addViewElement(options?: string | Partial<ViewElement> | ViewElement) {
|
|
821
856
|
const node = this._addViewElement(options as any);
|
|
822
|
-
const index = this.children.
|
|
857
|
+
const index = this.children.indexOf(node);
|
|
823
858
|
node.create({
|
|
824
859
|
index,
|
|
825
860
|
parentNode: this,
|
|
@@ -1033,6 +1068,21 @@ export class ViewElement extends BaseNode {
|
|
|
1033
1068
|
// ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
|
|
1034
1069
|
// 自动生成的代码已结束。下面可以手动编写。
|
|
1035
1070
|
//================================================================================
|
|
1071
|
+
|
|
1072
|
+
/* 主页面有没有权限 */
|
|
1073
|
+
get parentAuth() {
|
|
1074
|
+
const _nameSpace = this.view.getNamespace();
|
|
1075
|
+
const mainViewName = _nameSpace.split('.')[2];
|
|
1076
|
+
return this.view.parentNode.concept === 'App' ? this.view.auth : this.app.views.find((item) => item.name === mainViewName)?.auth;
|
|
1077
|
+
}
|
|
1078
|
+
|
|
1079
|
+
/**
|
|
1080
|
+
* 权限领域的资源路径
|
|
1081
|
+
*/
|
|
1082
|
+
get authPath() {
|
|
1083
|
+
return `${this.view.path}/${this.name}`;
|
|
1084
|
+
}
|
|
1085
|
+
|
|
1036
1086
|
getViewElementUniqueName(name = 'viewElement1') {
|
|
1037
1087
|
return this.view?.getViewElementUniqueName(name);
|
|
1038
1088
|
}
|
|
@@ -1069,16 +1119,20 @@ export class ViewElement extends BaseNode {
|
|
|
1069
1119
|
}
|
|
1070
1120
|
|
|
1071
1121
|
haveScope(node: ViewElement): boolean {
|
|
1072
|
-
|
|
1073
|
-
const
|
|
1122
|
+
// uGallery 没有子集不需要scope
|
|
1123
|
+
const dataSourcePcList = ['uTableView', 'uListView', 'uGridView', 'uCalendarView', 'uListComponents', 'uSelect'];
|
|
1124
|
+
const dataSourceH5List = ['vanRadioGroup', 'vanCheckboxGroup', 'vanListView', 'vanGridView', 'vanForComponents', 'lcapEchartsLine', 'lcapEchartsBar', 'lcapEchartsPie'];
|
|
1074
1125
|
const dataSourceList = [...dataSourcePcList, ...dataSourceH5List];
|
|
1075
1126
|
return dataSourceList.includes(node.toHump(node.tag));
|
|
1076
1127
|
}
|
|
1077
1128
|
toEmbeddedTSDefinition(state?: TranslatorState): string {
|
|
1129
|
+
// 登录组件不翻译
|
|
1130
|
+
if (this.toHump(this.tag) === 'lcapLogin' || this.staticClass === 'login-form')
|
|
1131
|
+
return '';
|
|
1078
1132
|
let code = '';
|
|
1079
1133
|
// formItem的单独处理
|
|
1080
1134
|
if (this.tag === 'u-form-item') {
|
|
1081
|
-
code = indent(state.tabSize) + `${this.name}:
|
|
1135
|
+
code = indent(state.tabSize) + `${this.name}: nasl.ui.${this.toHump(this.tag)}`;
|
|
1082
1136
|
if (Array.isArray(this.children) && this.children.length) {
|
|
1083
1137
|
const tag = this.children[0].tag;
|
|
1084
1138
|
if (tag === 'u-input') {
|
|
@@ -1089,7 +1143,7 @@ export class ViewElement extends BaseNode {
|
|
|
1089
1143
|
code += '<nasl.core.Any>';
|
|
1090
1144
|
}
|
|
1091
1145
|
}
|
|
1092
|
-
code += '
|
|
1146
|
+
code += ';\n';
|
|
1093
1147
|
}
|
|
1094
1148
|
if (this.haveScope(this)) {
|
|
1095
1149
|
let genericType = 'any';
|
|
@@ -1109,7 +1163,11 @@ export class ViewElement extends BaseNode {
|
|
|
1109
1163
|
while (!haveScopeFlag && parentNode.concept !== 'View') {
|
|
1110
1164
|
if (this.haveScope(parentNode as ViewElement)) {
|
|
1111
1165
|
// type d = nasl.ui.GetItemTypeFromDataSource<typeof listStructure>['tableRelation']
|
|
1112
|
-
const tsArr = expressionTs.split('.');
|
|
1166
|
+
const tsArr = expressionTs.replace('scope.item.', '').split('.');
|
|
1167
|
+
let itemStr = '';
|
|
1168
|
+
tsArr.forEach((item) => {
|
|
1169
|
+
itemStr += `['${item}']`;
|
|
1170
|
+
});
|
|
1113
1171
|
const parentbindAttrs = (parentNode as ViewElement).bindAttrs;
|
|
1114
1172
|
if (parentbindAttrs && parentbindAttrs.length) {
|
|
1115
1173
|
const parentAttr = parentbindAttrs.find((item) => item.name === 'data-source');
|
|
@@ -1117,7 +1175,7 @@ export class ViewElement extends BaseNode {
|
|
|
1117
1175
|
let parentExpressionTs = parentAttr.expression.toEmbeddedTS(shiftState(state, code));
|
|
1118
1176
|
parentExpressionTs = parentExpressionTs.replaceAll(' ', '');
|
|
1119
1177
|
// 如果是逻辑就推导出逻辑类型
|
|
1120
|
-
genericType = `nasl.ui.GetItemTypeFromDataSource<nasl.ui.GetItemTypeFromDataSource<typeof ${parentExpressionTs}
|
|
1178
|
+
genericType = `nasl.ui.GetItemTypeFromDataSource<nasl.ui.GetItemTypeFromDataSource<typeof ${parentExpressionTs}>${itemStr}>`;
|
|
1121
1179
|
}
|
|
1122
1180
|
}
|
|
1123
1181
|
haveScopeFlag = true;
|
|
@@ -1127,9 +1185,9 @@ export class ViewElement extends BaseNode {
|
|
|
1127
1185
|
}
|
|
1128
1186
|
}
|
|
1129
1187
|
}
|
|
1130
|
-
code += indent(state.tabSize) + `${this.name}:
|
|
1188
|
+
code += indent(state.tabSize) + `${this.name}: nasl.ui.${this.toHump(this.tag)}<${genericType}>;\n`;
|
|
1131
1189
|
} else {
|
|
1132
|
-
code = indent(state.tabSize) + `${this.name}:
|
|
1190
|
+
code = indent(state.tabSize) + `${this.name}: nasl.ui.${this.toHump(this.tag)}<any>;\n`;
|
|
1133
1191
|
}
|
|
1134
1192
|
if (Array.isArray(this.children)) {
|
|
1135
1193
|
this.children.forEach((element) => {
|
|
@@ -1140,13 +1198,15 @@ export class ViewElement extends BaseNode {
|
|
|
1140
1198
|
}
|
|
1141
1199
|
@withSourceMap()
|
|
1142
1200
|
toEmbeddedTS(state?: TranslatorState, parentLevel?: number): string {
|
|
1201
|
+
if (this.toHump(this.tag) === 'lcapLogin' || this.staticClass === 'login-form')
|
|
1202
|
+
return '';
|
|
1143
1203
|
function chineseTsName(name: string) {
|
|
1144
1204
|
let tsName = name;
|
|
1205
|
+
// 匹配所有特殊字符都转为_
|
|
1206
|
+
tsName = tsName.replace(/[^\u4e00-\u9fa5a-zA-Z0-9]/g, '_');
|
|
1145
1207
|
if (/^\d/.test(tsName)) {
|
|
1146
1208
|
tsName = '$' + tsName;
|
|
1147
1209
|
}
|
|
1148
|
-
// 匹配所有特殊字符都转为_
|
|
1149
|
-
tsName = tsName.replace(/[^\u4e00-\u9fa5a-zA-Z0-9]/g, '_');
|
|
1150
1210
|
return tsName;
|
|
1151
1211
|
}
|
|
1152
1212
|
let code = `__elements.${this.name} = new nasl.ui.${this.toHump(this.tag)}({\n`;
|
|
@@ -1156,7 +1216,7 @@ export class ViewElement extends BaseNode {
|
|
|
1156
1216
|
hasAuth = !!this.bindDirectives.filter((directive) => directive.name === 'auth').length;
|
|
1157
1217
|
}
|
|
1158
1218
|
// 角色
|
|
1159
|
-
if (
|
|
1219
|
+
if (Array.isArray(this.bindRoles) && this.bindRoles.length) {
|
|
1160
1220
|
code += indent(state.tabSize + 2);
|
|
1161
1221
|
code += 'roles = [\n';
|
|
1162
1222
|
this.bindRoles.forEach((role) => {
|
|
@@ -1203,6 +1263,19 @@ export class ViewElement extends BaseNode {
|
|
|
1203
1263
|
tabSize: state.tabSize + 2,
|
|
1204
1264
|
})) + ',\n';
|
|
1205
1265
|
}
|
|
1266
|
+
if (Array.isArray(attr.rules) && attr.rules.length) {
|
|
1267
|
+
attr.rules.forEach((item) => {
|
|
1268
|
+
code += item.toEmbeddedTS(shiftState(state, code)) + ',\n';
|
|
1269
|
+
});
|
|
1270
|
+
}
|
|
1271
|
+
});
|
|
1272
|
+
this.bindDirectives.forEach((directive) => {
|
|
1273
|
+
if (directive.expression) {
|
|
1274
|
+
code
|
|
1275
|
+
+= directive.expression.toEmbeddedTS(shiftState(state, code, {
|
|
1276
|
+
tabSize: state.tabSize + 2,
|
|
1277
|
+
})) + ',\n';
|
|
1278
|
+
}
|
|
1206
1279
|
});
|
|
1207
1280
|
code += indent(state.tabSize + 2) + '],\n';
|
|
1208
1281
|
}
|
|
@@ -1230,12 +1303,9 @@ export class ViewElement extends BaseNode {
|
|
|
1230
1303
|
return code;
|
|
1231
1304
|
}
|
|
1232
1305
|
|
|
1233
|
-
_duplicate(
|
|
1234
|
-
const
|
|
1235
|
-
|
|
1236
|
-
view: this.view,
|
|
1237
|
-
});
|
|
1238
|
-
element.deepRenameElements();
|
|
1306
|
+
_duplicate() {
|
|
1307
|
+
const element = ViewElement.from(this.toTemplateJSON());
|
|
1308
|
+
element.deepRenameElements(this);
|
|
1239
1309
|
return element;
|
|
1240
1310
|
}
|
|
1241
1311
|
|
|
@@ -1247,10 +1317,10 @@ export class ViewElement extends BaseNode {
|
|
|
1247
1317
|
}
|
|
1248
1318
|
|
|
1249
1319
|
// 递归生成组件名
|
|
1250
|
-
public deepRenameElements(): void {
|
|
1320
|
+
public deepRenameElements(node: ViewElement): void {
|
|
1251
1321
|
return this.traverseChildren((ele: ViewElement) => {
|
|
1252
1322
|
const tagName = ele.tag.replace(ViewElement.TAG_NAME_PREFIX_REG, '').replace(/-/g, '_');
|
|
1253
|
-
ele.name =
|
|
1323
|
+
ele.name = node.getViewElementUniqueName(`${tagName}1`);
|
|
1254
1324
|
});
|
|
1255
1325
|
}
|
|
1256
1326
|
|
|
@@ -1290,7 +1360,6 @@ export class ViewElement extends BaseNode {
|
|
|
1290
1360
|
concept: 'ValidationRule',
|
|
1291
1361
|
name: '',
|
|
1292
1362
|
label: '验证规则',
|
|
1293
|
-
folded: true,
|
|
1294
1363
|
kind: 'Expression',
|
|
1295
1364
|
calleeNamespace: 'nasl.validation',
|
|
1296
1365
|
arguments: args,
|
|
@@ -1318,13 +1387,13 @@ export class ViewElement extends BaseNode {
|
|
|
1318
1387
|
});
|
|
1319
1388
|
astNode.children = [];
|
|
1320
1389
|
}
|
|
1321
|
-
|
|
1322
1390
|
// 将 scopedSlots 合并到 children 中
|
|
1323
1391
|
if (astNode.scopedSlots) {
|
|
1324
1392
|
astNode.children = astNode.children || [];
|
|
1325
1393
|
Object.keys(astNode.scopedSlots).forEach((key) => {
|
|
1326
|
-
if (!astNode.children.find((child) => key === (child as compiler.ASTElement).slotTarget))
|
|
1394
|
+
if (!astNode.children.find((child) => key === (child as compiler.ASTElement).slotTarget)) {
|
|
1327
1395
|
astNode.children.unshift(astNode.scopedSlots[key]);
|
|
1396
|
+
}
|
|
1328
1397
|
});
|
|
1329
1398
|
delete astNode.scopedSlots;
|
|
1330
1399
|
}
|
|
@@ -1345,6 +1414,12 @@ export class ViewElement extends BaseNode {
|
|
|
1345
1414
|
}
|
|
1346
1415
|
}
|
|
1347
1416
|
const tagName = astNode.tag.replace(ViewElement.TAG_NAME_PREFIX_REG, '').replace(/-/g, '_');
|
|
1417
|
+
let newContext: any = {};
|
|
1418
|
+
if (context) {
|
|
1419
|
+
newContext = {
|
|
1420
|
+
...context,
|
|
1421
|
+
};
|
|
1422
|
+
}
|
|
1348
1423
|
element = new ViewElement({
|
|
1349
1424
|
tag: astNode.tag,
|
|
1350
1425
|
name: astNode.attrsMap.ref || view.getViewElementUniqueName(`${tagName}1`),
|
|
@@ -1352,45 +1427,43 @@ export class ViewElement extends BaseNode {
|
|
|
1352
1427
|
staticStyle: astNode.attrsMap.style,
|
|
1353
1428
|
slotTarget: astNode.slotTarget && json5.parse(astNode.slotTarget),
|
|
1354
1429
|
slotScope: astNode.slotScope === '_empty_' ? '' : astNode.slotScope,
|
|
1355
|
-
children: astNode.children.map((item) => this._fromASTNode(item as compiler.ASTElement,
|
|
1430
|
+
children: astNode.children.map((item) => this._fromASTNode(item as compiler.ASTElement, newContext)) as unknown as Array<ViewElement>,
|
|
1356
1431
|
});
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
&&
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1432
|
+
astNode?.attrs?.forEach((oldAttr) => {
|
|
1433
|
+
let attr: BindAttribute;
|
|
1434
|
+
if (oldAttr.value === '""' && (oldAttr as any).end - (oldAttr as any).start === oldAttr.name.length) {
|
|
1435
|
+
attr = new BindAttribute({
|
|
1436
|
+
type: 'static',
|
|
1437
|
+
name: oldAttr.name,
|
|
1438
|
+
value: 'true',
|
|
1439
|
+
});
|
|
1440
|
+
} else {
|
|
1441
|
+
try {
|
|
1442
|
+
const tmp = json5.parse(oldAttr.value);
|
|
1443
|
+
const source: any = {
|
|
1444
|
+
type: typeof tmp === 'string' ? 'string' : 'static',
|
|
1364
1445
|
name: oldAttr.name,
|
|
1365
|
-
value: '
|
|
1366
|
-
}
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
attr = BindAttribute.from({
|
|
1382
|
-
type: 'dynamic',
|
|
1383
|
-
name: oldAttr.name,
|
|
1384
|
-
value: expression ? '' : oldAttr.value,
|
|
1385
|
-
expression,
|
|
1386
|
-
}, element);
|
|
1387
|
-
if (astNode.attrsMap[`:${attr.name}.sync`]) {
|
|
1388
|
-
attr.sync = true;
|
|
1389
|
-
}
|
|
1446
|
+
value: typeof tmp === 'string' ? tmp : oldAttr.value,
|
|
1447
|
+
};
|
|
1448
|
+
if (oldAttr.name === 'rules') {
|
|
1449
|
+
source.rules = tmp?.split('|').map((ruleStr: string) => this._parseValidationRule(ruleStr.trim()));
|
|
1450
|
+
}
|
|
1451
|
+
attr = new BindAttribute(source);
|
|
1452
|
+
} catch (e) {
|
|
1453
|
+
const expression = <any> this._parseExpression(oldAttr.value);
|
|
1454
|
+
attr = new BindAttribute({
|
|
1455
|
+
type: 'dynamic',
|
|
1456
|
+
name: oldAttr.name,
|
|
1457
|
+
value: expression ? '' : oldAttr.value,
|
|
1458
|
+
expression,
|
|
1459
|
+
});
|
|
1460
|
+
if (astNode.attrsMap[`:${attr.name}.sync`]) {
|
|
1461
|
+
attr.sync = true;
|
|
1390
1462
|
}
|
|
1391
1463
|
}
|
|
1392
|
-
|
|
1393
|
-
|
|
1464
|
+
}
|
|
1465
|
+
element.addBindAttribute(attr);
|
|
1466
|
+
});
|
|
1394
1467
|
|
|
1395
1468
|
// compiler 处理:value.sync 时会加上update:value事件,需要过滤
|
|
1396
1469
|
astNode.events
|
|
@@ -1400,24 +1473,23 @@ export class ViewElement extends BaseNode {
|
|
|
1400
1473
|
const oldEvent = astNode.events[name] as compiler.ASTElementHandler;
|
|
1401
1474
|
const str = oldEvent.value;
|
|
1402
1475
|
let calleeName = str.split('(')[0];
|
|
1403
|
-
const matchArr = str.match(/\(([^)]*)\)/);
|
|
1476
|
+
const matchArr = str.match(/\(([^)]*)\)/) || [];
|
|
1404
1477
|
let argsStr = '';
|
|
1405
|
-
if (matchArr
|
|
1478
|
+
if (matchArr?.length >= 2) {
|
|
1406
1479
|
argsStr = matchArr[1];
|
|
1407
1480
|
}
|
|
1408
1481
|
let args: any[] = [];
|
|
1409
|
-
|
|
1410
|
-
|
|
1482
|
+
const argStrs: string[] = argsStr.split(',');
|
|
1483
|
+
args = argStrs
|
|
1484
|
+
.filter((argStr) => !!argStr && argStr !== '_empty_')
|
|
1485
|
+
.map((argStr) => {
|
|
1411
1486
|
const keyword = argStr.trim().split('.');
|
|
1412
1487
|
return {
|
|
1413
1488
|
concept: 'Argument',
|
|
1414
1489
|
expression: genArgumentMemberExpression(keyword),
|
|
1415
1490
|
};
|
|
1416
1491
|
});
|
|
1417
|
-
|
|
1418
|
-
const viewNamespace = view?.getNamespace();
|
|
1419
|
-
const viewName = `${view?.name}`;
|
|
1420
|
-
let calleeNamespace = `${viewNamespace}.${viewName}.logics`;
|
|
1492
|
+
let calleeNamespace = '';
|
|
1421
1493
|
if (calleeName) {
|
|
1422
1494
|
const namespaceArr = calleeName.split('.');
|
|
1423
1495
|
const start = namespaceArr.shift();
|
|
@@ -1426,12 +1498,12 @@ export class ViewElement extends BaseNode {
|
|
|
1426
1498
|
calleeName = namespaceArr[1];
|
|
1427
1499
|
}
|
|
1428
1500
|
}
|
|
1429
|
-
element.
|
|
1501
|
+
element.addBindEvent(new BindEvent({
|
|
1430
1502
|
name,
|
|
1431
1503
|
calleeNamespace,
|
|
1432
1504
|
calleeName,
|
|
1433
1505
|
arguments: args,
|
|
1434
|
-
}
|
|
1506
|
+
}));
|
|
1435
1507
|
});
|
|
1436
1508
|
|
|
1437
1509
|
astNode.directives
|
|
@@ -1440,73 +1512,65 @@ export class ViewElement extends BaseNode {
|
|
|
1440
1512
|
const valueAttr = astNode.attrs && astNode.attrs.find((attr) => attr.name === 'value');
|
|
1441
1513
|
if (!valueAttr) {
|
|
1442
1514
|
const expression = <any> this._parseExpression(directive.value);
|
|
1443
|
-
element.
|
|
1515
|
+
element.addBindAttribute(new BindAttribute({
|
|
1444
1516
|
type: 'dynamic',
|
|
1445
1517
|
name: 'value',
|
|
1446
1518
|
value: expression ? '' : directive.value,
|
|
1447
1519
|
expression,
|
|
1448
1520
|
sync: true,
|
|
1449
|
-
}
|
|
1521
|
+
}));
|
|
1450
1522
|
}
|
|
1451
1523
|
} else {
|
|
1452
1524
|
const expression = <any> this._parseExpression(directive.value);
|
|
1453
|
-
element.
|
|
1525
|
+
element.addBindDirective(new BindDirective({
|
|
1454
1526
|
type: expression ? 'string' : 'dynamic',
|
|
1455
1527
|
name: directive.name,
|
|
1456
1528
|
rawName: directive.rawName,
|
|
1457
1529
|
value: expression ? '' : directive.value,
|
|
1458
1530
|
expression,
|
|
1459
1531
|
arg: directive.arg,
|
|
1460
|
-
modifiers: directive.modifiers,
|
|
1461
|
-
}
|
|
1532
|
+
// modifiers: directive.modifiers,
|
|
1533
|
+
}));
|
|
1462
1534
|
}
|
|
1463
1535
|
});
|
|
1464
1536
|
|
|
1465
1537
|
if (astNode.if) {
|
|
1466
|
-
element.
|
|
1538
|
+
element.addBindDirective(new BindDirective({
|
|
1467
1539
|
type: 'dynamic',
|
|
1468
1540
|
name: 'if',
|
|
1469
1541
|
rawName: 'v-if',
|
|
1470
1542
|
value: '',
|
|
1471
1543
|
expression: <any> this._parseExpression(astNode.if),
|
|
1472
|
-
}
|
|
1544
|
+
}));
|
|
1473
1545
|
}
|
|
1474
1546
|
} else if (astNode.type === 2) {
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
tag: 'u-text',
|
|
1482
|
-
});
|
|
1483
|
-
}
|
|
1547
|
+
const tagName = config.scope === 'h5' ? 'van-text' : 'u-text';
|
|
1548
|
+
const baseName = tagName.replace(ViewElement.TAG_NAME_PREFIX_REG, '').replace(/-/g, '_');
|
|
1549
|
+
element = new ViewElement({
|
|
1550
|
+
tag: tagName,
|
|
1551
|
+
name: view.getViewElementUniqueName(`${baseName}1`),
|
|
1552
|
+
});
|
|
1484
1553
|
const value = astNode.text.match(/{{(.*?)}}/)[1].trim();
|
|
1485
1554
|
const expression = <any> this._parseExpression(value);
|
|
1486
|
-
element.
|
|
1555
|
+
element.addBindAttribute(new BindAttribute({
|
|
1487
1556
|
type: 'dynamic',
|
|
1488
1557
|
name: 'text',
|
|
1489
1558
|
value: expression ? '' : value,
|
|
1490
1559
|
expression,
|
|
1491
1560
|
}));
|
|
1492
1561
|
} else if (astNode.type === 3) {
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
});
|
|
1501
|
-
}
|
|
1502
|
-
|
|
1503
|
-
element.bindAttrs.push(new BindAttribute({
|
|
1562
|
+
const tagName = config.scope === 'h5' ? 'van-text' : 'u-text';
|
|
1563
|
+
const baseName = tagName.replace(ViewElement.TAG_NAME_PREFIX_REG, '').replace(/-/g, '_');
|
|
1564
|
+
element = new ViewElement({
|
|
1565
|
+
tag: tagName,
|
|
1566
|
+
name: view.getViewElementUniqueName(`${baseName}1`),
|
|
1567
|
+
});
|
|
1568
|
+
element.addBindAttribute(new BindAttribute({
|
|
1504
1569
|
name: 'text',
|
|
1505
1570
|
type: 'string',
|
|
1506
1571
|
value: astNode.text,
|
|
1507
1572
|
}));
|
|
1508
1573
|
}
|
|
1509
|
-
|
|
1510
1574
|
return element;
|
|
1511
1575
|
}
|
|
1512
1576
|
|
|
@@ -1527,24 +1591,14 @@ export class ViewElement extends BaseNode {
|
|
|
1527
1591
|
let ast = compiler.compile(html, compilerOptions).ast;
|
|
1528
1592
|
if (ast.tag === 'template' && !ast.slotTarget)
|
|
1529
1593
|
ast = ast.children[0] as compiler.ASTElement;
|
|
1530
|
-
|
|
1531
|
-
let root: ViewElement;
|
|
1532
|
-
utils.traverse((current) => {
|
|
1533
|
-
// 处理 scopedSlots;
|
|
1534
|
-
if (!current.parent)
|
|
1535
|
-
root = this._fromASTNode(current.node, context);
|
|
1536
|
-
else
|
|
1537
|
-
(current.parent.children as any)[current.index] = this._fromASTNode(current.node, context);
|
|
1538
|
-
}, { node: ast });
|
|
1539
|
-
return root;
|
|
1594
|
+
return this._fromASTNode(ast, context);
|
|
1540
1595
|
}
|
|
1541
1596
|
|
|
1542
1597
|
/**
|
|
1543
1598
|
* 从模板生成规范的 ViewElement 对象
|
|
1544
1599
|
*/
|
|
1545
1600
|
public static fromHTML(html: string, context?: ParseContext) {
|
|
1546
|
-
|
|
1547
|
-
return element;
|
|
1601
|
+
return this.parse(html, context);
|
|
1548
1602
|
}
|
|
1549
1603
|
|
|
1550
1604
|
/**
|
|
@@ -1572,7 +1626,7 @@ export class ViewElement extends BaseNode {
|
|
|
1572
1626
|
}
|
|
1573
1627
|
}
|
|
1574
1628
|
if ((attr as BindAttribute).type === 'dynamic' && !(element.tag === 'u-cascade-select' && attr.name === 'categories'))
|
|
1575
|
-
return defaultResult.replace(/:?(\w+)(?:.*?)="(.*)"/, (m, name, value) => {
|
|
1629
|
+
return defaultResult.replace(/:?([\w-]+)(?:.*?)="(.*)"/, (m, name, value) => {
|
|
1576
1630
|
try {
|
|
1577
1631
|
const tempValue = json5.parse(value);
|
|
1578
1632
|
if (typeof tempValue === 'boolean' || typeof tempValue === 'number') {
|
|
@@ -1583,7 +1637,12 @@ export class ViewElement extends BaseNode {
|
|
|
1583
1637
|
if (apiOfAttr && !apiOfAttr.type.includes('string'))
|
|
1584
1638
|
return '';
|
|
1585
1639
|
}
|
|
1586
|
-
|
|
1640
|
+
value = value
|
|
1641
|
+
.replace(/"/g, "'")
|
|
1642
|
+
.replace(/\$utils\['(.+?)'\]/g, '$1')
|
|
1643
|
+
.replace(/\$refs./g, 'elements.')
|
|
1644
|
+
.replace(/\$global./g, 'nasl.auth.');
|
|
1645
|
+
return `${name}="{{ ${value} }}"`;
|
|
1587
1646
|
});
|
|
1588
1647
|
else
|
|
1589
1648
|
return defaultResult;
|
|
@@ -1595,13 +1654,31 @@ export class ViewElement extends BaseNode {
|
|
|
1595
1654
|
|
|
1596
1655
|
const api = config.allNodesAPI[el.tag];
|
|
1597
1656
|
const emptySlot = api && api.slots && api.slots.find((slot) => slot.name === 'default' && slot['empty-background']);
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1657
|
+
const hasSupport = api && api.slots && api.slots.some((slot) => slot.support);
|
|
1658
|
+
if (emptySlot || hasSupport) {
|
|
1659
|
+
let childEmpty = !el.children.length;
|
|
1660
|
+
const defaultSlot = el.children.find((elem) => elem.tag === 'template' && elem.slotTarget === 'default');
|
|
1661
|
+
if (defaultSlot) {
|
|
1662
|
+
childEmpty = !defaultSlot.children.length;
|
|
1663
|
+
}
|
|
1664
|
+
if (childEmpty) {
|
|
1665
|
+
let addEmpty = true;
|
|
1666
|
+
if (el.tag === 'u-grid-view' || el.tag === 'u-list-view' || el.tag === 'van-list-view' || el.tag === 'van-grid-view') {
|
|
1667
|
+
const hasDataSource = el.bindAttrs.find((attr) => attr.name === 'data-source');
|
|
1668
|
+
addEmpty = !hasDataSource;
|
|
1669
|
+
}
|
|
1670
|
+
if (el.tag === 'u-crumb') {
|
|
1671
|
+
const attrList = el.bindAttrs;
|
|
1672
|
+
const hasAuto = attrList.some((attr) => attr.name === 'auto' && String(attr.value) === 'true');
|
|
1673
|
+
if (hasAuto)
|
|
1674
|
+
addEmpty = false;
|
|
1675
|
+
}
|
|
1676
|
+
if (['u-select', 'u-dropdown', 'u-panel'].includes(el.tag)) {
|
|
1677
|
+
addEmpty = false;
|
|
1678
|
+
}
|
|
1679
|
+
const background = (emptySlot && emptySlot['empty-background']) || (hasSupport ? 'add-sub' : '');
|
|
1680
|
+
addEmpty && parts.push(`vusion-empty-background="${background}"`);
|
|
1603
1681
|
}
|
|
1604
|
-
addEmpty && parts.push(`vusion-empty-background="${emptySlot['empty-background']}"`);
|
|
1605
1682
|
}
|
|
1606
1683
|
|
|
1607
1684
|
return parts;
|
|
@@ -1613,7 +1690,14 @@ export class ViewElement extends BaseNode {
|
|
|
1613
1690
|
* 转换成 Vue 的模板格式
|
|
1614
1691
|
*/
|
|
1615
1692
|
toVue(options?: ElementToVueOptions) {
|
|
1616
|
-
|
|
1693
|
+
let scopeList: string[] = [];
|
|
1694
|
+
if (Array.isArray(options?.scopeList)) {
|
|
1695
|
+
scopeList = [...options?.scopeList];
|
|
1696
|
+
}
|
|
1697
|
+
if (this.slotScope) {
|
|
1698
|
+
scopeList.unshift(this.slotScope);
|
|
1699
|
+
}
|
|
1700
|
+
const newOptions: ElementToVueOptions = Object.assign({
|
|
1617
1701
|
indentStyle: 'space',
|
|
1618
1702
|
tabSize: 4,
|
|
1619
1703
|
indentLevel: 0,
|
|
@@ -1621,27 +1705,30 @@ export class ViewElement extends BaseNode {
|
|
|
1621
1705
|
nodePathAttr: false,
|
|
1622
1706
|
getExtraParts: () => [],
|
|
1623
1707
|
attrFormat: (attr: BindAttribute | BindEvent | BindDirective, element?: ViewElement, defaultResult?: string) => defaultResult,
|
|
1624
|
-
}, options
|
|
1625
|
-
|
|
1626
|
-
|
|
1708
|
+
}, options, {
|
|
1709
|
+
scopeList,
|
|
1710
|
+
});
|
|
1711
|
+
const tabString = ' '.repeat(newOptions.tabSize * newOptions.indentLevel);
|
|
1712
|
+
const insideTabString = ' '.repeat(newOptions.tabSize * (newOptions.indentLevel + 1));
|
|
1627
1713
|
let shouldIndent = true;
|
|
1628
1714
|
const content: string = !this.children ? '' : this.children
|
|
1629
1715
|
.map((element) => {
|
|
1630
|
-
const childOptions = Object.assign({},
|
|
1716
|
+
const childOptions = Object.assign({}, newOptions);
|
|
1631
1717
|
childOptions.indentLevel++;
|
|
1632
|
-
return (shouldIndent ? '\n' + insideTabString : '') + element
|
|
1718
|
+
return (shouldIndent ? '\n' + insideTabString : '') + element?.toVue(childOptions);
|
|
1633
1719
|
})
|
|
1634
1720
|
.join('');
|
|
1635
|
-
if (!content.length)
|
|
1721
|
+
if (!content.length) {
|
|
1636
1722
|
shouldIndent = false;
|
|
1637
|
-
|
|
1723
|
+
}
|
|
1638
1724
|
const parts = [];
|
|
1639
|
-
if (
|
|
1640
|
-
if (
|
|
1641
|
-
|
|
1642
|
-
|
|
1725
|
+
if (newOptions.aslIdAttr) {
|
|
1726
|
+
if (newOptions.aslIdAttr === true) {
|
|
1727
|
+
newOptions.aslIdAttr = 'asl-id';
|
|
1728
|
+
}
|
|
1729
|
+
parts.push(`${newOptions.aslIdAttr}="${this.id}"`);
|
|
1643
1730
|
}
|
|
1644
|
-
if (
|
|
1731
|
+
if (newOptions.nodePathAttr) {
|
|
1645
1732
|
// 注入 asl 的 node-path
|
|
1646
1733
|
parts.push(`vusion-node-path="${this.nodePath}"`);
|
|
1647
1734
|
}
|
|
@@ -1652,11 +1739,10 @@ export class ViewElement extends BaseNode {
|
|
|
1652
1739
|
this.staticStyle && parts.push(`style="${this.staticStyle}"`);
|
|
1653
1740
|
|
|
1654
1741
|
[].concat(this.bindAttrs, this.bindDirectives, this.bindEvents).forEach((attr: BindAttribute | BindDirective | BindEvent) => {
|
|
1655
|
-
const result =
|
|
1742
|
+
const result = newOptions.attrFormat(attr, this, attr?.toVue(newOptions));
|
|
1656
1743
|
result && parts.push(result);
|
|
1657
1744
|
});
|
|
1658
|
-
|
|
1659
|
-
options.getExtraParts(this).forEach((part) => parts.push(part));
|
|
1745
|
+
newOptions.getExtraParts(this).forEach((part) => parts.push(part));
|
|
1660
1746
|
|
|
1661
1747
|
let partsLength = 0;
|
|
1662
1748
|
let partsString = '';
|
|
@@ -1672,6 +1758,43 @@ export class ViewElement extends BaseNode {
|
|
|
1672
1758
|
return `<${this.tag}${partsString.length ? partsString : ''}>` + content + (shouldIndent ? '\n' + tabString : '') + `</${this.tag}>`;
|
|
1673
1759
|
}
|
|
1674
1760
|
|
|
1761
|
+
/**
|
|
1762
|
+
* 从父级删除该节点
|
|
1763
|
+
* @internal
|
|
1764
|
+
*/
|
|
1765
|
+
delete() {
|
|
1766
|
+
super.delete();
|
|
1767
|
+
if (this.parentNode) {
|
|
1768
|
+
this.traverseChildren((ele: ViewElement) => {
|
|
1769
|
+
(this.view as any)?.removeExistingViewElement(ele);
|
|
1770
|
+
});
|
|
1771
|
+
}
|
|
1772
|
+
}
|
|
1773
|
+
|
|
1774
|
+
findElementByName(name: string): ViewElement {
|
|
1775
|
+
return utils.traverse((current) => {
|
|
1776
|
+
if (current.node.name === name)
|
|
1777
|
+
return current.node;
|
|
1778
|
+
}, { node: this });
|
|
1779
|
+
}
|
|
1780
|
+
|
|
1781
|
+
findElementByTag(tag: string): ViewElement {
|
|
1782
|
+
return utils.traverse((current) => {
|
|
1783
|
+
if (current.node.tag === tag)
|
|
1784
|
+
return current.node;
|
|
1785
|
+
}, { node: this });
|
|
1786
|
+
}
|
|
1787
|
+
|
|
1788
|
+
findElementByAttr(name: string, value: string): ViewElement {
|
|
1789
|
+
return utils.traverse((current) => {
|
|
1790
|
+
if (current.node.bindAttrs.some((attr) => attr.name === name && attr.value === value))
|
|
1791
|
+
return current.node;
|
|
1792
|
+
}, { node: this });
|
|
1793
|
+
}
|
|
1794
|
+
|
|
1795
|
+
@excludedInJSON()
|
|
1796
|
+
computedStyle: object = {};
|
|
1797
|
+
|
|
1675
1798
|
//================================================================================
|
|
1676
1799
|
// 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
|
|
1677
1800
|
// ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
|