@lcap/nasl 3.3.3-beta.8 → 3.3.6-beta.1
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/.nyc_output/{78804420-ead6-486f-b682-ab54ccd95dc9.json → d58d92d8-c0d6-479b-9f82-1f4da8e73ff3.json} +1 -1
- package/.nyc_output/processinfo/d58d92d8-c0d6-479b-9f82-1f4da8e73ff3.json +1 -0
- package/.nyc_output/processinfo/index.json +1 -1
- package/coverage/index.html +126 -141
- package/coverage/src/automate/engine/index.html +1 -1
- package/coverage/src/automate/engine/utils.js.html +36 -36
- package/coverage/src/bak/index.html +14 -14
- package/coverage/src/bak/translator.js.html +57 -393
- package/coverage/src/breakpoint/generator/AfterStartNode.ts.html +1 -1
- package/coverage/src/breakpoint/generator/BeforeEndNode.ts.html +1 -1
- package/coverage/src/breakpoint/generator/BreakpointNode.ts.html +1 -1
- package/coverage/src/breakpoint/generator/CallbackNode.ts.html +1 -1
- package/coverage/src/breakpoint/generator/index.html +1 -1
- package/coverage/src/breakpoint/generator/index.ts.html +1 -1
- package/coverage/src/breakpoint/index.html +1 -1
- package/coverage/src/breakpoint/index.ts.html +1 -1
- package/coverage/src/breakpoint/shared/constants.ts.html +1 -1
- package/coverage/src/breakpoint/shared/index.html +1 -1
- package/coverage/src/breakpoint/shared/index.ts.html +1 -1
- package/coverage/src/breakpoint/shared/operations.ts.html +2 -2
- package/coverage/src/breakpoint/shared/socket.ts.html +1 -1
- package/coverage/src/breakpoint/shared/utils.ts.html +1 -1
- package/coverage/src/breakpoint/store/core.ts.html +3 -3
- package/coverage/src/breakpoint/store/dock.ts.html +1 -1
- package/coverage/src/breakpoint/store/index.html +1 -1
- package/coverage/src/breakpoint/store/index.ts.html +1 -1
- package/coverage/src/common/BaseNode.ts.html +164 -593
- package/coverage/src/common/Command.ts.html +1 -1
- package/coverage/src/common/EventEmitter.ts.html +31 -31
- package/coverage/src/common/Messager.ts.html +1 -1
- package/coverage/src/common/asyncFuncMap.ts.html +1 -1
- package/coverage/src/common/index.html +23 -38
- package/coverage/src/common/index.ts.html +4 -7
- package/coverage/src/concepts/Abort__.ts.html +9 -39
- package/coverage/src/concepts/Anchor__.ts.html +29 -86
- package/coverage/src/concepts/AnonymousFunction__.ts.html +169 -262
- package/coverage/src/concepts/App__.ts.html +152 -1205
- package/coverage/src/concepts/Argument__.ts.html +53 -137
- package/coverage/src/concepts/Assignee__.ts.html +34 -124
- package/coverage/src/concepts/AssignmentLine__.ts.html +15 -48
- package/coverage/src/concepts/Assignment__.ts.html +81 -213
- package/coverage/src/concepts/Attribute__.ts.html +14 -41
- package/coverage/src/concepts/AuthInterface__.ts.html +6 -9
- package/coverage/src/concepts/AuthLogicForCallInterface__.ts.html +144 -108
- package/coverage/src/concepts/AuthLogic__.ts.html +6 -18
- package/coverage/src/concepts/BackendVariable__.ts.html +48 -168
- package/coverage/src/concepts/Backend__.ts.html +28 -106
- package/coverage/src/concepts/BatchAssignment__.ts.html +169 -274
- package/coverage/src/concepts/BinaryExpression__.ts.html +129 -285
- package/coverage/src/concepts/BindAttribute__.ts.html +111 -522
- package/coverage/src/concepts/BindDirective__.ts.html +26 -131
- package/coverage/src/concepts/BindEvent__.ts.html +64 -160
- package/coverage/src/concepts/BindStyle__.ts.html +21 -78
- package/coverage/src/concepts/BooleanLiteral__.ts.html +20 -47
- package/coverage/src/concepts/CallAuthInterface__.ts.html +48 -105
- package/coverage/src/concepts/CallConnector__.ts.html +35 -62
- package/coverage/src/concepts/CallFunction__.ts.html +144 -288
- package/coverage/src/concepts/CallInterface__.ts.html +60 -93
- package/coverage/src/concepts/CallLogic__.ts.html +343 -292
- package/coverage/src/concepts/CallQueryComponent__.ts.html +93 -126
- package/coverage/src/concepts/Comment__.ts.html +10 -43
- package/coverage/src/concepts/CompletionProperty__.ts.html +13 -40
- package/coverage/src/concepts/ConfigGroup__.ts.html +20 -47
- package/coverage/src/concepts/ConfigPropertyValue__.ts.html +19 -22
- package/coverage/src/concepts/ConfigProperty__.ts.html +40 -97
- package/coverage/src/concepts/Configuration__.ts.html +21 -48
- package/coverage/src/concepts/Connection__.ts.html +22 -97
- package/coverage/src/concepts/ConnectorTrigger__.ts.html +6 -9
- package/coverage/src/concepts/Connector__.ts.html +38 -161
- package/coverage/src/concepts/Constant__.ts.html +24 -84
- package/coverage/src/concepts/DataSource__.ts.html +57 -111
- package/coverage/src/concepts/DatabaseTypeAnnotation__.ts.html +6 -9
- package/coverage/src/concepts/Destination__.ts.html +55 -97
- package/coverage/src/concepts/End__.ts.html +21 -51
- package/coverage/src/concepts/EntityIndex__.ts.html +10 -40
- package/coverage/src/concepts/EntityProperty__.ts.html +56 -164
- package/coverage/src/concepts/Entity__.ts.html +89 -167
- package/coverage/src/concepts/EnumItem__.ts.html +10 -40
- package/coverage/src/concepts/Enum__.ts.html +24 -84
- package/coverage/src/concepts/Event__.ts.html +14 -41
- package/coverage/src/concepts/ExternalDestination__.ts.html +21 -75
- package/coverage/src/concepts/ForEachStatement__.ts.html +64 -139
- package/coverage/src/concepts/FrontendLibrary__.ts.html +20 -71
- package/coverage/src/concepts/FrontendVariable__.ts.html +1 -1
- package/coverage/src/concepts/Frontend__.ts.html +57 -213
- package/coverage/src/concepts/Function__.ts.html +86 -239
- package/coverage/src/concepts/Identifier__.ts.html +72 -111
- package/coverage/src/concepts/IfStatement__.ts.html +75 -138
- package/coverage/src/concepts/Integration__.ts.html +19 -70
- package/coverage/src/concepts/InterfaceParam__.ts.html +21 -78
- package/coverage/src/concepts/Interface__.ts.html +60 -162
- package/coverage/src/concepts/JSBlock__.ts.html +11 -215
- package/coverage/src/concepts/JavaLogic__.ts.html +9 -42
- package/coverage/src/concepts/LogicItem__.ts.html +21 -51
- package/coverage/src/concepts/Logic__.ts.html +321 -405
- package/coverage/src/concepts/MatchCase__.ts.html +97 -181
- package/coverage/src/concepts/Match__.ts.html +59 -116
- package/coverage/src/concepts/MemberExpression__.ts.html +128 -182
- package/coverage/src/concepts/MicroApp__.ts.html +6 -9
- package/coverage/src/concepts/Module__.ts.html +18 -672
- package/coverage/src/concepts/MsgTriggerEvent__.ts.html +14 -41
- package/coverage/src/concepts/MsgTriggerLauncher__.ts.html +14 -41
- package/coverage/src/concepts/Namespace__.ts.html +91 -358
- package/coverage/src/concepts/NewComposite__.ts.html +125 -278
- package/coverage/src/concepts/NewList__.ts.html +57 -195
- package/coverage/src/concepts/NewMap__.ts.html +63 -168
- package/coverage/src/concepts/New__.ts.html +9 -39
- package/coverage/src/concepts/NullLiteral__.ts.html +9 -36
- package/coverage/src/concepts/NumericLiteral__.ts.html +33 -90
- package/coverage/src/concepts/OqlQueryComponent__.ts.html +35 -161
- package/coverage/src/concepts/OverriddenLogic__.ts.html +201 -324
- package/coverage/src/concepts/Param__.ts.html +75 -189
- package/coverage/src/concepts/Point__.ts.html +6 -9
- package/coverage/src/concepts/ProcessComponent__.ts.html +21 -72
- package/coverage/src/concepts/ProcessElement__.ts.html +115 -316
- package/coverage/src/concepts/ProcessOutcome__.ts.html +13 -85
- package/coverage/src/concepts/ProcessOutcomes__.ts.html +13 -85
- package/coverage/src/concepts/Process__.ts.html +70 -211
- package/coverage/src/concepts/QueryAggregateExpression__.ts.html +16 -67
- package/coverage/src/concepts/QueryFieldExpression__.ts.html +11 -41
- package/coverage/src/concepts/QueryFromExpression__.ts.html +21 -81
- package/coverage/src/concepts/QueryGroupByExpression__.ts.html +19 -70
- package/coverage/src/concepts/QueryJoinExpression__.ts.html +25 -85
- package/coverage/src/concepts/QueryLimitExpression__.ts.html +20 -77
- package/coverage/src/concepts/QueryOrderByExpression__.ts.html +20 -80
- package/coverage/src/concepts/QuerySelectExpression__.ts.html +15 -42
- package/coverage/src/concepts/Rect__.ts.html +6 -9
- package/coverage/src/concepts/Return__.ts.html +44 -164
- package/coverage/src/concepts/Role__.ts.html +15 -45
- package/coverage/src/concepts/SelectMembers__.ts.html +24 -81
- package/coverage/src/concepts/Slot__.ts.html +13 -40
- package/coverage/src/concepts/SqlQueryComponent__.ts.html +24 -84
- package/coverage/src/concepts/Start__.ts.html +9 -36
- package/coverage/src/concepts/StringInterpolation__.ts.html +29 -104
- package/coverage/src/concepts/StringLiteral__.ts.html +32 -62
- package/coverage/src/concepts/StructureProperty__.ts.html +23 -80
- package/coverage/src/concepts/Structure__.ts.html +32 -116
- package/coverage/src/concepts/SwitchCase__.ts.html +36 -87
- package/coverage/src/concepts/SwitchStatement__.ts.html +33 -90
- package/coverage/src/concepts/Theme__.ts.html +12 -15
- package/coverage/src/concepts/Transactional__.ts.html +6 -9
- package/coverage/src/concepts/TriggerEvent__.ts.html +14 -41
- package/coverage/src/concepts/TriggerLauncher__.ts.html +13 -46
- package/coverage/src/concepts/TypeAnnotation__.ts.html +116 -347
- package/coverage/src/concepts/TypeParam__.ts.html +12 -42
- package/coverage/src/concepts/UnaryExpression__.ts.html +27 -105
- package/coverage/src/concepts/Unparsed__.ts.html +12 -36
- package/coverage/src/concepts/UseComponent__.ts.html +6 -9
- package/coverage/src/concepts/ValidationRule__.ts.html +40 -79
- package/coverage/src/concepts/Variable__.ts.html +37 -157
- package/coverage/src/concepts/ViewBlock__.ts.html +6 -9
- package/coverage/src/concepts/ViewComponent__.ts.html +24 -99
- package/coverage/src/concepts/ViewElement__.ts.html +278 -692
- package/coverage/src/concepts/View__.ts.html +163 -517
- package/coverage/src/concepts/WhileStatement__.ts.html +55 -118
- package/coverage/src/concepts/basics/stdlib/index.html +1 -1
- package/coverage/src/concepts/basics/stdlib/index.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.auth.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.browser.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.collection.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.configuration.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.core.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.event.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.http.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.interface.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.io.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.logging.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.process.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.ui.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.util.ts.html +3 -3
- package/coverage/src/concepts/basics/stdlib/nasl.validation.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/reference2TypeAnnotationList.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/timeZone.ts.html +1 -1
- package/coverage/src/concepts/basics/types/coreTypeList.ts.html +1 -1
- package/coverage/src/concepts/basics/types/index.html +1 -1
- package/coverage/src/concepts/basics/types/index.ts.html +1 -1
- package/coverage/src/concepts/index.html +965 -980
- package/coverage/src/concepts/index.ts.html +1 -1
- package/coverage/src/concepts/index__.ts.html +4 -7
- package/coverage/src/config.ts.html +1 -1
- package/coverage/src/decorators/index.html +5 -5
- package/coverage/src/decorators/index.ts.html +32 -32
- package/coverage/src/decorators/promise.ts.html +10 -10
- package/coverage/src/eventBus.ts.html +1 -1
- package/coverage/src/generator/compileComponent.ts.html +4 -4
- package/coverage/src/generator/genBundleFiles.ts.html +23 -17
- package/coverage/src/generator/genHash.ts.html +3 -3
- package/coverage/src/generator/genMetaData.ts.html +16 -103
- package/coverage/src/generator/genReleaseBody.ts.html +3 -3
- package/coverage/src/generator/icestark.ts.html +4 -10
- package/coverage/src/generator/index.html +21 -21
- package/coverage/src/generator/index.ts.html +1 -1
- package/coverage/src/generator/microApp.ts.html +1 -1
- package/coverage/src/generator/permission.ts.html +20 -92
- package/coverage/src/generator/qiankun.ts.html +3 -9
- package/coverage/src/generator/styleReplacer.ts.html +1 -1
- package/coverage/src/index.html +7 -7
- package/coverage/src/index.ts.html +4 -4
- package/coverage/src/manager/diagnostic.ts.html +14 -11
- package/coverage/src/manager/index.html +13 -13
- package/coverage/src/manager/stepRecorder.ts.html +1 -1
- package/coverage/src/natural/genNaturalTS.ts.html +1 -1
- package/coverage/src/natural/index.html +15 -15
- package/coverage/src/natural/index.ts.html +1 -1
- package/coverage/src/natural/naslStdlibMap.ts.html +1 -1
- package/coverage/src/natural/transformTSCode.ts.html +18 -78
- package/coverage/src/sentry/index.html +14 -14
- package/coverage/src/sentry/index.ts.html +32 -38
- package/coverage/src/server/createUiTs.ts.html +6 -15
- package/coverage/src/server/entity2LogicNamespace.ts.html +9 -9
- package/coverage/src/server/event.js.html +1 -1
- package/coverage/src/server/extendBaseNode.ts.html +4 -7
- package/coverage/src/server/formatTsUtils.ts.html +9 -9
- package/coverage/src/server/getConnector.ts.html +1 -1
- package/coverage/src/server/getExtensionModules.ts.html +1 -1
- package/coverage/src/server/getFunctions.ts.html +4 -4
- package/coverage/src/server/getInterfaces.ts.html +1 -1
- package/coverage/src/server/getLogging.ts.html +2 -2
- package/coverage/src/server/getLogics.ts.html +1 -1
- package/coverage/src/server/getMemberIdentifier.ts.html +119 -167
- package/coverage/src/server/getProcessComponents.ts.html +3 -3
- package/coverage/src/server/getProcesses.ts.html +1 -1
- package/coverage/src/server/getValidates.ts.html +4 -4
- package/coverage/src/server/index.html +34 -34
- package/coverage/src/server/index.ts.html +1 -1
- package/coverage/src/server/naslServer.ts.html +943 -1195
- package/coverage/src/server/naslStdlibMap.ts.html +1 -1
- package/coverage/src/server/process2LogicNamespace.ts.html +52 -52
- package/coverage/src/server/translator.ts.html +14 -50
- package/coverage/src/service/creator/add.configs.js.html +9 -27
- package/coverage/src/service/creator/errHandles.js.html +37 -19
- package/coverage/src/service/creator/index.html +22 -22
- package/coverage/src/service/creator/index.js.html +1 -1
- package/coverage/src/service/datasource/api.js.html +1 -1
- package/coverage/src/service/datasource/index.html +1 -1
- package/coverage/src/service/datasource/index.js.html +1 -1
- package/coverage/src/service/logic/api.js.html +1 -1
- package/coverage/src/service/logic/index.html +1 -1
- package/coverage/src/service/logic/index.js.html +1 -1
- package/coverage/src/service/storage/api.js.html +1 -1
- package/coverage/src/service/storage/index.html +29 -29
- package/coverage/src/service/storage/index.ts.html +1 -1
- package/coverage/src/service/storage/init.ts.html +601 -1534
- package/coverage/src/service/storage/jsoner.ts.html +13 -76
- package/coverage/src/service/storage/map.ts.html +3 -3
- package/coverage/src/service/storage/service.ts.html +1 -1
- package/coverage/src/service/storage/storagePoint.ts.html +1 -1
- package/coverage/src/templator/genCallComponentLogic.ts.html +1 -1
- package/coverage/src/templator/genCreateBlock.ts.html +56 -47
- package/coverage/src/templator/genCurdEditMultipleKeyBlock.ts.html +31 -49
- package/coverage/src/templator/genCurdMultipleKeyBlock.ts.html +89 -80
- package/coverage/src/templator/genEditTableBlock.ts.html +11 -80
- package/coverage/src/templator/genEnumSelectBlock.ts.html +1 -1
- package/coverage/src/templator/genGetBlock.ts.html +1 -1
- package/coverage/src/templator/genGridViewBlock.ts.html +1 -1
- package/coverage/src/templator/genListViewBlock.ts.html +1 -1
- package/coverage/src/templator/genQueryComponent.ts.html +1 -1
- package/coverage/src/templator/genSelectBlock.ts.html +1 -1
- package/coverage/src/templator/genTableBlock.ts.html +3 -66
- package/coverage/src/templator/genUpdateBlock.ts.html +36 -48
- package/coverage/src/templator/index.html +39 -39
- package/coverage/src/templator/index.ts.html +1 -1
- package/coverage/src/templator/utils.ts.html +11 -77
- package/coverage/src/translator/constant.ts.html +1 -1
- package/coverage/src/translator/index.html +21 -21
- package/coverage/src/translator/index.ts.html +1 -1
- package/coverage/src/translator/utils.ts.html +68 -389
- package/coverage/src/utils/cookie.ts.html +4 -4
- package/coverage/src/utils/env.ts.html +1 -1
- package/coverage/src/utils/index.html +51 -36
- package/coverage/src/utils/index.ts.html +22 -115
- package/coverage/src/utils/logger.ts.html +13 -13
- package/coverage/src/utils/sortTsString.ts.html +10 -25
- package/coverage/src/utils/string.ts.html +8 -110
- package/coverage/src/utils/time-slicing.ts.html +1 -1
- package/coverage/src/utils/traverse.ts.html +1 -1
- package/coverage/src/utils/window.ts.html +1 -1
- package/out/bak/translator.js.map +1 -1
- package/out/common/Command.js +1 -1
- package/out/common/Command.js.map +1 -1
- package/out/concepts/Argument__.js +7 -2
- package/out/concepts/Argument__.js.map +1 -1
- package/out/concepts/Assignment__.js +20 -3
- package/out/concepts/Assignment__.js.map +1 -1
- package/out/concepts/BackendVariable__.js +24 -2
- package/out/concepts/BackendVariable__.js.map +1 -1
- package/out/concepts/BinaryExpression__.js +40 -13
- package/out/concepts/BinaryExpression__.js.map +1 -1
- package/out/concepts/CallLogic__.js +7 -12
- package/out/concepts/CallLogic__.js.map +1 -1
- package/out/concepts/CountersignPolicy__.d.ts +26 -0
- package/out/concepts/CountersignPolicy__.js +73 -0
- package/out/concepts/CountersignPolicy__.js.map +1 -0
- package/out/concepts/ForEachStatement__.js +12 -26
- package/out/concepts/ForEachStatement__.js.map +1 -1
- package/out/concepts/Identifier__.js +3 -0
- package/out/concepts/Identifier__.js.map +1 -1
- package/out/concepts/JSBlock__.js +56 -0
- package/out/concepts/JSBlock__.js.map +1 -1
- package/out/concepts/LogicItem__.js +2 -1
- package/out/concepts/LogicItem__.js.map +1 -1
- package/out/concepts/Logic__.js +2 -0
- package/out/concepts/Logic__.js.map +1 -1
- package/out/concepts/Match__.js +1 -1
- package/out/concepts/Match__.js.map +1 -1
- package/out/concepts/MultiApprovalPolicy__.d.ts +24 -0
- package/out/concepts/MultiApprovalPolicy__.js +65 -0
- package/out/concepts/MultiApprovalPolicy__.js.map +1 -0
- package/out/concepts/NewComposite__.js +18 -10
- package/out/concepts/NewComposite__.js.map +1 -1
- package/out/concepts/NumericLiteral__.js +1 -1
- package/out/concepts/NumericLiteral__.js.map +1 -1
- package/out/concepts/Param__.js +24 -2
- package/out/concepts/Param__.js.map +1 -1
- package/out/concepts/ProcessElement__.d.ts +16 -0
- package/out/concepts/ProcessElement__.js +56 -1
- package/out/concepts/ProcessElement__.js.map +1 -1
- package/out/concepts/Return__.js +24 -2
- package/out/concepts/Return__.js.map +1 -1
- package/out/concepts/SequentialPolicy__.d.ts +18 -0
- package/out/concepts/SequentialPolicy__.js +54 -0
- package/out/concepts/SequentialPolicy__.js.map +1 -0
- package/out/concepts/Variable__.js +24 -2
- package/out/concepts/Variable__.js.map +1 -1
- package/out/concepts/ViewElement__.js.map +1 -1
- package/out/concepts/View__.js +2 -2
- package/out/concepts/View__.js.map +1 -1
- package/out/concepts/index__.d.ts +3 -0
- package/out/concepts/index__.js +3 -0
- package/out/concepts/index__.js.map +1 -1
- package/out/concepts/types__.d.ts +4 -1
- package/out/generator/genReleaseBody.js +2 -2
- package/out/generator/genReleaseBody.js.map +1 -1
- package/out/server/extendBaseNode.js +32 -1
- package/out/server/extendBaseNode.js.map +1 -1
- package/out/server/getLogics.d.ts +1 -0
- package/out/server/getLogics.js +6 -2
- package/out/server/getLogics.js.map +1 -1
- package/out/server/getProcesses.js +66 -6
- package/out/server/getProcesses.js.map +1 -1
- package/out/server/index.js +1 -0
- package/out/server/index.js.map +1 -1
- package/out/server/naslServer.js +2 -2
- package/out/server/naslServer.js.map +1 -1
- package/out/server/translator.js +3 -0
- package/out/server/translator.js.map +1 -1
- package/out/service/creator/errHandles.js +6 -3
- package/out/service/creator/errHandles.js.map +1 -1
- package/out/service/storage/init.js +2 -2
- package/out/service/storage/init.js.map +1 -1
- package/out/templator/genCreateBlock.js +9 -5
- package/out/templator/genCreateBlock.js.map +1 -1
- package/out/templator/genCurdEditMultipleKeyBlock.js +18 -12
- package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
- package/out/templator/genCurdMultipleKeyBlock.js +10 -8
- package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
- package/out/templator/genEditTableBlock.js +3 -2
- package/out/templator/genEditTableBlock.js.map +1 -1
- package/out/templator/genUpdateBlock.js +12 -9
- package/out/templator/genUpdateBlock.js.map +1 -1
- package/out/templator/utils.js.map +1 -1
- package/package.json +2 -2
- package/sandbox/stdlib/nasl.core.ts +2 -0
- package/sandbox/stdlib/nasl.util.ts +3 -3
- package/src/bak/translator.js +0 -1
- package/src/common/Command.ts +1 -1
- package/src/concepts/Argument__.ts +7 -2
- package/src/concepts/Assignment__.ts +31 -13
- package/src/concepts/BackendVariable__.ts +22 -3
- package/src/concepts/BinaryExpression__.ts +39 -13
- package/src/concepts/CallLogic__.ts +13 -23
- package/src/concepts/CountersignPolicy__.ts +77 -0
- package/src/concepts/ForEachStatement__.ts +17 -26
- package/src/concepts/Identifier__.ts +4 -1
- package/src/concepts/JSBlock__.ts +58 -0
- package/src/concepts/LogicItem__.ts +2 -2
- package/src/concepts/Logic__.ts +1 -0
- package/src/concepts/Match__.ts +1 -1
- package/src/concepts/MultiApprovalPolicy__.ts +69 -0
- package/src/concepts/NewComposite__.ts +18 -9
- package/src/concepts/NumericLiteral__.ts +1 -1
- package/src/concepts/Param__.ts +24 -2
- package/src/concepts/ProcessElement__.ts +70 -1
- package/src/concepts/Return__.ts +23 -3
- package/src/concepts/SequentialPolicy__.ts +58 -0
- package/src/concepts/Variable__.ts +23 -3
- package/src/concepts/ViewElement__.ts +6 -4
- package/src/concepts/View__.ts +5 -5
- package/src/concepts/index__.ts +3 -0
- package/src/concepts/types__.ts +6 -0
- package/src/generator/genReleaseBody.ts +40 -40
- package/src/server/extendBaseNode.ts +30 -2
- package/src/server/getLogics.ts +4 -0
- package/src/server/getProcesses.ts +66 -6
- package/src/server/index.ts +2 -1
- package/src/server/naslServer.ts +2 -2
- package/src/server/translator.ts +3 -0
- package/src/service/creator/errHandles.js +7 -4
- package/src/service/storage/init.ts +2 -2
- package/src/templator/genCreateBlock.ts +9 -5
- package/src/templator/genCurdEditMultipleKeyBlock.ts +19 -13
- package/src/templator/genCurdMultipleKeyBlock.ts +14 -11
- package/src/templator/genEditTableBlock.ts +4 -2
- package/src/templator/genUpdateBlock.ts +15 -12
- package/src/templator/utils.ts +8 -7
- package/test/concepts/anonymous-function/__snapshots__/toJS.spec.ts.snap +1 -1
- package/test/concepts/assignment/__snapshots__/toJS.spec.ts.snap +1 -1
- package/test/concepts/batch-assignment/__snapshots__/toJS.spec.ts.snap +2 -2
- package/test/concepts/binary-expression/__snapshots__/toJS.spec.ts.snap +3 -2
- package/test/concepts/call-interface/__snapshots__/toJS.spec.ts.snap +2 -2
- package/test/concepts/call-logic/__snapshots__/toJS.spec.ts.snap +3 -3
- package/test/concepts/match/__snapshots__/toJS.spec.ts.snap +1 -1
- package/test/concepts/numeric-literal/__snapshots__/toJS.spec.ts.snap +1 -1
- package/test/concepts/validation-rule/__snapshots__/toJS.spec.ts.snap +3 -3
- package/.nyc_output/processinfo/78804420-ead6-486f-b682-ab54ccd95dc9.json +0 -1
- package/coverage/cobertura-coverage.xml +0 -71878
- package/coverage/src/automate/engine/index.js.html +0 -1471
- package/coverage/src/automate/engine/operators.js.html +0 -862
- package/coverage/src/automate/engine/uniqueName.js.html +0 -412
- package/coverage/src/automate/engine/viewCache.js.html +0 -214
- package/coverage/src/automate/template/index.html +0 -116
- package/coverage/src/automate/template/myProcess.js.html +0 -34645
- package/coverage/src/common/utils.ts.html +0 -136
- package/coverage/src/concepts/DataElement__.ts.html +0 -118
- package/coverage/src/concepts/MetadataType__.ts.html +0 -2053
- package/coverage/src/utils/time-slicing/constant.ts.html +0 -196
- package/coverage/src/utils/time-slicing/controller.ts.html +0 -1111
- package/coverage/src/utils/time-slicing/index.html +0 -236
- package/coverage/src/utils/time-slicing/index.ts.html +0 -103
- package/coverage/src/utils/time-slicing/page-state.ts.html +0 -121
- package/coverage/src/utils/time-slicing/performance.ts.html +0 -253
- package/coverage/src/utils/time-slicing/runner.ts.html +0 -247
- package/coverage/src/utils/time-slicing/tool.ts.html +0 -220
- package/coverage/src/utils/time-slicing/utils.ts.html +0 -355
- package/coverage/src/utils/time-slicing/wrapper.ts.html +0 -259
- package/coverage/src/utils/time.ts.html +0 -118
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">6.39% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>30/469</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">0.
|
|
33
|
+
<span class="strong">0.66% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>2/
|
|
35
|
+
<span class='fraction'>2/300</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">1.
|
|
40
|
+
<span class="strong">1.49% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>1/
|
|
42
|
+
<span class='fraction'>1/67</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">6.69% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>30/448</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -955,579 +955,26 @@
|
|
|
955
955
|
<a name='L890'></a><a href='#L890'>890</a>
|
|
956
956
|
<a name='L891'></a><a href='#L891'>891</a>
|
|
957
957
|
<a name='L892'></a><a href='#L892'>892</a>
|
|
958
|
-
<a name='L893'></a><a href='#L893'>893</a>
|
|
959
|
-
<a name='L894'></a><a href='#L894'>894</a>
|
|
960
|
-
<a name='L895'></a><a href='#L895'>895</a>
|
|
961
|
-
<a name='L896'></a><a href='#L896'>896</a>
|
|
962
|
-
<a name='L897'></a><a href='#L897'>897</a>
|
|
963
|
-
<a name='L898'></a><a href='#L898'>898</a>
|
|
964
|
-
<a name='L899'></a><a href='#L899'>899</a>
|
|
965
|
-
<a name='L900'></a><a href='#L900'>900</a>
|
|
966
|
-
<a name='L901'></a><a href='#L901'>901</a>
|
|
967
|
-
<a name='L902'></a><a href='#L902'>902</a>
|
|
968
|
-
<a name='L903'></a><a href='#L903'>903</a>
|
|
969
|
-
<a name='L904'></a><a href='#L904'>904</a>
|
|
970
|
-
<a name='L905'></a><a href='#L905'>905</a>
|
|
971
|
-
<a name='L906'></a><a href='#L906'>906</a>
|
|
972
|
-
<a name='L907'></a><a href='#L907'>907</a>
|
|
973
|
-
<a name='L908'></a><a href='#L908'>908</a>
|
|
974
|
-
<a name='L909'></a><a href='#L909'>909</a>
|
|
975
|
-
<a name='L910'></a><a href='#L910'>910</a>
|
|
976
|
-
<a name='L911'></a><a href='#L911'>911</a>
|
|
977
|
-
<a name='L912'></a><a href='#L912'>912</a>
|
|
978
|
-
<a name='L913'></a><a href='#L913'>913</a>
|
|
979
|
-
<a name='L914'></a><a href='#L914'>914</a>
|
|
980
|
-
<a name='L915'></a><a href='#L915'>915</a>
|
|
981
|
-
<a name='L916'></a><a href='#L916'>916</a>
|
|
982
|
-
<a name='L917'></a><a href='#L917'>917</a>
|
|
983
|
-
<a name='L918'></a><a href='#L918'>918</a>
|
|
984
|
-
<a name='L919'></a><a href='#L919'>919</a>
|
|
985
|
-
<a name='L920'></a><a href='#L920'>920</a>
|
|
986
|
-
<a name='L921'></a><a href='#L921'>921</a>
|
|
987
|
-
<a name='L922'></a><a href='#L922'>922</a>
|
|
988
|
-
<a name='L923'></a><a href='#L923'>923</a>
|
|
989
|
-
<a name='L924'></a><a href='#L924'>924</a>
|
|
990
|
-
<a name='L925'></a><a href='#L925'>925</a>
|
|
991
|
-
<a name='L926'></a><a href='#L926'>926</a>
|
|
992
|
-
<a name='L927'></a><a href='#L927'>927</a>
|
|
993
|
-
<a name='L928'></a><a href='#L928'>928</a>
|
|
994
|
-
<a name='L929'></a><a href='#L929'>929</a>
|
|
995
|
-
<a name='L930'></a><a href='#L930'>930</a>
|
|
996
|
-
<a name='L931'></a><a href='#L931'>931</a>
|
|
997
|
-
<a name='L932'></a><a href='#L932'>932</a>
|
|
998
|
-
<a name='L933'></a><a href='#L933'>933</a>
|
|
999
|
-
<a name='L934'></a><a href='#L934'>934</a>
|
|
1000
|
-
<a name='L935'></a><a href='#L935'>935</a>
|
|
1001
|
-
<a name='L936'></a><a href='#L936'>936</a>
|
|
1002
|
-
<a name='L937'></a><a href='#L937'>937</a>
|
|
1003
|
-
<a name='L938'></a><a href='#L938'>938</a>
|
|
1004
|
-
<a name='L939'></a><a href='#L939'>939</a>
|
|
1005
|
-
<a name='L940'></a><a href='#L940'>940</a>
|
|
1006
|
-
<a name='L941'></a><a href='#L941'>941</a>
|
|
1007
|
-
<a name='L942'></a><a href='#L942'>942</a>
|
|
1008
|
-
<a name='L943'></a><a href='#L943'>943</a>
|
|
1009
|
-
<a name='L944'></a><a href='#L944'>944</a>
|
|
1010
|
-
<a name='L945'></a><a href='#L945'>945</a>
|
|
1011
|
-
<a name='L946'></a><a href='#L946'>946</a>
|
|
1012
|
-
<a name='L947'></a><a href='#L947'>947</a>
|
|
1013
|
-
<a name='L948'></a><a href='#L948'>948</a>
|
|
1014
|
-
<a name='L949'></a><a href='#L949'>949</a>
|
|
1015
|
-
<a name='L950'></a><a href='#L950'>950</a>
|
|
1016
|
-
<a name='L951'></a><a href='#L951'>951</a>
|
|
1017
|
-
<a name='L952'></a><a href='#L952'>952</a>
|
|
1018
|
-
<a name='L953'></a><a href='#L953'>953</a>
|
|
1019
|
-
<a name='L954'></a><a href='#L954'>954</a>
|
|
1020
|
-
<a name='L955'></a><a href='#L955'>955</a>
|
|
1021
|
-
<a name='L956'></a><a href='#L956'>956</a>
|
|
1022
|
-
<a name='L957'></a><a href='#L957'>957</a>
|
|
1023
|
-
<a name='L958'></a><a href='#L958'>958</a>
|
|
1024
|
-
<a name='L959'></a><a href='#L959'>959</a>
|
|
1025
|
-
<a name='L960'></a><a href='#L960'>960</a>
|
|
1026
|
-
<a name='L961'></a><a href='#L961'>961</a>
|
|
1027
|
-
<a name='L962'></a><a href='#L962'>962</a>
|
|
1028
|
-
<a name='L963'></a><a href='#L963'>963</a>
|
|
1029
|
-
<a name='L964'></a><a href='#L964'>964</a>
|
|
1030
|
-
<a name='L965'></a><a href='#L965'>965</a>
|
|
1031
|
-
<a name='L966'></a><a href='#L966'>966</a>
|
|
1032
|
-
<a name='L967'></a><a href='#L967'>967</a>
|
|
1033
|
-
<a name='L968'></a><a href='#L968'>968</a>
|
|
1034
|
-
<a name='L969'></a><a href='#L969'>969</a>
|
|
1035
|
-
<a name='L970'></a><a href='#L970'>970</a>
|
|
1036
|
-
<a name='L971'></a><a href='#L971'>971</a>
|
|
1037
|
-
<a name='L972'></a><a href='#L972'>972</a>
|
|
1038
|
-
<a name='L973'></a><a href='#L973'>973</a>
|
|
1039
|
-
<a name='L974'></a><a href='#L974'>974</a>
|
|
1040
|
-
<a name='L975'></a><a href='#L975'>975</a>
|
|
1041
|
-
<a name='L976'></a><a href='#L976'>976</a>
|
|
1042
|
-
<a name='L977'></a><a href='#L977'>977</a>
|
|
1043
|
-
<a name='L978'></a><a href='#L978'>978</a>
|
|
1044
|
-
<a name='L979'></a><a href='#L979'>979</a>
|
|
1045
|
-
<a name='L980'></a><a href='#L980'>980</a>
|
|
1046
|
-
<a name='L981'></a><a href='#L981'>981</a>
|
|
1047
|
-
<a name='L982'></a><a href='#L982'>982</a>
|
|
1048
|
-
<a name='L983'></a><a href='#L983'>983</a>
|
|
1049
|
-
<a name='L984'></a><a href='#L984'>984</a>
|
|
1050
|
-
<a name='L985'></a><a href='#L985'>985</a>
|
|
1051
|
-
<a name='L986'></a><a href='#L986'>986</a>
|
|
1052
|
-
<a name='L987'></a><a href='#L987'>987</a>
|
|
1053
|
-
<a name='L988'></a><a href='#L988'>988</a>
|
|
1054
|
-
<a name='L989'></a><a href='#L989'>989</a>
|
|
1055
|
-
<a name='L990'></a><a href='#L990'>990</a>
|
|
1056
|
-
<a name='L991'></a><a href='#L991'>991</a>
|
|
1057
|
-
<a name='L992'></a><a href='#L992'>992</a>
|
|
1058
|
-
<a name='L993'></a><a href='#L993'>993</a>
|
|
1059
|
-
<a name='L994'></a><a href='#L994'>994</a>
|
|
1060
|
-
<a name='L995'></a><a href='#L995'>995</a>
|
|
1061
|
-
<a name='L996'></a><a href='#L996'>996</a>
|
|
1062
|
-
<a name='L997'></a><a href='#L997'>997</a>
|
|
1063
|
-
<a name='L998'></a><a href='#L998'>998</a>
|
|
1064
|
-
<a name='L999'></a><a href='#L999'>999</a>
|
|
1065
|
-
<a name='L1000'></a><a href='#L1000'>1000</a>
|
|
1066
|
-
<a name='L1001'></a><a href='#L1001'>1001</a>
|
|
1067
|
-
<a name='L1002'></a><a href='#L1002'>1002</a>
|
|
1068
|
-
<a name='L1003'></a><a href='#L1003'>1003</a>
|
|
1069
|
-
<a name='L1004'></a><a href='#L1004'>1004</a>
|
|
1070
|
-
<a name='L1005'></a><a href='#L1005'>1005</a>
|
|
1071
|
-
<a name='L1006'></a><a href='#L1006'>1006</a>
|
|
1072
|
-
<a name='L1007'></a><a href='#L1007'>1007</a>
|
|
1073
|
-
<a name='L1008'></a><a href='#L1008'>1008</a>
|
|
1074
|
-
<a name='L1009'></a><a href='#L1009'>1009</a>
|
|
1075
|
-
<a name='L1010'></a><a href='#L1010'>1010</a>
|
|
1076
|
-
<a name='L1011'></a><a href='#L1011'>1011</a>
|
|
1077
|
-
<a name='L1012'></a><a href='#L1012'>1012</a>
|
|
1078
|
-
<a name='L1013'></a><a href='#L1013'>1013</a>
|
|
1079
|
-
<a name='L1014'></a><a href='#L1014'>1014</a>
|
|
1080
|
-
<a name='L1015'></a><a href='#L1015'>1015</a>
|
|
1081
|
-
<a name='L1016'></a><a href='#L1016'>1016</a>
|
|
1082
|
-
<a name='L1017'></a><a href='#L1017'>1017</a>
|
|
1083
|
-
<a name='L1018'></a><a href='#L1018'>1018</a>
|
|
1084
|
-
<a name='L1019'></a><a href='#L1019'>1019</a>
|
|
1085
|
-
<a name='L1020'></a><a href='#L1020'>1020</a>
|
|
1086
|
-
<a name='L1021'></a><a href='#L1021'>1021</a>
|
|
1087
|
-
<a name='L1022'></a><a href='#L1022'>1022</a>
|
|
1088
|
-
<a name='L1023'></a><a href='#L1023'>1023</a>
|
|
1089
|
-
<a name='L1024'></a><a href='#L1024'>1024</a>
|
|
1090
|
-
<a name='L1025'></a><a href='#L1025'>1025</a>
|
|
1091
|
-
<a name='L1026'></a><a href='#L1026'>1026</a>
|
|
1092
|
-
<a name='L1027'></a><a href='#L1027'>1027</a>
|
|
1093
|
-
<a name='L1028'></a><a href='#L1028'>1028</a>
|
|
1094
|
-
<a name='L1029'></a><a href='#L1029'>1029</a>
|
|
1095
|
-
<a name='L1030'></a><a href='#L1030'>1030</a>
|
|
1096
|
-
<a name='L1031'></a><a href='#L1031'>1031</a>
|
|
1097
|
-
<a name='L1032'></a><a href='#L1032'>1032</a>
|
|
1098
|
-
<a name='L1033'></a><a href='#L1033'>1033</a>
|
|
1099
|
-
<a name='L1034'></a><a href='#L1034'>1034</a>
|
|
1100
|
-
<a name='L1035'></a><a href='#L1035'>1035</a>
|
|
1101
|
-
<a name='L1036'></a><a href='#L1036'>1036</a>
|
|
1102
|
-
<a name='L1037'></a><a href='#L1037'>1037</a>
|
|
1103
|
-
<a name='L1038'></a><a href='#L1038'>1038</a>
|
|
1104
|
-
<a name='L1039'></a><a href='#L1039'>1039</a>
|
|
1105
|
-
<a name='L1040'></a><a href='#L1040'>1040</a>
|
|
1106
|
-
<a name='L1041'></a><a href='#L1041'>1041</a>
|
|
1107
|
-
<a name='L1042'></a><a href='#L1042'>1042</a>
|
|
1108
|
-
<a name='L1043'></a><a href='#L1043'>1043</a>
|
|
1109
|
-
<a name='L1044'></a><a href='#L1044'>1044</a>
|
|
1110
|
-
<a name='L1045'></a><a href='#L1045'>1045</a>
|
|
1111
|
-
<a name='L1046'></a><a href='#L1046'>1046</a>
|
|
1112
|
-
<a name='L1047'></a><a href='#L1047'>1047</a>
|
|
1113
|
-
<a name='L1048'></a><a href='#L1048'>1048</a>
|
|
1114
|
-
<a name='L1049'></a><a href='#L1049'>1049</a>
|
|
1115
|
-
<a name='L1050'></a><a href='#L1050'>1050</a>
|
|
1116
|
-
<a name='L1051'></a><a href='#L1051'>1051</a>
|
|
1117
|
-
<a name='L1052'></a><a href='#L1052'>1052</a>
|
|
1118
|
-
<a name='L1053'></a><a href='#L1053'>1053</a>
|
|
1119
|
-
<a name='L1054'></a><a href='#L1054'>1054</a>
|
|
1120
|
-
<a name='L1055'></a><a href='#L1055'>1055</a>
|
|
1121
|
-
<a name='L1056'></a><a href='#L1056'>1056</a>
|
|
1122
|
-
<a name='L1057'></a><a href='#L1057'>1057</a>
|
|
1123
|
-
<a name='L1058'></a><a href='#L1058'>1058</a>
|
|
1124
|
-
<a name='L1059'></a><a href='#L1059'>1059</a>
|
|
1125
|
-
<a name='L1060'></a><a href='#L1060'>1060</a>
|
|
1126
|
-
<a name='L1061'></a><a href='#L1061'>1061</a>
|
|
1127
|
-
<a name='L1062'></a><a href='#L1062'>1062</a>
|
|
1128
|
-
<a name='L1063'></a><a href='#L1063'>1063</a>
|
|
1129
|
-
<a name='L1064'></a><a href='#L1064'>1064</a>
|
|
1130
|
-
<a name='L1065'></a><a href='#L1065'>1065</a>
|
|
1131
|
-
<a name='L1066'></a><a href='#L1066'>1066</a>
|
|
1132
|
-
<a name='L1067'></a><a href='#L1067'>1067</a>
|
|
1133
|
-
<a name='L1068'></a><a href='#L1068'>1068</a>
|
|
1134
|
-
<a name='L1069'></a><a href='#L1069'>1069</a>
|
|
1135
|
-
<a name='L1070'></a><a href='#L1070'>1070</a>
|
|
1136
|
-
<a name='L1071'></a><a href='#L1071'>1071</a>
|
|
1137
|
-
<a name='L1072'></a><a href='#L1072'>1072</a>
|
|
1138
|
-
<a name='L1073'></a><a href='#L1073'>1073</a>
|
|
1139
|
-
<a name='L1074'></a><a href='#L1074'>1074</a>
|
|
1140
|
-
<a name='L1075'></a><a href='#L1075'>1075</a>
|
|
1141
|
-
<a name='L1076'></a><a href='#L1076'>1076</a>
|
|
1142
|
-
<a name='L1077'></a><a href='#L1077'>1077</a>
|
|
1143
|
-
<a name='L1078'></a><a href='#L1078'>1078</a>
|
|
1144
|
-
<a name='L1079'></a><a href='#L1079'>1079</a>
|
|
1145
|
-
<a name='L1080'></a><a href='#L1080'>1080</a>
|
|
1146
|
-
<a name='L1081'></a><a href='#L1081'>1081</a>
|
|
1147
|
-
<a name='L1082'></a><a href='#L1082'>1082</a>
|
|
1148
|
-
<a name='L1083'></a><a href='#L1083'>1083</a>
|
|
1149
|
-
<a name='L1084'></a><a href='#L1084'>1084</a>
|
|
1150
|
-
<a name='L1085'></a><a href='#L1085'>1085</a>
|
|
1151
|
-
<a name='L1086'></a><a href='#L1086'>1086</a>
|
|
1152
|
-
<a name='L1087'></a><a href='#L1087'>1087</a>
|
|
1153
|
-
<a name='L1088'></a><a href='#L1088'>1088</a>
|
|
1154
|
-
<a name='L1089'></a><a href='#L1089'>1089</a>
|
|
1155
|
-
<a name='L1090'></a><a href='#L1090'>1090</a>
|
|
1156
|
-
<a name='L1091'></a><a href='#L1091'>1091</a>
|
|
1157
|
-
<a name='L1092'></a><a href='#L1092'>1092</a>
|
|
1158
|
-
<a name='L1093'></a><a href='#L1093'>1093</a>
|
|
1159
|
-
<a name='L1094'></a><a href='#L1094'>1094</a>
|
|
1160
|
-
<a name='L1095'></a><a href='#L1095'>1095</a>
|
|
1161
|
-
<a name='L1096'></a><a href='#L1096'>1096</a>
|
|
1162
|
-
<a name='L1097'></a><a href='#L1097'>1097</a>
|
|
1163
|
-
<a name='L1098'></a><a href='#L1098'>1098</a>
|
|
1164
|
-
<a name='L1099'></a><a href='#L1099'>1099</a>
|
|
1165
|
-
<a name='L1100'></a><a href='#L1100'>1100</a>
|
|
1166
|
-
<a name='L1101'></a><a href='#L1101'>1101</a>
|
|
1167
|
-
<a name='L1102'></a><a href='#L1102'>1102</a>
|
|
1168
|
-
<a name='L1103'></a><a href='#L1103'>1103</a>
|
|
1169
|
-
<a name='L1104'></a><a href='#L1104'>1104</a>
|
|
1170
|
-
<a name='L1105'></a><a href='#L1105'>1105</a>
|
|
1171
|
-
<a name='L1106'></a><a href='#L1106'>1106</a>
|
|
1172
|
-
<a name='L1107'></a><a href='#L1107'>1107</a>
|
|
1173
|
-
<a name='L1108'></a><a href='#L1108'>1108</a>
|
|
1174
|
-
<a name='L1109'></a><a href='#L1109'>1109</a>
|
|
1175
|
-
<a name='L1110'></a><a href='#L1110'>1110</a>
|
|
1176
|
-
<a name='L1111'></a><a href='#L1111'>1111</a>
|
|
1177
|
-
<a name='L1112'></a><a href='#L1112'>1112</a>
|
|
1178
|
-
<a name='L1113'></a><a href='#L1113'>1113</a>
|
|
1179
|
-
<a name='L1114'></a><a href='#L1114'>1114</a>
|
|
1180
|
-
<a name='L1115'></a><a href='#L1115'>1115</a>
|
|
1181
|
-
<a name='L1116'></a><a href='#L1116'>1116</a>
|
|
1182
|
-
<a name='L1117'></a><a href='#L1117'>1117</a>
|
|
1183
|
-
<a name='L1118'></a><a href='#L1118'>1118</a>
|
|
1184
|
-
<a name='L1119'></a><a href='#L1119'>1119</a>
|
|
1185
|
-
<a name='L1120'></a><a href='#L1120'>1120</a>
|
|
1186
|
-
<a name='L1121'></a><a href='#L1121'>1121</a>
|
|
1187
|
-
<a name='L1122'></a><a href='#L1122'>1122</a>
|
|
1188
|
-
<a name='L1123'></a><a href='#L1123'>1123</a>
|
|
1189
|
-
<a name='L1124'></a><a href='#L1124'>1124</a>
|
|
1190
|
-
<a name='L1125'></a><a href='#L1125'>1125</a>
|
|
1191
|
-
<a name='L1126'></a><a href='#L1126'>1126</a>
|
|
1192
|
-
<a name='L1127'></a><a href='#L1127'>1127</a>
|
|
1193
|
-
<a name='L1128'></a><a href='#L1128'>1128</a>
|
|
1194
|
-
<a name='L1129'></a><a href='#L1129'>1129</a>
|
|
1195
|
-
<a name='L1130'></a><a href='#L1130'>1130</a>
|
|
1196
|
-
<a name='L1131'></a><a href='#L1131'>1131</a>
|
|
1197
|
-
<a name='L1132'></a><a href='#L1132'>1132</a>
|
|
1198
|
-
<a name='L1133'></a><a href='#L1133'>1133</a>
|
|
1199
|
-
<a name='L1134'></a><a href='#L1134'>1134</a>
|
|
1200
|
-
<a name='L1135'></a><a href='#L1135'>1135</a>
|
|
1201
|
-
<a name='L1136'></a><a href='#L1136'>1136</a>
|
|
1202
|
-
<a name='L1137'></a><a href='#L1137'>1137</a>
|
|
1203
|
-
<a name='L1138'></a><a href='#L1138'>1138</a>
|
|
1204
|
-
<a name='L1139'></a><a href='#L1139'>1139</a>
|
|
1205
|
-
<a name='L1140'></a><a href='#L1140'>1140</a>
|
|
1206
|
-
<a name='L1141'></a><a href='#L1141'>1141</a>
|
|
1207
|
-
<a name='L1142'></a><a href='#L1142'>1142</a>
|
|
1208
|
-
<a name='L1143'></a><a href='#L1143'>1143</a>
|
|
1209
|
-
<a name='L1144'></a><a href='#L1144'>1144</a>
|
|
1210
|
-
<a name='L1145'></a><a href='#L1145'>1145</a>
|
|
1211
|
-
<a name='L1146'></a><a href='#L1146'>1146</a>
|
|
1212
|
-
<a name='L1147'></a><a href='#L1147'>1147</a>
|
|
1213
|
-
<a name='L1148'></a><a href='#L1148'>1148</a>
|
|
1214
|
-
<a name='L1149'></a><a href='#L1149'>1149</a>
|
|
1215
|
-
<a name='L1150'></a><a href='#L1150'>1150</a>
|
|
1216
|
-
<a name='L1151'></a><a href='#L1151'>1151</a>
|
|
1217
|
-
<a name='L1152'></a><a href='#L1152'>1152</a>
|
|
1218
|
-
<a name='L1153'></a><a href='#L1153'>1153</a>
|
|
1219
|
-
<a name='L1154'></a><a href='#L1154'>1154</a>
|
|
1220
|
-
<a name='L1155'></a><a href='#L1155'>1155</a>
|
|
1221
|
-
<a name='L1156'></a><a href='#L1156'>1156</a>
|
|
1222
|
-
<a name='L1157'></a><a href='#L1157'>1157</a>
|
|
1223
|
-
<a name='L1158'></a><a href='#L1158'>1158</a>
|
|
1224
|
-
<a name='L1159'></a><a href='#L1159'>1159</a>
|
|
1225
|
-
<a name='L1160'></a><a href='#L1160'>1160</a>
|
|
1226
|
-
<a name='L1161'></a><a href='#L1161'>1161</a>
|
|
1227
|
-
<a name='L1162'></a><a href='#L1162'>1162</a>
|
|
1228
|
-
<a name='L1163'></a><a href='#L1163'>1163</a>
|
|
1229
|
-
<a name='L1164'></a><a href='#L1164'>1164</a>
|
|
1230
|
-
<a name='L1165'></a><a href='#L1165'>1165</a>
|
|
1231
|
-
<a name='L1166'></a><a href='#L1166'>1166</a>
|
|
1232
|
-
<a name='L1167'></a><a href='#L1167'>1167</a>
|
|
1233
|
-
<a name='L1168'></a><a href='#L1168'>1168</a>
|
|
1234
|
-
<a name='L1169'></a><a href='#L1169'>1169</a>
|
|
1235
|
-
<a name='L1170'></a><a href='#L1170'>1170</a>
|
|
1236
|
-
<a name='L1171'></a><a href='#L1171'>1171</a>
|
|
1237
|
-
<a name='L1172'></a><a href='#L1172'>1172</a>
|
|
1238
|
-
<a name='L1173'></a><a href='#L1173'>1173</a>
|
|
1239
|
-
<a name='L1174'></a><a href='#L1174'>1174</a>
|
|
1240
|
-
<a name='L1175'></a><a href='#L1175'>1175</a>
|
|
1241
|
-
<a name='L1176'></a><a href='#L1176'>1176</a>
|
|
1242
|
-
<a name='L1177'></a><a href='#L1177'>1177</a>
|
|
1243
|
-
<a name='L1178'></a><a href='#L1178'>1178</a>
|
|
1244
|
-
<a name='L1179'></a><a href='#L1179'>1179</a>
|
|
1245
|
-
<a name='L1180'></a><a href='#L1180'>1180</a>
|
|
1246
|
-
<a name='L1181'></a><a href='#L1181'>1181</a>
|
|
1247
|
-
<a name='L1182'></a><a href='#L1182'>1182</a>
|
|
1248
|
-
<a name='L1183'></a><a href='#L1183'>1183</a>
|
|
1249
|
-
<a name='L1184'></a><a href='#L1184'>1184</a>
|
|
1250
|
-
<a name='L1185'></a><a href='#L1185'>1185</a>
|
|
1251
|
-
<a name='L1186'></a><a href='#L1186'>1186</a>
|
|
1252
|
-
<a name='L1187'></a><a href='#L1187'>1187</a>
|
|
1253
|
-
<a name='L1188'></a><a href='#L1188'>1188</a>
|
|
1254
|
-
<a name='L1189'></a><a href='#L1189'>1189</a>
|
|
1255
|
-
<a name='L1190'></a><a href='#L1190'>1190</a>
|
|
1256
|
-
<a name='L1191'></a><a href='#L1191'>1191</a>
|
|
1257
|
-
<a name='L1192'></a><a href='#L1192'>1192</a>
|
|
1258
|
-
<a name='L1193'></a><a href='#L1193'>1193</a>
|
|
1259
|
-
<a name='L1194'></a><a href='#L1194'>1194</a>
|
|
1260
|
-
<a name='L1195'></a><a href='#L1195'>1195</a>
|
|
1261
|
-
<a name='L1196'></a><a href='#L1196'>1196</a>
|
|
1262
|
-
<a name='L1197'></a><a href='#L1197'>1197</a>
|
|
1263
|
-
<a name='L1198'></a><a href='#L1198'>1198</a>
|
|
1264
|
-
<a name='L1199'></a><a href='#L1199'>1199</a>
|
|
1265
|
-
<a name='L1200'></a><a href='#L1200'>1200</a>
|
|
1266
|
-
<a name='L1201'></a><a href='#L1201'>1201</a>
|
|
1267
|
-
<a name='L1202'></a><a href='#L1202'>1202</a>
|
|
1268
|
-
<a name='L1203'></a><a href='#L1203'>1203</a>
|
|
1269
|
-
<a name='L1204'></a><a href='#L1204'>1204</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
958
|
+
<a name='L893'></a><a href='#L893'>893</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
1270
959
|
<span class="cline-any cline-yes">1x</span>
|
|
1271
960
|
<span class="cline-any cline-yes">1x</span>
|
|
1272
961
|
<span class="cline-any cline-yes">1x</span>
|
|
1273
962
|
<span class="cline-any cline-yes">1x</span>
|
|
1274
963
|
<span class="cline-any cline-yes">1x</span>
|
|
1275
964
|
<span class="cline-any cline-yes">1x</span>
|
|
1276
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1277
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1278
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1279
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1280
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1281
965
|
<span class="cline-any cline-neutral"> </span>
|
|
1282
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1283
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1284
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1285
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1286
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1287
966
|
<span class="cline-any cline-yes">1x</span>
|
|
1288
967
|
<span class="cline-any cline-yes">1x</span>
|
|
1289
968
|
<span class="cline-any cline-neutral"> </span>
|
|
1290
969
|
<span class="cline-any cline-neutral"> </span>
|
|
1291
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1292
970
|
<span class="cline-any cline-neutral"> </span>
|
|
1293
971
|
<span class="cline-any cline-yes">1x</span>
|
|
1294
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1295
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1296
972
|
<span class="cline-any cline-yes">1x</span>
|
|
1297
|
-
<span class="cline-any cline-no"> </span>
|
|
1298
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1299
|
-
<span class="cline-any cline-no"> </span>
|
|
1300
|
-
<span class="cline-any cline-no"> </span>
|
|
1301
|
-
<span class="cline-any cline-no"> </span>
|
|
1302
|
-
<span class="cline-any cline-no"> </span>
|
|
1303
|
-
<span class="cline-any cline-no"> </span>
|
|
1304
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1305
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1306
|
-
<span class="cline-any cline-no"> </span>
|
|
1307
|
-
<span class="cline-any cline-no"> </span>
|
|
1308
|
-
<span class="cline-any cline-no"> </span>
|
|
1309
|
-
<span class="cline-any cline-no"> </span>
|
|
1310
|
-
<span class="cline-any cline-no"> </span>
|
|
1311
|
-
<span class="cline-any cline-no"> </span>
|
|
1312
|
-
<span class="cline-any cline-no"> </span>
|
|
1313
|
-
<span class="cline-any cline-no"> </span>
|
|
1314
|
-
<span class="cline-any cline-no"> </span>
|
|
1315
|
-
<span class="cline-any cline-no"> </span>
|
|
1316
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1317
|
-
<span class="cline-any cline-no"> </span>
|
|
1318
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1319
|
-
<span class="cline-any cline-no"> </span>
|
|
1320
|
-
<span class="cline-any cline-no"> </span>
|
|
1321
|
-
<span class="cline-any cline-no"> </span>
|
|
1322
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1323
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1324
|
-
<span class="cline-any cline-no"> </span>
|
|
1325
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1326
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1327
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1328
|
-
<span class="cline-any cline-no"> </span>
|
|
1329
|
-
<span class="cline-any cline-no"> </span>
|
|
1330
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1331
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1332
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1333
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1334
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1335
|
-
<span class="cline-any cline-no"> </span>
|
|
1336
|
-
<span class="cline-any cline-no"> </span>
|
|
1337
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1338
|
-
<span class="cline-any cline-no"> </span>
|
|
1339
|
-
<span class="cline-any cline-no"> </span>
|
|
1340
|
-
<span class="cline-any cline-no"> </span>
|
|
1341
|
-
<span class="cline-any cline-no"> </span>
|
|
1342
|
-
<span class="cline-any cline-no"> </span>
|
|
1343
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1344
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1345
|
-
<span class="cline-any cline-no"> </span>
|
|
1346
|
-
<span class="cline-any cline-no"> </span>
|
|
1347
|
-
<span class="cline-any cline-no"> </span>
|
|
1348
|
-
<span class="cline-any cline-no"> </span>
|
|
1349
|
-
<span class="cline-any cline-no"> </span>
|
|
1350
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1351
|
-
<span class="cline-any cline-no"> </span>
|
|
1352
|
-
<span class="cline-any cline-no"> </span>
|
|
1353
|
-
<span class="cline-any cline-no"> </span>
|
|
1354
|
-
<span class="cline-any cline-no"> </span>
|
|
1355
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1356
|
-
<span class="cline-any cline-no"> </span>
|
|
1357
|
-
<span class="cline-any cline-no"> </span>
|
|
1358
|
-
<span class="cline-any cline-no"> </span>
|
|
1359
|
-
<span class="cline-any cline-no"> </span>
|
|
1360
|
-
<span class="cline-any cline-no"> </span>
|
|
1361
|
-
<span class="cline-any cline-no"> </span>
|
|
1362
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1363
|
-
<span class="cline-any cline-no"> </span>
|
|
1364
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1365
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1366
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1367
|
-
<span class="cline-any cline-no"> </span>
|
|
1368
|
-
<span class="cline-any cline-no"> </span>
|
|
1369
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1370
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1371
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1372
|
-
<span class="cline-any cline-no"> </span>
|
|
1373
|
-
<span class="cline-any cline-no"> </span>
|
|
1374
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1375
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1376
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1377
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1378
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1379
973
|
<span class="cline-any cline-yes">1x</span>
|
|
1380
|
-
<span class="cline-any cline-no"> </span>
|
|
1381
|
-
<span class="cline-any cline-no"> </span>
|
|
1382
|
-
<span class="cline-any cline-no"> </span>
|
|
1383
|
-
<span class="cline-any cline-no"> </span>
|
|
1384
|
-
<span class="cline-any cline-no"> </span>
|
|
1385
|
-
<span class="cline-any cline-no"> </span>
|
|
1386
|
-
<span class="cline-any cline-no"> </span>
|
|
1387
|
-
<span class="cline-any cline-no"> </span>
|
|
1388
|
-
<span class="cline-any cline-no"> </span>
|
|
1389
|
-
<span class="cline-any cline-no"> </span>
|
|
1390
|
-
<span class="cline-any cline-no"> </span>
|
|
1391
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1392
|
-
<span class="cline-any cline-no"> </span>
|
|
1393
|
-
<span class="cline-any cline-no"> </span>
|
|
1394
|
-
<span class="cline-any cline-no"> </span>
|
|
1395
|
-
<span class="cline-any cline-no"> </span>
|
|
1396
|
-
<span class="cline-any cline-no"> </span>
|
|
1397
|
-
<span class="cline-any cline-no"> </span>
|
|
1398
|
-
<span class="cline-any cline-no"> </span>
|
|
1399
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1400
|
-
<span class="cline-any cline-no"> </span>
|
|
1401
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1402
|
-
<span class="cline-any cline-no"> </span>
|
|
1403
|
-
<span class="cline-any cline-no"> </span>
|
|
1404
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1405
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1406
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1407
|
-
<span class="cline-any cline-no"> </span>
|
|
1408
|
-
<span class="cline-any cline-no"> </span>
|
|
1409
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1410
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1411
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1412
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1413
|
-
<span class="cline-any cline-no"> </span>
|
|
1414
|
-
<span class="cline-any cline-no"> </span>
|
|
1415
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1416
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1417
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1418
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1419
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1420
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1421
|
-
<span class="cline-any cline-no"> </span>
|
|
1422
|
-
<span class="cline-any cline-no"> </span>
|
|
1423
|
-
<span class="cline-any cline-no"> </span>
|
|
1424
|
-
<span class="cline-any cline-no"> </span>
|
|
1425
|
-
<span class="cline-any cline-no"> </span>
|
|
1426
|
-
<span class="cline-any cline-no"> </span>
|
|
1427
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1428
|
-
<span class="cline-any cline-no"> </span>
|
|
1429
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1430
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1431
|
-
<span class="cline-any cline-no"> </span>
|
|
1432
|
-
<span class="cline-any cline-no"> </span>
|
|
1433
|
-
<span class="cline-any cline-no"> </span>
|
|
1434
|
-
<span class="cline-any cline-no"> </span>
|
|
1435
|
-
<span class="cline-any cline-no"> </span>
|
|
1436
|
-
<span class="cline-any cline-no"> </span>
|
|
1437
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1438
|
-
<span class="cline-any cline-no"> </span>
|
|
1439
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1440
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1441
|
-
<span class="cline-any cline-no"> </span>
|
|
1442
|
-
<span class="cline-any cline-no"> </span>
|
|
1443
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1444
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1445
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1446
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1447
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1448
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1449
974
|
<span class="cline-any cline-yes">1x</span>
|
|
1450
|
-
<span class="cline-any cline-no"> </span>
|
|
1451
|
-
<span class="cline-any cline-no"> </span>
|
|
1452
|
-
<span class="cline-any cline-no"> </span>
|
|
1453
|
-
<span class="cline-any cline-no"> </span>
|
|
1454
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1455
|
-
<span class="cline-any cline-no"> </span>
|
|
1456
|
-
<span class="cline-any cline-no"> </span>
|
|
1457
|
-
<span class="cline-any cline-no"> </span>
|
|
1458
|
-
<span class="cline-any cline-no"> </span>
|
|
1459
|
-
<span class="cline-any cline-no"> </span>
|
|
1460
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1461
|
-
<span class="cline-any cline-no"> </span>
|
|
1462
|
-
<span class="cline-any cline-no"> </span>
|
|
1463
|
-
<span class="cline-any cline-no"> </span>
|
|
1464
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1465
|
-
<span class="cline-any cline-no"> </span>
|
|
1466
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1467
|
-
<span class="cline-any cline-no"> </span>
|
|
1468
|
-
<span class="cline-any cline-no"> </span>
|
|
1469
|
-
<span class="cline-any cline-no"> </span>
|
|
1470
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1471
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1472
|
-
<span class="cline-any cline-no"> </span>
|
|
1473
|
-
<span class="cline-any cline-no"> </span>
|
|
1474
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1475
|
-
<span class="cline-any cline-no"> </span>
|
|
1476
|
-
<span class="cline-any cline-no"> </span>
|
|
1477
|
-
<span class="cline-any cline-no"> </span>
|
|
1478
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1479
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1480
|
-
<span class="cline-any cline-no"> </span>
|
|
1481
|
-
<span class="cline-any cline-no"> </span>
|
|
1482
|
-
<span class="cline-any cline-no"> </span>
|
|
1483
|
-
<span class="cline-any cline-no"> </span>
|
|
1484
|
-
<span class="cline-any cline-no"> </span>
|
|
1485
|
-
<span class="cline-any cline-no"> </span>
|
|
1486
|
-
<span class="cline-any cline-no"> </span>
|
|
1487
|
-
<span class="cline-any cline-no"> </span>
|
|
1488
|
-
<span class="cline-any cline-no"> </span>
|
|
1489
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1490
|
-
<span class="cline-any cline-no"> </span>
|
|
1491
|
-
<span class="cline-any cline-no"> </span>
|
|
1492
|
-
<span class="cline-any cline-no"> </span>
|
|
1493
|
-
<span class="cline-any cline-no"> </span>
|
|
1494
|
-
<span class="cline-any cline-no"> </span>
|
|
1495
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1496
|
-
<span class="cline-any cline-no"> </span>
|
|
1497
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1498
|
-
<span class="cline-any cline-no"> </span>
|
|
1499
|
-
<span class="cline-any cline-no"> </span>
|
|
1500
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1501
|
-
<span class="cline-any cline-no"> </span>
|
|
1502
|
-
<span class="cline-any cline-no"> </span>
|
|
1503
|
-
<span class="cline-any cline-no"> </span>
|
|
1504
|
-
<span class="cline-any cline-no"> </span>
|
|
1505
975
|
<span class="cline-any cline-neutral"> </span>
|
|
1506
976
|
<span class="cline-any cline-neutral"> </span>
|
|
1507
|
-
<span class="cline-any cline-
|
|
1508
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1509
|
-
<span class="cline-any cline-no"> </span>
|
|
1510
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1511
|
-
<span class="cline-any cline-no"> </span>
|
|
1512
|
-
<span class="cline-any cline-no"> </span>
|
|
1513
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1514
|
-
<span class="cline-any cline-no"> </span>
|
|
1515
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1516
|
-
<span class="cline-any cline-no"> </span>
|
|
1517
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1518
|
-
<span class="cline-any cline-no"> </span>
|
|
1519
|
-
<span class="cline-any cline-no"> </span>
|
|
1520
|
-
<span class="cline-any cline-no"> </span>
|
|
1521
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1522
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1523
|
-
<span class="cline-any cline-no"> </span>
|
|
1524
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1525
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1526
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1527
|
-
<span class="cline-any cline-no"> </span>
|
|
1528
|
-
<span class="cline-any cline-no"> </span>
|
|
1529
|
-
<span class="cline-any cline-no"> </span>
|
|
1530
|
-
<span class="cline-any cline-neutral"> </span>
|
|
977
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1531
978
|
<span class="cline-any cline-neutral"> </span>
|
|
1532
979
|
<span class="cline-any cline-neutral"> </span>
|
|
1533
980
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1557,7 +1004,6 @@
|
|
|
1557
1004
|
<span class="cline-any cline-neutral"> </span>
|
|
1558
1005
|
<span class="cline-any cline-neutral"> </span>
|
|
1559
1006
|
<span class="cline-any cline-neutral"> </span>
|
|
1560
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1561
1007
|
<span class="cline-any cline-no"> </span>
|
|
1562
1008
|
<span class="cline-any cline-no"> </span>
|
|
1563
1009
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1662,11 +1108,6 @@
|
|
|
1662
1108
|
<span class="cline-any cline-no"> </span>
|
|
1663
1109
|
<span class="cline-any cline-no"> </span>
|
|
1664
1110
|
<span class="cline-any cline-no"> </span>
|
|
1665
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1666
|
-
<span class="cline-any cline-no"> </span>
|
|
1667
|
-
<span class="cline-any cline-no"> </span>
|
|
1668
|
-
<span class="cline-any cline-no"> </span>
|
|
1669
|
-
<span class="cline-any cline-no"> </span>
|
|
1670
1111
|
<span class="cline-any cline-no"> </span>
|
|
1671
1112
|
<span class="cline-any cline-no"> </span>
|
|
1672
1113
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1775,8 +1216,6 @@
|
|
|
1775
1216
|
<span class="cline-any cline-no"> </span>
|
|
1776
1217
|
<span class="cline-any cline-no"> </span>
|
|
1777
1218
|
<span class="cline-any cline-neutral"> </span>
|
|
1778
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1779
|
-
<span class="cline-any cline-no"> </span>
|
|
1780
1219
|
<span class="cline-any cline-no"> </span>
|
|
1781
1220
|
<span class="cline-any cline-no"> </span>
|
|
1782
1221
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1804,9 +1243,6 @@
|
|
|
1804
1243
|
<span class="cline-any cline-no"> </span>
|
|
1805
1244
|
<span class="cline-any cline-no"> </span>
|
|
1806
1245
|
<span class="cline-any cline-no"> </span>
|
|
1807
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1808
|
-
<span class="cline-any cline-no"> </span>
|
|
1809
|
-
<span class="cline-any cline-no"> </span>
|
|
1810
1246
|
<span class="cline-any cline-no"> </span>
|
|
1811
1247
|
<span class="cline-any cline-neutral"> </span>
|
|
1812
1248
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1873,28 +1309,7 @@
|
|
|
1873
1309
|
<span class="cline-any cline-neutral"> </span>
|
|
1874
1310
|
<span class="cline-any cline-neutral"> </span>
|
|
1875
1311
|
<span class="cline-any cline-neutral"> </span>
|
|
1876
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1877
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1878
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1879
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1880
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1881
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1882
|
-
<span class="cline-any cline-no"> </span>
|
|
1883
|
-
<span class="cline-any cline-no"> </span>
|
|
1884
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1885
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1886
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1887
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1888
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1889
|
-
<span class="cline-any cline-no"> </span>
|
|
1890
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1891
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1892
|
-
<span class="cline-any cline-no"> </span>
|
|
1893
|
-
<span class="cline-any cline-no"> </span>
|
|
1894
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1895
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1896
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1897
|
-
<span class="cline-any cline-no"> </span>
|
|
1312
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1898
1313
|
<span class="cline-any cline-neutral"> </span>
|
|
1899
1314
|
<span class="cline-any cline-neutral"> </span>
|
|
1900
1315
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1907,8 +1322,10 @@
|
|
|
1907
1322
|
<span class="cline-any cline-neutral"> </span>
|
|
1908
1323
|
<span class="cline-any cline-neutral"> </span>
|
|
1909
1324
|
<span class="cline-any cline-neutral"> </span>
|
|
1325
|
+
<span class="cline-any cline-no"> </span>
|
|
1910
1326
|
<span class="cline-any cline-neutral"> </span>
|
|
1911
1327
|
<span class="cline-any cline-neutral"> </span>
|
|
1328
|
+
<span class="cline-any cline-no"> </span>
|
|
1912
1329
|
<span class="cline-any cline-neutral"> </span>
|
|
1913
1330
|
<span class="cline-any cline-neutral"> </span>
|
|
1914
1331
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1917,7 +1334,6 @@
|
|
|
1917
1334
|
<span class="cline-any cline-no"> </span>
|
|
1918
1335
|
<span class="cline-any cline-no"> </span>
|
|
1919
1336
|
<span class="cline-any cline-no"> </span>
|
|
1920
|
-
<span class="cline-any cline-no"> </span>
|
|
1921
1337
|
<span class="cline-any cline-neutral"> </span>
|
|
1922
1338
|
<span class="cline-any cline-no"> </span>
|
|
1923
1339
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1949,7 +1365,6 @@
|
|
|
1949
1365
|
<span class="cline-any cline-neutral"> </span>
|
|
1950
1366
|
<span class="cline-any cline-neutral"> </span>
|
|
1951
1367
|
<span class="cline-any cline-neutral"> </span>
|
|
1952
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1953
1368
|
<span class="cline-any cline-yes">1x</span>
|
|
1954
1369
|
<span class="cline-any cline-yes">1x</span>
|
|
1955
1370
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -1996,7 +1411,6 @@
|
|
|
1996
1411
|
<span class="cline-any cline-no"> </span>
|
|
1997
1412
|
<span class="cline-any cline-no"> </span>
|
|
1998
1413
|
<span class="cline-any cline-no"> </span>
|
|
1999
|
-
<span class="cline-any cline-no"> </span>
|
|
2000
1414
|
<span class="cline-any cline-neutral"> </span>
|
|
2001
1415
|
<span class="cline-any cline-no"> </span>
|
|
2002
1416
|
<span class="cline-any cline-no"> </span>
|
|
@@ -2004,7 +1418,6 @@
|
|
|
2004
1418
|
<span class="cline-any cline-no"> </span>
|
|
2005
1419
|
<span class="cline-any cline-no"> </span>
|
|
2006
1420
|
<span class="cline-any cline-no"> </span>
|
|
2007
|
-
<span class="cline-any cline-no"> </span>
|
|
2008
1421
|
<span class="cline-any cline-neutral"> </span>
|
|
2009
1422
|
<span class="cline-any cline-neutral"> </span>
|
|
2010
1423
|
<span class="cline-any cline-no"> </span>
|
|
@@ -2089,22 +1502,6 @@
|
|
|
2089
1502
|
<span class="cline-any cline-neutral"> </span>
|
|
2090
1503
|
<span class="cline-any cline-neutral"> </span>
|
|
2091
1504
|
<span class="cline-any cline-neutral"> </span>
|
|
2092
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2093
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2094
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2095
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2096
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2097
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2098
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2099
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2100
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2101
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2102
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2103
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2104
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2105
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2106
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2107
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2108
1505
|
<span class="cline-any cline-no"> </span>
|
|
2109
1506
|
<span class="cline-any cline-no"> </span>
|
|
2110
1507
|
<span class="cline-any cline-no"> </span>
|
|
@@ -2116,11 +1513,8 @@
|
|
|
2116
1513
|
<span class="cline-any cline-no"> </span>
|
|
2117
1514
|
<span class="cline-any cline-neutral"> </span>
|
|
2118
1515
|
<span class="cline-any cline-neutral"> </span>
|
|
2119
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2120
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2121
1516
|
<span class="cline-any cline-no"> </span>
|
|
2122
1517
|
<span class="cline-any cline-no"> </span>
|
|
2123
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2124
1518
|
<span class="cline-any cline-no"> </span>
|
|
2125
1519
|
<span class="cline-any cline-neutral"> </span>
|
|
2126
1520
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2134,19 +1528,6 @@
|
|
|
2134
1528
|
<span class="cline-any cline-no"> </span>
|
|
2135
1529
|
<span class="cline-any cline-neutral"> </span>
|
|
2136
1530
|
<span class="cline-any cline-no"> </span>
|
|
2137
|
-
<span class="cline-any cline-no"> </span>
|
|
2138
|
-
<span class="cline-any cline-no"> </span>
|
|
2139
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2140
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2141
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2142
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2143
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2144
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2145
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2146
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2147
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2148
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2149
|
-
<span class="cline-any cline-no"> </span>
|
|
2150
1531
|
<span class="cline-any cline-neutral"> </span>
|
|
2151
1532
|
<span class="cline-any cline-neutral"> </span>
|
|
2152
1533
|
<span class="cline-any cline-no"> </span>
|
|
@@ -2310,10 +1691,6 @@
|
|
|
2310
1691
|
<span class="cline-any cline-neutral"> </span>
|
|
2311
1692
|
<span class="cline-any cline-neutral"> </span>
|
|
2312
1693
|
<span class="cline-any cline-yes">1x</span>
|
|
2313
|
-
<span class="cline-any cline-no"> </span>
|
|
2314
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2315
|
-
<span class="cline-any cline-no"> </span>
|
|
2316
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2317
1694
|
<span class="cline-any cline-neutral"> </span>
|
|
2318
1695
|
<span class="cline-any cline-no"> </span>
|
|
2319
1696
|
<span class="cline-any cline-no"> </span>
|
|
@@ -2387,7 +1764,6 @@
|
|
|
2387
1764
|
<span class="cline-any cline-neutral"> </span>
|
|
2388
1765
|
<span class="cline-any cline-neutral"> </span>
|
|
2389
1766
|
<span class="cline-any cline-neutral"> </span>
|
|
2390
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2391
1767
|
<span class="cline-any cline-no"> </span>
|
|
2392
1768
|
<span class="cline-any cline-no"> </span>
|
|
2393
1769
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2469,17 +1845,18 @@
|
|
|
2469
1845
|
<span class="cline-any cline-no"> </span>
|
|
2470
1846
|
<span class="cline-any cline-no"> </span>
|
|
2471
1847
|
<span class="cline-any cline-neutral"> </span>
|
|
2472
|
-
<span class="cline-any cline-neutral"> </span
|
|
2473
|
-
|
|
1848
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1849
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1850
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { App, LogicItem, Logic, Module, View, ViewElement, Argument, SelectMembers, SynatxNode, BindDirective, CallLogic } from '../../concepts';
|
|
2474
1851
|
import { addBreakpointNodesFromApp } from '../../breakpoint';
|
|
2475
1852
|
import { getConceptConstructor } from '../../decorators';
|
|
2476
1853
|
import { config } from '../../config';
|
|
2477
1854
|
import storageService from './service';
|
|
2478
1855
|
import { v4 as uuidv4 } from 'uuid';
|
|
2479
1856
|
import stepRecorder from '../../manager/stepRecorder';
|
|
2480
|
-
import * as jsoner from './jsoner';
|
|
2481
1857
|
/// #if !process.env.NODE_ENV || process.env.BUILD_TARGET === 'node'
|
|
2482
1858
|
import * as fs from 'fs-extra';
|
|
1859
|
+
import * as jsoner from './jsoner';
|
|
2483
1860
|
import type { NaslServer } from 'src/server/naslServer';
|
|
2484
1861
|
/// #endif
|
|
2485
1862
|
|
|
@@ -2491,501 +1868,254 @@ export const batchInstruct = storageService.batchInstruct;
|
|
|
2491
1868
|
export const breakpoint = storageService.breakpoint;
|
|
2492
1869
|
|
|
2493
1870
|
let tabTimestamp: string;
|
|
2494
|
-
export
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
<span class="cstat-no" title="statement not covered"
|
|
2506
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
<span class="cstat-no" title="statement not covered" > request.onsuccess = <span class="fstat-no" title="function not covered" >(e</span>vent: any) => {</span>
|
|
2510
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
2511
|
-
const db = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
|
|
2512
|
-
const transaction = <span class="cstat-no" title="statement not covered" >db.transaction('operationRecord', 'readwrite');</span>
|
|
2513
|
-
const objectStore = <span class="cstat-no" title="statement not covered" >transaction.objectStore('operationRecord');</span>
|
|
2514
|
-
<span class="cstat-no" title="statement not covered" > operation.appId = operationRecordInfoMap.get('appId');</span>
|
|
2515
|
-
<span class="cstat-no" title="statement not covered" > operation.branchId = operationRecordInfoMap.get('branchId');</span>
|
|
2516
|
-
<span class="cstat-no" title="statement not covered" > operation.accountId = operationRecordInfoMap.get('accountId');</span>
|
|
2517
|
-
<span class="cstat-no" title="statement not covered" > operation.userId = operationRecordInfoMap.get('userId');</span>
|
|
2518
|
-
<span class="cstat-no" title="statement not covered" > operation.phone = operationRecordInfoMap.get('phone');</span>
|
|
2519
|
-
// 将时间戳添加到记录中
|
|
2520
|
-
<span class="cstat-no" title="statement not covered" > operation.timestamp = Date.now();</span>
|
|
2521
|
-
// 这份数据不存在向上的引用,因此用cloneDeep没有关系
|
|
2522
|
-
<span class="cstat-no" title="statement not covered" > objectStore.put(cloneDeep(operation));</span>
|
|
2523
|
-
<span class="cstat-no" title="statement not covered" > transaction.oncomplete = <span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
2524
|
-
<span class="cstat-no" title="statement not covered" > db.close();</span>
|
|
2525
|
-
};
|
|
2526
|
-
} catch(err) {
|
|
2527
|
-
<span class="cstat-no" title="statement not covered" > console.log(err);</span>
|
|
2528
|
-
}
|
|
2529
|
-
};
|
|
2530
|
-
|
|
2531
|
-
<span class="cstat-no" title="statement not covered" > request.onerror = <span class="fstat-no" title="function not covered" >function(e</span>vent) {</span>
|
|
2532
|
-
<span class="cstat-no" title="statement not covered" > console.log('Failed to open database');</span>
|
|
2533
|
-
};
|
|
2534
|
-
}
|
|
2535
|
-
|
|
2536
|
-
// 删除失效数据
|
|
2537
|
-
async function <span class="fstat-no" title="function not covered" >deleteExpiredRecords(</span>) {
|
|
2538
|
-
<span class="cstat-no" title="statement not covered" > return new Promise(<span class="fstat-no" title="function not covered" >(r</span>esolve, reject) => {</span>
|
|
2539
|
-
const request = <span class="cstat-no" title="statement not covered" >indexedDB.open('naslData', 1);</span>
|
|
2540
|
-
|
|
2541
|
-
<span class="cstat-no" title="statement not covered" > request.onupgradeneeded = <span class="fstat-no" title="function not covered" >(e</span>vent: any) => {</span>
|
|
2542
|
-
const db = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
|
|
2543
|
-
const objectStore = <span class="cstat-no" title="statement not covered" >db.createObjectStore('operationRecord', { autoIncrement: true });</span>
|
|
2544
|
-
<span class="cstat-no" title="statement not covered" > objectStore.createIndex('appId', 'appId');</span>
|
|
2545
|
-
<span class="cstat-no" title="statement not covered" > objectStore.createIndex('timestamp', 'timestamp');</span>
|
|
2546
|
-
};
|
|
2547
|
-
|
|
2548
|
-
<span class="cstat-no" title="statement not covered" > request.onsuccess = <span class="fstat-no" title="function not covered" >(e</span>vent: any) => {</span>
|
|
2549
|
-
const db = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
|
|
2550
|
-
const transaction = <span class="cstat-no" title="statement not covered" >db.transaction('operationRecord', 'readwrite');</span>
|
|
2551
|
-
const objectStore = <span class="cstat-no" title="statement not covered" >transaction.objectStore('operationRecord');</span>
|
|
2552
|
-
const index = <span class="cstat-no" title="statement not covered" >objectStore.index('timestamp');</span>
|
|
2553
|
-
// 设置有效期,默认7天
|
|
2554
|
-
const localStorageExpiresAt = <span class="cstat-no" title="statement not covered" >window.localStorage.getItem('expiresAt');</span>
|
|
2555
|
-
const expiresAt = <span class="cstat-no" title="statement not covered" >Date.now() - (localStorageExpiresAt ? +localStorageExpiresAt : 7 * 24 * 60 * 60 * 1000);</span>
|
|
2556
|
-
const range = <span class="cstat-no" title="statement not covered" >IDBKeyRange.upperBound(expiresAt);</span>
|
|
2557
|
-
const expiredRecordsRequest = <span class="cstat-no" title="statement not covered" >index.openCursor(range);</span>
|
|
2558
|
-
|
|
2559
|
-
<span class="cstat-no" title="statement not covered" > expiredRecordsRequest.onsuccess = <span class="fstat-no" title="function not covered" >(e</span>vent: any) => {</span>
|
|
2560
|
-
const cursor = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
|
|
2561
|
-
<span class="cstat-no" title="statement not covered" > if (cursor) {</span>
|
|
2562
|
-
<span class="cstat-no" title="statement not covered" > console.log(cursor);</span>
|
|
2563
|
-
<span class="cstat-no" title="statement not covered" > objectStore.delete(cursor.primaryKey);</span>
|
|
2564
|
-
<span class="cstat-no" title="statement not covered" > cursor.continue();</span>
|
|
2565
|
-
} else {
|
|
2566
|
-
<span class="cstat-no" title="statement not covered" > resolve(void 0);</span>
|
|
2567
|
-
}
|
|
2568
|
-
};
|
|
2569
|
-
|
|
2570
|
-
<span class="cstat-no" title="statement not covered" > transaction.oncomplete = <span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
2571
|
-
<span class="cstat-no" title="statement not covered" > db.close();</span>
|
|
2572
|
-
};
|
|
2573
|
-
};
|
|
2574
|
-
|
|
2575
|
-
<span class="cstat-no" title="statement not covered" > request.onerror = <span class="fstat-no" title="function not covered" >(e</span>vent) => {</span>
|
|
2576
|
-
<span class="cstat-no" title="statement not covered" > reject('Failed to open database');</span>
|
|
2577
|
-
};
|
|
2578
|
-
});
|
|
2579
|
-
}
|
|
2580
|
-
|
|
2581
|
-
// 操作栈查询
|
|
2582
|
-
export function <span class="fstat-no" title="function not covered" >operationRecordQuery(</span>app: any) {
|
|
2583
|
-
<span class="cstat-no" title="statement not covered" > return new Promise(<span class="fstat-no" title="function not covered" >(r</span>esolve, reject) => {</span>
|
|
2584
|
-
const appId = <span class="cstat-no" title="statement not covered" >app?.id;</span>
|
|
2585
|
-
const request = <span class="cstat-no" title="statement not covered" >indexedDB.open('naslData', 1);</span>
|
|
2586
|
-
<span class="cstat-no" title="statement not covered" > request.onsuccess = <span class="fstat-no" title="function not covered" >(e</span>vent: any) => {</span>
|
|
2587
|
-
const db = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
|
|
2588
|
-
const transaction = <span class="cstat-no" title="statement not covered" >db.transaction('operationRecord', 'readonly');</span>
|
|
2589
|
-
const objectStore = <span class="cstat-no" title="statement not covered" >transaction.objectStore('operationRecord');</span>
|
|
2590
|
-
const index = <span class="cstat-no" title="statement not covered" >objectStore.index('appId');</span> // 查询 'appId' 索引
|
|
2591
|
-
const range = <span class="cstat-no" title="statement not covered" >IDBKeyRange.only(appId);</span>
|
|
2592
|
-
const request = <span class="cstat-no" title="statement not covered" >index.openCursor(range);</span>
|
|
2593
|
-
const result: any[] = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
2594
|
-
|
|
2595
|
-
<span class="cstat-no" title="statement not covered" > request.onsuccess = <span class="fstat-no" title="function not covered" >(e</span>vent: any) => {</span>
|
|
2596
|
-
const cursor = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
|
|
2597
|
-
<span class="cstat-no" title="statement not covered" > if (cursor) {</span>
|
|
2598
|
-
const record = <span class="cstat-no" title="statement not covered" >cursor.value;</span>
|
|
2599
|
-
const branchId = <span class="cstat-no" title="statement not covered" >operationRecordInfoMap.get('branchId');</span>
|
|
2600
|
-
<span class="cstat-no" title="statement not covered" > if (record.branchId === branchId) {</span>
|
|
2601
|
-
<span class="cstat-no" title="statement not covered" > result.push(record);</span>
|
|
2602
|
-
}
|
|
2603
|
-
<span class="cstat-no" title="statement not covered" > cursor.continue();</span>
|
|
2604
|
-
} else {
|
|
2605
|
-
<span class="cstat-no" title="statement not covered" > console.log('操作记录栈:', result);</span>
|
|
2606
|
-
<span class="cstat-no" title="statement not covered" > resolve(result);</span>
|
|
2607
|
-
}
|
|
2608
|
-
};
|
|
2609
|
-
|
|
2610
|
-
<span class="cstat-no" title="statement not covered" > transaction.oncomplete = <span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
2611
|
-
<span class="cstat-no" title="statement not covered" > db.close();</span>
|
|
2612
|
-
};
|
|
2613
|
-
|
|
2614
|
-
};
|
|
2615
|
-
|
|
2616
|
-
<span class="cstat-no" title="statement not covered" > request.onerror = <span class="fstat-no" title="function not covered" >(e</span>vent) => {</span>
|
|
2617
|
-
<span class="cstat-no" title="statement not covered" > reject('Failed to open database');</span>
|
|
2618
|
-
};
|
|
2619
|
-
});
|
|
2620
|
-
}
|
|
2621
|
-
|
|
2622
|
-
// 获取父对象
|
|
2623
|
-
function <span class="fstat-no" title="function not covered" >getParentInfo(</span>appJson: any, path: string) {
|
|
2624
|
-
const pathArr: string[] = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
2625
|
-
<span class="cstat-no" title="statement not covered" > (path?.split('.') || []).forEach(<span class="fstat-no" title="function not covered" >(p</span>athItem: string) => {</span>
|
|
2626
|
-
const arrayPropertyKey = <span class="cstat-no" title="statement not covered" >pathItem.split('[')[0];</span>
|
|
2627
|
-
const matchArr = <span class="cstat-no" title="statement not covered" >pathItem.match(/\[(.+?)\]/);</span>
|
|
2628
|
-
<span class="cstat-no" title="statement not covered" > if (matchArr) {</span>
|
|
2629
|
-
<span class="cstat-no" title="statement not covered" > pathArr.push(arrayPropertyKey, matchArr[0]);</span>
|
|
2630
|
-
} else {
|
|
2631
|
-
<span class="cstat-no" title="statement not covered" > pathArr.push(pathItem);</span>
|
|
2632
|
-
}
|
|
2633
|
-
});
|
|
2634
|
-
<span class="cstat-no" title="statement not covered" > pathArr.pop();</span>
|
|
2635
|
-
let parentPath = <span class="cstat-no" title="statement not covered" >'';</span>
|
|
2636
|
-
<span class="cstat-no" title="statement not covered" > pathArr.forEach(<span class="fstat-no" title="function not covered" >(p</span>athItem: string, index: number) => {</span>
|
|
2637
|
-
const matchArr = <span class="cstat-no" title="statement not covered" >pathItem.match(/\[(.+?)\]/);</span>
|
|
2638
|
-
<span class="cstat-no" title="statement not covered" > if (matchArr || index === 0) {</span>
|
|
2639
|
-
<span class="cstat-no" title="statement not covered" > parentPath += pathItem;</span>
|
|
2640
|
-
} else {
|
|
2641
|
-
<span class="cstat-no" title="statement not covered" > parentPath += `.${pathItem}`</span>
|
|
2642
|
-
}
|
|
2643
|
-
});
|
|
2644
|
-
const parentNode = <span class="cstat-no" title="statement not covered" >jsoner.queryNodeByPath(appJson, parentPath);</span>
|
|
2645
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
2646
|
-
parentPath,
|
|
2647
|
-
parentNode,
|
|
2648
|
-
};
|
|
2649
|
-
}
|
|
2650
|
-
|
|
2651
|
-
// 操作记录回放
|
|
2652
|
-
export async function <span class="fstat-no" title="function not covered" >operationRecordPlayback(</span>app: any, operationRecordAction: 'undo' | 'redo') {
|
|
2653
|
-
const operationRecord: any = <span class="cstat-no" title="statement not covered" >await operationRecordQuery(app);</span>
|
|
2654
|
-
let operationRecordIndex = <span class="cstat-no" title="statement not covered" >operationRecordInfoMap.get('operationRecordIndex');</span>
|
|
2655
|
-
<span class="cstat-no" title="statement not covered" > if ([null, undefined].includes(operationRecordIndex)) {</span>
|
|
2656
|
-
<span class="cstat-no" title="statement not covered" > operationRecordIndex = operationRecord?.length;</span>
|
|
2657
|
-
}
|
|
2658
|
-
const appJson = <span class="cstat-no" title="statement not covered" >app.toJSON();</span>
|
|
2659
|
-
<span class="cstat-no" title="statement not covered" > if (operationRecordAction === 'undo') {</span>
|
|
2660
|
-
<span class="cstat-no" title="statement not covered" > if (operationRecordIndex > 0) {</span>
|
|
2661
|
-
const currentRecordItem = <span class="cstat-no" title="statement not covered" >operationRecord?.[operationRecordIndex];</span>
|
|
2662
|
-
const { type, action: recordItemAction } = <span class="cstat-no" title="statement not covered" >currentRecordItem || {};</span>
|
|
2663
|
-
// 多人协作
|
|
2664
|
-
<span class="cstat-no" title="statement not covered" > if (type === 'cooperation' && recordItemAction === 'confirmPull') {</span>
|
|
2665
|
-
<span class="cstat-no" title="statement not covered" > console.log(`当前所处栈位置:${operationRecordIndex},已经进行了多人协作“合并”操作,无法继续对操作栈进行回放!`);</span>
|
|
2666
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
2667
|
-
}
|
|
2668
|
-
<span class="cstat-no" title="statement not covered" > operationRecordIndex--;</span>
|
|
2669
|
-
} else {
|
|
2670
|
-
<span class="cstat-no" title="statement not covered" > console.log(`当前所处栈位置:${operationRecordIndex},无法继续回放`);</span>
|
|
2671
|
-
<span class="cstat-no" title="statement not covered" > console.log('当前appJSON:', appJson);</span>
|
|
2672
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
2673
|
-
}
|
|
2674
|
-
} else {
|
|
2675
|
-
<span class="cstat-no" title="statement not covered" > if (operationRecordIndex < operationRecord?.length) {</span>
|
|
2676
|
-
<span class="cstat-no" title="statement not covered" > operationRecordIndex++;</span>
|
|
2677
|
-
} else {
|
|
2678
|
-
<span class="cstat-no" title="statement not covered" > console.log(`当前所处栈位置:${operationRecordIndex},无法继续前进`);</span>
|
|
2679
|
-
<span class="cstat-no" title="statement not covered" > console.log('当前appJSON:', appJson);</span>
|
|
2680
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
2681
|
-
}
|
|
2682
|
-
}
|
|
2683
|
-
<span class="cstat-no" title="statement not covered" > operationRecordInfoMap.set('operationRecordIndex', operationRecordIndex);</span>
|
|
2684
|
-
const currentIndex = <span class="cstat-no" title="statement not covered" >operationRecordIndex;</span>
|
|
2685
|
-
<span class="cstat-no" title="statement not covered" > ([...operationRecord].splice(currentIndex, operationRecord?.length) || []).reverse()?.forEach(<span class="fstat-no" title="function not covered" >(r</span>ecordItem: any) => {</span>
|
|
2686
|
-
const { actionItem } = <span class="cstat-no" title="statement not covered" >recordItem || {};</span>
|
|
2687
|
-
const { list } = <span class="cstat-no" title="statement not covered" >actionItem || {};</span>
|
|
2688
|
-
<span class="cstat-no" title="statement not covered" > [...(list || [])].reverse().forEach(<span class="fstat-no" title="function not covered" >(a</span>ctionItem: any) => {</span>
|
|
2689
|
-
const { path, action, object, oldObject, parentKey, index: oldIndex } = <span class="cstat-no" title="statement not covered" >actionItem || {};</span>
|
|
2690
|
-
const { parentNode } = <span class="cstat-no" title="statement not covered" >getParentInfo(appJson, path);</span>
|
|
2691
|
-
let newPath = <span class="cstat-no" title="statement not covered" >path;</span>
|
|
2692
|
-
// 如果涉及到改名操作,需要特殊处理
|
|
2693
|
-
<span class="cstat-no" title="statement not covered" > if (operationRecordAction === 'undo' && action === 'update' && object?.name) {</span>
|
|
2694
|
-
const pathArr = <span class="cstat-no" title="statement not covered" >path?.split('.') || [];</span>
|
|
2695
|
-
const lastPathItem = <span class="cstat-no" title="statement not covered" >pathArr?.pop();</span>
|
|
2696
|
-
<span class="cstat-no" title="statement not covered" > if (lastPathItem) {</span>
|
|
2697
|
-
<span class="cstat-no" title="statement not covered" > pathArr.push(lastPathItem.replace(/(name=)[^\]]+/, `$1${object?.name}`));</span>
|
|
2698
|
-
}
|
|
2699
|
-
<span class="cstat-no" title="statement not covered" > newPath = pathArr.join('.');</span>
|
|
2700
|
-
}
|
|
2701
|
-
const node = <span class="cstat-no" title="statement not covered" >jsoner.queryNodeByPath(appJson, newPath);</span>
|
|
2702
|
-
<span class="cstat-no" title="statement not covered" > switch (action) {</span>
|
|
2703
|
-
case 'create':
|
|
2704
|
-
<span class="cstat-no" title="statement not covered" > if (Array.isArray(parentNode)) {</span>
|
|
2705
|
-
const index = <span class="cstat-no" title="statement not covered" >parentNode.indexOf(node);</span>
|
|
2706
|
-
<span class="cstat-no" title="statement not covered" > if (index !== -1) {</span>
|
|
2707
|
-
<span class="cstat-no" title="statement not covered" > parentNode.splice(index, 1);</span>
|
|
2708
|
-
}
|
|
2709
|
-
} else {
|
|
2710
|
-
<span class="cstat-no" title="statement not covered" > parentNode[parentKey] = null;</span>
|
|
2711
|
-
}
|
|
2712
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2713
|
-
case 'delete':
|
|
2714
|
-
<span class="cstat-no" title="statement not covered" > if (Array.isArray(parentNode) && oldIndex !== -1) {</span>
|
|
2715
|
-
<span class="cstat-no" title="statement not covered" > parentNode.splice(oldIndex, 0, oldObject);</span>
|
|
2716
|
-
} else {
|
|
2717
|
-
<span class="cstat-no" title="statement not covered" > parentNode[parentKey] = oldObject;</span>
|
|
2718
|
-
}
|
|
2719
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2720
|
-
case 'update':
|
|
2721
|
-
<span class="cstat-no" title="statement not covered" > for (const key in oldObject) {</span>
|
|
2722
|
-
<span class="cstat-no" title="statement not covered" > if (node) {</span>
|
|
2723
|
-
(<span class="cstat-no" title="statement not covered" >node as any)[key] = oldObject[key] ?? null;</span>
|
|
2724
|
-
}
|
|
2725
|
-
}
|
|
2726
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2727
|
-
}
|
|
2728
|
-
});
|
|
2729
|
-
});
|
|
2730
|
-
<span class="cstat-no" title="statement not covered" > console.log('当前所处栈位置:', currentIndex);</span>
|
|
2731
|
-
<span class="cstat-no" title="statement not covered" > console.log('当前appJSON:', appJson);</span>
|
|
2732
|
-
<span class="cstat-no" title="statement not covered" > return appJson;</span>
|
|
2733
|
-
}
|
|
2734
|
-
|
|
2735
|
-
function <span class="fstat-no" title="function not covered" >getLogic(</span>key: string, app: any, diffLogicList: string[]) {
|
|
2736
|
-
<span class="cstat-no" title="statement not covered" > if (!diffLogicList.includes(key)) {</span>
|
|
2737
|
-
<span class="cstat-no" title="statement not covered" > diffLogicList.push(key);</span>
|
|
2738
|
-
<span class="cstat-no" title="statement not covered" > if (key.startsWith('app')) {</span>
|
|
2739
|
-
const index = <span class="cstat-no" title="statement not covered" >key.lastIndexOf('.');</span>
|
|
2740
|
-
const name = <span class="cstat-no" title="statement not covered" >key.slice(index + 1);</span>
|
|
2741
|
-
const logic = <span class="cstat-no" title="statement not covered" >app.logics.find(<span class="fstat-no" title="function not covered" >(i</span>tem: any) => <span class="cstat-no" title="statement not covered" >item.name === name)</span>;</span>
|
|
2742
|
-
<span class="cstat-no" title="statement not covered" > if (logic && logic.body && logic.body.length > 2) {</span>
|
|
2743
|
-
<span class="cstat-no" title="statement not covered" > logic.body.map(<span class="fstat-no" title="function not covered" >(i</span>tem: any) => <span class="cstat-no" title="statement not covered" >getStatement(item, app, diffLogicList))</span>;</span>
|
|
2744
|
-
}
|
|
2745
|
-
} else <span class="cstat-no" title="statement not covered" >if (key.startsWith('extensions')) {</span>
|
|
2746
|
-
const _pathArr = <span class="cstat-no" title="statement not covered" >key.split('.');</span>
|
|
1871
|
+
export co<span class="fstat-no" title="function not covered" >nst datab</span>aseTypes = storageService.databaseTypes;
|
|
1872
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1873
|
+
func<span class="cstat-no" title="statement not covered" >tion getLogic(key: string</span>, app: any, diffLogicList: string[]) {
|
|
1874
|
+
if<span class="cstat-no" title="statement not covered" > (!diffLogicList.includes(key)) {</span>
|
|
1875
|
+
diffLogicList.pu<span class="cstat-no" title="statement not covered" >sh(key);</span>
|
|
1876
|
+
if (key.startsW<span class="cstat-no" title="statement not covered" >ith('app')) {</span>
|
|
1877
|
+
const index = <span class="cstat-no" title="statement not covered" >key.lastIndexOf(<span class="fstat-no" title="function not covered" >'.</span>');<span class="cstat-no" title="statement not covered" ></span></span>
|
|
1878
|
+
<span class="cstat-no" title="statement not covered" > const name = key.slice(index + 1);</span>
|
|
1879
|
+
co<span class="cstat-no" title="statement not covered" >nst logic = app<span class="fstat-no" title="function not covered" >.l</span>ogics.find((i<span class="cstat-no" title="statement not covered" >tem: any) => item.name === name);</span></span>
|
|
1880
|
+
if (logic && logic.body && logic.body.length > 2) {
|
|
1881
|
+
log<span class="cstat-no" title="statement not covered" >ic.body.map((item: any) => getStatement(item, app, diffLogicList));</span>
|
|
1882
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
1883
|
+
} else if (key.s<span class="cstat-no" title="statement not covered" >tartsWith('e</span>xtensions')) {
|
|
1884
|
+
const _pathArr<span class="cstat-no" title="statement not covered" > = key.split</span>('.');
|
|
2747
1885
|
const _name = <span class="cstat-no" title="statement not covered" >_pathArr[1];</span>
|
|
2748
|
-
const _path = <span class="cstat-no" title="statement not covered" >
|
|
2749
|
-
const _list = <span class="cstat-no" title="statement not covered" >
|
|
2750
|
-
|
|
2751
|
-
const name =
|
|
2752
|
-
<span class="cstat-no" title="statement not covered"
|
|
2753
|
-
})
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
|
|
1886
|
+
const _path = _p<span class="cstat-no" title="statement not covered" >athArr[3];<span class="fstat-no" title="function not covered" ></span></span>
|
|
1887
|
+
const _list = a<span class="cstat-no" title="statement not covered" >pp.dependencies;</span>
|
|
1888
|
+
co<span class="cstat-no" title="statement not covered" >nst _module = _list.fin</span>d((it: Module) => {
|
|
1889
|
+
const name = it.name.replaceAll('-', '_');
|
|
1890
|
+
return name <span class="cstat-no" title="statement not covered" >=== _name;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
|
|
1891
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1892
|
+
co<span class="cstat-no" title="statement not covered" >nst logic = _mo<span class="fstat-no" title="function not covered" >du</span>le?.logics?.f<span class="cstat-no" title="statement not covered" >ind((item: Logic) => item.name === _pat</span>h)</span>;
|
|
1893
|
+
if (logic && logic.body && logic.body.length > 2) {
|
|
1894
|
+
logic.body.map((item: any) => getStatement(item, app, diffLogicList));
|
|
2757
1895
|
}
|
|
2758
1896
|
}
|
|
2759
1897
|
}
|
|
2760
|
-
}
|
|
2761
|
-
|
|
2762
|
-
|
|
2763
|
-
|
|
2764
|
-
|
|
2765
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2766
|
-
|
|
2767
|
-
<span class="cstat-no" title="statement not covered" > logicItems = [state.left, state.right];</span>
|
|
2768
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2769
|
-
case 'IfStatement':
|
|
2770
|
-
<span class="cstat-no" title="statement not covered" > logicItems = [...state.consequent, ...state.alternate];</span>
|
|
2771
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2772
|
-
case 'ForEachStatement':
|
|
2773
|
-
<span class="cstat-no" title="statement not covered" > logicItems = [...state.body, state.each, state.start, state.end];</span>
|
|
1898
|
+
}<span class="fstat-no" title="function not covered" ></span>
|
|
1899
|
+
/* 获取LogicITEM */<span class="cstat-no" title="statement not covered" ></span>
|
|
1900
|
+
fu<span class="cstat-no" title="statement not covered" >nction getStatement(state: any, app: any, diffLogicList: string[]) {</span>
|
|
1901
|
+
let logicItems = [];
|
|
1902
|
+
swit<span class="cstat-no" title="statement not covered" >ch (state.concept) {</span>
|
|
1903
|
+
ca<span class="cstat-no" title="statement not covered" >se 'Ass</span>ignment':
|
|
1904
|
+
logicItems = [state.left, state.right];
|
|
2774
1905
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2775
|
-
|
|
2776
|
-
|
|
1906
|
+
ca<span class="cstat-no" title="statement not covered" >se 'IfS</span>tatement':
|
|
1907
|
+
logicItems = [...state.consequent, ...state.alternate];
|
|
2777
1908
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2778
|
-
|
|
2779
|
-
|
|
1909
|
+
ca<span class="cstat-no" title="statement not covered" >se 'For</span>EachStatement':
|
|
1910
|
+
logicItems = [...state.body, state.each, state.start, state.end];
|
|
2780
1911
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2781
|
-
|
|
2782
|
-
|
|
1912
|
+
ca<span class="cstat-no" title="statement not covered" >se 'Mat</span>ch':
|
|
1913
|
+
logicItems = [state.expression, ...state.cases.map(getStatement).flat(1)];
|
|
2783
1914
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2784
|
-
|
|
2785
|
-
|
|
1915
|
+
ca<span class="cstat-no" title="statement not covered" >se 'Mat</span>chCase':
|
|
1916
|
+
logicItems = [...state.patterns, ...state.body];
|
|
2786
1917
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2787
|
-
|
|
2788
|
-
|
|
1918
|
+
ca<span class="cstat-no" title="statement not covered" >se 'Swi</span>tchStatement':
|
|
1919
|
+
logicItems = state.cases.map(getStatement).flat(1);
|
|
2789
1920
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
<span class="cstat-no" title="statement not covered" > getLogic(state.calleewholeKey, app, diffLogicList);</span>
|
|
1921
|
+
ca<span class="cstat-no" title="statement not covered" >se 'Swi</span>tchCase':
|
|
1922
|
+
logicItems = [state.test, ...state.consequent];
|
|
2793
1923
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2794
|
-
|
|
2795
|
-
|
|
1924
|
+
ca<span class="cstat-no" title="statement not covered" >se 'Whi</span>leStatement':
|
|
1925
|
+
logicItems = [state.test, ...state.body];
|
|
1926
|
+
<span class="cstat-no" title="statement not covered" > break;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
|
|
1927
|
+
ca<span class="cstat-no" title="statement not covered" >se 'CallLogic':</span>
|
|
1928
|
+
<span class="cstat-no" title="statement not covered" > logicIt</span>ems = state.arguments?.map((item: Argument) => item.expression);
|
|
1929
|
+
getLogic(state.calleewholeKey, app, diffLogicList);
|
|
1930
|
+
<span class="cstat-no" title="statement not covered" > break;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
|
|
1931
|
+
ca<span class="cstat-no" title="statement not covered" >se 'Cal</span>lFunction':
|
|
1932
|
+
logicItems = state.arguments?.map((item: Argument) => item.expression);
|
|
1933
|
+
<span class="cstat-no" title="statement not covered" > break;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
|
|
1934
|
+
ca<span class="cstat-no" title="statement not covered" >se 'Cal</span>lInterface':
|
|
1935
|
+
logicItems = state.arguments?.map((item: Argument) => item.expression);
|
|
2796
1936
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2797
|
-
|
|
2798
|
-
|
|
1937
|
+
ca<span class="cstat-no" title="statement not covered" >se 'Ext</span>ernalDestination':
|
|
1938
|
+
logicItems = [state.anchor, state.link];
|
|
1939
|
+
<span class="cstat-no" title="statement not covered" > break;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
|
|
1940
|
+
ca<span class="cstat-no" title="statement not covered" >se 'Bat</span>chAssignment':
|
|
1941
|
+
logicItems = [state.left?.expression, ...state.left?.members, ...state.rights.map((item: SelectMembers) => [item?.expression, ...item?.members]).flat(1)];
|
|
2799
1942
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2800
|
-
|
|
2801
|
-
|
|
1943
|
+
ca<span class="cstat-no" title="statement not covered" >se 'Mem</span>berExpression':
|
|
1944
|
+
logicItems = [state.object, state.property];
|
|
2802
1945
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2803
|
-
|
|
2804
|
-
|
|
1946
|
+
ca<span class="cstat-no" title="statement not covered" >se 'Str</span>ingInterpolation':
|
|
1947
|
+
logicItems = [...state.expressions];
|
|
1948
|
+
<span class="cstat-no" title="statement not covered" > break;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
|
|
1949
|
+
ca<span class="cstat-no" title="statement not covered" >se 'New</span>Composite':
|
|
1950
|
+
logicItems = [...state.rights.map((item: SelectMembers) => item.expression)];
|
|
2805
1951
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2809
|
-
case 'StringInterpolation':
|
|
2810
|
-
<span class="cstat-no" title="statement not covered" > logicItems = [...state.expressions];</span>
|
|
2811
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2812
|
-
case 'NewComposite':
|
|
2813
|
-
<span class="cstat-no" title="statement not covered" > logicItems = [...state.rights.map(<span class="fstat-no" title="function not covered" >(i</span>tem: SelectMembers) => <span class="cstat-no" title="statement not covered" >item.expression)</span>];</span>
|
|
2814
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2815
|
-
case 'NewList':
|
|
2816
|
-
<span class="cstat-no" title="statement not covered" > logicItems = [...state.items];</span>
|
|
1952
|
+
ca<span class="cstat-no" title="statement not covered" >se 'New</span>List':
|
|
1953
|
+
logicItems = [...state.items];
|
|
2817
1954
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2818
1955
|
default:
|
|
2819
|
-
|
|
2820
|
-
}
|
|
1956
|
+
break;
|
|
1957
|
+
<span class="cstat-no" title="statement not covered" > }<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
|
|
2821
1958
|
|
|
2822
|
-
|
|
1959
|
+
return logicItems.filter((item: LogicItem) => !!item);
|
|
2823
1960
|
}
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
2829
|
-
}
|
|
2830
|
-
/* 分端以后需要改
|
|
2831
|
-
|
|
2832
|
-
|
|
1961
|
+
<span class="fstat-no" title="function not covered" ></span>
|
|
1962
|
+
/*<span class="cstat-no" title="statement not covered" > 小程序影响的服务端发布 */</span>
|
|
1963
|
+
func<span class="cstat-no" title="statement not covered" >tion getMiniAp</span>pChange(target: any, obj: any, action: string) {
|
|
1964
|
+
if (!target.app.miniEnable) {
|
|
1965
|
+
return false;
|
|
1966
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
1967
|
+
<span class="cstat-no" title="statement not covered" > /* 分端以后需要改 */</span>
|
|
1968
|
+
co<span class="cstat-no" title="statement not covered" >nst len = targ</span>et.nodePath?.split('.').length;
|
|
1969
|
+
if (len > 2) {
|
|
2833
1970
|
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
2834
|
-
}
|
|
2835
|
-
|
|
1971
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
1972
|
+
if (action === 'delete') {
|
|
2836
1973
|
<span class="cstat-no" title="statement not covered" > return true;</span>
|
|
2837
|
-
}
|
|
2838
|
-
|
|
2839
|
-
|
|
1974
|
+
} el<span class="cstat-no" title="statement not covered" >se {</span>
|
|
1975
|
+
if ('name' in obj || 'title' in obj) {
|
|
1976
|
+
return true;
|
|
2840
1977
|
}
|
|
2841
1978
|
}
|
|
2842
1979
|
}
|
|
2843
1980
|
|
|
2844
1981
|
let aiExecuted = 0;
|
|
2845
|
-
let sessionPath = ''
|
|
2846
|
-
// AI
|
|
2847
|
-
|
|
2848
|
-
|
|
2849
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2850
|
-
|
|
1982
|
+
let sessionPath = '';<span class="fstat-no" title="function not covered" ></span>
|
|
1983
|
+
// AI 生成内容是否被采纳<span class="cstat-no" title="statement not covered" ></span>
|
|
1984
|
+
co<span class="cstat-no" title="statement not covered" >nst handleAIPoint = (app: any, actionItem: any) => {</span>
|
|
1985
|
+
co<span class="cstat-no" title="statement not covered" >nst { actionMsg, action } = actionItem || {};</span>
|
|
1986
|
+
if<span class="cstat-no" title="statement not covered" > (aiExecuted > 0)</span> {
|
|
1987
|
+
app.emit('logic:accepted', { ...actionItem, sessionPath });
|
|
2851
1988
|
<span class="cstat-no" title="statement not covered" > aiExecuted -= 1;</span>
|
|
2852
|
-
}
|
|
2853
|
-
|
|
1989
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
1990
|
+
if (actionMsg.includes('自然语言生成代码') && !action) {
|
|
2854
1991
|
<span class="cstat-no" title="statement not covered" > aiExecuted += 1;</span>
|
|
2855
1992
|
// eslint-disable-next-line prefer-destructuring
|
|
2856
|
-
|
|
1993
|
+
sessionPath = actionMsg.match(/:(.*)/)[1];
|
|
2857
1994
|
}
|
|
2858
1995
|
}
|
|
2859
1996
|
|
|
2860
1997
|
/**
|
|
2861
|
-
*
|
|
2862
|
-
|
|
2863
|
-
async function <span class="
|
|
2864
|
-
|
|
2865
|
-
|
|
2866
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2867
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2868
|
-
|
|
2869
|
-
|
|
2870
|
-
|
|
2871
|
-
|
|
2872
|
-
|
|
2873
|
-
<span class="cstat-no" title="statement not covered"
|
|
2874
|
-
|
|
2875
|
-
|
|
2876
|
-
|
|
2877
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2878
|
-
}
|
|
2879
|
-
|
|
2880
|
-
|
|
2881
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2882
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2883
|
-
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
2887
|
-
|
|
2888
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2889
|
-
|
|
2890
|
-
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
|
|
2894
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2895
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2896
|
-
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
<span class="cstat-no" title="statement not covered" > hasBackEnd = true;</span>
|
|
2904
|
-
}
|
|
2905
|
-
} else {
|
|
2906
|
-
<span class="cstat-no" title="statement not covered" > if (needUpdateBackEnd) {</span>
|
|
2907
|
-
<span class="cstat-no" title="statement not covered" > hasBackEnd = true;</span>
|
|
1998
|
+
* 执行更新<span class="fstat-no" title="function not covered" ></span>
|
|
1999
|
+
*/<span class="cstat-no" title="statement not covered" ></span>
|
|
2000
|
+
async function doAc<span class="cstat-no" title="statement not covered" >tion(a</span>pp: any, actionItem: any) {
|
|
2001
|
+
let hasFrontEnd = false;<span class="cstat-no" title="statement not covered" ></span>
|
|
2002
|
+
let hasBackEnd = false;<span class="cstat-no" title="statement not covered" ></span>
|
|
2003
|
+
<span class="cstat-no" title="statement not covered" > const actionList: any[] = [];</span>
|
|
2004
|
+
const { list, act<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >io</span>nMsg, action } = actionItem || {};</span>
|
|
2005
|
+
handleAIPoint<span class="cstat-no" title="statement not covered" >(app, actionItem);</span>
|
|
2006
|
+
co<span class="cstat-no" title="statement not covered" >nst itemloop = (_i: LogicItem, app: any, diffArr: string[]) => {</span>
|
|
2007
|
+
co<span class="cstat-no" title="statement not covered" >nst _l <span class="fstat-no" title="function not covered" >= </span>getStatement(_i, a<span class="cstat-no" title="statement not covered" >pp, diffArr);</span></span>
|
|
2008
|
+
if (_l.length) {
|
|
2009
|
+
_l.map((_ii: LogicItem) => itemloop(_ii, app, diffArr));
|
|
2010
|
+
}<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span>
|
|
2011
|
+
};<span class="cstat-no" title="statement not covered" ></span>
|
|
2012
|
+
cons<span class="cstat-no" title="statement not covered" >t loopEle = (view: View <span class="fstat-no" title="function not covered" >| </span>ViewElem<span class="cstat-no" title="statement not covered" >ent, checkAuth: boolean) </span>=></span> {
|
|
2013
|
+
if (view instanceof View) {
|
|
2014
|
+
<span class="cstat-no" title="statement not covered" > view?.elements?.forEac<span class="fstat-no" title="function not covered" >h(</span>(item) =<span class="cstat-no" title="statement not covered" >> loopEle(item, checkAuth</span>))</span>;
|
|
2015
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2016
|
+
vi<span class="cstat-no" title="statement not covered" >ew?.children?.forEach((item) => loopEle(item, checkAuth));</span>
|
|
2017
|
+
if (view instanceof ViewElemen<span class="cstat-no" title="statement not covered" >t) </span>{
|
|
2018
|
+
if<span class="cstat-no" title="statement not covered" > (view.bindEvents.length<span class="fstat-no" title="function not covered" >) </span>{</span>
|
|
2019
|
+
co<span class="cstat-no" title="statement not covered" >nst diffArr: string[] = [<span class="fstat-no" title="function not covered" >];</span></span>
|
|
2020
|
+
view<span class="cstat-no" title="statement not covered" >.bindEvents.forEach<span class="fstat-no" title="function not covered" >((</span>bindEvent) =><span class="cstat-no" title="statement not covered" > {</span></span>
|
|
2021
|
+
bindEvent.logics.forEach((logic) => {
|
|
2022
|
+
logic.body.forEach((logicItem) => itemloop(logicItem, app, diffArr));
|
|
2023
|
+
});<span class="cstat-no" title="statement not covered" ><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
|
|
2024
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
2025
|
+
co<span class="cstat-no" title="statement not covered" >nst result = diffAr</span>r.filter((item) => item.startsWith('app') || item.startsWith('extensions'));
|
|
2026
|
+
if (result.length) {
|
|
2027
|
+
hasBackEnd = true;
|
|
2028
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2029
|
+
}<span class="cstat-no" title="statement not covered" ><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
|
|
2030
|
+
if (view.tag === 'u-uploader<span class="cstat-no" title="statement not covered" >' || view.tag === 'van-uploader') {</span>
|
|
2031
|
+
<span class="cstat-no" title="statement not covered" > const bute = view?.bindAttrs.find((item) => item.name === 'url');</span>
|
|
2032
|
+
co<span class="cstat-no" title="statement not covered" >nst needUpdateBackEnd = bute?.value?.endsWith('/import') || bute?.value?.includes('/upload/');</span>
|
|
2033
|
+
if (<span class="cstat-no" title="statement not covered" >checkAuth) {</span>
|
|
2034
|
+
if (needUpdateBackEnd && !view.view.parentAuth) {
|
|
2035
|
+
hasBackEnd = true;
|
|
2036
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2037
|
+
} el<span class="cstat-no" title="statement not covered" >se {</span>
|
|
2038
|
+
if (needUpdateBackEnd) {
|
|
2039
|
+
hasBackEnd = true;
|
|
2908
2040
|
}
|
|
2909
2041
|
}
|
|
2910
2042
|
}
|
|
2911
2043
|
}
|
|
2912
|
-
}
|
|
2913
|
-
|
|
2914
|
-
const loopEleAuth = <span class="cstat-no" title="statement not covered"
|
|
2915
|
-
<span class="
|
|
2916
|
-
const bindDirective =
|
|
2917
|
-
<span class="
|
|
2918
|
-
)
|
|
2919
|
-
|
|
2044
|
+
};<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span>
|
|
2045
|
+
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span>
|
|
2046
|
+
const loopEleAuth = (viewE<span class="cstat-no" title="statement not covered" >lement: ViewElement) => {</span>
|
|
2047
|
+
view<span class="fstat-no" title="function not covered" >El</span>ement?.children?.forEac<span class="cstat-no" title="statement not covered" >h((item: ViewElement)</span> => {
|
|
2048
|
+
const bindDirective = item?.bindDirectives?.find(
|
|
2049
|
+
<span class="cstat-no" title="statement not covered" > (item: BindDirective) => item.name === 'auth'</span>
|
|
2050
|
+
)<span class="cstat-no" title="statement not covered" ></span>
|
|
2051
|
+
if (bindDirective) {
|
|
2920
2052
|
<span class="cstat-no" title="statement not covered" > hasBackEnd = true</span>
|
|
2921
2053
|
}
|
|
2922
|
-
|
|
2923
|
-
})
|
|
2924
|
-
}
|
|
2925
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2926
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2927
|
-
|
|
2928
|
-
const
|
|
2929
|
-
const _path: string =
|
|
2930
|
-
|
|
2931
|
-
|
|
2054
|
+
loopEleAuth(item)
|
|
2055
|
+
<span class="cstat-no" title="statement not covered" > })</span>
|
|
2056
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
2057
|
+
try <span class="cstat-no" title="statement not covered" >{<span class="fstat-no" title="function not covered" ></span></span>
|
|
2058
|
+
if (Array.isArray(list)<span class="cstat-no" title="statement not covered" >) {</span>
|
|
2059
|
+
list.forEach((event) => <span class="cstat-no" title="statement not covered" >{</span>
|
|
2060
|
+
const emitTarg<span class="cstat-no" title="statement not covered" >et = event?.originEvent?.tar</span>get as SynatxNode;
|
|
2061
|
+
<span class="cstat-no" title="statement not covered" > const _path: string = event.originEvent.path;<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
|
|
2062
|
+
co<span class="cstat-no" title="statement not covered" >nst _root = _path.s</span>plit('.')?.[1] || '';
|
|
2063
|
+
if (['backend', 'overriddenLogics', 'dataSources', 'processes', 'roles', 'logics', 'enums', 'structures', 'interfaces', 'interfaceDependencies', 'configuration', 'dependencies', 'authLogics', 'authLogicsForCallInterface', 'triggerLaunchers', 'connections'].some((item) => _root.startsWith(item))) {
|
|
2932
2064
|
<span class="cstat-no" title="statement not covered" > hasBackEnd = true;</span>
|
|
2933
|
-
}
|
|
2934
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2935
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2936
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2937
|
-
|
|
2938
|
-
|
|
2939
|
-
}
|
|
2940
|
-
}
|
|
2941
|
-
|
|
2942
|
-
|
|
2065
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
2066
|
+
if (<span class="cstat-no" title="statement not covered" >emitTarget) {</span>
|
|
2067
|
+
if (<span class="cstat-no" title="statement not covered" >emitTarget.concept === 'App') {</span>
|
|
2068
|
+
if<span class="cstat-no" title="statement not covered" > (event?.object?.preferenceMap || event?.originEvent?.object?.preferenceMap) {</span>
|
|
2069
|
+
hasBackEnd = true
|
|
2070
|
+
hasFrontEnd = true
|
|
2071
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2072
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
2073
|
+
if (emitTarget.concept === 'ValidationRule') {
|
|
2074
|
+
if (
|
|
2943
2075
|
event?.object?.enableServerValidation ||
|
|
2944
|
-
event?.originEvent?.object?.enableServerValidation
|
|
2945
|
-
) {
|
|
2946
|
-
|
|
2947
|
-
|
|
2948
|
-
}
|
|
2949
|
-
}
|
|
2950
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2951
|
-
|
|
2952
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
})
|
|
2956
|
-
}
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
}
|
|
2961
|
-
}
|
|
2962
|
-
|
|
2076
|
+
<span class="cstat-no" title="statement not covered" > event?.originEvent?.object?.enableServerValidation</span>
|
|
2077
|
+
) <span class="cstat-no" title="statement not covered" >{</span>
|
|
2078
|
+
hasBackEnd = true
|
|
2079
|
+
hasFrontEnd = true
|
|
2080
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2081
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
2082
|
+
if<span class="cstat-no" title="statement not covered" > (emitTarget.concept === 'Logic') {</span>
|
|
2083
|
+
co<span class="cstat-no" title="statement not covered" >nst diffArr: string[] = <span class="fstat-no" title="function not covered" >[]</span>;</span>
|
|
2084
|
+
if (<span class="cstat-no" title="statement not covered" >emitTarget.body.length > 2) </span>{
|
|
2085
|
+
emitTarget.body.forEach((it: LogicItem) => {
|
|
2086
|
+
itemloop(it, app, diffArr);
|
|
2087
|
+
});<span class="cstat-no" title="statement not covered" ><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
|
|
2088
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2089
|
+
co<span class="cstat-no" title="statement not covered" >nst result = diffAr</span>r.filter((item) => item.startsWith('app') || item.startsWith('extensions'));
|
|
2090
|
+
if (result.length) {
|
|
2091
|
+
hasBackEnd = true;
|
|
2092
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2093
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
2094
|
+
if ('view' in emitTarget && emitTarget.view) {
|
|
2963
2095
|
<span class="cstat-no" title="statement not covered" > hasFrontEnd = true</span>
|
|
2964
|
-
}
|
|
2965
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2096
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
2097
|
+
if<span class="cstat-no" title="statement not covered" > (emitTarget.concept === 'BindDirective') {</span>
|
|
2966
2098
|
const isDelete = <span class="cstat-no" title="statement not covered" >event?.originEvent?.action === 'delete'</span>
|
|
2967
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
}
|
|
2972
|
-
}
|
|
2973
|
-
|
|
2974
|
-
|
|
2975
|
-
}
|
|
2976
|
-
}
|
|
2977
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2978
|
-
|
|
2979
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2980
|
-
}
|
|
2981
|
-
|
|
2982
|
-
const
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
2986
|
-
|
|
2987
|
-
<span class="cstat-no" title="statement not covered" > if (isDelete || isUpdateAuth || isUpdateBindRoles || isAuthView||isUpdateAuthDes) {</span>
|
|
2988
|
-
<span class="cstat-no" title="statement not covered" > hasBackEnd = true;</span>
|
|
2099
|
+
if<span class="cstat-no" title="statement not covered" > (isDelete) {</span>
|
|
2100
|
+
co<span class="cstat-no" title="statement not covered" >nst isAuto = ~event?.originEvent?.path?.indexOf('name=auth')</span>
|
|
2101
|
+
if (isAuto) {
|
|
2102
|
+
hasBackEnd = true
|
|
2103
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2104
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
2105
|
+
if (event?.originEvent?.object?.name === 'auth') {
|
|
2106
|
+
hasBackEnd = true
|
|
2107
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2108
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2109
|
+
if (<span class="cstat-no" title="statement not covered" >emitTarget.concept </span>=== 'View') {
|
|
2110
|
+
if (getMiniAppChange(emitTarget, event?.originEvent?.object, event?.originEvent?.action)) {
|
|
2111
|
+
hasBackEnd = tr<span class="cstat-no" title="statement not covered" >ue;</span>
|
|
2112
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
2113
|
+
const isDelete = even<span class="cstat-no" title="statement not covered" >t?.originEvent?.action === 'delete';</span>
|
|
2114
|
+
const isAuthView = emitTar<span class="cstat-no" title="statement not covered" >get.auth && event?.originEvent?.object?.name;</span>
|
|
2115
|
+
<span class="cstat-no" title="statement not covered" > const isUpdateAuth = event?.originEvent?.action === 'update' && event?.originEvent?.object && event?.originEvent?.object?.auth</span>
|
|
2116
|
+
co<span class="cstat-no" title="statement not covered" >nst isUpdateBindRol</span>es = event?.originEvent?.action === 'update' && event?.originEvent?.object && event?.originEvent?.object?.bindRoles;
|
|
2117
|
+
if (isDelete || isUpdateAuth || isUpdateBindRoles || isAuthView) {
|
|
2118
|
+
hasBackEnd = true;
|
|
2989
2119
|
// const app = emitTarget.app;
|
|
2990
2120
|
// const diffArr: string[] = [];
|
|
2991
2121
|
// emitTarget.logics.forEach((logic: Logic) => {
|
|
@@ -3000,79 +2130,76 @@ async function <span class="fstat-no" title="function not covered" >doAction(</s
|
|
|
3000
2130
|
// hasBackEnd = true;
|
|
3001
2131
|
// }
|
|
3002
2132
|
// emitTarget.children.forEach((item: View | ViewElement) => loopEle(item, isDelete));
|
|
3003
|
-
// emitTarget.
|
|
2133
|
+
<span class="cstat-no" title="statement not covered" > // emitTarget.elem</span>ents.forEach((item: View | ViewElement) => loopEle(item, isDelete));
|
|
3004
2134
|
}
|
|
3005
2135
|
<span class="cstat-no" title="statement not covered" > hasFrontEnd = true;</span>
|
|
3006
|
-
}
|
|
3007
|
-
|
|
3008
|
-
<span class="
|
|
3009
|
-
|
|
3010
|
-
|
|
3011
|
-
<span class="cstat-no" title="statement not covered"
|
|
3012
|
-
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
<span class="cstat-no" title="statement not covered"
|
|
3016
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
<span class="cstat-no" title="statement not covered"
|
|
3020
|
-
|
|
3021
|
-
<span class="fstat-no" title="function not covered" > (i</span>tem: BindDirective) => <span class="cstat-no" title="statement not covered" >item.name === 'auth'</span>
|
|
3022
|
-
)
|
|
3023
|
-
<span class="cstat-no" title="statement not covered" > if (bindDirective) {</span>
|
|
2136
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
2137
|
+
if (emitTarget.concept ===<span class="cstat-no" title="statement not covered" > 'ViewElement') {</span>
|
|
2138
|
+
if (<span class="fstat-no" title="function not covered" >ev</span>ent?.originEvent?.objec<span class="cstat-no" title="statement not covered" >t?.name) {</span>
|
|
2139
|
+
const bindDirective = emitTarget.bindDirectives.find(
|
|
2140
|
+
<span class="cstat-no" title="statement not covered" > (item: BindDirective) => item.name === 'auth'</span>
|
|
2141
|
+
)<span class="cstat-no" title="statement not covered" ></span>
|
|
2142
|
+
if (bindDirective) {
|
|
2143
|
+
hasBackEnd = true;
|
|
2144
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
2145
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
2146
|
+
if (<span class="fstat-no" title="function not covered" >ev</span>ent?.originEvent?.actio<span class="cstat-no" title="statement not covered" >n === 'delete') {</span>
|
|
2147
|
+
const bindDirective = emitTarget?.bindDirectives?.find(
|
|
2148
|
+
<span class="cstat-no" title="statement not covered" > (item: BindDirective) => item.name === 'auth'</span>
|
|
2149
|
+
)<span class="cstat-no" title="statement not covered" ></span>
|
|
2150
|
+
if (bindDirective) {
|
|
3024
2151
|
<span class="cstat-no" title="statement not covered" > hasBackEnd = true</span>
|
|
3025
2152
|
}
|
|
3026
2153
|
<span class="cstat-no" title="statement not covered" > loopEleAuth(emitTarget)</span>
|
|
3027
|
-
}
|
|
3028
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3029
|
-
|
|
3030
|
-
|
|
3031
|
-
}
|
|
2154
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
2155
|
+
if (<span class="cstat-no" title="statement not covered" >event?.originEvent?.action !== 'create') {</span>
|
|
2156
|
+
if (event?.originEvent?.object && event?.originEvent?.object?.bindRoles) {
|
|
2157
|
+
hasBackEnd = true
|
|
2158
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
3032
2159
|
}
|
|
3033
2160
|
<span class="cstat-no" title="statement not covered" > loopEle(emitTarget, true)</span>
|
|
3034
2161
|
}
|
|
3035
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3036
|
-
const needUpdateBackEnd
|
|
2162
|
+
if (<span class="cstat-no" title="statement not covered" >emitTarget.concept === 'BindAttribute' && emitTarget.name === 'url') {</span>
|
|
2163
|
+
<span class="cstat-no" title="statement not covered" > const needUpdateBackEnd =</span>
|
|
3037
2164
|
<span class="cstat-no" title="statement not covered" > emitTarget?.value?.endsWith('/import') || emitTarget?.value?.includes('/upload/')</span>
|
|
3038
|
-
|
|
3039
|
-
|
|
3040
|
-
}
|
|
3041
|
-
}
|
|
3042
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3043
|
-
const arrlist: string[] =
|
|
3044
|
-
|
|
3045
|
-
|
|
3046
|
-
|
|
3047
|
-
|
|
3048
|
-
|
|
2165
|
+
if (!emitTarget.view.parentAuth && needUpdateBackEnd) {
|
|
2166
|
+
hasBackEnd = true
|
|
2167
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2168
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
2169
|
+
if<span class="cstat-no" title="statement not covered" > (emitTarget.concept === 'CallLogic') {</span>
|
|
2170
|
+
const arrlist: <span class="cstat-no" title="statement not covered" >string[] = [];<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
|
|
2171
|
+
getLogic((emitTarget as CallLogic).calleeKey, emitTarget.app, arrlist);
|
|
2172
|
+
<span class="cstat-no" title="statement not covered" > const result = arrlist.filter((item) => item.startsWith('app') || item.startsWith('extensions'));</span>
|
|
2173
|
+
//<span class="cstat-no" title="statement not covered" > console.log(result</span>, 'CallLogic');
|
|
2174
|
+
if (result.length) {
|
|
2175
|
+
hasBackEnd = true;
|
|
3049
2176
|
}
|
|
2177
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2178
|
+
//<span class="cstat-no" title="statement not covered" > 更新端时需要出发后端更新</span>
|
|
2179
|
+
if (emitTarget.concept === 'Frontend') {
|
|
2180
|
+
hasBackEnd = true;
|
|
3050
2181
|
}
|
|
3051
|
-
|
|
3052
|
-
<span class="cstat-no" title="statement not covered"
|
|
3053
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
<span class="cstat-no" title="statement not covered" > event.eventList.forEach(<span class="fstat-no" title="function not covered" >({</span> action, path, object: objItem }: { action: string; path: string; object: any }) => {</span>
|
|
3058
|
-
<span class="cstat-no" title="statement not covered" > if (Array.isArray(objItem)) {</span>
|
|
3059
|
-
<span class="cstat-no" title="statement not covered" > if (action === 'update') {</span>
|
|
3060
|
-
<span class="cstat-no" title="statement not covered" > actionList.push({</span>
|
|
2182
|
+
}<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span>
|
|
2183
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2184
|
+
even<span class="cstat-no" title="statement not covered" >t.eventList.forEach(({ action, path, object: objItem }: { action: string; path: string; object: any }) => {</span>
|
|
2185
|
+
if (<span class="cstat-no" title="statement not covered" >Array.isArray(objItem)) {</span>
|
|
2186
|
+
if (action === 'update') {
|
|
2187
|
+
actionList.push({
|
|
3061
2188
|
action,
|
|
3062
2189
|
path,
|
|
3063
2190
|
node: objItem[0],
|
|
3064
|
-
})
|
|
3065
|
-
}
|
|
3066
|
-
|
|
3067
|
-
|
|
2191
|
+
<span class="cstat-no" title="statement not covered" > });<span class="fstat-no" title="function not covered" ></span></span>
|
|
2192
|
+
} el<span class="cstat-no" title="statement not covered" >se {</span>
|
|
2193
|
+
objItem.forEach((item, index) => {
|
|
2194
|
+
actionList.push({
|
|
3068
2195
|
action,
|
|
3069
2196
|
path,
|
|
3070
2197
|
node: item,
|
|
3071
2198
|
});
|
|
3072
2199
|
});
|
|
3073
|
-
}
|
|
2200
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
3074
2201
|
} else {
|
|
3075
|
-
|
|
2202
|
+
actionList.push({
|
|
3076
2203
|
action,
|
|
3077
2204
|
path,
|
|
3078
2205
|
object: objItem,
|
|
@@ -3080,66 +2207,46 @@ async function <span class="fstat-no" title="function not covered" >doAction(</s
|
|
|
3080
2207
|
}
|
|
3081
2208
|
});
|
|
3082
2209
|
});
|
|
3083
|
-
}
|
|
3084
|
-
} catch (error) {
|
|
3085
|
-
|
|
3086
|
-
|
|
2210
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2211
|
+
} <span class="cstat-no" title="statement not covered" >catch (error) {</span>
|
|
2212
|
+
console.log(error);
|
|
2213
|
+
taskQueue.refreshNasl(app, {
|
|
3087
2214
|
errorInfo: {
|
|
3088
2215
|
message: error?.message,
|
|
3089
2216
|
stack: error?.stack,
|
|
3090
|
-
}
|
|
2217
|
+
<span class="cstat-no" title="statement not covered" > },</span>
|
|
3091
2218
|
});
|
|
3092
|
-
|
|
3093
|
-
}
|
|
2219
|
+
return;
|
|
2220
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
3094
2221
|
|
|
3095
|
-
const
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
actions: actionList,
|
|
2222
|
+
const instructList = [{
|
|
2223
|
+
uuid: uuidv4().replace(/-/g, ''),
|
|
2224
|
+
<span class="cstat-no" title="statement not covered" > actions: actionList,</span>
|
|
3099
2225
|
}];
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
actionMsg,
|
|
3105
|
-
list: list.map(<span class="fstat-no" title="function not covered" >(i</span>tem: any) => {
|
|
3106
|
-
const { path, action, object, oldObject, parentKey, index } = <span class="cstat-no" title="statement not covered" >item?.originEvent || {};</span>
|
|
3107
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
3108
|
-
path,
|
|
3109
|
-
action,
|
|
3110
|
-
parentKey,
|
|
3111
|
-
index,
|
|
3112
|
-
object: object?.toJSON?.() || object,
|
|
3113
|
-
oldObject: oldObject?.toJSON?.() || oldObject,
|
|
3114
|
-
}
|
|
3115
|
-
}),
|
|
3116
|
-
},
|
|
3117
|
-
};
|
|
3118
|
-
<span class="cstat-no" title="statement not covered" > saveNasl({ app, hasFrontEnd, hasBackEnd, instructList, operationList: [operation] });</span>
|
|
3119
|
-
// 进行nasl操作后需要将Index重置
|
|
3120
|
-
<span class="cstat-no" title="statement not covered" > operationRecordInfoMap.set('operationRecordIndex', null);</span>
|
|
3121
|
-
<span class="cstat-no" title="statement not covered" > if (!app._historying) {</span>
|
|
3122
|
-
<span class="cstat-no" title="statement not covered" > if (app._historyIndex !== app._historyList.length) {</span>
|
|
2226
|
+
<span class="cstat-no" title="statement not covered" > saveNasl({ app, hasFrontEnd, hasBackEnd, instructList });</span>
|
|
2227
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2228
|
+
if (<span class="cstat-no" title="statement not covered" >!app._historying) {</span>
|
|
2229
|
+
if (app._historyIndex !== app._historyList.length) {
|
|
3123
2230
|
<span class="cstat-no" title="statement not covered" > app._historyList = app._historyList.splice(0, app._historyIndex);</span>
|
|
3124
2231
|
}
|
|
3125
|
-
|
|
2232
|
+
app._historyList.<span class="fstat-no" title="function not covered" >pu</span>sh({<span class="cstat-no" title="statement not covered" ></span>
|
|
3126
2233
|
actionMsg,
|
|
3127
|
-
|
|
2234
|
+
<span class="cstat-no" title="statement not covered" > list: list.map((item: any) => item.originEv</span>ent),
|
|
3128
2235
|
});
|
|
3129
|
-
<span class="cstat-no" title="statement not covered"
|
|
2236
|
+
app._historyIndex <span class="cstat-no" title="statement not covered" >= app._historyList.length;</span>
|
|
3130
2237
|
} else {
|
|
3131
|
-
const actionMap =
|
|
2238
|
+
const actionMap = {
|
|
3132
2239
|
undo: '已撤销操作:',
|
|
3133
|
-
redo: '
|
|
3134
|
-
}
|
|
3135
|
-
|
|
3136
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3137
|
-
|
|
3138
|
-
<span class="cstat-no" title="statement not covered" > require('element-plus')
|
|
2240
|
+
redo: '已<span class="cstat-no" title="statement not covered" >重做操作:',</span>
|
|
2241
|
+
<span class="cstat-no" title="statement not covered" > };</span>
|
|
2242
|
+
<span class="cstat-no" title="statement not covered" > let msg = actionMap[action as 'undo' | 'redo'];</span>
|
|
2243
|
+
ms<span class="cstat-no" title="statement not covered" >g += actionMsg;</span>
|
|
2244
|
+
if (process.env.BUILD_TARGET !== 'node') {
|
|
2245
|
+
<span class="cstat-no" title="statement not covered" > require('element-plus')</span>.ElMessage.info(msg);
|
|
3139
2246
|
}
|
|
3140
2247
|
<span class="cstat-no" title="statement not covered" > app._historying = false;</span>
|
|
3141
2248
|
}
|
|
3142
|
-
|
|
2249
|
+
stepRecorder.initialized && stepRecorder.record(actionMsg, actionItem, actionList);
|
|
3143
2250
|
}
|
|
3144
2251
|
|
|
3145
2252
|
type Instruct = {
|
|
@@ -3151,7 +2258,6 @@ type TaskOption = {
|
|
|
3151
2258
|
hasFrontEnd: boolean,
|
|
3152
2259
|
hasBackEnd: boolean,
|
|
3153
2260
|
instructList: Instruct[],
|
|
3154
|
-
operationList: Operation[],
|
|
3155
2261
|
};
|
|
3156
2262
|
enum TaskQueueStatus {
|
|
3157
2263
|
ExceedMaxTaskCount,
|
|
@@ -3169,162 +2275,141 @@ class TaskQueue {
|
|
|
3169
2275
|
lastQueue: TaskOption[] = []
|
|
3170
2276
|
running: Boolean = false
|
|
3171
2277
|
maxTaskCount: number = 10
|
|
3172
|
-
status
|
|
3173
|
-
|
|
3174
|
-
|
|
2278
|
+
<span class="fstat-no" title="function not covered" > status?:</span> TaskQueueStatus = undefined
|
|
2279
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2280
|
+
addTask(task: TaskOption) {
|
|
3175
2281
|
<span class="cstat-no" title="statement not covered" > this.queue.push(task);</span>
|
|
3176
|
-
|
|
3177
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
}
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
}
|
|
3184
|
-
|
|
3185
|
-
<span class="
|
|
2282
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2283
|
+
if<span class="cstat-no" title="statement not covered" > (this.queue.length >= this.maxTaskCo</span>unt) {
|
|
2284
|
+
this.status = TaskQueueStatus.ExceedMaxTaskCount;
|
|
2285
|
+
task.app.emit('ExceedMaxTaskCount');
|
|
2286
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2287
|
+
|
|
2288
|
+
this.run();
|
|
2289
|
+
<span class="fstat-no" title="function not covered" > }</span>
|
|
2290
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2291
|
+
cl<span class="cstat-no" title="statement not covered" >ear() {</span>
|
|
3186
2292
|
<span class="cstat-no" title="statement not covered" > this.queue = [];</span>
|
|
3187
2293
|
<span class="cstat-no" title="statement not covered" > this.lastQueue = [];</span>
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
}
|
|
3191
|
-
|
|
3192
|
-
<span class="
|
|
2294
|
+
this.status = undefined;
|
|
2295
|
+
this.running = false;
|
|
2296
|
+
<span class="fstat-no" title="function not covered" > }<span class="branch-0 cbranch-no" title="branch not covered" ></span></span>
|
|
2297
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2298
|
+
asyn<span class="cstat-no" title="statement not covered" >c run(qu</span>eue = this.queue) {
|
|
3193
2299
|
<span class="cstat-no" title="statement not covered" > if (this.running)</span>
|
|
3194
2300
|
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
const app = <span class="cstat-no" title="statement not covered" >
|
|
3199
|
-
let hasFrontEnd =
|
|
3200
|
-
let hasBackEnd =
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
<span class="cstat-no" title="statement not covered" > for (const task of queue) {</span>
|
|
2301
|
+
if (queue.length === 0)
|
|
2302
|
+
return;<span class="cstat-no" title="statement not covered" ></span>
|
|
2303
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2304
|
+
const app = queue<span class="cstat-no" title="statement not covered" >[0].ap</span>p;
|
|
2305
|
+
let hasFrontEnd = false;<span class="cstat-no" title="statement not covered" ></span>
|
|
2306
|
+
let hasBackEnd = false;
|
|
2307
|
+
<span class="cstat-no" title="statement not covered" > let instructList: Instruct[] = [];</span>
|
|
2308
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2309
|
+
for <span class="cstat-no" title="statement not covered" >(const task of queue</span>) {
|
|
3205
2310
|
<span class="cstat-no" title="statement not covered" > if (task.hasFrontEnd)</span>
|
|
3206
2311
|
<span class="cstat-no" title="statement not covered" > hasFrontEnd = true;</span>
|
|
3207
2312
|
<span class="cstat-no" title="statement not covered" > if (task.hasBackEnd)</span>
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
|
|
3214
|
-
|
|
3215
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3216
|
-
|
|
3217
|
-
|
|
3218
|
-
|
|
3219
|
-
|
|
3220
|
-
app, hasFrontEnd, hasBackEnd, instructList, operationList
|
|
2313
|
+
hasBackEnd = true;
|
|
2314
|
+
instructList = instructList.concat(task.instructList);
|
|
2315
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2316
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2317
|
+
if<span class="cstat-no" title="statement not covered" > (queue === this.</span>queue) {
|
|
2318
|
+
this.lastQueue = [...queue];
|
|
2319
|
+
this.queue = [];
|
|
2320
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2321
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2322
|
+
this.running = true;
|
|
2323
|
+
const error = await _saveNasl({
|
|
2324
|
+
app, hasFrontEnd, hasBackEnd, instructList,
|
|
3221
2325
|
});
|
|
3222
2326
|
|
|
3223
|
-
// code: 401650, 检测到当前应用拉取操作已被强制结束,
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
2327
|
+
<span class="cstat-no" title="statement not covered" > // code: 401650, 检测到当前应用拉取操作已被强制结束, 用户确认后再刷新</span>
|
|
2328
|
+
//<span class="cstat-no" title="statement not covered" > code: 500502 msg:</span> "该应用已在新tab 页打开,请刷新!" 不重试或刷新
|
|
2329
|
+
if (!<span class="cstat-no" title="statement not covered" >error)</span>
|
|
2330
|
+
this.recover(app);
|
|
2331
|
+
el<span class="cstat-no" title="statement not covered" >se if (![401650, 500502].includes(error.code)) {</span>
|
|
3228
2332
|
// 连接失败,或超时,或后端持久化异常
|
|
3229
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3230
|
-
&& this.status !== TaskQueueStatus.Retrying) {
|
|
3231
|
-
|
|
2333
|
+
if<span class="cstat-no" title="statement not covered" > ((error.message === '</span>Network Error' || error.message?.includes('timeout') || error.code === 500500)
|
|
2334
|
+
<span class="cstat-no" title="statement not covered" > && this.status</span> !== TaskQueueStatus.Retrying) {
|
|
2335
|
+
this.running = false;
|
|
3232
2336
|
<span class="cstat-no" title="statement not covered" > this.retry();</span>
|
|
3233
2337
|
} else
|
|
3234
|
-
<span class="cstat-no" title="statement not covered" > this.
|
|
3235
|
-
|
|
3236
|
-
|
|
3237
|
-
}
|
|
3238
|
-
|
|
3239
|
-
<span class="cstat-no" title="statement not covered" > this.running = false
|
|
3240
|
-
|
|
3241
|
-
|
|
3242
|
-
}
|
|
3243
|
-
|
|
3244
|
-
<span class="
|
|
3245
|
-
|
|
3246
|
-
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
<span class="cstat-no" title="statement not covered" > this.status =
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
}
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
const failedQueue =
|
|
3256
|
-
hasFrontEnd
|
|
2338
|
+
<span class="cstat-no" title="statement not covered" > this.r</span>efreshNasl(app);
|
|
2339
|
+
|
|
2340
|
+
return;
|
|
2341
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2342
|
+
|
|
2343
|
+
<span class="cstat-no" title="statement not covered" > this.running</span> = false;
|
|
2344
|
+
|
|
2345
|
+
this.run();
|
|
2346
|
+
<span class="fstat-no" title="function not covered" > }</span>
|
|
2347
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2348
|
+
retr<span class="cstat-no" title="statement not covered" >y() {</span>
|
|
2349
|
+
if (this.lastQueue.length === 0)
|
|
2350
|
+
return;<span class="cstat-no" title="statement not covered" ></span>
|
|
2351
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2352
|
+
<span class="cstat-no" title="statement not covered" > const app = this.lastQ</span>ueue[0].app;
|
|
2353
|
+
<span class="cstat-no" title="statement not covered" > this.status = TaskQueueSta</span>tus.Retrying;
|
|
2354
|
+
app.emit('Retrying');
|
|
2355
|
+
this.run(this.lastQueue);
|
|
2356
|
+
<span class="fstat-no" title="function not covered" > }<span class="branch-0 cbranch-no" title="branch not covered" ></span></span>
|
|
2357
|
+
<span class="cstat-no" title="statement not covered" ><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span></span>
|
|
2358
|
+
async refreshNasl(app: App, options: RefreshNaslOptions = { errorInfo: {} }) {
|
|
2359
|
+
const failedQueue = this.lastQueue.map(({ hasFrontEnd, hasBackEnd, instructList }) => ({
|
|
2360
|
+
hasFrontEnd,<span class="cstat-no" title="statement not covered" > hasBackEnd, in<span class="fstat-no" title="function not covered" >st</span>ructList,<span class="cstat-no" title="statement not covered" ></span></span>
|
|
3257
2361
|
}));
|
|
3258
|
-
const queue =
|
|
3259
|
-
hasFrontEnd, hasBackEnd, instructList
|
|
2362
|
+
const queue = this.queue.map(({ hasFrontEnd, hasBackEnd, instructList }) => ({
|
|
2363
|
+
<span class="cstat-no" title="statement not covered" > hasFrontEnd, hasBackEnd, instructList,</span>
|
|
3260
2364
|
}));
|
|
3261
|
-
|
|
2365
|
+
await storageService.saveFrontendNasl({
|
|
3262
2366
|
body: {
|
|
3263
2367
|
nasl: app?.toJSON(),
|
|
3264
2368
|
failedQueue,
|
|
3265
2369
|
queue,
|
|
3266
|
-
|
|
3267
|
-
}
|
|
3268
|
-
}).catch(
|
|
3269
|
-
<span class="cstat-no" title="statement not covered" > console.log('备份 nasl 失败:', err)
|
|
3270
|
-
})
|
|
3271
|
-
|
|
3272
|
-
|
|
3273
|
-
}
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3277
|
-
|
|
3278
|
-
<span class="cstat-no" title="statement not covered" > app.
|
|
3279
|
-
|
|
3280
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
3281
|
-
case TaskQueueStatus.Retrying:
|
|
3282
|
-
<span class="cstat-no" title="statement not covered" > app.emit('SuccessRetry');</span>
|
|
3283
|
-
<span class="cstat-no" title="statement not covered" > this.status = undefined;</span>
|
|
2370
|
+
error<span class="fstat-no" title="function not covered" >In</span>fo: options.errorInfo,
|
|
2371
|
+
<span class="cstat-no" title="statement not covered" > },</span>
|
|
2372
|
+
}).catch((err: any) => {
|
|
2373
|
+
<span class="cstat-no" title="statement not covered" > console.log(</span>'备份 nasl 失败:', err);
|
|
2374
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
2375
|
+
this.clear();
|
|
2376
|
+
app.emit('refresh');
|
|
2377
|
+
<span class="fstat-no" title="function not covered" > }</span>
|
|
2378
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2379
|
+
recover(app: App) {
|
|
2380
|
+
swit<span class="cstat-no" title="statement not covered" >ch (this.status) {</span>
|
|
2381
|
+
ca<span class="cstat-no" title="statement not covered" >se TaskQueueStatus.Exceed</span>MaxTaskCount:
|
|
2382
|
+
<span class="cstat-no" title="statement not covered" > app.emi</span>t('BelowMaxTaskCount');
|
|
2383
|
+
this.status = undefined;
|
|
3284
2384
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2385
|
+
ca<span class="cstat-no" title="statement not covered" >se TaskQueueStatus.Retryi</span>ng:
|
|
2386
|
+
<span class="cstat-no" title="statement not covered" > app.emi</span>t('SuccessRetry');
|
|
2387
|
+
this.status = undefined;
|
|
2388
|
+
break;
|
|
3285
2389
|
}
|
|
3286
2390
|
}
|
|
3287
2391
|
}
|
|
3288
|
-
|
|
3289
|
-
|
|
3290
|
-
async function
|
|
3291
|
-
|
|
3292
|
-
}
|
|
3293
|
-
|
|
3294
|
-
class
|
|
3295
|
-
|
|
3296
|
-
branchId?: string;
|
|
3297
|
-
accountId?: string;
|
|
3298
|
-
userId?: string;
|
|
3299
|
-
phone?: string;
|
|
3300
|
-
actionItem: any;
|
|
3301
|
-
res?: any;
|
|
3302
|
-
err?: any;
|
|
3303
|
-
parentKey?: string;
|
|
3304
|
-
timestamp?: any;
|
|
3305
|
-
type?: string;
|
|
3306
|
-
uuid?: string;
|
|
3307
|
-
action?: string;
|
|
3308
|
-
}
|
|
3309
|
-
|
|
3310
|
-
async function <span class="fstat-no" title="function not covered" >_saveNasl(</span>options: TaskOption) {
|
|
3311
|
-
const { app, hasFrontEnd, hasBackEnd, instructList, operationList } = <span class="cstat-no" title="statement not covered" >options;</span>
|
|
2392
|
+
<span class="fstat-no" title="function not covered" ></span>
|
|
2393
|
+
ex<span class="cstat-no" title="statement not covered" >port const taskQueue = new T</span>askQueue();
|
|
2394
|
+
async function saveNasl(options: TaskOption) {
|
|
2395
|
+
taskQueue.addTask(options);
|
|
2396
|
+
}<span class="fstat-no" title="function not covered" ></span>
|
|
2397
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2398
|
+
as<span class="cstat-no" title="statement not covered" >ync function _saveNa</span>sl(options: TaskOption) {
|
|
2399
|
+
const { app, hasFrontE<span class="cstat-no" title="statement not covered" >nd,</span> hasBackEnd, instructList } = options;
|
|
3312
2400
|
<span class="cstat-no" title="statement not covered" > app.emit('saving');</span>
|
|
3313
|
-
|
|
3314
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2401
|
+
le<span class="cstat-no" title="statement not covered" >t ChangedNASLType = '';</span>
|
|
2402
|
+
if (has<span class="cstat-no" title="statement not covered" >FrontEnd && hasBackEnd) {</span>
|
|
3315
2403
|
<span class="cstat-no" title="statement not covered" > ChangedNASLType = 'both';</span>
|
|
3316
2404
|
} else <span class="cstat-no" title="statement not covered" >if (hasFrontEnd) {</span>
|
|
3317
2405
|
<span class="cstat-no" title="statement not covered" > ChangedNASLType = 'web';</span>
|
|
3318
|
-
} else
|
|
3319
|
-
|
|
3320
|
-
}
|
|
3321
|
-
|
|
3322
|
-
|
|
3323
|
-
|
|
3324
|
-
|
|
3325
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
3326
|
-
// 接口请求
|
|
3327
|
-
<span class="cstat-no" title="statement not covered" > res = await storageService.batchInstruct({</span>
|
|
2406
|
+
} else if (hasBackEnd) {
|
|
2407
|
+
ChangedNASLType = 'backend';
|
|
2408
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2409
|
+
le<span class="cstat-no" title="statement not covered" >t err;</span>
|
|
2410
|
+
if (<span class="cstat-no" title="statement not covered" >config.storage.protocol === 'http') {</span>
|
|
2411
|
+
try {
|
|
2412
|
+
await storageService.batchInstruct({
|
|
3328
2413
|
body: instructList,
|
|
3329
2414
|
headers: {
|
|
3330
2415
|
appId: app.id,
|
|
@@ -3332,40 +2417,27 @@ async function <span class="fstat-no" title="function not covered" >_saveNasl(</
|
|
|
3332
2417
|
tabTimestamp,
|
|
3333
2418
|
// 其他封装在 storageService 里了
|
|
3334
2419
|
},
|
|
3335
|
-
})
|
|
2420
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
3336
2421
|
} catch (error) {
|
|
3337
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2422
|
+
err<span class="cstat-no" title="statement not covered" > = error;</span>
|
|
3338
2423
|
}
|
|
3339
|
-
|
|
3340
|
-
<span class="cstat-no" title="statement not covered"
|
|
3341
|
-
<span class="cstat-no" title="statement not covered" > doOperationRecord({</span>
|
|
3342
|
-
...operation,
|
|
3343
|
-
res,
|
|
3344
|
-
err: {
|
|
3345
|
-
code,
|
|
3346
|
-
msg,
|
|
3347
|
-
result,
|
|
3348
|
-
success,
|
|
3349
|
-
},
|
|
3350
|
-
});
|
|
3351
|
-
});
|
|
3352
|
-
} else <span class="cstat-no" title="statement not covered" >if (config.storage.protocol === 'mock') {</span>
|
|
3353
|
-
// Do nothing
|
|
2424
|
+
} else if (config.storage.protocol === 'mock') {
|
|
2425
|
+
// Do nothing<span class="cstat-no" title="statement not covered" ></span>
|
|
3354
2426
|
} else {
|
|
3355
|
-
const json = <span class="cstat-no" title="statement not covered" >
|
|
3356
|
-
|
|
3357
|
-
|
|
3358
|
-
|
|
3359
|
-
|
|
3360
|
-
}
|
|
3361
|
-
|
|
3362
|
-
|
|
3363
|
-
|
|
2427
|
+
const json = await fs.re<span class="cstat-no" title="statement not covered" >adJ</span>SON(config.storage.basePath);
|
|
2428
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2429
|
+
le<span class="cstat-no" title="statement not covered" >t actionList: any[] = [];</span>
|
|
2430
|
+
for (const { actions } of instructList) {
|
|
2431
|
+
actionList = actionList.concat(actions);
|
|
2432
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2433
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2434
|
+
jsoner.batchAction(json, actionList);
|
|
2435
|
+
await fs.writeJSON(config.storage.basePath, json, {
|
|
3364
2436
|
spaces: 4,
|
|
3365
|
-
})
|
|
3366
|
-
}
|
|
3367
|
-
|
|
3368
|
-
|
|
2437
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
2438
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2439
|
+
app.emit('saved', err);
|
|
2440
|
+
return err;
|
|
3369
2441
|
}
|
|
3370
2442
|
|
|
3371
2443
|
export interface ProxyApp extends App {
|
|
@@ -3379,123 +2451,123 @@ export interface ProxyApp extends App {
|
|
|
3379
2451
|
_actionMsg: string;
|
|
3380
2452
|
_action: string;
|
|
3381
2453
|
naslServer: NaslServer;
|
|
3382
|
-
}
|
|
3383
|
-
|
|
3384
|
-
|
|
3385
|
-
<span class="cstat-no" title="statement not covered" > app._isCollectingCount
|
|
3386
|
-
<span class="cstat-no" title="statement not covered" > app._collectingList = [
|
|
2454
|
+
}<span class="fstat-no" title="function not covered" ></span>
|
|
2455
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2456
|
+
ex<span class="cstat-no" title="statement not covered" >port function handleApp(ap</span>p: ProxyApp) {
|
|
2457
|
+
<span class="cstat-no" title="statement not covered" > app._isCollectingCount </span>= 0;
|
|
2458
|
+
<span class="cstat-no" title="statement not covered" > app._collectingList = [</span>];
|
|
3387
2459
|
<span class="cstat-no" title="statement not covered" > app._historyList = [];</span>
|
|
3388
|
-
<span class="cstat-no" title="statement not covered" > app._historyIndex
|
|
3389
|
-
|
|
3390
|
-
<span class="cstat-no" title="statement not covered" > app._timer =
|
|
3391
|
-
|
|
3392
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3393
|
-
const proxyApp =
|
|
3394
|
-
|
|
3395
|
-
})
|
|
3396
|
-
|
|
3397
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3398
|
-
const proxyApp =
|
|
3399
|
-
|
|
2460
|
+
<span class="cstat-no" title="statement not covered" > app._historyIndex =</span> 0;
|
|
2461
|
+
app._historying = false;
|
|
2462
|
+
<span class="cstat-no" title="statement not covered" > app._timer = nu<span class="fstat-no" title="function not covered" >ll;</span></span>
|
|
2463
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2464
|
+
ap<span class="cstat-no" title="statement not covered" >p.on('undo', function (this: </span>ProxyApp) {
|
|
2465
|
+
const proxyApp = this;
|
|
2466
|
+
proxyApp._historying = true;
|
|
2467
|
+
<span class="cstat-no" title="statement not covered" > });<span class="fstat-no" title="function not covered" ></span></span>
|
|
2468
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2469
|
+
ap<span class="cstat-no" title="statement not covered" >p.on('redo', function (this: </span>ProxyApp) {
|
|
2470
|
+
const proxyApp = this;
|
|
2471
|
+
proxyApp._historying = true;
|
|
3400
2472
|
});
|
|
3401
2473
|
|
|
3402
2474
|
/**
|
|
3403
|
-
*
|
|
3404
|
-
|
|
3405
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3406
|
-
|
|
3407
|
-
|
|
2475
|
+
<span class="cstat-no" title="statement not covered" > * 开启收集<span class="fstat-no" title="function not covered" ></span></span>
|
|
2476
|
+
*/<span class="cstat-no" title="statement not covered" ></span>
|
|
2477
|
+
ap<span class="cstat-no" title="statement not covered" >p.on('collect:start', function (this: ProxyApp, event: any) {</span>
|
|
2478
|
+
co<span class="cstat-no" title="statement not covered" >nst proxyApp = this;</span>
|
|
2479
|
+
if (proxyApp._timer) {
|
|
3408
2480
|
<span class="cstat-no" title="statement not covered" > clearTimeout(proxyApp._timer);</span>
|
|
3409
|
-
}
|
|
3410
|
-
|
|
2481
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
2482
|
+
if (!proxyApp._noTimer) {
|
|
3411
2483
|
<span class="cstat-no" title="statement not covered" > proxyApp._noTimer = event.noTimer;</span>
|
|
3412
|
-
}
|
|
3413
|
-
<span class="cstat-no" title="statement not covered"
|
|
3414
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3415
|
-
|
|
3416
|
-
|
|
2484
|
+
}<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span>
|
|
2485
|
+
if (<span class="cstat-no" title="statement not covered" >!proxyApp._noTimer) {</span>
|
|
2486
|
+
pr<span class="cstat-no" title="statement not covered" >oxyApp._timer = setTimeout(() => {</span>
|
|
2487
|
+
console.error('收集超时,请及时排查原因', event);
|
|
2488
|
+
taskQueue.refreshNasl(proxyApp, {
|
|
3417
2489
|
errorInfo: {
|
|
3418
2490
|
message: '收集超时,请及时排查原因',
|
|
3419
2491
|
},
|
|
3420
2492
|
});
|
|
3421
|
-
}, 2500)
|
|
3422
|
-
}
|
|
3423
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3424
|
-
|
|
3425
|
-
<span class="cstat-no" title="statement not covered" > proxyApp._action = event?.
|
|
2493
|
+
<span class="cstat-no" title="statement not covered" > }, 2500);</span>
|
|
2494
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
2495
|
+
if<span class="cstat-no" title="statement not covered" > (!proxyApp._isCollectingCount) {</span>
|
|
2496
|
+
proxyApp._actionMsg = event?.actionMsg;
|
|
2497
|
+
<span class="cstat-no" title="statement not covered" > proxyApp._action = event?.act</span>ion;
|
|
3426
2498
|
}
|
|
3427
|
-
|
|
2499
|
+
proxyApp._isCollectingCount++;
|
|
3428
2500
|
});
|
|
3429
2501
|
|
|
3430
2502
|
/**
|
|
3431
|
-
*
|
|
3432
|
-
|
|
3433
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3434
|
-
|
|
3435
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3436
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3437
|
-
|
|
3438
|
-
|
|
3439
|
-
}
|
|
3440
|
-
//
|
|
3441
|
-
const
|
|
3442
|
-
|
|
3443
|
-
|
|
3444
|
-
<span class="cstat-no" title="statement not covered" > proxyApp.
|
|
2503
|
+
<span class="cstat-no" title="statement not covered" > * 结束收集<span class="fstat-no" title="function not covered" ></span></span>
|
|
2504
|
+
*/<span class="cstat-no" title="statement not covered" ></span>
|
|
2505
|
+
ap<span class="cstat-no" title="statement not covered" >p.on('collect:end', async funct</span>ion (this: ProxyApp) {
|
|
2506
|
+
<span class="cstat-no" title="statement not covered" > const proxyApp = this;</span>
|
|
2507
|
+
pr<span class="cstat-no" title="statement not covered" >oxyApp._isCollectingCount--;</span>
|
|
2508
|
+
if (<span class="cstat-no" title="statement not covered" >proxyApp._isCollectingCount ===</span> 0) {
|
|
2509
|
+
if (proxyApp._timer) {
|
|
2510
|
+
clearTimeout(proxyApp._timer);
|
|
2511
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
2512
|
+
// 结束收集时,立即将全局收集变量<span class="cstat-no" title="statement not covered" >状态重置,防止下次收集数据混乱</span>
|
|
2513
|
+
const collectin<span class="cstat-no" title="statement not covered" >gList = proxyApp.</span>_collectingList;
|
|
2514
|
+
<span class="cstat-no" title="statement not covered" > const actionMsg = proxyApp._act</span>ionMsg;
|
|
2515
|
+
<span class="cstat-no" title="statement not covered" > const action = proxyApp._a</span>ction;
|
|
2516
|
+
<span class="cstat-no" title="statement not covered" > proxyApp._collectingLis</span>t = [];
|
|
3445
2517
|
<span class="cstat-no" title="statement not covered" > proxyApp._actionMsg = '';</span>
|
|
3446
2518
|
<span class="cstat-no" title="statement not covered" > proxyApp._action = '';</span>
|
|
3447
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3448
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3449
|
-
|
|
3450
|
-
|
|
3451
|
-
value: collectingList
|
|
2519
|
+
pr<span class="cstat-no" title="statement not covered" >oxyApp._noTimer = undefined;</span>
|
|
2520
|
+
if<span class="cstat-no" title="statement not covered" > (Array.isArray(collectingList) && collectingList.length) {</span>
|
|
2521
|
+
mountDatabaseTypes(proxyApp);
|
|
2522
|
+
proxyApp.naslServer?.embeddedTSEmitter?.emit('change', {
|
|
2523
|
+
<span class="cstat-no" title="statement not covered" > value: collectingList,</span>
|
|
3452
2524
|
});
|
|
3453
|
-
|
|
2525
|
+
await doAction(proxyApp, {
|
|
3454
2526
|
list: collectingList,
|
|
3455
2527
|
actionMsg,
|
|
3456
2528
|
action,
|
|
3457
|
-
})
|
|
3458
|
-
}
|
|
3459
|
-
}
|
|
3460
|
-
|
|
3461
|
-
|
|
2529
|
+
});<span class="cstat-no" title="statement not covered" ></span>
|
|
2530
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2531
|
+
} <span class="cstat-no" title="statement not covered" >else if (proxyApp._isCollect</span>ingCount < 0) {
|
|
2532
|
+
proxyApp._isCollectingCount = 0;
|
|
2533
|
+
throw Error('关闭收集有问题,请排查');
|
|
3462
2534
|
}
|
|
3463
2535
|
});
|
|
3464
2536
|
|
|
3465
2537
|
/**
|
|
3466
|
-
*
|
|
3467
|
-
|
|
3468
|
-
|
|
3469
|
-
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
value: [event]
|
|
3474
|
-
})
|
|
3475
|
-
let actionMsg =
|
|
3476
|
-
|
|
3477
|
-
const { concept, name } =
|
|
3478
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3479
|
-
|
|
3480
|
-
|
|
2538
|
+
<span class="cstat-no" title="statement not covered" > * 有变更<span class="fstat-no" title="function not covered" ></span></span>
|
|
2539
|
+
*/<span class="cstat-no" title="statement not covered" ></span>
|
|
2540
|
+
app.on('storage', function (this: ProxyApp, event: any) {
|
|
2541
|
+
<span class="cstat-no" title="statement not covered" > const proxyApp = this;</span>
|
|
2542
|
+
//<span class="cstat-no" title="statement not covered" > 是否正在收集</span>
|
|
2543
|
+
if (proxyApp._isCollectingCount === 0) {
|
|
2544
|
+
proxyApp.naslServer?.embeddedTSEmitter?.emit('change', {
|
|
2545
|
+
value: [event]<span class="cstat-no" title="statement not covered" >,</span>
|
|
2546
|
+
});<span class="cstat-no" title="statement not covered" ></span>
|
|
2547
|
+
let actionMsg = '';<span class="cstat-no" title="statement not covered" ></span>
|
|
2548
|
+
<span class="cstat-no" title="statement not covered" > const { action, target } = event.originEvent || {};</span>
|
|
2549
|
+
const { concept, name } = target || {};
|
|
2550
|
+
swit<span class="cstat-no" title="statement not covered" >ch (action) {</span>
|
|
2551
|
+
ca<span class="cstat-no" title="statement not covered" >se 'cre</span>ate':
|
|
2552
|
+
actionMsg = '添加';
|
|
3481
2553
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
3482
|
-
|
|
3483
|
-
|
|
2554
|
+
ca<span class="cstat-no" title="statement not covered" >se 'del</span>ete':
|
|
2555
|
+
actionMsg = '删除';
|
|
3484
2556
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
3485
|
-
|
|
3486
|
-
|
|
2557
|
+
ca<span class="cstat-no" title="statement not covered" >se 'upd</span>ate':
|
|
2558
|
+
actionMsg = '修改';
|
|
3487
2559
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
3488
|
-
}
|
|
3489
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3490
|
-
|
|
2560
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2561
|
+
ac<span class="cstat-no" title="statement not covered" >tionMsg += getConceptConst</span>ructor(concept).nodeTitle;
|
|
2562
|
+
if (name) {
|
|
3491
2563
|
<span class="cstat-no" title="statement not covered" > actionMsg += `“${name}”`;</span>
|
|
3492
2564
|
}
|
|
3493
|
-
|
|
2565
|
+
doAction(proxyApp, {
|
|
3494
2566
|
list: [event],
|
|
3495
2567
|
actionMsg,
|
|
3496
|
-
})
|
|
2568
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
3497
2569
|
} else {
|
|
3498
|
-
|
|
2570
|
+
proxyApp._collectingList.push(event);
|
|
3499
2571
|
}
|
|
3500
2572
|
});
|
|
3501
2573
|
}
|
|
@@ -3510,17 +2582,13 @@ type BreakpointItem =
|
|
|
3510
2582
|
/**
|
|
3511
2583
|
* 加载 app
|
|
3512
2584
|
* @param appId 如果是从文件读,就不需要传
|
|
3513
|
-
* @returns app
|
|
2585
|
+
* @returns app 对象<span class="fstat-no" title="function not covered" ></span>
|
|
3514
2586
|
*/
|
|
3515
|
-
|
|
3516
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3517
|
-
|
|
3518
|
-
|
|
3519
|
-
|
|
3520
|
-
let app: App;
|
|
3521
|
-
<span class="cstat-no" title="statement not covered" > if (config.storage.protocol === 'http') {</span>
|
|
3522
|
-
<span class="cstat-no" title="statement not covered" > console.time('batchQuery');</span>
|
|
3523
|
-
const promises = <span class="cstat-no" title="statement not covered" >[</span>
|
|
2587
|
+
ex<span class="cstat-no" title="statement not covered" >port async function loadApp(appId?: string) {</span>
|
|
2588
|
+
le<span class="cstat-no" title="statement not covered" >t app: App;</span>
|
|
2589
|
+
if (config.storage.<span class="cstat-no" title="statement not covered" >protocol === 'http') {</span>
|
|
2590
|
+
console.time('batchQuery');
|
|
2591
|
+
const promises = [
|
|
3524
2592
|
storageService.batchQuery({
|
|
3525
2593
|
body: [
|
|
3526
2594
|
{
|
|
@@ -3540,37 +2608,37 @@ export async function <span class="fstat-no" title="function not covered" >loadA
|
|
|
3540
2608
|
storageService.breakpoint({
|
|
3541
2609
|
body: { appId }
|
|
3542
2610
|
})
|
|
3543
|
-
]
|
|
3544
|
-
|
|
3545
|
-
const [batchQueryRes, breakpointRes] = <span class="cstat-no" title="statement not covered" >await Promise.all(promises)</span>
|
|
2611
|
+
]<span class="cstat-no" title="statement not covered" ></span>
|
|
3546
2612
|
|
|
2613
|
+
const [batchQueryRes, breakpointRes] = await Promise.all(promises)
|
|
2614
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
3547
2615
|
// 请求
|
|
3548
2616
|
<span class="cstat-no" title="statement not covered" > console.timeEnd('batchQuery');</span>
|
|
3549
|
-
|
|
3550
|
-
|
|
3551
|
-
|
|
3552
|
-
|
|
3553
|
-
|
|
3554
|
-
<span class="cstat-no" title="statement not covered" > app = new App(Object.
|
|
3555
|
-
|
|
3556
|
-
|
|
3557
|
-
|
|
3558
|
-
|
|
3559
|
-
|
|
3560
|
-
|
|
3561
|
-
|
|
3562
|
-
|
|
3563
|
-
|
|
2617
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2618
|
+
tabTimestamp = batchQueryRes?.headers?.tabtimestamp;
|
|
2619
|
+
<span class="cstat-no" title="statement not covered" > const data = batchQueryRe</span>s?.data?.result;
|
|
2620
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2621
|
+
console.time('new App');
|
|
2622
|
+
<span class="cstat-no" title="statement not covered" > app = new App(Object.as<span class="fstat-no" title="function not covered" >si</span>gn(data?.[0], { id: ap<span class="branch-0 cbranch-no" title="branch not covered" >pId</span> }));</span>
|
|
2623
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2624
|
+
breakpointRes?.forEach((item: BreakpointItem = {}) => {
|
|
2625
|
+
<span class="cstat-no" title="statement not covered" > const { path, breakpointStatus } = item</span>
|
|
2626
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2627
|
+
if (breakpointStatus) {
|
|
2628
|
+
<span class="cstat-no" title="statement not covered" > const node = app.findNodeByPath(path)</span>
|
|
2629
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
2630
|
+
if (node) {
|
|
2631
|
+
node.breakpoint = breakpointStatus
|
|
3564
2632
|
}
|
|
3565
|
-
}
|
|
3566
|
-
})
|
|
3567
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3568
|
-
|
|
2633
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2634
|
+
<span class="cstat-no" title="statement not covered" > })</span>
|
|
2635
|
+
co<span class="cstat-no" title="statement not covered" >nsole.timeEnd('n</span>ew App');
|
|
2636
|
+
if (!app.id) {
|
|
3569
2637
|
<span class="cstat-no" title="statement not covered" > app.id = appId;</span>
|
|
3570
|
-
}
|
|
2638
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
3571
2639
|
<span class="cstat-no" title="statement not covered" > addBreakpointNodesFromApp(app)</span>
|
|
3572
|
-
} else
|
|
3573
|
-
|
|
2640
|
+
} else if (config.storage.protocol === 'mock') {
|
|
2641
|
+
app = new App({
|
|
3574
2642
|
id: appId,
|
|
3575
2643
|
concept: 'App',
|
|
3576
2644
|
name: 'devapp',
|
|
@@ -3588,89 +2656,88 @@ export async function <span class="fstat-no" title="function not covered" >loadA
|
|
|
3588
2656
|
dependencies: [],
|
|
3589
2657
|
interfaceDependencies: [],
|
|
3590
2658
|
frontends: [],
|
|
3591
|
-
|
|
3592
|
-
|
|
3593
|
-
|
|
3594
|
-
|
|
3595
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3596
|
-
|
|
3597
|
-
|
|
3598
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3599
|
-
(
|
|
3600
|
-
|
|
3601
|
-
<span class="cstat-no" title="statement not covered" > return app as App;</span>
|
|
2659
|
+
});<span class="cstat-no" title="statement not covered" ></span>
|
|
2660
|
+
} <span class="cstat-no" title="statement not covered" >else {</span>
|
|
2661
|
+
const json = await fs.readJSON(config.storage.basePath);
|
|
2662
|
+
app = new App(appId ? Object.assign(json, { id: appId }) : json);
|
|
2663
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2664
|
+
/<span class="cstat-no" title="statement not covered" >/ config.scope = app.scope;</span>
|
|
2665
|
+
<span class="cstat-no" title="statement not covered" > handleApp(app as ProxyApp</span>);
|
|
2666
|
+
<span class="cstat-no" title="statement not covered" > (app as any)._isCol</span>lectingCount = 0;
|
|
2667
|
+
mountDatabaseTypes(app);
|
|
2668
|
+
return app as App;
|
|
3602
2669
|
}
|
|
3603
|
-
|
|
3604
|
-
|
|
3605
|
-
|
|
3606
|
-
|
|
3607
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3608
|
-
}
|
|
3609
|
-
|
|
3610
|
-
|
|
3611
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3612
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3613
|
-
|
|
3614
|
-
|
|
3615
|
-
|
|
2670
|
+
<span class="fstat-no" title="function not covered" ></span>
|
|
2671
|
+
//<span class="cstat-no" title="statement not covered" > 在app上挂载所有的数据库类型</span>
|
|
2672
|
+
expo<span class="cstat-no" title="statement not covered" >rt async function mountDatab</span>aseTypes(app: App) {
|
|
2673
|
+
if (!app.__databaseTypeMap) {
|
|
2674
|
+
app.__databaseType<span class="cstat-no" title="statement not covered" >Map = {};</span>
|
|
2675
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
2676
|
+
<span class="cstat-no" title="statement not covered" > const dataSources = app?.dataSources;</span>
|
|
2677
|
+
co<span class="cstat-no" title="statement not covered" >nst dbTypeSet = new <span class="fstat-no" title="function not covered" >Se</span>t();</span>
|
|
2678
|
+
if (Array.isArray(dataSources)<span class="cstat-no" title="statement not covered" >) {</span>
|
|
2679
|
+
da<span class="cstat-no" title="statement not covered" >taSources.forEach((dataSource) => {</span>
|
|
2680
|
+
co<span class="cstat-no" title="statement not covered" >nst dataSourceSqlType = JSON.parse</span>(dataSource.dataSourceConfig?.devProperty?.value || '{}')?.type;
|
|
2681
|
+
if (dataSourceSqlType && !app.__databaseTypeMap[dataSourceSqlType]) {
|
|
2682
|
+
dbTypeSet.add(dataSourceSqlType);
|
|
3616
2683
|
}
|
|
3617
|
-
})
|
|
3618
|
-
}
|
|
3619
|
-
const dbTypes =
|
|
3620
|
-
|
|
3621
|
-
const res: any =
|
|
2684
|
+
});<span class="cstat-no" title="statement not covered" ></span>
|
|
2685
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2686
|
+
const dbTypes = [..<span class="cstat-no" title="statement not covered" >.dbTypeSet];</span>
|
|
2687
|
+
if (Array.isArray(dbTypes) && dbTypes.length) {
|
|
2688
|
+
const res: any = await databaseTypes({
|
|
3622
2689
|
query: {
|
|
3623
2690
|
dbTypes: dbTypes.join(','),
|
|
3624
|
-
}
|
|
3625
|
-
})
|
|
3626
|
-
<span class="cstat-no" title="statement not covered"
|
|
3627
|
-
|
|
3628
|
-
|
|
3629
|
-
|
|
3630
|
-
<span class="cstat-no" title="statement not covered"
|
|
3631
|
-
|
|
3632
|
-
const { naslType, dataBaseTypes } =
|
|
3633
|
-
|
|
3634
|
-
|
|
3635
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3636
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3637
|
-
|
|
3638
|
-
<span class="cstat-no" title="statement not covered"
|
|
2691
|
+
<span class="cstat-no" title="statement not covered" > },</span>
|
|
2692
|
+
})<span class="cstat-no" title="statement not covered" >;<span class="fstat-no" title="function not covered" ></span></span>
|
|
2693
|
+
if (Array.isArray(res)) {<span class="cstat-no" title="statement not covered" ></span>
|
|
2694
|
+
res.forEach((databaseType: an<span class="cstat-no" title="statement not covered" >y) </span>=> {
|
|
2695
|
+
<span class="cstat-no" title="statement not covered" > const { dbType, columnTypes } = databaseType || {};</span>
|
|
2696
|
+
co<span class="cstat-no" title="statement not covered" >nst columnTypeMap: a<span class="fstat-no" title="function not covered" >ny</span> = {};</span>
|
|
2697
|
+
if (Array.isArray(columnTypes)) {<span class="cstat-no" title="statement not covered" ></span>
|
|
2698
|
+
columnTypes.forEach((columnType<span class="cstat-no" title="statement not covered" >) =</span>> {
|
|
2699
|
+
const { naslType, dataBaseTypes } = columnType;
|
|
2700
|
+
<span class="cstat-no" title="statement not covered" > const dataBaseTypeMap: any = {};</span>
|
|
2701
|
+
le<span class="cstat-no" title="statement not covered" >t defaultDataBaseType;<span class="fstat-no" title="function not covered" ></span></span>
|
|
2702
|
+
if (Array.isArray(dat<span class="cstat-no" title="statement not covered" >aBaseTypes)) {</span>
|
|
2703
|
+
da<span class="cstat-no" title="statement not covered" >taBaseTypes.forEach((dataBaseType) => {</span>
|
|
2704
|
+
co<span class="cstat-no" title="statement not covered" >nst { type } = dataBaseType || {};</span>
|
|
2705
|
+
if (type) {<span class="cstat-no" title="statement not covered" ></span>
|
|
3639
2706
|
<span class="cstat-no" title="statement not covered" > dataBaseTypeMap[type] = dataBaseType;</span>
|
|
3640
|
-
|
|
3641
|
-
|
|
3642
|
-
|
|
2707
|
+
co<span class="cstat-no" title="statement not covered" >nst { defaultType } = dataBaseType;</span>
|
|
2708
|
+
if (defaultType) {
|
|
2709
|
+
defaultDataBaseType = dataBaseType;
|
|
3643
2710
|
}
|
|
3644
2711
|
}
|
|
3645
|
-
})
|
|
2712
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
3646
2713
|
}
|
|
3647
|
-
|
|
2714
|
+
columnTypeMap[naslType] = {
|
|
3648
2715
|
dataBaseTypes,
|
|
3649
2716
|
dataBaseTypeMap,
|
|
3650
2717
|
defaultDataBaseType,
|
|
3651
2718
|
};
|
|
3652
|
-
})
|
|
2719
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
3653
2720
|
}
|
|
3654
|
-
|
|
2721
|
+
app.__databaseTypeMap[dbType] = columnTypeMap;
|
|
3655
2722
|
});
|
|
3656
|
-
}
|
|
3657
|
-
}
|
|
3658
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3659
|
-
|
|
3660
|
-
|
|
2723
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
2724
|
+
}<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ></span></span>
|
|
2725
|
+
if (<span class="cstat-no" title="statement not covered" >Array.isArray(dataSources)) {</span>
|
|
2726
|
+
dataSources.forEach((dataSource) => {
|
|
2727
|
+
dataSource.__hasDatabaseConfig = !!(app.__databaseTypeMap?.[dataSource.dataSourceSqlType]);
|
|
3661
2728
|
});
|
|
3662
2729
|
}
|
|
3663
2730
|
}
|
|
3664
2731
|
|
|
3665
2732
|
/**
|
|
3666
2733
|
* 加载 app
|
|
3667
|
-
* @returns app
|
|
3668
|
-
|
|
3669
|
-
export
|
|
3670
|
-
|
|
3671
|
-
|
|
3672
|
-
|
|
3673
|
-
|
|
2734
|
+
* @returns app <span class="fstat-no" title="function not covered" >对象</span>
|
|
2735
|
+
*/<span class="cstat-no" title="statement not covered" ></span>
|
|
2736
|
+
export functio<span class="cstat-no" title="statement not covered" >n loadAppSync(</span>) {
|
|
2737
|
+
<span class="cstat-no" title="statement not covered" > const json = fs.readJSONSync</span>(config.storage.basePath);
|
|
2738
|
+
<span class="cstat-no" title="statement not covered" > const app = </span>new App(json);
|
|
2739
|
+
handleApp(app as ProxyApp);
|
|
2740
|
+
return app;
|
|
3674
2741
|
}
|
|
3675
2742
|
</pre></td></tr></table></pre>
|
|
3676
2743
|
|
|
@@ -3679,7 +2746,7 @@ export function <span class="fstat-no" title="function not covered" >loadAppSync
|
|
|
3679
2746
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
3680
2747
|
Code coverage generated by
|
|
3681
2748
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
3682
|
-
at 2023-
|
|
2749
|
+
at 2023-10-18T11:36:07.885Z
|
|
3683
2750
|
</div>
|
|
3684
2751
|
<script src="../../../prettify.js"></script>
|
|
3685
2752
|
<script>
|