@lcap/nasl 3.3.3-beta.6 → 3.3.3-beta.7
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/bak/translator.js +73 -15
- package/out/bak/translator.js.map +1 -1
- package/out/common/BaseNode.d.ts +11 -0
- package/out/common/BaseNode.js +51 -0
- package/out/common/BaseNode.js.map +1 -1
- package/out/common/index.d.ts +1 -0
- package/out/common/index.js +1 -0
- package/out/common/index.js.map +1 -1
- package/out/common/utils.d.ts +2 -0
- package/out/common/utils.js +18 -0
- package/out/common/utils.js.map +1 -0
- package/out/concepts/Abort__.d.ts +2 -2
- package/out/concepts/Abort__.js +6 -2
- package/out/concepts/Abort__.js.map +1 -1
- package/out/concepts/Anchor__.d.ts +2 -2
- package/out/concepts/Anchor__.js +11 -7
- package/out/concepts/Anchor__.js.map +1 -1
- package/out/concepts/AnonymousFunction__.d.ts +3 -3
- package/out/concepts/AnonymousFunction__.js +37 -23
- package/out/concepts/AnonymousFunction__.js.map +1 -1
- package/out/concepts/App__.js +137 -69
- package/out/concepts/App__.js.map +1 -1
- package/out/concepts/Argument__.d.ts +2 -2
- package/out/concepts/Argument__.js +18 -13
- package/out/concepts/Argument__.js.map +1 -1
- package/out/concepts/Assignee__.d.ts +2 -2
- package/out/concepts/Assignee__.js +31 -19
- package/out/concepts/Assignee__.js.map +1 -1
- package/out/concepts/AssignmentLine__.d.ts +2 -2
- package/out/concepts/AssignmentLine__.js +3 -2
- package/out/concepts/AssignmentLine__.js.map +1 -1
- package/out/concepts/Assignment__.d.ts +2 -2
- package/out/concepts/Assignment__.js +16 -12
- package/out/concepts/Assignment__.js.map +1 -1
- package/out/concepts/Attribute__.js +6 -3
- package/out/concepts/Attribute__.js.map +1 -1
- package/out/concepts/AuthLogicForCallInterface__.d.ts +2 -2
- package/out/concepts/AuthLogicForCallInterface__.js +62 -78
- package/out/concepts/AuthLogicForCallInterface__.js.map +1 -1
- package/out/concepts/BackendVariable__.d.ts +5 -8
- package/out/concepts/BackendVariable__.js +23 -18
- package/out/concepts/BackendVariable__.js.map +1 -1
- package/out/concepts/Backend__.d.ts +4 -7
- package/out/concepts/Backend__.js +16 -11
- package/out/concepts/Backend__.js.map +1 -1
- package/out/concepts/BatchAssignment__.d.ts +2 -2
- package/out/concepts/BatchAssignment__.js +30 -22
- package/out/concepts/BatchAssignment__.js.map +1 -1
- package/out/concepts/BinaryExpression__.d.ts +2 -2
- package/out/concepts/BinaryExpression__.js +30 -18
- package/out/concepts/BinaryExpression__.js.map +1 -1
- package/out/concepts/BindAttribute__.d.ts +10 -4
- package/out/concepts/BindAttribute__.js +144 -43
- package/out/concepts/BindAttribute__.js.map +1 -1
- package/out/concepts/BindDirective__.d.ts +2 -2
- package/out/concepts/BindDirective__.js +16 -11
- package/out/concepts/BindDirective__.js.map +1 -1
- package/out/concepts/BindEvent__.d.ts +4 -7
- package/out/concepts/BindEvent__.js +32 -24
- package/out/concepts/BindEvent__.js.map +1 -1
- package/out/concepts/BindStyle__.d.ts +2 -2
- package/out/concepts/BindStyle__.js +15 -10
- package/out/concepts/BindStyle__.js.map +1 -1
- package/out/concepts/BooleanLiteral__.d.ts +2 -2
- package/out/concepts/BooleanLiteral__.js +2 -2
- package/out/concepts/BooleanLiteral__.js.map +1 -1
- package/out/concepts/CallAuthInterface__.d.ts +2 -2
- package/out/concepts/CallAuthInterface__.js +36 -31
- package/out/concepts/CallAuthInterface__.js.map +1 -1
- package/out/concepts/CallConnector__.d.ts +2 -2
- package/out/concepts/CallConnector__.js +25 -23
- package/out/concepts/CallConnector__.js.map +1 -1
- package/out/concepts/CallFunction__.d.ts +2 -2
- package/out/concepts/CallFunction__.js +31 -22
- package/out/concepts/CallFunction__.js.map +1 -1
- package/out/concepts/CallInterface__.d.ts +2 -2
- package/out/concepts/CallInterface__.js +20 -29
- package/out/concepts/CallInterface__.js.map +1 -1
- package/out/concepts/CallLogic__.d.ts +2 -3
- package/out/concepts/CallLogic__.js +47 -50
- package/out/concepts/CallLogic__.js.map +1 -1
- package/out/concepts/CallQueryComponent__.d.ts +4 -4
- package/out/concepts/CallQueryComponent__.js +50 -42
- package/out/concepts/CallQueryComponent__.js.map +1 -1
- package/out/concepts/Comment__.d.ts +2 -2
- package/out/concepts/Comment__.js +3 -2
- package/out/concepts/Comment__.js.map +1 -1
- package/out/concepts/CompletionProperty__.js +6 -3
- package/out/concepts/CompletionProperty__.js.map +1 -1
- package/out/concepts/ConfigGroup__.js +6 -3
- package/out/concepts/ConfigGroup__.js.map +1 -1
- package/out/concepts/ConfigProperty__.d.ts +4 -7
- package/out/concepts/ConfigProperty__.js +18 -13
- package/out/concepts/ConfigProperty__.js.map +1 -1
- package/out/concepts/Configuration__.js +6 -3
- package/out/concepts/Configuration__.js.map +1 -1
- package/out/concepts/Connection__.d.ts +4 -7
- package/out/concepts/Connection__.js +12 -8
- package/out/concepts/Connection__.js.map +1 -1
- package/out/concepts/Connector__.js +30 -15
- package/out/concepts/Connector__.js.map +1 -1
- package/out/concepts/Constant__.d.ts +3 -3
- package/out/concepts/Constant__.js +18 -13
- package/out/concepts/Constant__.js.map +1 -1
- package/out/concepts/DataSource__.d.ts +4 -7
- package/out/concepts/DataSource__.js +13 -9
- package/out/concepts/DataSource__.js.map +1 -1
- package/out/concepts/Destination__.d.ts +3 -3
- package/out/concepts/Destination__.js +35 -29
- package/out/concepts/Destination__.js.map +1 -1
- package/out/concepts/End__.d.ts +2 -2
- package/out/concepts/End__.js +17 -13
- package/out/concepts/End__.js.map +1 -1
- package/out/concepts/EntityIndex__.d.ts +2 -2
- package/out/concepts/EntityIndex__.js +4 -3
- package/out/concepts/EntityIndex__.js.map +1 -1
- package/out/concepts/EntityProperty__.d.ts +2 -2
- package/out/concepts/EntityProperty__.js +22 -15
- package/out/concepts/EntityProperty__.js.map +1 -1
- package/out/concepts/Entity__.d.ts +4 -7
- package/out/concepts/Entity__.js +29 -21
- package/out/concepts/Entity__.js.map +1 -1
- package/out/concepts/EnumItem__.d.ts +2 -2
- package/out/concepts/EnumItem__.js +4 -3
- package/out/concepts/EnumItem__.js.map +1 -1
- package/out/concepts/Enum__.d.ts +4 -7
- package/out/concepts/Enum__.js +16 -11
- package/out/concepts/Enum__.js.map +1 -1
- package/out/concepts/Event__.js +6 -3
- package/out/concepts/Event__.js.map +1 -1
- package/out/concepts/ExternalDestination__.d.ts +2 -2
- package/out/concepts/ExternalDestination__.js +13 -8
- package/out/concepts/ExternalDestination__.js.map +1 -1
- package/out/concepts/ForEachStatement__.d.ts +2 -2
- package/out/concepts/ForEachStatement__.js +26 -18
- package/out/concepts/ForEachStatement__.js.map +1 -1
- package/out/concepts/FrontendLibrary__.js +18 -10
- package/out/concepts/FrontendLibrary__.js.map +1 -1
- package/out/concepts/Frontend__.d.ts +4 -7
- package/out/concepts/Frontend__.js +37 -21
- package/out/concepts/Frontend__.js.map +1 -1
- package/out/concepts/Function__.d.ts +3 -3
- package/out/concepts/Function__.js +52 -33
- package/out/concepts/Function__.js.map +1 -1
- package/out/concepts/Identifier__.d.ts +2 -2
- package/out/concepts/Identifier__.js +19 -18
- package/out/concepts/Identifier__.js.map +1 -1
- package/out/concepts/IfStatement__.d.ts +2 -2
- package/out/concepts/IfStatement__.js +18 -13
- package/out/concepts/IfStatement__.js.map +1 -1
- package/out/concepts/Integration__.js +17 -9
- package/out/concepts/Integration__.js.map +1 -1
- package/out/concepts/InterfaceParam__.d.ts +2 -2
- package/out/concepts/InterfaceParam__.js +12 -8
- package/out/concepts/InterfaceParam__.js.map +1 -1
- package/out/concepts/Interface__.d.ts +4 -7
- package/out/concepts/Interface__.js +44 -33
- package/out/concepts/Interface__.js.map +1 -1
- package/out/concepts/JSBlock__.d.ts +2 -2
- package/out/concepts/JSBlock__.js +3 -2
- package/out/concepts/JSBlock__.js.map +1 -1
- package/out/concepts/JavaLogic__.d.ts +2 -2
- package/out/concepts/JavaLogic__.js +6 -2
- package/out/concepts/JavaLogic__.js.map +1 -1
- package/out/concepts/LogicItem__.d.ts +2 -2
- package/out/concepts/LogicItem__.js +7 -3
- package/out/concepts/LogicItem__.js.map +1 -1
- package/out/concepts/Logic__.d.ts +8 -11
- package/out/concepts/Logic__.js +141 -136
- package/out/concepts/Logic__.js.map +1 -1
- package/out/concepts/MatchCase__.d.ts +2 -2
- package/out/concepts/MatchCase__.js +35 -27
- package/out/concepts/MatchCase__.js.map +1 -1
- package/out/concepts/Match__.d.ts +2 -2
- package/out/concepts/Match__.js +29 -24
- package/out/concepts/Match__.js.map +1 -1
- package/out/concepts/MemberExpression__.d.ts +2 -2
- package/out/concepts/MemberExpression__.js +34 -27
- package/out/concepts/MemberExpression__.js.map +1 -1
- package/out/concepts/MetadataType__.d.ts +4 -7
- package/out/concepts/MetadataType__.js +23 -15
- package/out/concepts/MetadataType__.js.map +1 -1
- package/out/concepts/MsgTriggerEvent__.js +6 -3
- package/out/concepts/MsgTriggerEvent__.js.map +1 -1
- package/out/concepts/MsgTriggerLauncher__.js +6 -3
- package/out/concepts/MsgTriggerLauncher__.js.map +1 -1
- package/out/concepts/Namespace__.js +66 -33
- package/out/concepts/Namespace__.js.map +1 -1
- package/out/concepts/NewComposite__.d.ts +5 -5
- package/out/concepts/NewComposite__.js +95 -82
- package/out/concepts/NewComposite__.js.map +1 -1
- package/out/concepts/NewList__.d.ts +5 -5
- package/out/concepts/NewList__.js +42 -32
- package/out/concepts/NewList__.js.map +1 -1
- package/out/concepts/NewMap__.d.ts +4 -4
- package/out/concepts/NewMap__.js +51 -41
- package/out/concepts/NewMap__.js.map +1 -1
- package/out/concepts/New__.d.ts +2 -2
- package/out/concepts/New__.js +3 -2
- package/out/concepts/New__.js.map +1 -1
- package/out/concepts/NullLiteral__.d.ts +2 -2
- package/out/concepts/NullLiteral__.js +2 -2
- package/out/concepts/NullLiteral__.js.map +1 -1
- package/out/concepts/NumericLiteral__.d.ts +2 -2
- package/out/concepts/NumericLiteral__.js +12 -7
- package/out/concepts/NumericLiteral__.js.map +1 -1
- package/out/concepts/OqlQueryComponent__.d.ts +2 -2
- package/out/concepts/OqlQueryComponent__.js +22 -17
- package/out/concepts/OqlQueryComponent__.js.map +1 -1
- package/out/concepts/OverriddenLogic__.d.ts +8 -11
- package/out/concepts/OverriddenLogic__.js +135 -130
- package/out/concepts/OverriddenLogic__.js.map +1 -1
- package/out/concepts/Param__.d.ts +3 -3
- package/out/concepts/Param__.js +29 -24
- package/out/concepts/Param__.js.map +1 -1
- package/out/concepts/ProcessComponent__.js +12 -6
- package/out/concepts/ProcessComponent__.js.map +1 -1
- package/out/concepts/ProcessElement__.d.ts +2 -2
- package/out/concepts/ProcessElement__.js +92 -66
- package/out/concepts/ProcessElement__.js.map +1 -1
- package/out/concepts/ProcessOutcome__.d.ts +2 -1
- package/out/concepts/ProcessOutcome__.js +5 -4
- package/out/concepts/ProcessOutcome__.js.map +1 -1
- package/out/concepts/ProcessOutcomes__.d.ts +2 -1
- package/out/concepts/ProcessOutcomes__.js +6 -5
- package/out/concepts/ProcessOutcomes__.js.map +1 -1
- package/out/concepts/Process__.d.ts +4 -7
- package/out/concepts/Process__.js +51 -34
- package/out/concepts/Process__.js.map +1 -1
- package/out/concepts/QueryAggregateExpression__.d.ts +2 -2
- package/out/concepts/QueryAggregateExpression__.js +8 -5
- package/out/concepts/QueryAggregateExpression__.js.map +1 -1
- package/out/concepts/QueryFieldExpression__.d.ts +2 -2
- package/out/concepts/QueryFieldExpression__.js +5 -4
- package/out/concepts/QueryFieldExpression__.js.map +1 -1
- package/out/concepts/QueryFromExpression__.d.ts +2 -2
- package/out/concepts/QueryFromExpression__.js +14 -9
- package/out/concepts/QueryFromExpression__.js.map +1 -1
- package/out/concepts/QueryGroupByExpression__.d.ts +2 -1
- package/out/concepts/QueryGroupByExpression__.js +12 -8
- package/out/concepts/QueryGroupByExpression__.js.map +1 -1
- package/out/concepts/QueryJoinExpression__.d.ts +2 -2
- package/out/concepts/QueryJoinExpression__.js +18 -13
- package/out/concepts/QueryJoinExpression__.js.map +1 -1
- package/out/concepts/QueryLimitExpression__.d.ts +2 -2
- package/out/concepts/QueryLimitExpression__.js +12 -8
- package/out/concepts/QueryLimitExpression__.js.map +1 -1
- package/out/concepts/QueryOrderByExpression__.d.ts +2 -2
- package/out/concepts/QueryOrderByExpression__.js +12 -8
- package/out/concepts/QueryOrderByExpression__.js.map +1 -1
- package/out/concepts/QuerySelectExpression__.js +6 -3
- package/out/concepts/QuerySelectExpression__.js.map +1 -1
- package/out/concepts/Return__.d.ts +3 -3
- package/out/concepts/Return__.js +21 -16
- package/out/concepts/Return__.js.map +1 -1
- package/out/concepts/Role__.d.ts +4 -7
- package/out/concepts/Role__.js +7 -6
- package/out/concepts/Role__.js.map +1 -1
- package/out/concepts/SelectMembers__.d.ts +2 -2
- package/out/concepts/SelectMembers__.js +9 -5
- package/out/concepts/SelectMembers__.js.map +1 -1
- package/out/concepts/Slot__.js +6 -3
- package/out/concepts/Slot__.js.map +1 -1
- package/out/concepts/SqlQueryComponent__.d.ts +2 -2
- package/out/concepts/SqlQueryComponent__.js +18 -13
- package/out/concepts/SqlQueryComponent__.js.map +1 -1
- package/out/concepts/Start__.d.ts +2 -2
- package/out/concepts/Start__.js +2 -2
- package/out/concepts/Start__.js.map +1 -1
- package/out/concepts/StringInterpolation__.d.ts +2 -2
- package/out/concepts/StringInterpolation__.js +13 -8
- package/out/concepts/StringInterpolation__.js.map +1 -1
- package/out/concepts/StringLiteral__.d.ts +2 -2
- package/out/concepts/StringLiteral__.js +4 -3
- package/out/concepts/StringLiteral__.js.map +1 -1
- package/out/concepts/StructureProperty__.d.ts +2 -2
- package/out/concepts/StructureProperty__.js +14 -10
- package/out/concepts/StructureProperty__.js.map +1 -1
- package/out/concepts/Structure__.d.ts +4 -7
- package/out/concepts/Structure__.js +22 -14
- package/out/concepts/Structure__.js.map +1 -1
- package/out/concepts/SwitchCase__.d.ts +2 -2
- package/out/concepts/SwitchCase__.js +18 -13
- package/out/concepts/SwitchCase__.js.map +1 -1
- package/out/concepts/SwitchStatement__.d.ts +2 -2
- package/out/concepts/SwitchStatement__.js +14 -9
- package/out/concepts/SwitchStatement__.js.map +1 -1
- package/out/concepts/TriggerEvent__.js +6 -3
- package/out/concepts/TriggerEvent__.js.map +1 -1
- package/out/concepts/TriggerLauncher__.d.ts +4 -7
- package/out/concepts/TriggerLauncher__.js +7 -6
- package/out/concepts/TriggerLauncher__.js.map +1 -1
- package/out/concepts/TypeAnnotation__.d.ts +2 -2
- package/out/concepts/TypeAnnotation__.js +61 -29
- package/out/concepts/TypeAnnotation__.js.map +1 -1
- package/out/concepts/TypeParam__.d.ts +2 -2
- package/out/concepts/TypeParam__.js +4 -3
- package/out/concepts/TypeParam__.js.map +1 -1
- package/out/concepts/UnaryExpression__.d.ts +2 -2
- package/out/concepts/UnaryExpression__.js +18 -10
- package/out/concepts/UnaryExpression__.js.map +1 -1
- package/out/concepts/Unparsed__.d.ts +2 -1
- package/out/concepts/Unparsed__.js +2 -2
- package/out/concepts/Unparsed__.js.map +1 -1
- package/out/concepts/ValidationRule__.d.ts +2 -2
- package/out/concepts/ValidationRule__.js +17 -12
- package/out/concepts/ValidationRule__.js.map +1 -1
- package/out/concepts/Variable__.d.ts +5 -8
- package/out/concepts/Variable__.js +23 -18
- package/out/concepts/Variable__.js.map +1 -1
- package/out/concepts/ViewElement__.d.ts +7 -6
- package/out/concepts/ViewElement__.js +139 -101
- package/out/concepts/ViewElement__.js.map +1 -1
- package/out/concepts/View__.d.ts +8 -9
- package/out/concepts/View__.js +73 -62
- package/out/concepts/View__.js.map +1 -1
- package/out/concepts/WhileStatement__.d.ts +2 -2
- package/out/concepts/WhileStatement__.js +9 -7
- package/out/concepts/WhileStatement__.js.map +1 -1
- package/out/manager/diagnostic.d.ts +1 -1
- package/out/manager/diagnostic.js +2 -3
- package/out/manager/diagnostic.js.map +1 -1
- package/out/server/naslServer.d.ts +46 -55
- package/out/server/naslServer.js +302 -449
- package/out/server/naslServer.js.map +1 -1
- package/out/server/translator.js +1 -1
- package/out/server/translator.js.map +1 -1
- package/out/templator/genCreateBlock.js +4 -4
- package/out/templator/genCreateBlock.js.map +1 -1
- package/out/templator/genCurdEditMultipleKeyBlock.js +6 -6
- package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
- package/out/templator/genCurdMultipleKeyBlock.js +4 -4
- package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
- package/out/templator/genEditTableBlock.js +2 -2
- package/out/templator/genEditTableBlock.js.map +1 -1
- package/out/templator/genUpdateBlock.js +4 -4
- package/out/templator/genUpdateBlock.js.map +1 -1
- package/out/translator/types.d.ts +16 -3
- package/out/translator/utils.d.ts +19 -1
- package/out/translator/utils.js +71 -2
- package/out/translator/utils.js.map +1 -1
- package/out/utils/time-slicing/constant.d.ts +35 -0
- package/out/utils/time-slicing/constant.js +40 -0
- package/out/utils/time-slicing/constant.js.map +1 -0
- package/out/utils/time-slicing/controller.d.ts +53 -0
- package/out/utils/time-slicing/controller.js +280 -0
- package/out/utils/time-slicing/controller.js.map +1 -0
- package/out/utils/time-slicing/index.d.ts +5 -0
- package/out/utils/time-slicing/index.js +26 -0
- package/out/utils/time-slicing/index.js.map +1 -0
- package/out/utils/time-slicing/page-state.d.ts +2 -0
- package/out/utils/time-slicing/page-state.js +14 -0
- package/out/utils/time-slicing/page-state.js.map +1 -0
- package/out/utils/time-slicing/performance.d.ts +11 -0
- package/out/utils/time-slicing/performance.js +51 -0
- package/out/utils/time-slicing/performance.js.map +1 -0
- package/out/utils/time-slicing/runner.d.ts +12 -0
- package/out/utils/time-slicing/runner.js +53 -0
- package/out/utils/time-slicing/runner.js.map +1 -0
- package/out/utils/time-slicing/tool.d.ts +24 -0
- package/out/utils/time-slicing/tool.js +47 -0
- package/out/utils/time-slicing/tool.js.map +1 -0
- package/out/utils/time-slicing/utils.d.ts +62 -0
- package/out/utils/time-slicing/utils.js +47 -0
- package/out/utils/time-slicing/utils.js.map +1 -0
- package/out/utils/time-slicing/wrapper.d.ts +18 -0
- package/out/utils/time-slicing/wrapper.js +55 -0
- package/out/utils/time-slicing/wrapper.js.map +1 -0
- package/out/utils/types.d.ts +7 -0
- package/package.json +1 -1
- package/src/bak/translator.js +75 -16
- package/src/common/BaseNode.ts +67 -6
- package/src/common/index.ts +1 -0
- package/src/common/utils.ts +17 -0
- package/src/concepts/Abort__.ts +12 -3
- package/src/concepts/Anchor__.ts +21 -8
- package/src/concepts/AnonymousFunction__.ts +45 -31
- package/src/concepts/App__.ts +137 -69
- package/src/concepts/Argument__.ts +31 -14
- package/src/concepts/Assignee__.ts +42 -21
- package/src/concepts/AssignmentLine__.ts +13 -3
- package/src/concepts/Assignment__.ts +26 -14
- package/src/concepts/Attribute__.ts +6 -3
- package/src/concepts/AuthLogicForCallInterface__.ts +69 -87
- package/src/concepts/BackendVariable__.ts +34 -19
- package/src/concepts/Backend__.ts +33 -12
- package/src/concepts/BatchAssignment__.ts +41 -23
- package/src/concepts/BinaryExpression__.ts +40 -20
- package/src/concepts/BindAttribute__.ts +151 -49
- package/src/concepts/BindDirective__.ts +25 -12
- package/src/concepts/BindEvent__.ts +43 -32
- package/src/concepts/BindStyle__.ts +24 -11
- package/src/concepts/BooleanLiteral__.ts +11 -3
- package/src/concepts/CallAuthInterface__.ts +45 -34
- package/src/concepts/CallConnector__.ts +34 -26
- package/src/concepts/CallFunction__.ts +34 -23
- package/src/concepts/CallInterface__.ts +33 -42
- package/src/concepts/CallLogic__.ts +60 -67
- package/src/concepts/CallQueryComponent__.ts +60 -52
- package/src/concepts/Comment__.ts +13 -3
- package/src/concepts/CompletionProperty__.ts +6 -3
- package/src/concepts/ConfigGroup__.ts +6 -3
- package/src/concepts/ConfigProperty__.ts +28 -15
- package/src/concepts/Configuration__.ts +6 -3
- package/src/concepts/Connection__.ts +28 -9
- package/src/concepts/Connector__.ts +30 -15
- package/src/concepts/Constant__.ts +28 -14
- package/src/concepts/DataSource__.ts +22 -10
- package/src/concepts/Destination__.ts +45 -36
- package/src/concepts/End__.ts +24 -15
- package/src/concepts/EntityIndex__.ts +13 -4
- package/src/concepts/EntityProperty__.ts +33 -17
- package/src/concepts/Entity__.ts +40 -25
- package/src/concepts/EnumItem__.ts +13 -4
- package/src/concepts/Enum__.ts +27 -13
- package/src/concepts/Event__.ts +6 -3
- package/src/concepts/ExternalDestination__.ts +22 -10
- package/src/concepts/ForEachStatement__.ts +36 -20
- package/src/concepts/FrontendLibrary__.ts +18 -10
- package/src/concepts/Frontend__.ts +48 -22
- package/src/concepts/Function__.ts +60 -36
- package/src/concepts/Identifier__.ts +28 -23
- package/src/concepts/IfStatement__.ts +28 -17
- package/src/concepts/Integration__.ts +17 -9
- package/src/concepts/InterfaceParam__.ts +22 -9
- package/src/concepts/Interface__.ts +55 -37
- package/src/concepts/JSBlock__.ts +12 -3
- package/src/concepts/JavaLogic__.ts +13 -3
- package/src/concepts/LogicItem__.ts +13 -4
- package/src/concepts/Logic__.ts +159 -149
- package/src/concepts/MatchCase__.ts +45 -32
- package/src/concepts/Match__.ts +39 -28
- package/src/concepts/MemberExpression__.ts +43 -28
- package/src/concepts/MetadataType__.ts +34 -16
- package/src/concepts/MsgTriggerEvent__.ts +6 -3
- package/src/concepts/MsgTriggerLauncher__.ts +6 -3
- package/src/concepts/Namespace__.ts +66 -33
- package/src/concepts/NewComposite__.ts +106 -87
- package/src/concepts/NewList__.ts +52 -38
- package/src/concepts/NewMap__.ts +61 -48
- package/src/concepts/New__.ts +13 -3
- package/src/concepts/NullLiteral__.ts +11 -3
- package/src/concepts/NumericLiteral__.ts +21 -8
- package/src/concepts/OqlQueryComponent__.ts +32 -21
- package/src/concepts/OverriddenLogic__.ts +153 -143
- package/src/concepts/Param__.ts +48 -34
- package/src/concepts/ProcessComponent__.ts +12 -6
- package/src/concepts/ProcessElement__.ts +102 -76
- package/src/concepts/ProcessOutcome__.ts +16 -8
- package/src/concepts/ProcessOutcomes__.ts +17 -9
- package/src/concepts/Process__.ts +62 -41
- package/src/concepts/QueryAggregateExpression__.ts +17 -6
- package/src/concepts/QueryFieldExpression__.ts +14 -5
- package/src/concepts/QueryFromExpression__.ts +24 -10
- package/src/concepts/QueryGroupByExpression__.ts +20 -9
- package/src/concepts/QueryJoinExpression__.ts +28 -14
- package/src/concepts/QueryLimitExpression__.ts +22 -9
- package/src/concepts/QueryOrderByExpression__.ts +23 -9
- package/src/concepts/QuerySelectExpression__.ts +6 -3
- package/src/concepts/Return__.ts +31 -17
- package/src/concepts/Role__.ts +17 -8
- package/src/concepts/SelectMembers__.ts +19 -6
- package/src/concepts/Slot__.ts +6 -3
- package/src/concepts/SqlQueryComponent__.ts +28 -14
- package/src/concepts/Start__.ts +11 -3
- package/src/concepts/StringInterpolation__.ts +16 -8
- package/src/concepts/StringLiteral__.ts +13 -4
- package/src/concepts/StructureProperty__.ts +24 -11
- package/src/concepts/Structure__.ts +33 -16
- package/src/concepts/SwitchCase__.ts +28 -17
- package/src/concepts/SwitchStatement__.ts +23 -10
- package/src/concepts/TriggerEvent__.ts +6 -3
- package/src/concepts/TriggerLauncher__.ts +17 -7
- package/src/concepts/TypeAnnotation__.ts +46 -30
- package/src/concepts/TypeParam__.ts +13 -4
- package/src/concepts/UnaryExpression__.ts +28 -12
- package/src/concepts/Unparsed__.ts +10 -3
- package/src/concepts/ValidationRule__.ts +27 -20
- package/src/concepts/Variable__.ts +34 -19
- package/src/concepts/ViewElement__.ts +165 -125
- package/src/concepts/View__.ts +108 -89
- package/src/concepts/WhileStatement__.ts +19 -10
- package/src/concepts/types__.ts +1 -1
- package/src/manager/diagnostic.ts +3 -4
- package/src/server/naslServer.ts +676 -729
- package/src/server/translator.ts +1 -1
- package/src/templator/genCreateBlock.ts +4 -4
- package/src/templator/genCurdEditMultipleKeyBlock.ts +6 -6
- package/src/templator/genCurdMultipleKeyBlock.ts +4 -4
- package/src/templator/genEditTableBlock.ts +2 -2
- package/src/templator/genUpdateBlock.ts +4 -4
- package/src/translator/types.ts +20 -5
- package/src/translator/utils.ts +78 -4
- package/src/utils/time-slicing/constant.ts +37 -0
- package/src/utils/time-slicing/controller.ts +342 -0
- package/src/utils/time-slicing/index.ts +6 -0
- package/src/utils/time-slicing/page-state.ts +12 -0
- package/src/utils/time-slicing/performance.ts +56 -0
- package/src/utils/time-slicing/runner.ts +54 -0
- package/src/utils/time-slicing/tool.ts +45 -0
- package/src/utils/time-slicing/utils.ts +90 -0
- package/src/utils/time-slicing/wrapper.ts +58 -0
- package/src/utils/types.ts +9 -0
- package/test/concepts/anonymous-function/__snapshots__/toEmbeddedTS.spec.ts.snap +8 -0
- package/test/concepts/anonymous-function/__snapshots__/toJS.spec.ts.snap +3 -0
- package/test/concepts/anonymous-function/__snapshots__/toVue.spec.ts.snap +6 -0
- package/test/concepts/anonymous-function/constant.ts +5 -0
- package/test/concepts/anonymous-function/fixtures/simple.json +85 -0
- package/test/concepts/anonymous-function/toEmbeddedTS.spec.ts +15 -0
- package/test/concepts/anonymous-function/toJS.spec.ts +14 -0
- package/test/concepts/anonymous-function/toVue.spec.ts +14 -0
- package/test/concepts/assignment/__snapshots__/toEmbeddedTS.spec.ts.snap +21 -0
- package/test/concepts/assignment/__snapshots__/toJS.spec.ts.snap +9 -0
- package/test/concepts/assignment/__snapshots__/toVue.spec.ts.snap +21 -0
- package/test/concepts/assignment/constant.ts +5 -0
- package/test/concepts/assignment/fixtures/both-space.json +4 -0
- package/test/concepts/assignment/fixtures/left-space.json +14 -0
- package/test/concepts/assignment/fixtures/right-space.json +8 -0
- package/test/concepts/assignment/fixtures/simple.json +12 -0
- package/test/concepts/assignment/toEmbeddedTS.spec.ts +15 -0
- package/test/concepts/assignment/toJS.spec.ts +14 -0
- package/test/concepts/assignment/toVue.spec.ts +14 -0
- package/test/concepts/batch-assignment/__snapshots__/toEmbeddedTS.spec.ts.snap +28 -0
- package/test/concepts/batch-assignment/__snapshots__/toJS.spec.ts.snap +13 -0
- package/test/concepts/batch-assignment/__snapshots__/toVue.spec.ts.snap +14 -0
- package/test/concepts/batch-assignment/constant.ts +5 -0
- package/test/concepts/batch-assignment/fixtures/muli-var-muli-value.json +144 -0
- package/test/concepts/batch-assignment/fixtures/simple-var-simple-value.json +36 -0
- package/test/concepts/batch-assignment/toEmbeddedTS.spec.ts +15 -0
- package/test/concepts/batch-assignment/toJS.spec.ts +14 -0
- package/test/concepts/batch-assignment/toVue.spec.ts +14 -0
- package/test/concepts/binary-expression/__snapshots__/toEmbeddedTS.spec.ts.snap +25 -0
- package/test/concepts/binary-expression/__snapshots__/toJS.spec.ts.snap +17 -0
- package/test/concepts/binary-expression/__snapshots__/toVue.spec.ts.snap +19 -0
- package/test/concepts/binary-expression/constant.ts +5 -0
- package/test/concepts/binary-expression/fixtures/constant-nested.json +36 -0
- package/test/concepts/binary-expression/fixtures/constant-simple.json +12 -0
- package/test/concepts/binary-expression/fixtures/variable-nested.json +69 -0
- package/test/concepts/binary-expression/toEmbeddedTS.spec.ts +15 -0
- package/test/concepts/binary-expression/toJS.spec.ts +14 -0
- package/test/concepts/binary-expression/toVue.spec.ts +14 -0
- package/test/concepts/boolean-literal/toEmbeddedTS.spec.ts +4 -3
- package/test/concepts/boolean-literal/toJS.spec.ts +2 -2
- package/test/concepts/boolean-literal/toVue.spec.ts +2 -2
- package/test/concepts/call-function/toEmbeddedTS.spec.ts +2 -1
- package/test/concepts/call-interface/toEmbeddedTS.spec.ts +2 -1
- package/test/concepts/call-logic/getQuickInfoOffset.spec.ts +2 -1
- package/test/concepts/call-logic/toEmbeddedTS.spec.ts +2 -1
- package/test/concepts/data-source/__snapshots__/toEmbeddedTS.spec.ts.snap +8 -0
- package/test/concepts/data-source/__snapshots__/toEmbeddedTSFile.spec.ts.snap +12 -0
- package/test/concepts/data-source/constant.ts +5 -0
- package/test/concepts/data-source/fixtures/normal.json +289 -0
- package/test/concepts/data-source/toEmbeddedTS.spec.ts +15 -0
- package/test/concepts/data-source/toEmbeddedTSFile.spec.ts +16 -0
- package/test/concepts/entity/__snapshots__/toEmbeddedTS.spec.ts.snap +74 -0
- package/test/concepts/entity/__snapshots__/toEmbeddedTSFile.spec.ts.snap +3 -0
- package/test/concepts/entity/constant.ts +5 -0
- package/test/concepts/entity/fixtures/normal.json +469 -0
- package/test/concepts/entity/toEmbeddedTS.spec.ts +15 -0
- package/test/concepts/entity/toEmbeddedTSFile.spec.ts +14 -0
- package/test/concepts/identifier/toEmbeddedTS.spec.ts +4 -3
- package/test/concepts/identifier/toJS.spec.ts +2 -2
- package/test/concepts/identifier/toVue.spec.ts +2 -2
- package/test/concepts/match/toEmbeddedTS.spec.ts +2 -1
- package/test/concepts/member-expression/toEmbeddedTS.spec.ts +2 -1
- package/test/concepts/member-expression/toVue.spec.ts +2 -2
- package/test/concepts/null-literal/toEmbeddedTS.spec.ts +4 -3
- package/test/concepts/null-literal/toJS.spec.ts +2 -2
- package/test/concepts/null-literal/toVue.spec.ts +2 -2
- package/test/concepts/numeric-literal/toEmbeddedTS.spec.ts +4 -3
- package/test/concepts/numeric-literal/toJS.spec.ts +2 -2
- package/test/concepts/numeric-literal/toVue.spec.ts +2 -2
- package/test/concepts/string-literal/toEmbeddedTS.spec.ts +4 -3
- package/test/concepts/string-literal/toJS.spec.ts +2 -2
- package/test/concepts/string-literal/toVue.spec.ts +2 -2
- package/test/concepts/validation-rule/toEmbeddedTS.spec.ts +2 -1
- package/test/concepts/validation-rule/validation-rule.spec.ts +2 -1
- package/test/concepts/view-element/__snapshots__/toVue.spec.ts.snap +0 -2
- package/test/concepts/view-element/toEmbeddedTS.spec.ts +2 -1
- package/test/time-slicing/runner.spec.ts +28 -0
- package/test/time-slicing/time-slicing-nodejs.spec.ts +27 -0
- package/test/time-slicing/utils.ts +7 -0
- package/test/time-slicing/wrapper.spec.ts +92 -0
- package/ts-worker/lib/tsserver.js +10 -1
- package/ts-worker/package.json +1 -0
- package/ts-worker/src/index.js +13 -12
- package/ts-worker/webpack.config.js +1 -1
- package/out/utils/time-slicing.d.ts +0 -41
- package/out/utils/time-slicing.js +0 -82
- package/out/utils/time-slicing.js.map +0 -1
- package/src/utils/time-slicing.ts +0 -111
package/out/server/naslServer.js
CHANGED
|
@@ -183,7 +183,7 @@ let NaslServer = class NaslServer {
|
|
|
183
183
|
handleMessage: async ({ data }) => {
|
|
184
184
|
if (data && data.event === 'publishDiagnostics') {
|
|
185
185
|
const records = await this._resolveDiagnosticRecords(data.records);
|
|
186
|
-
this.diagnosticManager.pushAll(records);
|
|
186
|
+
await this.diagnosticManager.pushAll(records);
|
|
187
187
|
try {
|
|
188
188
|
// 结束诊断和标注
|
|
189
189
|
(0, common_1.invokeCommand)('naslServer:endWork');
|
|
@@ -267,315 +267,103 @@ let NaslServer = class NaslServer {
|
|
|
267
267
|
// 全部文件加载完毕开始初始化
|
|
268
268
|
await this.getDiagnosticRecordsAndPushAll();
|
|
269
269
|
}
|
|
270
|
-
contentToFile(module
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
return;
|
|
270
|
+
*contentToFile(module) {
|
|
271
|
+
if (!module) {
|
|
272
|
+
return [];
|
|
274
273
|
}
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
280
|
-
structure.sourceMap = result.sourceMap;
|
|
281
|
-
this.file2NodeMap.set(result.filePath, structure);
|
|
282
|
-
}
|
|
283
|
-
catch (err) { }
|
|
284
|
-
});
|
|
285
|
-
module.metadataTypes?.forEach((metadataType) => {
|
|
274
|
+
const self = this;
|
|
275
|
+
const results = [];
|
|
276
|
+
const getTsFile = function* getTsFile(node, name, pre) {
|
|
277
|
+
const isContinue = pre ? (input) => input instanceof pre : () => true;
|
|
286
278
|
try {
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
290
|
-
metadataType.sourceMap = result.sourceMap;
|
|
291
|
-
this.file2NodeMap.set(result.filePath, metadataType);
|
|
292
|
-
}
|
|
293
|
-
catch (err) { }
|
|
294
|
-
});
|
|
295
|
-
if (module instanceof concepts_1.App) {
|
|
296
|
-
module.overriddenLogics?.forEach?.((logic) => {
|
|
297
|
-
try {
|
|
298
|
-
if (!(logic instanceof concepts_1.OverriddenLogic))
|
|
299
|
-
return;
|
|
300
|
-
const result = logic.toEmbeddedTSFile();
|
|
301
|
-
results.push(result);
|
|
302
|
-
logic.sourceMap = result.sourceMap;
|
|
303
|
-
this.file2NodeMap.set(result.filePath, logic);
|
|
304
|
-
}
|
|
305
|
-
catch (err) {
|
|
306
|
-
console.error('err: ', err);
|
|
307
|
-
}
|
|
308
|
-
});
|
|
309
|
-
module?.backend?.variables?.forEach((backdndVariable) => {
|
|
310
|
-
try {
|
|
311
|
-
const result = backdndVariable.toEmbeddedTSFile();
|
|
312
|
-
results.push(result);
|
|
313
|
-
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
314
|
-
backdndVariable.sourceMap = result.sourceMap;
|
|
315
|
-
this.file2NodeMap.set(result.filePath, backdndVariable);
|
|
316
|
-
}
|
|
317
|
-
catch (err) {
|
|
318
|
-
console.error(err);
|
|
319
|
-
}
|
|
320
|
-
});
|
|
321
|
-
module.frontends?.forEach((frontend) => {
|
|
322
|
-
try {
|
|
323
|
-
const result = frontend.toEmbeddedTSFile();
|
|
324
|
-
results.push(result);
|
|
325
|
-
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
326
|
-
frontend.sourceMap = result.sourceMap;
|
|
327
|
-
this.file2NodeMap.set(result.filePath, frontend);
|
|
328
|
-
}
|
|
329
|
-
catch (err) {
|
|
330
|
-
console.log(err);
|
|
331
|
-
}
|
|
332
|
-
frontend.variables?.forEach((frontendVariable) => {
|
|
333
|
-
try {
|
|
334
|
-
const result = frontendVariable.toEmbeddedTSFile();
|
|
335
|
-
results.push(result);
|
|
336
|
-
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
337
|
-
frontendVariable.sourceMap = result.sourceMap;
|
|
338
|
-
this.file2NodeMap.set(result.filePath, frontendVariable);
|
|
339
|
-
}
|
|
340
|
-
catch (err) {
|
|
341
|
-
console.log(err);
|
|
342
|
-
}
|
|
343
|
-
});
|
|
344
|
-
frontend.bindEvents?.forEach((bindEvent) => {
|
|
345
|
-
if (bindEvent?.logics && bindEvent?.logics?.length > 0) {
|
|
346
|
-
bindEvent.logics.forEach((logic) => {
|
|
347
|
-
try {
|
|
348
|
-
const result = logic.toEmbeddedTSFile();
|
|
349
|
-
results.push(result);
|
|
350
|
-
logic.sourceMap = result.sourceMap;
|
|
351
|
-
this.file2NodeMap.set(result.filePath, logic);
|
|
352
|
-
}
|
|
353
|
-
catch (err) {
|
|
354
|
-
console.error('err: ', err);
|
|
355
|
-
}
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
|
-
});
|
|
359
|
-
// view的生成
|
|
360
|
-
if (!config_1.config.closeViews) {
|
|
361
|
-
this.view2TSFile(frontend.views, results);
|
|
362
|
-
}
|
|
363
|
-
frontend.componentDependencies?.forEach((item) => this.contentToFile(item, results));
|
|
364
|
-
});
|
|
365
|
-
}
|
|
366
|
-
else {
|
|
367
|
-
module.frontends?.forEach((frontend) => {
|
|
368
|
-
try {
|
|
369
|
-
frontend.logics.forEach((logic) => {
|
|
370
|
-
const result = logic.toEmbeddedTSFile();
|
|
371
|
-
results.push(result);
|
|
372
|
-
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
373
|
-
logic.sourceMap = result.sourceMap;
|
|
374
|
-
this.file2NodeMap.set(result.filePath, logic);
|
|
375
|
-
});
|
|
376
|
-
}
|
|
377
|
-
catch (err) {
|
|
378
|
-
console.log(err);
|
|
279
|
+
if (!isContinue(node)) {
|
|
280
|
+
return;
|
|
379
281
|
}
|
|
380
|
-
|
|
381
|
-
}
|
|
382
|
-
module.dataSources?.forEach((dataSource) => {
|
|
383
|
-
// 本身dataSource也要生成一个文件用于改名
|
|
384
|
-
try {
|
|
385
|
-
const result = dataSource.toEmbeddedTSFile();
|
|
282
|
+
const result = yield* node.toEmbeddedTSFile();
|
|
386
283
|
results.push(result);
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
this.file2NodeMap.set(result.filePath, dataSource);
|
|
284
|
+
node.sourceMap = result.sourceMap;
|
|
285
|
+
self.file2NodeMap.set(result.filePath, node);
|
|
390
286
|
}
|
|
391
|
-
catch (err) {
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
const result = entity.toEmbeddedTSFile();
|
|
395
|
-
results.push(result);
|
|
396
|
-
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
397
|
-
entity.sourceMap = result.sourceMap;
|
|
398
|
-
this.file2NodeMap.set(result.filePath, entity);
|
|
287
|
+
catch (err) {
|
|
288
|
+
if (process.env.NODE_ENV === 'development') {
|
|
289
|
+
console.warn(node.nodePath ? node.nodePath : name, '代码转换失败', err);
|
|
399
290
|
}
|
|
400
|
-
catch (err) { }
|
|
401
|
-
});
|
|
402
|
-
});
|
|
403
|
-
module?.interfaces?.forEach((_interface) => {
|
|
404
|
-
try {
|
|
405
|
-
const result = _interface.toEmbeddedTSFile();
|
|
406
|
-
results.push(result);
|
|
407
|
-
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
408
|
-
_interface.sourceMap = result.sourceMap;
|
|
409
|
-
this.file2NodeMap.set(result.filePath, _interface);
|
|
410
|
-
}
|
|
411
|
-
catch (err) { }
|
|
412
|
-
});
|
|
413
|
-
module?.enums?.forEach((_enum) => {
|
|
414
|
-
try {
|
|
415
|
-
const result = _enum.toEmbeddedTSFile();
|
|
416
|
-
results.push(result);
|
|
417
|
-
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
418
|
-
_enum.sourceMap = result.sourceMap;
|
|
419
|
-
this.file2NodeMap.set(result.filePath, _enum);
|
|
420
291
|
}
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
if (!(logic instanceof concepts_1.Logic))
|
|
426
|
-
return;
|
|
427
|
-
const result = logic.toEmbeddedTSFile();
|
|
428
|
-
results.push(result);
|
|
429
|
-
logic.sourceMap = result.sourceMap;
|
|
430
|
-
this.file2NodeMap.set(result.filePath, logic);
|
|
431
|
-
}
|
|
432
|
-
catch (err) { }
|
|
433
|
-
});
|
|
434
|
-
module?.authLogics?.forEach?.((logic) => {
|
|
435
|
-
try {
|
|
436
|
-
if (!(logic instanceof concepts_1.Logic))
|
|
437
|
-
return;
|
|
438
|
-
const result = logic.toEmbeddedTSFile();
|
|
439
|
-
results.push(result);
|
|
440
|
-
logic.sourceMap = result.sourceMap;
|
|
441
|
-
this.file2NodeMap.set(result.filePath, logic);
|
|
442
|
-
}
|
|
443
|
-
catch (err) { }
|
|
444
|
-
});
|
|
445
|
-
module?.authLogicsForCallInterface?.forEach?.((logic) => {
|
|
446
|
-
try {
|
|
447
|
-
if (!(logic instanceof concepts_1.Logic))
|
|
448
|
-
return;
|
|
449
|
-
const result = logic.toEmbeddedTSFile();
|
|
450
|
-
results.push(result);
|
|
451
|
-
logic.sourceMap = result.sourceMap;
|
|
452
|
-
this.file2NodeMap.set(result.filePath, logic);
|
|
453
|
-
}
|
|
454
|
-
catch (err) { }
|
|
455
|
-
});
|
|
456
|
-
module.processes?.forEach((process) => {
|
|
457
|
-
try {
|
|
458
|
-
const result = process.toEmbeddedTSFile();
|
|
459
|
-
results.push(result);
|
|
460
|
-
process.sourceMap = result.sourceMap;
|
|
461
|
-
this.file2NodeMap.set(result.filePath, process);
|
|
292
|
+
};
|
|
293
|
+
const getTsFiles = function* getTsFiles(nodes, name, pre) {
|
|
294
|
+
for (const node of nodes ?? []) {
|
|
295
|
+
yield* getTsFile(node, name, pre);
|
|
462
296
|
}
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
471
|
-
launcher.sourceMap = result.sourceMap;
|
|
472
|
-
this.file2NodeMap.set(result.filePath, launcher);
|
|
473
|
-
});
|
|
474
|
-
module.namespaces?.forEach?.((namespace) => {
|
|
475
|
-
namespace.logics.forEach((logic) => {
|
|
476
|
-
const result = logic.toEmbeddedTSFile();
|
|
477
|
-
results.push(result);
|
|
478
|
-
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
479
|
-
logic.sourceMap = result.sourceMap;
|
|
480
|
-
this.file2NodeMap.set(result.filePath, logic);
|
|
481
|
-
});
|
|
482
|
-
});
|
|
483
|
-
module?.authLogicsForCallInterface?.forEach?.((logic) => {
|
|
484
|
-
try {
|
|
485
|
-
if (!(logic instanceof concepts_1.Logic))
|
|
486
|
-
return;
|
|
487
|
-
const result = logic.toEmbeddedTSFile();
|
|
488
|
-
results.push(result);
|
|
489
|
-
logic.sourceMap = result.sourceMap;
|
|
490
|
-
this.file2NodeMap.set(result.filePath, logic);
|
|
491
|
-
}
|
|
492
|
-
catch (err) { }
|
|
493
|
-
});
|
|
297
|
+
};
|
|
298
|
+
const concat = (arr, key) => {
|
|
299
|
+
return arr.reduce((ans, item) => ans.concat(item[key]), []);
|
|
300
|
+
};
|
|
301
|
+
const view2TSFile = function* view2TSFile(views) {
|
|
302
|
+
if (!views || views.length === 0) {
|
|
303
|
+
return;
|
|
494
304
|
}
|
|
495
|
-
|
|
496
|
-
|
|
305
|
+
for (const view of views) {
|
|
306
|
+
yield* getTsFile(view, 'view');
|
|
307
|
+
if (view.children) {
|
|
308
|
+
yield* view2TSFile(view.children);
|
|
309
|
+
}
|
|
497
310
|
}
|
|
311
|
+
};
|
|
312
|
+
// 禁用的依赖库不生成代码 区分 undefined 和 false
|
|
313
|
+
if (module instanceof concepts_1.Module && module.type === 'extension' && module.enable === false) {
|
|
314
|
+
return [];
|
|
498
315
|
}
|
|
316
|
+
const { structures = [], metadataTypes = [], frontends = [], interfaces = [], enums = [], logics = [], authLogics = [], authLogicsForCallInterface = [], processes = [], dataSources = [], triggerLaunchers = [], connections = [], roles = [], overriddenLogics = [], backend, configuration, } = module;
|
|
317
|
+
const { namespaces = [], } = module;
|
|
318
|
+
yield* getTsFiles(structures, 'structure');
|
|
319
|
+
yield* getTsFiles(metadataTypes, 'metadataType');
|
|
499
320
|
if (module instanceof concepts_1.App) {
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
321
|
+
yield* getTsFiles(overriddenLogics, 'overriddenLogic', concepts_1.OverriddenLogic);
|
|
322
|
+
yield* getTsFiles(backend?.variables ?? [], 'backend_variable');
|
|
323
|
+
for (const frontend of frontends) {
|
|
324
|
+
yield* getTsFile(frontend, 'frontend');
|
|
325
|
+
yield* getTsFiles(frontend.variables, 'frontend_variable');
|
|
326
|
+
yield* getTsFiles(concat(frontend.bindEvents, 'logics'), 'frontend_bindEvent_logic');
|
|
327
|
+
if (!config_1.config.closeViews) {
|
|
328
|
+
yield* view2TSFile(frontend.views);
|
|
507
329
|
}
|
|
508
|
-
|
|
509
|
-
|
|
330
|
+
for (const dep of frontend.componentDependencies) {
|
|
331
|
+
results.push(...(yield* self.contentToFile(dep)));
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
yield* getTsFiles(concat(frontends, 'logics'), 'frontend_logic');
|
|
337
|
+
}
|
|
338
|
+
yield* getTsFiles(dataSources, 'dataSource');
|
|
339
|
+
yield* getTsFiles(concat(dataSources, 'entities'), 'dataSource_entity');
|
|
340
|
+
yield* getTsFiles(interfaces, 'interface');
|
|
341
|
+
yield* getTsFiles(enums, 'enum');
|
|
342
|
+
yield* getTsFiles(logics, 'logic');
|
|
343
|
+
yield* getTsFiles(authLogics, 'authLogic', concepts_1.Logic);
|
|
344
|
+
yield* getTsFiles(authLogicsForCallInterface, 'authLogicForCallInterface', concepts_1.Logic);
|
|
345
|
+
yield* getTsFiles(processes, 'process');
|
|
346
|
+
if (module instanceof concepts_1.Connector) {
|
|
347
|
+
yield* getTsFiles(triggerLaunchers, 'triggerLauncher');
|
|
348
|
+
yield* getTsFiles(authLogicsForCallInterface, 'authLogicForCallInterface');
|
|
349
|
+
yield* getTsFiles(concat(namespaces, 'logics'), 'namespaces_logic');
|
|
510
350
|
}
|
|
511
351
|
if (module instanceof concepts_1.App) {
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
results.push(result);
|
|
516
|
-
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
517
|
-
connection.sourceMap = result.sourceMap;
|
|
518
|
-
this.file2NodeMap.set(result.filePath, connection);
|
|
519
|
-
}
|
|
520
|
-
catch (err) { }
|
|
521
|
-
});
|
|
522
|
-
module.triggerLaunchers?.forEach?.((triggerLauncher) => {
|
|
523
|
-
try {
|
|
524
|
-
const result = triggerLauncher.toEmbeddedTSFile();
|
|
525
|
-
results.push(result);
|
|
526
|
-
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
527
|
-
triggerLauncher.sourceMap = result.sourceMap;
|
|
528
|
-
this.file2NodeMap.set(result.filePath, triggerLauncher);
|
|
529
|
-
}
|
|
530
|
-
catch (err) { }
|
|
531
|
-
});
|
|
352
|
+
yield* getTsFiles(roles, 'role');
|
|
353
|
+
yield* getTsFiles(connections, 'connection');
|
|
354
|
+
yield* getTsFiles(triggerLaunchers, 'triggerLauncher');
|
|
532
355
|
}
|
|
533
|
-
|
|
534
|
-
if (
|
|
535
|
-
|
|
536
|
-
try {
|
|
537
|
-
const result = _property.toEmbeddedTSFile();
|
|
538
|
-
results.push(result);
|
|
539
|
-
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
540
|
-
_property.sourceMap = result.sourceMap;
|
|
541
|
-
this.file2NodeMap.set(result.filePath, _property);
|
|
542
|
-
}
|
|
543
|
-
catch (err) { }
|
|
544
|
-
});
|
|
356
|
+
for (const group of configuration?.groups ?? []) {
|
|
357
|
+
if (group.name === 'custom') {
|
|
358
|
+
yield* getTsFiles(group?.properties ?? [], 'configuration_group_property');
|
|
545
359
|
}
|
|
546
|
-
});
|
|
547
|
-
}
|
|
548
|
-
view2TSFile(viewsChildren, results) {
|
|
549
|
-
// 如果有子页面
|
|
550
|
-
if (viewsChildren && viewsChildren.length) {
|
|
551
|
-
viewsChildren.forEach((view) => {
|
|
552
|
-
try {
|
|
553
|
-
const result = view.toEmbeddedTSFile();
|
|
554
|
-
results.push(result);
|
|
555
|
-
view.sourceMap = result.sourceMap;
|
|
556
|
-
this.file2NodeMap.set(result.filePath, view);
|
|
557
|
-
if (view.children.length) {
|
|
558
|
-
this.view2TSFile(view.children, results);
|
|
559
|
-
}
|
|
560
|
-
}
|
|
561
|
-
catch (err) { }
|
|
562
|
-
});
|
|
563
360
|
}
|
|
361
|
+
return results;
|
|
564
362
|
}
|
|
565
363
|
async openApp(app) {
|
|
566
364
|
console.time('生成 TS 文件');
|
|
567
|
-
const
|
|
568
|
-
|
|
569
|
-
// app的创建内容
|
|
570
|
-
this.contentToFile(app, results);
|
|
571
|
-
// 其他模块的创建内容
|
|
572
|
-
app.integration?.connectors?.forEach((item) => this.contentToFile(item, results));
|
|
573
|
-
app.dependencies.forEach((item) => this.contentToFile(item, results));
|
|
574
|
-
app.interfaceDependencies.forEach((item) => this.contentToFile(item, results));
|
|
575
|
-
}
|
|
576
|
-
catch (err) {
|
|
577
|
-
console.log(err);
|
|
578
|
-
}
|
|
365
|
+
const self = this;
|
|
366
|
+
const results = await utils.timeSlicingWithGenerator(getAllTsFiles());
|
|
579
367
|
const files = results.map((result) => ({
|
|
580
368
|
file: result.filePath,
|
|
581
369
|
fileContent: result.code,
|
|
@@ -591,6 +379,18 @@ let NaslServer = class NaslServer {
|
|
|
591
379
|
callback();
|
|
592
380
|
});
|
|
593
381
|
console.timeEnd('生成 TS 文件');
|
|
382
|
+
function* getAllTsFiles() {
|
|
383
|
+
const files = yield* self.contentToFile(app);
|
|
384
|
+
const otherModules = [
|
|
385
|
+
...app.integration?.connectors ?? [],
|
|
386
|
+
...app.dependencies ?? [],
|
|
387
|
+
...app.interfaceDependencies ?? [],
|
|
388
|
+
];
|
|
389
|
+
for (const item of otherModules) {
|
|
390
|
+
files.push(...yield* self.contentToFile(item));
|
|
391
|
+
}
|
|
392
|
+
return files;
|
|
393
|
+
}
|
|
594
394
|
}
|
|
595
395
|
async refreshApp(app) {
|
|
596
396
|
// 清除所有问题
|
|
@@ -617,13 +417,19 @@ let NaslServer = class NaslServer {
|
|
|
617
417
|
cacheFile(options) {
|
|
618
418
|
__naslStdlibFileCacheMap.set(options.file, options);
|
|
619
419
|
}
|
|
620
|
-
/**
|
|
420
|
+
/**
|
|
621
421
|
* 只新增文件
|
|
622
422
|
* @param {*} files
|
|
623
423
|
*/
|
|
624
424
|
writeFiles(files) {
|
|
625
425
|
files.forEach(({ file, fileContent }) => this.tsFiles.set(file, fileContent));
|
|
626
|
-
|
|
426
|
+
const noRepeatFiles = Array.from(this.tsFiles.entries()).map(([key, value]) => ({
|
|
427
|
+
file: key,
|
|
428
|
+
fileContent: value,
|
|
429
|
+
}));
|
|
430
|
+
// const newFiles = require('/Users/sufangzhou/dev/neteast/lcap-ide/packages/nasl/tmp/files-original.json');
|
|
431
|
+
// debugger;
|
|
432
|
+
return this.messager.requestCommand('writeFiles', noRepeatFiles);
|
|
627
433
|
}
|
|
628
434
|
/**
|
|
629
435
|
* 新增、修改
|
|
@@ -946,48 +752,48 @@ let NaslServer = class NaslServer {
|
|
|
946
752
|
return;
|
|
947
753
|
node.tsErrorDetail = tsErrorDetail;
|
|
948
754
|
}
|
|
949
|
-
|
|
950
|
-
* 处理诊断结果
|
|
951
|
-
* @param records 结果
|
|
952
|
-
* @returns 过滤或者转换后的诊断结果
|
|
953
|
-
*/
|
|
954
|
-
async _resolveDiagnosticRecords(records) {
|
|
755
|
+
*_resolveDiagnosticRecordsWithGenerator(records) {
|
|
955
756
|
// 热更新类型标注
|
|
956
757
|
if (records.length) {
|
|
957
|
-
|
|
758
|
+
yield* this._incrementalAnnotationJSONWithGenerator(records);
|
|
958
759
|
}
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
760
|
+
const self = this;
|
|
761
|
+
console.time('处理诊断数据');
|
|
762
|
+
yield* utils.wrapForEachToGenerator(records, function* resolveRecord(record) {
|
|
763
|
+
if (!record || !record.node) {
|
|
962
764
|
return;
|
|
765
|
+
}
|
|
766
|
+
const { node } = record;
|
|
963
767
|
// 先获取原来的节点先清除一下之前有异常的节点,下面重新赋值
|
|
964
|
-
const oldRecord =
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
768
|
+
const oldRecord = self.diagnosticManager.getRecord?.(record.id);
|
|
769
|
+
// 处理旧数据
|
|
770
|
+
if (oldRecord) {
|
|
771
|
+
yield* utils.wrapForEachToGenerator(oldRecord.semanticDiagnostics, (item) => {
|
|
772
|
+
if (item.node) {
|
|
773
|
+
delete item.node.tsErrorDetail;
|
|
774
|
+
// 如果logic中有报错就把标识置为true
|
|
775
|
+
if (item.node?.logic?.haveError) {
|
|
776
|
+
item.node.logic.haveError = false;
|
|
777
|
+
}
|
|
971
778
|
}
|
|
972
|
-
}
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
item.node.isSmpty = false;
|
|
779
|
+
});
|
|
780
|
+
yield* utils.wrapForEachToGenerator(oldRecord.suggestionDiagnostics, (item) => {
|
|
781
|
+
if (item.node) {
|
|
782
|
+
delete item.node.tsErrorDetail;
|
|
783
|
+
if (item.node && item.node instanceof concepts_1.Logic) {
|
|
784
|
+
item.node.isSmpty = false;
|
|
785
|
+
}
|
|
980
786
|
}
|
|
981
|
-
}
|
|
982
|
-
}
|
|
787
|
+
});
|
|
788
|
+
}
|
|
983
789
|
// 语义诊断
|
|
984
790
|
if (isChangeInterface) {
|
|
985
|
-
|
|
791
|
+
yield* self.existStructureFix(record.semanticDiagnostics, record.node, self);
|
|
986
792
|
}
|
|
987
793
|
// 单独处理 oql 语义错误提示
|
|
988
794
|
if (record.node instanceof concepts_1.Logic) {
|
|
989
|
-
record?.syntaxDiagnostics
|
|
990
|
-
const minRange =
|
|
795
|
+
yield* utils.wrapForEachToGenerator(record?.syntaxDiagnostics, function* test(item) {
|
|
796
|
+
const minRange = yield* self._findMinRangeWithGenerator(item, record.node);
|
|
991
797
|
if (minRange?.node instanceof concepts_1.OqlQueryComponent) {
|
|
992
798
|
if (item.text === 'Invalid character.') {
|
|
993
799
|
record.semanticDiagnostics.push(item);
|
|
@@ -996,14 +802,15 @@ let NaslServer = class NaslServer {
|
|
|
996
802
|
});
|
|
997
803
|
}
|
|
998
804
|
// 记录结构体数据
|
|
999
|
-
record.semanticDiagnostics
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
805
|
+
yield* utils.wrapForEachToGenerator(record.semanticDiagnostics, (diag) => {
|
|
806
|
+
(0, translator_2.checkAStructure_)(diag.text);
|
|
807
|
+
});
|
|
808
|
+
record.semanticDiagnostics = (yield* utils.wrapMapToGenerator(record.semanticDiagnostics, function* (diag) {
|
|
809
|
+
return yield* self._resolveDiagnosticWithGenerator(diag, record.node, record);
|
|
810
|
+
})).filter((diag) => !!diag);
|
|
811
|
+
record.semanticDiagnostics.push(...(yield* self._attachDiagnosticsWithGenerator(node)));
|
|
1004
812
|
// 报错降级逻辑
|
|
1005
|
-
record.semanticDiagnostics = record.semanticDiagnostics
|
|
1006
|
-
.map((diagnostic) => {
|
|
813
|
+
record.semanticDiagnostics = (yield* utils.wrapMapToGenerator(record.semanticDiagnostics, (diagnostic) => {
|
|
1007
814
|
// 错误降级如果属于草稿态的就降级
|
|
1008
815
|
if (diagnostic?.node) {
|
|
1009
816
|
let currentNode = diagnostic.node;
|
|
@@ -1045,11 +852,10 @@ let NaslServer = class NaslServer {
|
|
|
1045
852
|
}
|
|
1046
853
|
}
|
|
1047
854
|
return diagnostic;
|
|
1048
|
-
})
|
|
855
|
+
}))
|
|
1049
856
|
.filter((diag) => !!diag);
|
|
1050
857
|
// 处理后的警告异常提示信息
|
|
1051
|
-
record.suggestionDiagnostics = record.suggestionDiagnostics
|
|
1052
|
-
.map((diag) => {
|
|
858
|
+
record.suggestionDiagnostics = (yield* utils.wrapMapToGenerator(record.suggestionDiagnostics, function* resolveSuggestionDiagnostic(diag) {
|
|
1053
859
|
// 上面错误降级下来的
|
|
1054
860
|
if (diag?.node) {
|
|
1055
861
|
return diag;
|
|
@@ -1062,7 +868,7 @@ let NaslServer = class NaslServer {
|
|
|
1062
868
|
`'__onlineConfigValueEmpty' is declared but its value is never read.`,
|
|
1063
869
|
`'__UpdateNoProperty__' is declared but its value is never read.`,
|
|
1064
870
|
].includes(diag.text)) {
|
|
1065
|
-
return
|
|
871
|
+
return yield* self._resolveDiagnosticWithGenerator(diag, record.node, record);
|
|
1066
872
|
}
|
|
1067
873
|
if (diag.text.includes(` is declared but its value is never read.`)) {
|
|
1068
874
|
// 局部变量和输入变量未使用的警告
|
|
@@ -1072,10 +878,10 @@ let NaslServer = class NaslServer {
|
|
|
1072
878
|
/**
|
|
1073
879
|
* javalogic不用提示
|
|
1074
880
|
*/
|
|
1075
|
-
if (record.node.concept === 'Logic' &&
|
|
881
|
+
if (record.node.concept === 'Logic' && self._isJavalogic(record.node)) {
|
|
1076
882
|
return null;
|
|
1077
883
|
}
|
|
1078
|
-
const minRange =
|
|
884
|
+
const minRange = yield* self._findMinRangeWithGenerator(diag, record.node);
|
|
1079
885
|
if (minRange) {
|
|
1080
886
|
/**
|
|
1081
887
|
* 如果节点是入参类型
|
|
@@ -1104,12 +910,21 @@ let NaslServer = class NaslServer {
|
|
|
1104
910
|
}
|
|
1105
911
|
}
|
|
1106
912
|
return null;
|
|
1107
|
-
})
|
|
913
|
+
}))
|
|
1108
914
|
.filter((diag) => !!diag);
|
|
1109
|
-
record.suggestionDiagnostics.push(...
|
|
1110
|
-
})
|
|
915
|
+
record.suggestionDiagnostics.push(...yield* self._attachSuggestionDiagnosticsWithGenerator(node));
|
|
916
|
+
});
|
|
917
|
+
console.timeEnd('处理诊断数据');
|
|
1111
918
|
return records;
|
|
1112
919
|
}
|
|
920
|
+
/**
|
|
921
|
+
* 处理诊断结果
|
|
922
|
+
* @param records 结果
|
|
923
|
+
* @returns 过滤或者转换后的诊断结果
|
|
924
|
+
*/
|
|
925
|
+
_resolveDiagnosticRecords(records) {
|
|
926
|
+
return utils.timeSlicingWithGenerator(this._resolveDiagnosticRecordsWithGenerator(records));
|
|
927
|
+
}
|
|
1113
928
|
/**
|
|
1114
929
|
* 判断是否是Javalogic
|
|
1115
930
|
*/
|
|
@@ -1125,7 +940,7 @@ let NaslServer = class NaslServer {
|
|
|
1125
940
|
* @param fileNode 文件级别的节点
|
|
1126
941
|
* @returns 诊断结果
|
|
1127
942
|
*/
|
|
1128
|
-
|
|
943
|
+
*_attachSuggestionDiagnosticsWithGenerator(fileNode) {
|
|
1129
944
|
const diagnostics = [];
|
|
1130
945
|
if (fileNode instanceof concepts_1.Logic || fileNode instanceof concepts_1.View) {
|
|
1131
946
|
fileNode?.sourceMap.forEach((value, node) => {
|
|
@@ -1487,29 +1302,51 @@ let NaslServer = class NaslServer {
|
|
|
1487
1302
|
return flag;
|
|
1488
1303
|
}
|
|
1489
1304
|
/** 是否被 触发器依赖, 如果存在,返回第一个触发器对应的名称 */
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1305
|
+
isRefedByTriggerAndReturnFirstRef(fileNode) {
|
|
1306
|
+
return this._isHaveRef(fileNode).then((refs) => {
|
|
1307
|
+
const basePath = concepts_1.TriggerLauncher.getEmbeddedFileBasePath(fileNode.rootNode);
|
|
1308
|
+
let flag = false;
|
|
1309
|
+
let fRefName = '';
|
|
1310
|
+
try {
|
|
1311
|
+
for (const ref of refs) {
|
|
1312
|
+
const { file } = ref;
|
|
1313
|
+
if (file.startsWith(basePath)) {
|
|
1314
|
+
flag = true;
|
|
1315
|
+
// file: /embedded/tttta/triggerLaunchers/订阅配置_asd.ts
|
|
1316
|
+
fRefName = file.split(basePath)[1].split('.')[0];
|
|
1317
|
+
break;
|
|
1318
|
+
}
|
|
1503
1319
|
}
|
|
1504
1320
|
}
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
};
|
|
1321
|
+
catch (error) {
|
|
1322
|
+
console.error(error, refs);
|
|
1323
|
+
}
|
|
1324
|
+
return {
|
|
1325
|
+
isRefedByTrigger: flag,
|
|
1326
|
+
fRefName,
|
|
1327
|
+
};
|
|
1328
|
+
});
|
|
1329
|
+
// const refs = await this._isHaveRef(fileNode);
|
|
1330
|
+
// const basePath = TriggerLauncher.getEmbeddedFileBasePath(fileNode.rootNode as App);
|
|
1331
|
+
// let flag = false;
|
|
1332
|
+
// let fRefName = '';
|
|
1333
|
+
// try {
|
|
1334
|
+
// for (const ref of refs) {
|
|
1335
|
+
// const { file } = ref;
|
|
1336
|
+
// if (file.startsWith(basePath)) {
|
|
1337
|
+
// flag = true;
|
|
1338
|
+
// // file: /embedded/tttta/triggerLaunchers/订阅配置_asd.ts
|
|
1339
|
+
// fRefName = file.split(basePath)[1].split('.')[0];
|
|
1340
|
+
// break;
|
|
1341
|
+
// }
|
|
1342
|
+
// }
|
|
1343
|
+
// } catch (error) {
|
|
1344
|
+
// console.error(error, refs);
|
|
1345
|
+
// }
|
|
1346
|
+
// return {
|
|
1347
|
+
// isRefedByTrigger: flag,
|
|
1348
|
+
// fRefName,
|
|
1349
|
+
// };
|
|
1513
1350
|
}
|
|
1514
1351
|
/**
|
|
1515
1352
|
* 是否符合 触发器规则
|
|
@@ -1538,15 +1375,16 @@ let NaslServer = class NaslServer {
|
|
|
1538
1375
|
* @param fileNode 文件级别的节点
|
|
1539
1376
|
* @returns 诊断结果
|
|
1540
1377
|
*/
|
|
1541
|
-
|
|
1378
|
+
*_attachDiagnosticsWithGenerator(fileNode) {
|
|
1542
1379
|
// 每次诊断前先清空这个Set
|
|
1543
1380
|
this.logicSetWithComponentLogic = new Set();
|
|
1381
|
+
const self = this;
|
|
1544
1382
|
const diagnostics = [];
|
|
1545
1383
|
if (fileNode instanceof concepts_1.View) {
|
|
1546
|
-
fileNode
|
|
1384
|
+
yield* utils.wrapIteratorToGenerator(fileNode.sourceMap.entries(), function* attachView([node, value]) {
|
|
1547
1385
|
if (node instanceof concepts_1.ViewElement && node.view === fileNode) {
|
|
1548
1386
|
if (node.tag) {
|
|
1549
|
-
node.bindAttrs
|
|
1387
|
+
yield* utils.wrapForEachToGenerator(node.bindAttrs, (bindAttr) => {
|
|
1550
1388
|
if ((bindAttr.model || bindAttr.sync) && bindAttr.expression) {
|
|
1551
1389
|
const bindExpression = bindAttr.expression;
|
|
1552
1390
|
let diagnostic;
|
|
@@ -1592,7 +1430,7 @@ let NaslServer = class NaslServer {
|
|
|
1592
1430
|
if (!node.typeAnnotation && !node.__TypeAnnotation) {
|
|
1593
1431
|
const nodeTypeName = node.concept === 'Return' ? '输出参数' : '局部变量';
|
|
1594
1432
|
let msg;
|
|
1595
|
-
fileNode.
|
|
1433
|
+
yield* fileNode.traverseChildrenGenerator((nodeIn) => {
|
|
1596
1434
|
if (nodeIn && (nodeIn instanceof concepts_1.BatchAssignment || (nodeIn instanceof concepts_1.Assignment && nodeIn.left?.name))) {
|
|
1597
1435
|
// 子页面内部逻辑过滤
|
|
1598
1436
|
if (nodeIn.view !== fileNode)
|
|
@@ -1653,11 +1491,11 @@ let NaslServer = class NaslServer {
|
|
|
1653
1491
|
node.tsErrorDetail = diagnostic;
|
|
1654
1492
|
diagnostics.push(diagnostic);
|
|
1655
1493
|
}
|
|
1656
|
-
const fileSourceCode =
|
|
1494
|
+
const fileSourceCode = self.getNodeCode(fileNode, value);
|
|
1657
1495
|
if (fileSourceCode.includes('|') && fileSourceCode.includes('.metadataTypes.')) {
|
|
1658
1496
|
const typeAnnotation = node.typeAnnotation.toJSON();
|
|
1659
|
-
|
|
1660
|
-
const isDuplicate =
|
|
1497
|
+
self._treeMetadataType2CoreType(typeAnnotation, node.rootNode);
|
|
1498
|
+
const isDuplicate = self._isDuplicateCoreType(typeAnnotation);
|
|
1661
1499
|
if (isDuplicate) {
|
|
1662
1500
|
const diagnostic = {
|
|
1663
1501
|
node: node,
|
|
@@ -1670,7 +1508,7 @@ let NaslServer = class NaslServer {
|
|
|
1670
1508
|
}
|
|
1671
1509
|
else if (node instanceof concepts_1.BindAttribute || node instanceof concepts_1.BindDirective || node instanceof concepts_1.BindStyle) {
|
|
1672
1510
|
if (Array.isArray(node.bindExpressions)) {
|
|
1673
|
-
const exp = node.bindExpressions.find((bindExpression) =>
|
|
1511
|
+
const exp = node.bindExpressions.find((bindExpression) => self.hasComponentLogics(bindExpression));
|
|
1674
1512
|
if (exp) {
|
|
1675
1513
|
// const element: any = node.getAncestor('ViewElement');
|
|
1676
1514
|
// const api = config.allNodesAPI[element?.tag];
|
|
@@ -1694,7 +1532,7 @@ let NaslServer = class NaslServer {
|
|
|
1694
1532
|
}
|
|
1695
1533
|
}
|
|
1696
1534
|
else if (node instanceof concepts_1.CallInterface) {
|
|
1697
|
-
const isAuthInterface =
|
|
1535
|
+
const isAuthInterface = self.hasAuth(node);
|
|
1698
1536
|
const interfaceName = node.calleewholeKey.slice(node.calleewholeKey.lastIndexOf('.') + 1);
|
|
1699
1537
|
if (isAuthInterface) {
|
|
1700
1538
|
const errorMsg = `${interfaceName} 接口有鉴权方式,不支持在前端调用`;
|
|
@@ -1722,7 +1560,7 @@ let NaslServer = class NaslServer {
|
|
|
1722
1560
|
}
|
|
1723
1561
|
}
|
|
1724
1562
|
else {
|
|
1725
|
-
|
|
1563
|
+
self.checkNodeError(node, diagnostics);
|
|
1726
1564
|
}
|
|
1727
1565
|
});
|
|
1728
1566
|
}
|
|
@@ -1731,7 +1569,7 @@ let NaslServer = class NaslServer {
|
|
|
1731
1569
|
if (dataSourceGroup) {
|
|
1732
1570
|
const property = dataSourceGroup.getProperty(fileNode.name);
|
|
1733
1571
|
if (property && property.values) {
|
|
1734
|
-
property.values
|
|
1572
|
+
yield* utils.wrapForEachToGenerator(property.values, (propertyValue) => {
|
|
1735
1573
|
if (!propertyValue.value && fileNode.name !== 'defaultDS') {
|
|
1736
1574
|
const diagnostic = {
|
|
1737
1575
|
node: fileNode,
|
|
@@ -2035,8 +1873,8 @@ let NaslServer = class NaslServer {
|
|
|
2035
1873
|
});
|
|
2036
1874
|
}
|
|
2037
1875
|
}
|
|
2038
|
-
if (fileNode instanceof concepts_1.Logic || fileNode instanceof concepts_1.OverriddenLogic) {
|
|
2039
|
-
const { isRefedByTrigger, fRefName } =
|
|
1876
|
+
else if (fileNode instanceof concepts_1.Logic || fileNode instanceof concepts_1.OverriddenLogic) {
|
|
1877
|
+
const { isRefedByTrigger, fRefName } = yield this.isRefedByTriggerAndReturnFirstRef(fileNode);
|
|
2040
1878
|
if (isRefedByTrigger && !this.isTriggerRule(fileNode)) {
|
|
2041
1879
|
const diagnostic = {
|
|
2042
1880
|
node: fileNode,
|
|
@@ -2045,18 +1883,7 @@ let NaslServer = class NaslServer {
|
|
|
2045
1883
|
};
|
|
2046
1884
|
diagnostics.push(diagnostic);
|
|
2047
1885
|
}
|
|
2048
|
-
fileNode
|
|
2049
|
-
// OQL支持返回复合类型数据了
|
|
2050
|
-
// SqlQueryComponent内部返回值类型,如果是嵌套的就需要报错
|
|
2051
|
-
// if ((node instanceof OqlQueryComponent || node instanceof SqlQueryComponent) && (node as SqlQueryComponent).getTypeBanError()) {
|
|
2052
|
-
// const diagnostic = {
|
|
2053
|
-
// node,
|
|
2054
|
-
// severity: 'error',
|
|
2055
|
-
// message: 'SQL查询:返回类型内部,不支持复杂类型。',
|
|
2056
|
-
// };
|
|
2057
|
-
// node.tsErrorDetail = diagnostic;
|
|
2058
|
-
// diagnostics.push(diagnostic);
|
|
2059
|
-
// }
|
|
1886
|
+
yield* utils.wrapIteratorToGenerator(fileNode.sourceMap.entries(), ([node, value]) => {
|
|
2060
1887
|
if (node instanceof concepts_1.OqlQueryComponent) {
|
|
2061
1888
|
// 自动推导情况
|
|
2062
1889
|
const typeAnnotation = (0, formatTsUtils_1.type2TypeAnnotation)(node.__nodeType);
|
|
@@ -2075,7 +1902,7 @@ let NaslServer = class NaslServer {
|
|
|
2075
1902
|
}
|
|
2076
1903
|
}
|
|
2077
1904
|
}
|
|
2078
|
-
if (node instanceof concepts_1.Return || node instanceof concepts_1.Variable) {
|
|
1905
|
+
else if (node instanceof concepts_1.Return || node instanceof concepts_1.Variable) {
|
|
2079
1906
|
const nodeTypeName = node.concept === 'Return' ? '输出参数' : '局部变量';
|
|
2080
1907
|
if (!node.typeAnnotation && !node.__TypeAnnotation) {
|
|
2081
1908
|
let used = false;
|
|
@@ -2129,7 +1956,7 @@ let NaslServer = class NaslServer {
|
|
|
2129
1956
|
}
|
|
2130
1957
|
}
|
|
2131
1958
|
}
|
|
2132
|
-
if (node instanceof concepts_1.Param) {
|
|
1959
|
+
else if (node instanceof concepts_1.Param) {
|
|
2133
1960
|
const fileSourceCode = this.getNodeCode(fileNode, value);
|
|
2134
1961
|
if (fileSourceCode.includes('|') && fileSourceCode.includes('.metadataTypes.')) {
|
|
2135
1962
|
const typeAnnotation = node.typeAnnotation.toJSON();
|
|
@@ -2149,7 +1976,7 @@ let NaslServer = class NaslServer {
|
|
|
2149
1976
|
});
|
|
2150
1977
|
}
|
|
2151
1978
|
else if (fileNode instanceof concepts_1.Process) {
|
|
2152
|
-
fileNode
|
|
1979
|
+
yield* utils.wrapIteratorToGenerator(fileNode.sourceMap.entries(), ([node, value]) => {
|
|
2153
1980
|
this.checkNodeError(node, diagnostics);
|
|
2154
1981
|
});
|
|
2155
1982
|
}
|
|
@@ -2494,9 +2321,9 @@ let NaslServer = class NaslServer {
|
|
|
2494
2321
|
return tInterface instanceof concepts_1.AuthInterface;
|
|
2495
2322
|
}
|
|
2496
2323
|
/* 接口导入查找 */
|
|
2497
|
-
existStructureFix(semanticDiagnostics, node, that) {
|
|
2324
|
+
*existStructureFix(semanticDiagnostics, node, that) {
|
|
2498
2325
|
let module;
|
|
2499
|
-
|
|
2326
|
+
yield* utils.wrapForEachToGenerator(semanticDiagnostics, (diag) => {
|
|
2500
2327
|
const minRange = this._findMinRange(diag, node);
|
|
2501
2328
|
if (diag.text?.includes('has no exported member named')) {
|
|
2502
2329
|
if (minRange.node instanceof concepts_1.Logic) {
|
|
@@ -2526,7 +2353,6 @@ let NaslServer = class NaslServer {
|
|
|
2526
2353
|
}
|
|
2527
2354
|
return null;
|
|
2528
2355
|
}
|
|
2529
|
-
return diag;
|
|
2530
2356
|
});
|
|
2531
2357
|
if (actionArr.length) {
|
|
2532
2358
|
if (timer)
|
|
@@ -2554,45 +2380,43 @@ let NaslServer = class NaslServer {
|
|
|
2554
2380
|
* @param fileNode 页面节点
|
|
2555
2381
|
* @returns 处理后的结果
|
|
2556
2382
|
*/
|
|
2557
|
-
|
|
2383
|
+
*_resolveDiagnosticWithGenerator(diagnostic, fileNode, record) {
|
|
2558
2384
|
// 拓展模块中的翻译先过滤掉,因为有错用户也不能修改
|
|
2559
2385
|
if ((fileNode.module || fileNode.connector) && !(fileNode instanceof concepts_1.ConfigProperty)) {
|
|
2560
2386
|
return;
|
|
2561
2387
|
}
|
|
2562
|
-
// 过滤掉java依赖库的报错
|
|
2563
|
-
// if ('compilerInfoMap' in fileNode && (fileNode as any).compilerInfoMap?.java) {
|
|
2564
|
-
// return;
|
|
2565
|
-
// }
|
|
2566
2388
|
if (fileNode.concept === 'OverriddenLogic' && diagnostic.text === `'__LogicEmpty' is declared but its value is never read.`) {
|
|
2567
2389
|
return;
|
|
2568
2390
|
}
|
|
2569
|
-
const minRange = this.
|
|
2391
|
+
const minRange = yield* this._findMinRangeWithGenerator(diagnostic, fileNode);
|
|
2570
2392
|
const tsErrorDetail = {
|
|
2571
2393
|
severity: diagnostic.category === 'error' ? 'error' : 'warning',
|
|
2572
2394
|
message: (0, translator_2.translateDiagnosticMessage)(diagnostic.text),
|
|
2573
2395
|
// 保留原来的内容方便查询一些问题
|
|
2574
2396
|
originalDiagnostic: diagnostic,
|
|
2575
2397
|
};
|
|
2398
|
+
yield;
|
|
2576
2399
|
let result;
|
|
2577
2400
|
if (minRange) {
|
|
2578
2401
|
// 节点的error要置为true
|
|
2579
2402
|
result = (0, translator_2.naslNodeTranslateMessage)(minRange, tsErrorDetail);
|
|
2403
|
+
yield;
|
|
2580
2404
|
}
|
|
2581
2405
|
else {
|
|
2582
2406
|
// 没找到节点, 先把问题暴露出来
|
|
2583
2407
|
result = tsErrorDetail;
|
|
2584
2408
|
}
|
|
2585
|
-
if (result)
|
|
2409
|
+
if (result) {
|
|
2586
2410
|
result.id = record.filePath + (result ? JSON.stringify({ start: result.originalDiagnostic.start, end: result.originalDiagnostic.end }) : '');
|
|
2411
|
+
}
|
|
2587
2412
|
return result;
|
|
2588
2413
|
}
|
|
2589
2414
|
/**
|
|
2590
|
-
*
|
|
2591
|
-
*
|
|
2592
|
-
* @
|
|
2593
|
-
* @returns 找到的节点
|
|
2415
|
+
* 查找节点
|
|
2416
|
+
*
|
|
2417
|
+
* @description 生成器原型函数
|
|
2594
2418
|
*/
|
|
2595
|
-
|
|
2419
|
+
*_findMinRangeWithGenerator(diagnostic, fileNode) {
|
|
2596
2420
|
let minRange;
|
|
2597
2421
|
const { sourceMap } = fileNode;
|
|
2598
2422
|
// 是否找到了行内准确的,是的话,就不走多行的
|
|
@@ -2654,15 +2478,26 @@ let NaslServer = class NaslServer {
|
|
|
2654
2478
|
}
|
|
2655
2479
|
}
|
|
2656
2480
|
}
|
|
2481
|
+
yield;
|
|
2657
2482
|
}
|
|
2658
2483
|
if (!minRange) {
|
|
2659
2484
|
if (fileNode instanceof concepts_1.View) {
|
|
2660
2485
|
return { node: fileNode, item: sourceMap.get(fileNode) };
|
|
2661
2486
|
}
|
|
2662
|
-
|
|
2487
|
+
if (process.env.NODE_ENV === 'development') {
|
|
2488
|
+
console.log(minRange, '需要特殊看下,为什么没找到内容-------------');
|
|
2489
|
+
}
|
|
2663
2490
|
}
|
|
2664
2491
|
return minRange;
|
|
2665
2492
|
}
|
|
2493
|
+
/**
|
|
2494
|
+
* 查找节点
|
|
2495
|
+
*
|
|
2496
|
+
* @description 同步模式
|
|
2497
|
+
*/
|
|
2498
|
+
_findMinRange(...args) {
|
|
2499
|
+
return utils.runGeneratorSync(this._findMinRangeWithGenerator(...args));
|
|
2500
|
+
}
|
|
2666
2501
|
/**
|
|
2667
2502
|
* 查看当前节点是不是有引用
|
|
2668
2503
|
* @param node 节点
|
|
@@ -2802,6 +2637,7 @@ let NaslServer = class NaslServer {
|
|
|
2802
2637
|
line: (0, translator_1.lsp2tspNumber)(currentSource.start.line),
|
|
2803
2638
|
offset: (0, translator_1.lsp2tspNumber)(currentSource.start.character),
|
|
2804
2639
|
});
|
|
2640
|
+
// console.log(parentRefs.refs)
|
|
2805
2641
|
refsList = [...refsList, ...parentRefs.refs];
|
|
2806
2642
|
}
|
|
2807
2643
|
// 如果是参数修改, 就需要把logic的引用 都查找出来就需要把他的父级的引用全部查找出来
|
|
@@ -2949,12 +2785,21 @@ let NaslServer = class NaslServer {
|
|
|
2949
2785
|
if (node instanceof concepts_1.Return && node.parentNode instanceof concepts_1.ProcessElement) {
|
|
2950
2786
|
const { currentSource, fileNode } = this.getCurrentSource(node.parentNode);
|
|
2951
2787
|
if (currentSource) {
|
|
2788
|
+
// 流程任务出参查找引用需要查找到流程任务完成逻辑
|
|
2789
|
+
// const parentRefs = await this.references({
|
|
2790
|
+
// file: (fileNode as FileNode).getEmbeddedFilePath(),
|
|
2791
|
+
// line: lsp2tspNumber(currentSource.start.line),
|
|
2792
|
+
// offset: lsp2tspNumber(currentSource.start.character),
|
|
2793
|
+
// });
|
|
2794
|
+
// refsList = [...refsList, ...parentRefs.refs];
|
|
2795
|
+
// console.log(parentRefs.refs)
|
|
2796
|
+
// 流程任务出参查找引用比较特殊,需要查找到 const process = {...} 的引用
|
|
2952
2797
|
const code = this.getNodeCode(fileNode, currentSource);
|
|
2953
2798
|
const prefix = '__ProcessIdentification__';
|
|
2954
2799
|
const positions = [];
|
|
2955
2800
|
let pos = code.indexOf(prefix);
|
|
2956
2801
|
// 需要再次定位到processelement对象上,避免process上存在同名参数
|
|
2957
|
-
pos = code.indexOf(node.parentNode.name, pos + prefix.length);
|
|
2802
|
+
pos = pos === -1 ? pos : code.indexOf(node.parentNode.name, pos + prefix.length);
|
|
2958
2803
|
pos = pos === -1 ? pos : code.indexOf(node.name, pos + prefix.length);
|
|
2959
2804
|
// pos === -1:两种情况:
|
|
2960
2805
|
// 1、找到最后一个节点了,继续找找不下去了。
|
|
@@ -3852,26 +3697,25 @@ let NaslServer = class NaslServer {
|
|
|
3852
3697
|
}
|
|
3853
3698
|
}
|
|
3854
3699
|
/**
|
|
3855
|
-
* 获取传入节点的TypeAnnotation
|
|
3856
|
-
*
|
|
3857
|
-
* @
|
|
3858
|
-
* 普通的TypeAnnotation,额外的可能携带 option
|
|
3859
|
-
* 这里会处理callloigc callinterface 和 callfuntion 的 argment的参数一起携带回去,
|
|
3860
|
-
* 也就是说如果 只传入了这个也会一起返回argment的节点,所以返回map最好去get结果
|
|
3700
|
+
* 获取传入节点的 TypeAnnotation
|
|
3701
|
+
*
|
|
3702
|
+
* @description 生成器模式原型
|
|
3861
3703
|
*/
|
|
3862
|
-
|
|
3704
|
+
*_getQuickInfoNodesTypeMapWithGenerator(nodes) {
|
|
3705
|
+
const self = this;
|
|
3863
3706
|
const args = [];
|
|
3864
3707
|
// 要通过自己或者依赖关系拿的
|
|
3865
3708
|
const getFromOthers = new Map();
|
|
3866
3709
|
// 总共要返回出去的
|
|
3867
3710
|
const types = new Map();
|
|
3868
3711
|
const newQuickInfoNodes = [];
|
|
3869
|
-
|
|
3712
|
+
yield* utils.wrapForEachToGenerator(nodes, function* getQuickInfoPosition(itemDetail, index) {
|
|
3870
3713
|
const { node, filePath, item } = itemDetail;
|
|
3871
3714
|
// 先按照顺序占位
|
|
3872
3715
|
types.set(node, null);
|
|
3873
3716
|
// 获取已知节点类型的类型
|
|
3874
|
-
const nodeTypeAnnotation =
|
|
3717
|
+
const nodeTypeAnnotation = self.getCurrentNodeKnownTypeAnnotation(node);
|
|
3718
|
+
yield;
|
|
3875
3719
|
if (nodeTypeAnnotation) {
|
|
3876
3720
|
types.set(node, nodeTypeAnnotation);
|
|
3877
3721
|
return;
|
|
@@ -3919,12 +3763,13 @@ let NaslServer = class NaslServer {
|
|
|
3919
3763
|
offset: (0, translator_1.lsp2tspNumber)(item.start.character),
|
|
3920
3764
|
};
|
|
3921
3765
|
const getCode = (range) => {
|
|
3922
|
-
return
|
|
3766
|
+
return self.tsFiles.get(filePath)?.slice(range.start.offset, range.end.offset) ?? '';
|
|
3923
3767
|
};
|
|
3924
3768
|
// 位置计算偏移
|
|
3925
3769
|
if ('getQuickInfoOffset' in node) {
|
|
3926
3770
|
Object.assign(fileDetail, node.getQuickInfoOffset(fileDetail, getCode(item)));
|
|
3927
3771
|
}
|
|
3772
|
+
yield;
|
|
3928
3773
|
// 位置计算偏移2
|
|
3929
3774
|
// TODO: 之后考虑把这些偏移量计算全都挪到节点内部去
|
|
3930
3775
|
if (node.concept === 'BinaryExpression' ||
|
|
@@ -3991,9 +3836,9 @@ let NaslServer = class NaslServer {
|
|
|
3991
3836
|
fileDetail.offset += 10;
|
|
3992
3837
|
}
|
|
3993
3838
|
args.push(fileDetail);
|
|
3994
|
-
}
|
|
3995
|
-
const resultMap = (
|
|
3996
|
-
|
|
3839
|
+
});
|
|
3840
|
+
const resultMap = (yield this.getNaslNodeTypeFull(args))?.response;
|
|
3841
|
+
yield* utils.wrapForEachToGenerator(args, ({ file, line, offset }, index) => {
|
|
3997
3842
|
const item = resultMap?.[file]?.[line]?.[offset];
|
|
3998
3843
|
const itemType = item?.[0]?.nodeType;
|
|
3999
3844
|
const nodeTypeAnnotation = (0, formatTsUtils_1.type2TypeAnnotation)(itemType);
|
|
@@ -4006,8 +3851,8 @@ let NaslServer = class NaslServer {
|
|
|
4006
3851
|
else {
|
|
4007
3852
|
delete node.__nodeType;
|
|
4008
3853
|
}
|
|
4009
|
-
}
|
|
4010
|
-
|
|
3854
|
+
});
|
|
3855
|
+
yield* utils.wrapIteratorToGenerator(getFromOthers.entries(), function* ([node]) {
|
|
4011
3856
|
if (node instanceof concepts_1.Assignment) {
|
|
4012
3857
|
if (!types.get(node.left)) {
|
|
4013
3858
|
types.set(node.left, types.get(node.right));
|
|
@@ -4015,7 +3860,7 @@ let NaslServer = class NaslServer {
|
|
|
4015
3860
|
}
|
|
4016
3861
|
else if (node instanceof concepts_1.Argument) {
|
|
4017
3862
|
// 如果Argument,但是没可以用的类型,就用原来logic的参数类型
|
|
4018
|
-
const argType =
|
|
3863
|
+
const argType = yield* self.getArgumentTypeAnnotationWithGenerator(node, newQuickInfoNodes, types);
|
|
4019
3864
|
types.set(node, argType);
|
|
4020
3865
|
}
|
|
4021
3866
|
else if (node instanceof concepts_1.MatchCase) {
|
|
@@ -4028,8 +3873,8 @@ let NaslServer = class NaslServer {
|
|
|
4028
3873
|
}
|
|
4029
3874
|
}
|
|
4030
3875
|
}
|
|
4031
|
-
}
|
|
4032
|
-
|
|
3876
|
+
});
|
|
3877
|
+
yield* utils.wrapIteratorToGenerator(types.entries(), ([node, value]) => {
|
|
4033
3878
|
try {
|
|
4034
3879
|
// 因为node可能是经过处理的TypeAnnotation
|
|
4035
3880
|
node.__isCorrectTypeAnnotation = true;
|
|
@@ -4064,9 +3909,15 @@ let NaslServer = class NaslServer {
|
|
|
4064
3909
|
// console.log(err);
|
|
4065
3910
|
// }
|
|
4066
3911
|
}
|
|
4067
|
-
}
|
|
3912
|
+
});
|
|
4068
3913
|
return types;
|
|
4069
3914
|
}
|
|
3915
|
+
/**
|
|
3916
|
+
* 获取传入节点的 TypeAnnotation
|
|
3917
|
+
*/
|
|
3918
|
+
getQuickInfoNodesTypeMap(nodes, flag) {
|
|
3919
|
+
return utils.runGeneratorAsync(this._getQuickInfoNodesTypeMapWithGenerator(nodes));
|
|
3920
|
+
}
|
|
4070
3921
|
// 全量标注并且返回json
|
|
4071
3922
|
async getNaslAnnotatedJSON(app, releaseFlag) {
|
|
4072
3923
|
if (this.changeStackList?.length) {
|
|
@@ -4096,27 +3947,29 @@ let NaslServer = class NaslServer {
|
|
|
4096
3947
|
return json;
|
|
4097
3948
|
}
|
|
4098
3949
|
// 增量标注
|
|
4099
|
-
|
|
3950
|
+
*_incrementalAnnotationJSONWithGenerator(records) {
|
|
4100
3951
|
console.time('增量标注');
|
|
4101
3952
|
const nodes = [];
|
|
4102
|
-
|
|
4103
|
-
|
|
4104
|
-
|
|
3953
|
+
const self = this;
|
|
3954
|
+
yield* utils.wrapForEachToGenerator(records, function* findNodePosition(record) {
|
|
3955
|
+
const fileNode = self.file2NodeMap.get(record.filePath);
|
|
3956
|
+
if (!fileNode) {
|
|
4105
3957
|
return;
|
|
3958
|
+
}
|
|
4106
3959
|
record.id = fileNode.id;
|
|
4107
3960
|
record.node = fileNode;
|
|
4108
|
-
if (
|
|
4109
|
-
|
|
4110
|
-
fileNode.sourceMap.forEach((item, nodeItem) => {
|
|
4111
|
-
nodes.push({
|
|
4112
|
-
filePath: record.filePath,
|
|
4113
|
-
node: nodeItem,
|
|
4114
|
-
item,
|
|
4115
|
-
});
|
|
4116
|
-
});
|
|
3961
|
+
if (['Structure', 'DataSource', 'Entity', 'Enum', 'Role', 'MetadataType'].includes(fileNode.concept) || !fileNode.sourceMap) {
|
|
3962
|
+
return;
|
|
4117
3963
|
}
|
|
3964
|
+
yield* utils.wrapIteratorToGenerator(fileNode.sourceMap.entries(), ([nodeItem, item]) => {
|
|
3965
|
+
nodes.push({
|
|
3966
|
+
filePath: record.filePath,
|
|
3967
|
+
node: nodeItem,
|
|
3968
|
+
item,
|
|
3969
|
+
});
|
|
3970
|
+
});
|
|
4118
3971
|
});
|
|
4119
|
-
|
|
3972
|
+
yield* this._getQuickInfoNodesTypeMapWithGenerator(nodes);
|
|
4120
3973
|
console.timeEnd('增量标注');
|
|
4121
3974
|
}
|
|
4122
3975
|
annotationToJson(typesMap, json) {
|
|
@@ -4234,7 +4087,7 @@ let NaslServer = class NaslServer {
|
|
|
4234
4087
|
* 如果内部表达式的,就用表达式的,如果没有就试试用默认值的
|
|
4235
4088
|
* 获取logic的默认值和原来Arg的类型和默认值对应
|
|
4236
4089
|
*/
|
|
4237
|
-
|
|
4090
|
+
*getArgumentTypeAnnotationWithGenerator(node, QuickInfoNodes, types) {
|
|
4238
4091
|
// 直接复用内部expression的type类型
|
|
4239
4092
|
if (node.parentNode instanceof concepts_1.CallLogic &&
|
|
4240
4093
|
node.parentNode.calleeNamespace?.includes('entities') &&
|
|
@@ -4252,6 +4105,7 @@ let NaslServer = class NaslServer {
|
|
|
4252
4105
|
};
|
|
4253
4106
|
}
|
|
4254
4107
|
}
|
|
4108
|
+
yield;
|
|
4255
4109
|
}
|
|
4256
4110
|
// 获取返回值结果里找到父级的callLogic || CallInterface的类型填充进去Argument
|
|
4257
4111
|
const App = node.app;
|
|
@@ -4267,6 +4121,7 @@ let NaslServer = class NaslServer {
|
|
|
4267
4121
|
}
|
|
4268
4122
|
// 用户自己声明的用用户的
|
|
4269
4123
|
const callObj = App.findNodeByCompleteName(`${parent.calleeNamespace}.${parent.calleeName}`);
|
|
4124
|
+
yield;
|
|
4270
4125
|
const index = parent.arguments.indexOf(node);
|
|
4271
4126
|
const param = callObj?.params?.[index] || {};
|
|
4272
4127
|
// 取出参数的类型
|
|
@@ -4531,7 +4386,7 @@ let NaslServer = class NaslServer {
|
|
|
4531
4386
|
const fileNodeChildren = [...fileNode.views, ...fileNode.variables];
|
|
4532
4387
|
for (let i = 0; i < fileNodeChildren.length; i++) {
|
|
4533
4388
|
const fileNodeItem = fileNodeChildren[i];
|
|
4534
|
-
const result = fileNodeItem.toEmbeddedTSFile();
|
|
4389
|
+
const result = await utils.timeSlicingWithGenerator(fileNodeItem.toEmbeddedTSFile());
|
|
4535
4390
|
fileNodeItem.sourceMap = result.sourceMap;
|
|
4536
4391
|
if (action === 'create') {
|
|
4537
4392
|
await this.handleChange(fileNodeItem, fileNodeItem, result, action);
|
|
@@ -4556,7 +4411,7 @@ let NaslServer = class NaslServer {
|
|
|
4556
4411
|
const fileNodeChildren = fileNode.children;
|
|
4557
4412
|
for (let i = 0; i < fileNodeChildren.length; i++) {
|
|
4558
4413
|
const fileNodeItem = fileNodeChildren[i];
|
|
4559
|
-
const result = fileNodeItem.toEmbeddedTSFile();
|
|
4414
|
+
const result = await utils.timeSlicingWithGenerator(fileNodeItem.toEmbeddedTSFile());
|
|
4560
4415
|
fileNodeItem.sourceMap = result.sourceMap;
|
|
4561
4416
|
if (action === 'create') {
|
|
4562
4417
|
await this.handleChange(fileNodeItem, fileNodeItem, result, action);
|
|
@@ -4582,8 +4437,7 @@ let NaslServer = class NaslServer {
|
|
|
4582
4437
|
isChangeInterface = true;
|
|
4583
4438
|
}
|
|
4584
4439
|
const module = targetNode;
|
|
4585
|
-
const results =
|
|
4586
|
-
this.contentToFile(module, results);
|
|
4440
|
+
const results = await utils.timeSlicingWithGenerator(this.contentToFile(module));
|
|
4587
4441
|
for (let i = 0; i < results.length; i++) {
|
|
4588
4442
|
const result = results[i];
|
|
4589
4443
|
const node = this.file2NodeMap.get(result.filePath);
|
|
@@ -4611,7 +4465,7 @@ let NaslServer = class NaslServer {
|
|
|
4611
4465
|
if (fileNode instanceof concepts_1.DataSource) {
|
|
4612
4466
|
fileNode.entities.forEach(async (entity) => {
|
|
4613
4467
|
try {
|
|
4614
|
-
const result = entity.toEmbeddedTSFile();
|
|
4468
|
+
const result = await utils.timeSlicingWithGenerator(entity.toEmbeddedTSFile());
|
|
4615
4469
|
const parentPath = oldpath.replace('.ts', '/');
|
|
4616
4470
|
const currentOldPath = `${parentPath}/entities/${entity.name}.ts`;
|
|
4617
4471
|
// 因为重命名这里只有当前修改父级的 旧名称, 所以他的子集也要根据旧名称去查依赖 更新内容
|
|
@@ -4647,17 +4501,19 @@ let NaslServer = class NaslServer {
|
|
|
4647
4501
|
}
|
|
4648
4502
|
return;
|
|
4649
4503
|
}
|
|
4504
|
+
// debugger;
|
|
4650
4505
|
if (process.env.NODE_ENV === 'development') {
|
|
4651
4506
|
console.time('重新生成 TS 文件');
|
|
4652
4507
|
}
|
|
4653
|
-
const
|
|
4508
|
+
const fileTsPath = fileNode.getEmbeddedFilePath();
|
|
4509
|
+
const result = await utils.timeSlicingWithGenerator(fileNode.toEmbeddedTSFile());
|
|
4654
4510
|
if (process.env.NODE_ENV === 'development') {
|
|
4655
4511
|
console.timeEnd('重新生成 TS 文件');
|
|
4656
|
-
console.log('重新生成 TS 文件',
|
|
4512
|
+
console.log('重新生成 TS 文件', fileTsPath);
|
|
4657
4513
|
}
|
|
4658
4514
|
// 当前操作的节点
|
|
4659
4515
|
// 如果当前没有生成tsFile
|
|
4660
|
-
if (!result) {
|
|
4516
|
+
if (!result.sourceMap) {
|
|
4661
4517
|
return;
|
|
4662
4518
|
}
|
|
4663
4519
|
// 修改触发修改文件
|
|
@@ -4719,9 +4575,6 @@ __decorate([
|
|
|
4719
4575
|
__decorate([
|
|
4720
4576
|
(0, decorators_1.withQueueExecute)('annotation')
|
|
4721
4577
|
], NaslServer.prototype, "getNaslAnnotatedJSON", null);
|
|
4722
|
-
__decorate([
|
|
4723
|
-
(0, decorators_1.withQueueExecute)('annotation')
|
|
4724
|
-
], NaslServer.prototype, "IncrementalAnnotationJSON", null);
|
|
4725
4578
|
NaslServer = __decorate([
|
|
4726
4579
|
sentry_1.sentryMonitorNaslServer
|
|
4727
4580
|
], NaslServer);
|