@lcap/nasl 1.0.0-alpha.7 → 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 +118 -38
- package/src/automate/engine/utils.js +49 -19
- package/src/common/BaseNode.ts +229 -81
- 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 -35
- package/src/concepts/BooleanLiteral__.ts +8 -0
- package/src/concepts/CallFunction__.ts +42 -25
- package/src/concepts/CallInterface__.ts +236 -26
- package/src/concepts/CallLogic__.ts +114 -86
- package/src/concepts/CallQueryComponent__.ts +35 -20
- 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 +92 -20
- package/src/concepts/End__.ts +8 -1
- package/src/concepts/EntityProperty__.ts +69 -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 +82 -33
- package/src/concepts/IfStatement__.ts +4 -4
- package/src/concepts/InterfaceParam__.ts +51 -21
- package/src/concepts/Interface__.ts +166 -46
- package/src/concepts/JSBlock__.ts +4 -0
- package/src/concepts/LogicItem__.ts +16 -1
- package/src/concepts/Logic__.ts +183 -36
- package/src/concepts/MemberExpression__.ts +57 -13
- package/src/concepts/Module__.ts +176 -140
- 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 +58 -30
- 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 -23
- package/src/concepts/Role__.ts +11 -4
- package/src/concepts/SqlQueryComponent__.ts +2 -2
- package/src/concepts/StringLiteral__.ts +20 -31
- package/src/concepts/StructureProperty__.ts +50 -25
- package/src/concepts/Structure__.ts +75 -41
- package/src/concepts/SwitchCase__.ts +4 -4
- package/src/concepts/SwitchStatement__.ts +2 -2
- package/src/concepts/TypeAnnotation__.ts +71 -18
- 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 +69 -19
- package/src/concepts/ViewComponent__.ts +10 -10
- package/src/concepts/ViewElement__.ts +297 -199
- package/src/concepts/View__.ts +114 -107
- 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 -10
- 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 +192 -40
- 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 +50 -8
- 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 +276 -39
- 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 +689 -389
- 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 +204 -47
- 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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseNode, CompletionProperty, App, Identifier, MemberExpression, Enum, NullLiteral, BooleanLiteral, Param, BindAttribute } from '..';
|
|
1
|
+
import { BaseNode, CompletionProperty, App, Identifier, MemberExpression, Enum, NullLiteral, BooleanLiteral, Param, BindAttribute, LogicItem, TypeAnnotation } from '..';
|
|
2
2
|
import naslServer from './naslServer';
|
|
3
3
|
|
|
4
4
|
interface variableItem {
|
|
@@ -9,22 +9,116 @@ interface variableItem {
|
|
|
9
9
|
value?: string;
|
|
10
10
|
expression: MemberExpression | Identifier;
|
|
11
11
|
}
|
|
12
|
+
|
|
13
|
+
function getCompletionDetailType(displayParts: Array<{ text: string; kind: string }>): TypeAnnotation {
|
|
14
|
+
// 0: {text: 'let', kind: 'keyword'}
|
|
15
|
+
// 1: {text: ' ', kind: 'space'}
|
|
16
|
+
// 2: {text: 'bindRoles', kind: 'text'}
|
|
17
|
+
// 3: {text: ':', kind: 'punctuation'}
|
|
18
|
+
// 4: {text: ' ', kind: 'space'}
|
|
19
|
+
// 5: {text: 'roles', kind: 'moduleName'}
|
|
20
|
+
// 6: {text: '.', kind: 'punctuation'}
|
|
21
|
+
// 7: {text: 'DEV_AdminRole', kind: 'enumName'}
|
|
22
|
+
// 8: {text: '[', kind: 'punctuation'}
|
|
23
|
+
// 9: {text: ']', kind: 'punctuation'}
|
|
24
|
+
let str = '';
|
|
25
|
+
displayParts.forEach((item) => {
|
|
26
|
+
str += item.text;
|
|
27
|
+
});
|
|
28
|
+
const strTypes = str.split(': ');
|
|
29
|
+
const type = strTypes[1];
|
|
30
|
+
let typeAnnotation;
|
|
31
|
+
try {
|
|
32
|
+
if (type.includes('<') && type.includes('>')) {
|
|
33
|
+
// 泛型的处理
|
|
34
|
+
typeAnnotation = createGenericTypeAnnotation(type);
|
|
35
|
+
} else {
|
|
36
|
+
typeAnnotation = createType2Annotation(type);
|
|
37
|
+
}
|
|
38
|
+
} catch (err) {
|
|
39
|
+
console.log(err);
|
|
40
|
+
}
|
|
41
|
+
return typeAnnotation;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function createGenericTypeAnnotation(type: string) {
|
|
45
|
+
// 取出匹配的内容
|
|
46
|
+
|
|
47
|
+
const childType = type.substring(0, type.indexOf('<'));
|
|
48
|
+
const typeAnnotation = createType2Annotation(childType);
|
|
49
|
+
// 如果还有匹配到的多层泛型;
|
|
50
|
+
// 取出匹配到的内容
|
|
51
|
+
const types = /\<([^()]+)\>/g.exec(type);
|
|
52
|
+
const newtext = types[1];
|
|
53
|
+
// 把匹配的值,的内容在,检索一遍,看是不是泛型套泛型
|
|
54
|
+
const newTypes = /\<([^()]+)\>/g.exec(newtext);
|
|
55
|
+
// 如果是的话就去递归
|
|
56
|
+
if (newTypes) {
|
|
57
|
+
const argTypeAnnotation = createGenericTypeAnnotation(newtext);
|
|
58
|
+
typeAnnotation.typeArguments = [argTypeAnnotation];
|
|
59
|
+
} else {
|
|
60
|
+
// 如果不是就创造内部的真正类型
|
|
61
|
+
const argTypeAnnotation = createType2Annotation(newtext);
|
|
62
|
+
typeAnnotation.typeArguments = [argTypeAnnotation];
|
|
63
|
+
}
|
|
64
|
+
return typeAnnotation;
|
|
65
|
+
}
|
|
66
|
+
function createType2Annotation(type: string): TypeAnnotation {
|
|
67
|
+
let typeAnnotation;
|
|
68
|
+
// 没有泛型类型的
|
|
69
|
+
const types = type.split('.');
|
|
70
|
+
if (types.length === 1) {
|
|
71
|
+
typeAnnotation = TypeAnnotation.createPrimitive(types[0]);
|
|
72
|
+
} else {
|
|
73
|
+
if (type.startsWith('nasl.core')) {
|
|
74
|
+
typeAnnotation = TypeAnnotation.createPrimitive(types[types.length - 1]);
|
|
75
|
+
} else if (type.startsWith('nasl.ui')) {
|
|
76
|
+
typeAnnotation = TypeAnnotation.createReference(types[types.length - 1], {
|
|
77
|
+
typeNamespace: 'nasl.ui',
|
|
78
|
+
});
|
|
79
|
+
} else if (type.startsWith('nasl.collection')) {
|
|
80
|
+
typeAnnotation = TypeAnnotation.createGeneric(types[types.length - 1], {
|
|
81
|
+
typeNamespace: 'nasl.collection',
|
|
82
|
+
});
|
|
83
|
+
} else if (type.startsWith('entities.')) {
|
|
84
|
+
typeAnnotation = TypeAnnotation.createReference(types[types.length - 1], {
|
|
85
|
+
typeNamespace: 'app.entities',
|
|
86
|
+
});
|
|
87
|
+
} else if (type.startsWith('structures.')) {
|
|
88
|
+
typeAnnotation = TypeAnnotation.createReference(types[types.length - 1], {
|
|
89
|
+
typeNamespace: 'app.structures',
|
|
90
|
+
});
|
|
91
|
+
} else if (type.startsWith('enums.')) {
|
|
92
|
+
typeAnnotation = TypeAnnotation.createReference(types[types.length - 1], {
|
|
93
|
+
typeNamespace: 'app.enums',
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return typeAnnotation;
|
|
98
|
+
}
|
|
12
99
|
// 格式化变量数据
|
|
13
|
-
function formatVariableData(data: unknown | variableItem[], node: BaseNode, parent?: any) {
|
|
100
|
+
export function formatVariableData(data: unknown | variableItem[], node: BaseNode, parent?: any) {
|
|
14
101
|
if (Array.isArray(data)) {
|
|
15
102
|
const result = data.map((item) => {
|
|
16
103
|
// value需要拼接生成
|
|
17
104
|
item.value = parent ? `${parent.value}.${item.text}` : item.text;
|
|
18
105
|
item.name = item.text;
|
|
106
|
+
// 当前结构的typeAnnotation
|
|
107
|
+
const typeAnnotation = item.completionDetail && getCompletionDetailType(item.completionDetail.displayParts as Array<{ text: string; kind: string }>);
|
|
19
108
|
// 如果没有父节点就是Identifier
|
|
20
109
|
if (!parent) {
|
|
21
110
|
const identifier = new Identifier({ name: item.name });
|
|
111
|
+
// 携带上当前的类型
|
|
112
|
+
identifier.typeAnnotation = typeAnnotation;
|
|
22
113
|
item.expression = identifier;
|
|
23
114
|
} else {
|
|
24
|
-
|
|
115
|
+
const memberExpression = new MemberExpression({
|
|
25
116
|
object: parent.expression,
|
|
26
117
|
property: new Identifier({ name: item.name }),
|
|
27
118
|
});
|
|
119
|
+
// 携带上当前的类型
|
|
120
|
+
memberExpression.typeAnnotation = typeAnnotation;
|
|
121
|
+
item.expression = memberExpression;
|
|
28
122
|
}
|
|
29
123
|
if (item.children) {
|
|
30
124
|
item.children = formatVariableData(item.children, node, item);
|
|
@@ -46,8 +140,14 @@ function formatVariableData(data: unknown | variableItem[], node: BaseNode, pare
|
|
|
46
140
|
// 从logic获取节点的icon
|
|
47
141
|
function getNodeiconFromLogic(completionProperty: CompletionProperty, node: BaseNode): string {
|
|
48
142
|
const logic = (node as Param).logic;
|
|
143
|
+
const view = (node as Param).view;
|
|
144
|
+
if (view) {
|
|
145
|
+
const { params } = view;
|
|
146
|
+
if (params.find((item) => item.name === completionProperty.name))
|
|
147
|
+
return 'param';
|
|
148
|
+
}
|
|
49
149
|
if (logic) {
|
|
50
|
-
const { params,
|
|
150
|
+
const { params, returns } = logic;
|
|
51
151
|
if (params.find((item) => item.name === completionProperty.name))
|
|
52
152
|
return 'param';
|
|
53
153
|
|
|
@@ -66,22 +166,28 @@ function getNodeiconFromLogic(completionProperty: CompletionProperty, node: Base
|
|
|
66
166
|
function formatEnums(enums: Array<Enum>) {
|
|
67
167
|
const result = enums.map((item) => {
|
|
68
168
|
const namespace = item.getNamespace();
|
|
69
|
-
|
|
169
|
+
const newItem: any = {
|
|
70
170
|
name: item.name,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
171
|
+
value: item.name,
|
|
172
|
+
expression: new Identifier({
|
|
173
|
+
name: item.name,
|
|
174
|
+
namespace,
|
|
175
|
+
}),
|
|
176
|
+
children: [],
|
|
177
|
+
};
|
|
178
|
+
newItem.children = item.enumItems.map((enumItem) => {
|
|
74
179
|
const newEnumItem: any = { ...enumItem };
|
|
75
|
-
newEnumItem.name = newEnumItem.value;
|
|
76
180
|
newEnumItem.expression = new MemberExpression({
|
|
77
|
-
object:
|
|
181
|
+
object: newItem.expression,
|
|
78
182
|
property: new Identifier({ name: newEnumItem.value }),
|
|
79
183
|
});
|
|
184
|
+
newEnumItem.name = newEnumItem.value;
|
|
185
|
+
newEnumItem.value = newItem.value + '.' + newEnumItem.value;
|
|
80
186
|
const completionProperty = new CompletionProperty(newEnumItem);
|
|
81
187
|
completionProperty.icon = 'enumItem';
|
|
82
188
|
return completionProperty;
|
|
83
189
|
});
|
|
84
|
-
const completionProperty = new CompletionProperty(
|
|
190
|
+
const completionProperty = new CompletionProperty(newItem);
|
|
85
191
|
completionProperty.icon = 'enum';
|
|
86
192
|
return completionProperty;
|
|
87
193
|
});
|
|
@@ -92,18 +198,107 @@ type LiteralDefination = {
|
|
|
92
198
|
value: string;
|
|
93
199
|
expression?: Identifier;
|
|
94
200
|
};
|
|
95
|
-
// 先简单处理一下
|
|
96
201
|
function formatLiterals() {
|
|
97
|
-
const list: Array<LiteralDefination> = [
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
202
|
+
// const list: Array<LiteralDefination> = [
|
|
203
|
+
// { name: 'null', value: 'null' },
|
|
204
|
+
// { name: 'true', value: 'true' },
|
|
205
|
+
// { name: 'false', value: 'false' },
|
|
206
|
+
// ];
|
|
207
|
+
// const newList = list.map((item) => {
|
|
208
|
+
// item.expression = new Identifier({ name: item.name });
|
|
209
|
+
// const completionProperty = new CompletionProperty(item);
|
|
210
|
+
// completionProperty.icon = 'literal';
|
|
211
|
+
// return completionProperty;
|
|
212
|
+
// });
|
|
213
|
+
// return newList;
|
|
214
|
+
const list = [
|
|
215
|
+
new CompletionProperty({
|
|
216
|
+
name: 'null',
|
|
217
|
+
value: 'null',
|
|
218
|
+
expression: new NullLiteral(),
|
|
219
|
+
}),
|
|
220
|
+
new CompletionProperty({
|
|
221
|
+
name: 'true',
|
|
222
|
+
value: 'true',
|
|
223
|
+
expression: new BooleanLiteral({ value: 'true' }),
|
|
224
|
+
}),
|
|
225
|
+
new CompletionProperty({
|
|
226
|
+
name: 'false',
|
|
227
|
+
value: 'false',
|
|
228
|
+
expression: new BooleanLiteral({ value: 'false' }),
|
|
229
|
+
}),
|
|
101
230
|
];
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
231
|
+
list.forEach((l) => {
|
|
232
|
+
l.icon = 'literal';
|
|
233
|
+
});
|
|
234
|
+
return list;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
function formatGlobalVariable() {
|
|
238
|
+
const newList = [];
|
|
239
|
+
const globalVariable = {
|
|
240
|
+
name: 'userInfo',
|
|
241
|
+
value: 'userInfo',
|
|
242
|
+
children: [
|
|
243
|
+
{ name: 'Status', value: 'userInfo.Status' },
|
|
244
|
+
{ name: 'UserInfoExtend',
|
|
245
|
+
value: 'userInfo.UserInfoExtend',
|
|
246
|
+
children: [
|
|
247
|
+
{ name: 'Company', value: 'userInfo.UserInfoExtend.Company' },
|
|
248
|
+
{ name: 'JobLevel', value: 'userInfo.UserInfoExtend.JobLevel' },
|
|
249
|
+
{ name: 'JobNum', value: 'userInfo.UserInfoExtend.JobNum' },
|
|
250
|
+
{ name: 'JobYear', value: 'userInfo.UserInfoExtend.JobYear' },
|
|
251
|
+
{ name: 'RealName', value: 'userInfo.UserInfoExtend.RealName' },
|
|
252
|
+
{ name: 'NickName', value: 'userInfo.UserInfoExtend.NickName' },
|
|
253
|
+
{ name: 'NameAndEmail', value: 'userInfo.UserInfoExtend.NameAndEmail' },
|
|
254
|
+
{ name: 'Position', value: 'userInfo.UserInfoExtend.Position' },
|
|
255
|
+
{ name: 'Department', value: 'userInfo.UserInfoExtend.Department' },
|
|
256
|
+
{ name: 'EmployeeId', value: 'userInfo.UserInfoExtend.EmployeeId' },
|
|
257
|
+
] },
|
|
258
|
+
{ name: 'UserName', value: 'userInfo.UserName' },
|
|
259
|
+
{ name: 'Email', value: 'userInfo.Email' },
|
|
260
|
+
{ name: 'UserId', value: 'userInfo.UserId' },
|
|
261
|
+
{ name: 'Phone', value: 'userInfo.Phone' },
|
|
262
|
+
{ name: 'CreateTime', value: 'userInfo.CreateTime' },
|
|
263
|
+
{ name: 'UpdateTime', value: 'userInfo.UpdateTime' },
|
|
264
|
+
{ name: 'LoginCount', value: 'userInfo.LoginCount' },
|
|
265
|
+
{ name: 'Source', value: 'userInfo.Source' },
|
|
266
|
+
],
|
|
267
|
+
};
|
|
268
|
+
const userInfoIdentifier = new Identifier({
|
|
269
|
+
name: 'userInfo',
|
|
270
|
+
namespace: 'nasl.auth',
|
|
271
|
+
});
|
|
272
|
+
const userCompletionProperty = new CompletionProperty({
|
|
273
|
+
name: 'userInfo',
|
|
274
|
+
expression: userInfoIdentifier,
|
|
275
|
+
children: [],
|
|
276
|
+
});
|
|
277
|
+
userCompletionProperty.icon = 'variable';
|
|
278
|
+
newList.push(userCompletionProperty);
|
|
279
|
+
globalVariable.children.forEach((item) => {
|
|
280
|
+
const expression = new MemberExpression({
|
|
281
|
+
object: userInfoIdentifier,
|
|
282
|
+
property: new Identifier({ name: item.name }),
|
|
283
|
+
});
|
|
284
|
+
(item as any).expression = expression;
|
|
285
|
+
const completionProperty = new CompletionProperty(item as any);
|
|
105
286
|
completionProperty.icon = 'literal';
|
|
106
|
-
|
|
287
|
+
if (item.children) {
|
|
288
|
+
const children: LogicItem[] = [];
|
|
289
|
+
item.children.forEach((child) => {
|
|
290
|
+
const childExpression = new MemberExpression({
|
|
291
|
+
object: expression,
|
|
292
|
+
property: new Identifier({ name: child.name }),
|
|
293
|
+
});
|
|
294
|
+
(child as any).expression = childExpression;
|
|
295
|
+
const childProperty = new CompletionProperty(child as any);
|
|
296
|
+
childProperty.icon = 'literal';
|
|
297
|
+
children.push(childProperty as any);
|
|
298
|
+
});
|
|
299
|
+
completionProperty.children = children as unknown as Array<CompletionProperty>;
|
|
300
|
+
}
|
|
301
|
+
userCompletionProperty.children.push(completionProperty as any);
|
|
107
302
|
});
|
|
108
303
|
return newList;
|
|
109
304
|
}
|
|
@@ -113,6 +308,7 @@ function getCurrentLogic(node: BaseNode,
|
|
|
113
308
|
result: {
|
|
114
309
|
name: string;
|
|
115
310
|
children: CompletionProperty[];
|
|
311
|
+
expanded: boolean;
|
|
116
312
|
icon: string;
|
|
117
313
|
}[]) {
|
|
118
314
|
// 只有data-source可以
|
|
@@ -129,38 +325,37 @@ function getCurrentLogic(node: BaseNode,
|
|
|
129
325
|
completionProperty.icon = 'logic';
|
|
130
326
|
return completionProperty;
|
|
131
327
|
});
|
|
132
|
-
result.push({ name: '逻辑', children: logicVariable, icon: 'category' });
|
|
328
|
+
result.push({ name: '逻辑', children: logicVariable, expanded: true, icon: 'category' });
|
|
133
329
|
}
|
|
134
330
|
}
|
|
135
331
|
|
|
136
332
|
export async function getMemberIdentifier(node: BaseNode) {
|
|
137
333
|
if (node) {
|
|
334
|
+
// 获取字面量
|
|
335
|
+
const literals = getLiteralsIdentifier();
|
|
336
|
+
if (node.getAncestor('CallQueryComponent'))
|
|
337
|
+
literals.shift(); // 去除 null
|
|
138
338
|
// 获取枚举
|
|
139
|
-
const
|
|
140
|
-
const literals = formatLiterals();
|
|
141
|
-
const enums = app?.enums;
|
|
142
|
-
const newEnums = enums ? formatEnums(enums) : [];
|
|
339
|
+
const newEnums = getEnumsIdentifier(node);
|
|
143
340
|
|
|
144
|
-
//
|
|
145
|
-
//
|
|
341
|
+
// extensionModules(state) {
|
|
342
|
+
// return state.app?.dependencies?.filter((module) => module.type === 'extension') || {};
|
|
146
343
|
// },
|
|
147
344
|
|
|
148
345
|
// 如果之前有选好的值就需要的把之前那一列的内容渲染出来
|
|
149
346
|
// 先去获取
|
|
150
347
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
completionData = formatVariableData(completion, node);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
348
|
+
// 获取变量
|
|
349
|
+
const completionData = await getVariableIdentifier(node);
|
|
350
|
+
// 获取公共变量
|
|
351
|
+
const globalVariable: CompletionProperty[] = await getGlobalVariableIdentifier(node);
|
|
352
|
+
|
|
159
353
|
// 这个可能需要自己算一下
|
|
160
354
|
const result = [
|
|
161
|
-
{ name: '字面量', children: literals, icon: 'category' },
|
|
162
|
-
{ name: '枚举', children: newEnums, icon: 'category' },
|
|
163
|
-
{ name: '变量', children: completionData, icon: 'category' },
|
|
355
|
+
{ name: '字面量', children: literals, expanded: true, icon: 'category' },
|
|
356
|
+
{ name: '枚举', children: newEnums, expanded: true, icon: 'category' },
|
|
357
|
+
{ name: '变量', children: completionData, expanded: true, icon: 'category' },
|
|
358
|
+
{ name: '公共变量', children: globalVariable, expanded: true, icon: 'category' },
|
|
164
359
|
// { name: '流程变量', children: [] },
|
|
165
360
|
];
|
|
166
361
|
getCurrentLogic(node, result);
|
|
@@ -168,9 +363,51 @@ export async function getMemberIdentifier(node: BaseNode) {
|
|
|
168
363
|
}
|
|
169
364
|
}
|
|
170
365
|
|
|
366
|
+
// 获取字面量
|
|
367
|
+
export function getLiteralsIdentifier(): CompletionProperty[] {
|
|
368
|
+
return formatLiterals();
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
// 获取枚举
|
|
372
|
+
export function getEnumsIdentifier(node: BaseNode): CompletionProperty[] {
|
|
373
|
+
const app = node.rootNode as App;
|
|
374
|
+
const enums = app?.enums;
|
|
375
|
+
const newEnums = enums ? formatEnums(enums) : [];
|
|
376
|
+
return newEnums;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
// 获取变量
|
|
380
|
+
export async function getVariableIdentifier(node: BaseNode): Promise<CompletionProperty[]> {
|
|
381
|
+
let completionData: CompletionProperty[] = [new CompletionProperty({})];
|
|
382
|
+
if (node instanceof Identifier || node instanceof MemberExpression) {
|
|
383
|
+
const value = (node as Identifier | MemberExpression).getValue();
|
|
384
|
+
if (value) {
|
|
385
|
+
const completion = (await naslServer.getValueSelectCompletion(node, value)) as variableItem[];
|
|
386
|
+
completionData = formatVariableData(completion, node);
|
|
387
|
+
} else {
|
|
388
|
+
const nextCompletion = await naslServer.getFieldKeySelectCompletion(node, '');
|
|
389
|
+
completionData = formatVariableData(nextCompletion, node);
|
|
390
|
+
}
|
|
391
|
+
} else {
|
|
392
|
+
const nextCompletion = await naslServer.getFieldKeySelectCompletion(node, '');
|
|
393
|
+
completionData = formatVariableData(nextCompletion, node);
|
|
394
|
+
}
|
|
395
|
+
return completionData;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
// 获取公共变量
|
|
399
|
+
export async function getGlobalVariableIdentifier(node: BaseNode):Promise<CompletionProperty[]> {
|
|
400
|
+
let globalVariable: CompletionProperty[] = [];
|
|
401
|
+
// 公共变量修改
|
|
402
|
+
if ((node as any).view) {
|
|
403
|
+
globalVariable = formatGlobalVariable();
|
|
404
|
+
}
|
|
405
|
+
return globalVariable;
|
|
406
|
+
}
|
|
407
|
+
|
|
171
408
|
export async function getSelectNextCompletionData(node: Identifier, completionProperty?: CompletionProperty) {
|
|
172
409
|
if (node) {
|
|
173
|
-
let fieldKey: string =
|
|
410
|
+
let fieldKey: string = '';
|
|
174
411
|
if (completionProperty) {
|
|
175
412
|
const exp = BaseNode.from(completionProperty.expression);
|
|
176
413
|
const value = (exp as Identifier).getValue();
|