@lcap/nasl 3.3.5-beta.1 → 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/{b920244d-8d01-4e76-be5a-95132217c5a1.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 +100 -100
- 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 +15 -15
- package/coverage/src/bak/translator.js.html +78 -87
- 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 +237 -444
- package/coverage/src/common/Command.ts.html +1 -1
- package/coverage/src/common/EventEmitter.ts.html +7 -10
- package/coverage/src/common/Messager.ts.html +1 -1
- package/coverage/src/common/asyncFuncMap.ts.html +1 -1
- package/coverage/src/common/index.html +19 -19
- package/coverage/src/common/index.ts.html +1 -1
- package/coverage/src/concepts/Abort__.ts.html +6 -9
- package/coverage/src/concepts/Anchor__.ts.html +22 -43
- package/coverage/src/concepts/AnonymousFunction__.ts.html +146 -209
- package/coverage/src/concepts/App__.ts.html +124 -523
- package/coverage/src/concepts/Argument__.ts.html +109 -52
- package/coverage/src/concepts/Assignee__.ts.html +18 -99
- package/coverage/src/concepts/AssignmentLine__.ts.html +14 -35
- package/coverage/src/concepts/Assignment__.ts.html +58 -109
- package/coverage/src/concepts/Attribute__.ts.html +15 -201
- package/coverage/src/concepts/AuthInterface__.ts.html +6 -9
- package/coverage/src/concepts/AuthLogicForCallInterface__.ts.html +11 -38
- package/coverage/src/concepts/AuthLogic__.ts.html +6 -18
- package/coverage/src/concepts/BackendVariable__.ts.html +81 -288
- package/coverage/src/concepts/Backend__.ts.html +16 -43
- package/coverage/src/concepts/BatchAssignment__.ts.html +154 -229
- package/coverage/src/concepts/BinaryExpression__.ts.html +125 -152
- package/coverage/src/concepts/BindAttribute__.ts.html +44 -140
- package/coverage/src/concepts/BindDirective__.ts.html +17 -98
- package/coverage/src/concepts/BindEvent__.ts.html +25 -106
- package/coverage/src/concepts/BindStyle__.ts.html +12 -45
- package/coverage/src/concepts/BooleanLiteral__.ts.html +17 -20
- package/coverage/src/concepts/CallAuthInterface__.ts.html +12 -39
- package/coverage/src/concepts/CallConnector__.ts.html +6 -9
- package/coverage/src/concepts/CallFunction__.ts.html +41 -83
- package/coverage/src/concepts/CallInterface__.ts.html +38 -95
- package/coverage/src/concepts/CallLogic__.ts.html +306 -192
- package/coverage/src/concepts/CallQueryComponent__.ts.html +23 -134
- package/coverage/src/concepts/Comment__.ts.html +8 -11
- package/coverage/src/concepts/CompletionProperty__.ts.html +11 -32
- package/coverage/src/concepts/ConfigGroup__.ts.html +16 -43
- package/coverage/src/concepts/ConfigPropertyValue__.ts.html +19 -22
- package/coverage/src/concepts/ConfigProperty__.ts.html +25 -52
- package/coverage/src/concepts/Configuration__.ts.html +17 -44
- package/coverage/src/concepts/Connection__.ts.html +12 -39
- package/coverage/src/concepts/ConnectorTrigger__.ts.html +6 -9
- package/coverage/src/concepts/Connector__.ts.html +29 -164
- package/coverage/src/concepts/Constant__.ts.html +33 -243
- package/coverage/src/concepts/DataSource__.ts.html +53 -80
- package/coverage/src/concepts/DatabaseTypeAnnotation__.ts.html +6 -9
- package/coverage/src/concepts/Destination__.ts.html +15 -45
- package/coverage/src/concepts/End__.ts.html +6 -9
- package/coverage/src/concepts/EntityIndex__.ts.html +7 -19
- package/coverage/src/concepts/EntityProperty__.ts.html +75 -273
- package/coverage/src/concepts/Entity__.ts.html +68 -188
- package/coverage/src/concepts/EnumItem__.ts.html +6 -9
- package/coverage/src/concepts/Enum__.ts.html +11 -38
- package/coverage/src/concepts/Event__.ts.html +11 -38
- package/coverage/src/concepts/ExternalDestination__.ts.html +12 -39
- package/coverage/src/concepts/ForEachStatement__.ts.html +27 -93
- package/coverage/src/concepts/FrontendLibrary__.ts.html +15 -66
- package/coverage/src/concepts/FrontendVariable__.ts.html +1 -1
- package/coverage/src/concepts/Frontend__.ts.html +28 -145
- package/coverage/src/concepts/Function__.ts.html +60 -180
- package/coverage/src/concepts/Identifier__.ts.html +38 -41
- package/coverage/src/concepts/IfStatement__.ts.html +48 -90
- package/coverage/src/concepts/Integration__.ts.html +15 -60
- package/coverage/src/concepts/InterfaceParam__.ts.html +31 -202
- package/coverage/src/concepts/Interface__.ts.html +25 -94
- package/coverage/src/concepts/JSBlock__.ts.html +6 -9
- package/coverage/src/concepts/JavaLogic__.ts.html +6 -9
- package/coverage/src/concepts/LogicItem__.ts.html +17 -20
- package/coverage/src/concepts/Logic__.ts.html +144 -468
- package/coverage/src/concepts/MatchCase__.ts.html +41 -86
- package/coverage/src/concepts/Match__.ts.html +29 -68
- package/coverage/src/concepts/MemberExpression__.ts.html +94 -112
- package/coverage/src/concepts/MicroApp__.ts.html +6 -9
- package/coverage/src/concepts/Module__.ts.html +20 -185
- package/coverage/src/concepts/MsgTriggerEvent__.ts.html +11 -38
- package/coverage/src/concepts/MsgTriggerLauncher__.ts.html +11 -38
- package/coverage/src/concepts/Namespace__.ts.html +70 -349
- package/coverage/src/concepts/NewComposite__.ts.html +93 -129
- package/coverage/src/concepts/NewList__.ts.html +26 -110
- package/coverage/src/concepts/NewMap__.ts.html +22 -166
- package/coverage/src/concepts/New__.ts.html +1 -1
- package/coverage/src/concepts/NullLiteral__.ts.html +6 -9
- package/coverage/src/concepts/NumericLiteral__.ts.html +24 -45
- package/coverage/src/concepts/OqlQueryComponent__.ts.html +14 -110
- package/coverage/src/concepts/OverriddenLogic__.ts.html +32 -185
- package/coverage/src/concepts/Param__.ts.html +119 -191
- package/coverage/src/concepts/Point__.ts.html +6 -9
- package/coverage/src/concepts/ProcessComponent__.ts.html +15 -66
- package/coverage/src/concepts/ProcessElement__.ts.html +40 -343
- package/coverage/src/concepts/ProcessOutcome__.ts.html +6 -9
- package/coverage/src/concepts/ProcessOutcomes__.ts.html +7 -19
- package/coverage/src/concepts/Process__.ts.html +30 -333
- package/coverage/src/concepts/QueryAggregateExpression__.ts.html +11 -32
- package/coverage/src/concepts/QueryFieldExpression__.ts.html +6 -9
- package/coverage/src/concepts/QueryFromExpression__.ts.html +11 -38
- package/coverage/src/concepts/QueryGroupByExpression__.ts.html +11 -32
- package/coverage/src/concepts/QueryJoinExpression__.ts.html +12 -51
- package/coverage/src/concepts/QueryLimitExpression__.ts.html +12 -39
- package/coverage/src/concepts/QueryOrderByExpression__.ts.html +12 -39
- package/coverage/src/concepts/QuerySelectExpression__.ts.html +11 -38
- package/coverage/src/concepts/Rect__.ts.html +6 -9
- package/coverage/src/concepts/Return__.ts.html +92 -251
- package/coverage/src/concepts/Role__.ts.html +6 -9
- package/coverage/src/concepts/SelectMembers__.ts.html +18 -51
- package/coverage/src/concepts/Slot__.ts.html +11 -32
- package/coverage/src/concepts/SqlQueryComponent__.ts.html +11 -32
- package/coverage/src/concepts/Start__.ts.html +6 -9
- package/coverage/src/concepts/StringInterpolation__.ts.html +17 -44
- package/coverage/src/concepts/StringLiteral__.ts.html +26 -29
- package/coverage/src/concepts/StructureProperty__.ts.html +31 -199
- package/coverage/src/concepts/Structure__.ts.html +17 -107
- package/coverage/src/concepts/SwitchCase__.ts.html +16 -46
- package/coverage/src/concepts/SwitchStatement__.ts.html +24 -51
- package/coverage/src/concepts/Theme__.ts.html +6 -9
- package/coverage/src/concepts/Transactional__.ts.html +6 -9
- package/coverage/src/concepts/TriggerEvent__.ts.html +11 -38
- package/coverage/src/concepts/TriggerLauncher__.ts.html +6 -9
- package/coverage/src/concepts/TypeAnnotation__.ts.html +95 -209
- package/coverage/src/concepts/TypeParam__.ts.html +7 -10
- package/coverage/src/concepts/UnaryExpression__.ts.html +14 -47
- package/coverage/src/concepts/Unparsed__.ts.html +8 -11
- package/coverage/src/concepts/UseComponent__.ts.html +6 -9
- package/coverage/src/concepts/ValidationRule__.ts.html +17 -53
- package/coverage/src/concepts/Variable__.ts.html +74 -290
- package/coverage/src/concepts/ViewBlock__.ts.html +6 -9
- package/coverage/src/concepts/ViewComponent__.ts.html +30 -177
- package/coverage/src/concepts/ViewElement__.ts.html +131 -320
- package/coverage/src/concepts/View__.ts.html +68 -467
- package/coverage/src/concepts/WhileStatement__.ts.html +51 -93
- package/coverage/src/concepts/basics/stdlib/index.html +8 -8
- 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 +17 -128
- 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 +863 -878
- 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 +14 -14
- package/coverage/src/decorators/index.ts.html +36 -45
- package/coverage/src/decorators/promise.ts.html +1 -1
- package/coverage/src/eventBus.ts.html +1 -1
- package/coverage/src/generator/compileComponent.ts.html +1 -1
- package/coverage/src/generator/genBundleFiles.ts.html +1 -1
- package/coverage/src/generator/genHash.ts.html +1 -1
- package/coverage/src/generator/genMetaData.ts.html +9 -51
- package/coverage/src/generator/genReleaseBody.ts.html +2 -2
- package/coverage/src/generator/icestark.ts.html +1 -1
- package/coverage/src/generator/index.html +15 -15
- 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 +1 -1
- package/coverage/src/generator/qiankun.ts.html +1 -1
- package/coverage/src/generator/styleReplacer.ts.html +1 -1
- package/coverage/src/index.html +7 -7
- package/coverage/src/index.ts.html +7 -10
- package/coverage/src/manager/diagnostic.ts.html +1 -1
- package/coverage/src/manager/index.html +1 -1
- 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 +1 -1
- package/coverage/src/sentry/index.ts.html +23 -23
- 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 +1 -1
- package/coverage/src/server/formatTsUtils.ts.html +10 -10
- 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 +1 -1
- package/coverage/src/server/getInterfaces.ts.html +1 -1
- package/coverage/src/server/getLogging.ts.html +1 -1
- package/coverage/src/server/getLogics.ts.html +1 -1
- package/coverage/src/server/getMemberIdentifier.ts.html +13 -58
- package/coverage/src/server/getProcessComponents.ts.html +1 -1
- package/coverage/src/server/getProcesses.ts.html +1 -1
- package/coverage/src/server/getValidates.ts.html +1 -1
- package/coverage/src/server/index.html +23 -23
- package/coverage/src/server/index.ts.html +1 -1
- package/coverage/src/server/naslServer.ts.html +179 -134
- package/coverage/src/server/naslStdlibMap.ts.html +1 -1
- package/coverage/src/server/process2LogicNamespace.ts.html +1 -1
- package/coverage/src/server/translator.ts.html +1 -1
- package/coverage/src/service/creator/add.configs.js.html +8 -26
- 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 +19 -19
- package/coverage/src/service/storage/index.ts.html +1 -1
- package/coverage/src/service/storage/init.ts.html +618 -1578
- package/coverage/src/service/storage/jsoner.ts.html +3 -3
- 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 +1 -1
- package/coverage/src/templator/genCurdEditMultipleKeyBlock.ts.html +1 -1
- package/coverage/src/templator/genCurdMultipleKeyBlock.ts.html +1 -1
- package/coverage/src/templator/genEditTableBlock.ts.html +4 -70
- 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 +1 -1
- package/coverage/src/templator/index.html +1 -1
- package/coverage/src/templator/index.ts.html +1 -1
- package/coverage/src/templator/utils.ts.html +1 -1
- package/coverage/src/translator/constant.ts.html +1 -1
- package/coverage/src/translator/index.html +1 -1
- package/coverage/src/translator/index.ts.html +1 -1
- package/coverage/src/translator/utils.ts.html +37 -37
- package/coverage/src/utils/cookie.ts.html +1 -1
- package/coverage/src/utils/env.ts.html +1 -1
- package/coverage/src/utils/index.html +19 -19
- package/coverage/src/utils/index.ts.html +22 -61
- package/coverage/src/utils/logger.ts.html +1 -1
- package/coverage/src/utils/sortTsString.ts.html +1 -1
- package/coverage/src/utils/string.ts.html +1 -1
- 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/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/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/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/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/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/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/b920244d-8d01-4e76-be5a-95132217c5a1.json +0 -1
- package/coverage/src/concepts/DefaultValue__.ts.html +0 -946
|
@@ -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,570 +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>
|
|
1270
|
-
<a name='L1205'></a><a href='#L1205'>1205</a>
|
|
1271
|
-
<a name='L1206'></a><a href='#L1206'>1206</a>
|
|
1272
|
-
<a name='L1207'></a><a href='#L1207'>1207</a>
|
|
1273
|
-
<a name='L1208'></a><a href='#L1208'>1208</a>
|
|
1274
|
-
<a name='L1209'></a><a href='#L1209'>1209</a>
|
|
1275
|
-
<a name='L1210'></a><a href='#L1210'>1210</a>
|
|
1276
|
-
<a name='L1211'></a><a href='#L1211'>1211</a>
|
|
1277
|
-
<a name='L1212'></a><a href='#L1212'>1212</a>
|
|
1278
|
-
<a name='L1213'></a><a href='#L1213'>1213</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>
|
|
1279
959
|
<span class="cline-any cline-yes">1x</span>
|
|
1280
960
|
<span class="cline-any cline-yes">1x</span>
|
|
1281
961
|
<span class="cline-any cline-yes">1x</span>
|
|
1282
962
|
<span class="cline-any cline-yes">1x</span>
|
|
1283
963
|
<span class="cline-any cline-yes">1x</span>
|
|
1284
964
|
<span class="cline-any cline-yes">1x</span>
|
|
1285
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1286
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1287
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1288
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1289
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1290
965
|
<span class="cline-any cline-neutral"> </span>
|
|
1291
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1292
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1293
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1294
966
|
<span class="cline-any cline-yes">1x</span>
|
|
1295
967
|
<span class="cline-any cline-yes">1x</span>
|
|
1296
968
|
<span class="cline-any cline-neutral"> </span>
|
|
1297
969
|
<span class="cline-any cline-neutral"> </span>
|
|
1298
|
-
<span class="cline-any cline-yes">1x</span>
|
|
1299
970
|
<span class="cline-any cline-neutral"> </span>
|
|
1300
971
|
<span class="cline-any cline-yes">1x</span>
|
|
1301
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1302
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1303
972
|
<span class="cline-any cline-yes">1x</span>
|
|
1304
|
-
<span class="cline-any cline-no"> </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-neutral"> </span>
|
|
1312
|
-
<span class="cline-any cline-neutral"> </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-no"> </span>
|
|
1317
|
-
<span class="cline-any cline-no"> </span>
|
|
1318
|
-
<span class="cline-any cline-no"> </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-no"> </span>
|
|
1324
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1325
|
-
<span class="cline-any cline-no"> </span>
|
|
1326
|
-
<span class="cline-any cline-no"> </span>
|
|
1327
|
-
<span class="cline-any cline-no"> </span>
|
|
1328
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1329
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1330
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1331
|
-
<span class="cline-any cline-no"> </span>
|
|
1332
|
-
<span class="cline-any cline-no"> </span>
|
|
1333
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1334
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1335
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1336
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
1341
|
-
<span class="cline-any cline-no"> </span>
|
|
1342
|
-
<span class="cline-any cline-no"> </span>
|
|
1343
|
-
<span class="cline-any cline-no"> </span>
|
|
1344
|
-
<span class="cline-any cline-no"> </span>
|
|
1345
|
-
<span class="cline-any cline-no"> </span>
|
|
1346
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1347
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1348
|
-
<span class="cline-any cline-no"> </span>
|
|
1349
|
-
<span class="cline-any cline-no"> </span>
|
|
1350
|
-
<span class="cline-any cline-no"> </span>
|
|
1351
|
-
<span class="cline-any cline-no"> </span>
|
|
1352
|
-
<span class="cline-any cline-no"> </span>
|
|
1353
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1354
|
-
<span class="cline-any cline-no"> </span>
|
|
1355
|
-
<span class="cline-any cline-no"> </span>
|
|
1356
|
-
<span class="cline-any cline-no"> </span>
|
|
1357
|
-
<span class="cline-any cline-no"> </span>
|
|
1358
|
-
<span class="cline-any cline-neutral"> </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-no"> </span>
|
|
1363
|
-
<span class="cline-any cline-no"> </span>
|
|
1364
|
-
<span class="cline-any cline-no"> </span>
|
|
1365
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1366
|
-
<span class="cline-any cline-no"> </span>
|
|
1367
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1368
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1369
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1370
|
-
<span class="cline-any cline-no"> </span>
|
|
1371
|
-
<span class="cline-any cline-no"> </span>
|
|
1372
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1373
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1374
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1375
|
-
<span class="cline-any cline-no"> </span>
|
|
1376
|
-
<span class="cline-any cline-no"> </span>
|
|
1377
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1378
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1379
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1380
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1381
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1382
973
|
<span class="cline-any cline-yes">1x</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-no"> </span>
|
|
1392
|
-
<span class="cline-any cline-no"> </span>
|
|
1393
|
-
<span class="cline-any cline-no"> </span>
|
|
1394
|
-
<span class="cline-any cline-neutral"> </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-no"> </span>
|
|
1400
|
-
<span class="cline-any cline-no"> </span>
|
|
1401
|
-
<span class="cline-any cline-no"> </span>
|
|
1402
|
-
<span class="cline-any cline-no"> </span>
|
|
1403
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1404
|
-
<span class="cline-any cline-no"> </span>
|
|
1405
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1406
|
-
<span class="cline-any cline-no"> </span>
|
|
1407
|
-
<span class="cline-any cline-no"> </span>
|
|
1408
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1409
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1410
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1411
|
-
<span class="cline-any cline-no"> </span>
|
|
1412
|
-
<span class="cline-any cline-no"> </span>
|
|
1413
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1414
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1415
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1416
|
-
<span class="cline-any cline-no"> </span>
|
|
1417
|
-
<span class="cline-any cline-no"> </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-neutral"> </span>
|
|
1422
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1423
|
-
<span class="cline-any cline-neutral"> </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-no"> </span>
|
|
1428
|
-
<span class="cline-any cline-no"> </span>
|
|
1429
|
-
<span class="cline-any cline-no"> </span>
|
|
1430
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1431
|
-
<span class="cline-any cline-no"> </span>
|
|
1432
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1433
|
-
<span class="cline-any cline-neutral"> </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-no"> </span>
|
|
1438
|
-
<span class="cline-any cline-no"> </span>
|
|
1439
|
-
<span class="cline-any cline-no"> </span>
|
|
1440
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1441
|
-
<span class="cline-any cline-no"> </span>
|
|
1442
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1443
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1444
|
-
<span class="cline-any cline-no"> </span>
|
|
1445
|
-
<span class="cline-any cline-no"> </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
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1450
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1451
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1452
974
|
<span class="cline-any cline-yes">1x</span>
|
|
1453
|
-
<span class="cline-any cline-no"> </span>
|
|
1454
|
-
<span class="cline-any cline-no"> </span>
|
|
1455
|
-
<span class="cline-any cline-no"> </span>
|
|
1456
|
-
<span class="cline-any cline-no"> </span>
|
|
1457
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1458
|
-
<span class="cline-any cline-no"> </span>
|
|
1459
|
-
<span class="cline-any cline-no"> </span>
|
|
1460
|
-
<span class="cline-any cline-no"> </span>
|
|
1461
|
-
<span class="cline-any cline-no"> </span>
|
|
1462
|
-
<span class="cline-any cline-no"> </span>
|
|
1463
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1464
|
-
<span class="cline-any cline-no"> </span>
|
|
1465
|
-
<span class="cline-any cline-no"> </span>
|
|
1466
|
-
<span class="cline-any cline-no"> </span>
|
|
1467
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1468
|
-
<span class="cline-any cline-no"> </span>
|
|
1469
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1470
|
-
<span class="cline-any cline-no"> </span>
|
|
1471
|
-
<span class="cline-any cline-no"> </span>
|
|
1472
|
-
<span class="cline-any cline-no"> </span>
|
|
1473
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
1478
|
-
<span class="cline-any cline-no"> </span>
|
|
1479
|
-
<span class="cline-any cline-no"> </span>
|
|
1480
|
-
<span class="cline-any cline-no"> </span>
|
|
1481
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1482
|
-
<span class="cline-any cline-neutral"> </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-no"> </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-neutral"> </span>
|
|
1494
|
-
<span class="cline-any cline-no"> </span>
|
|
1495
|
-
<span class="cline-any cline-no"> </span>
|
|
1496
|
-
<span class="cline-any cline-no"> </span>
|
|
1497
|
-
<span class="cline-any cline-no"> </span>
|
|
1498
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1499
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1500
|
-
<span class="cline-any cline-no"> </span>
|
|
1501
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1502
|
-
<span class="cline-any cline-no"> </span>
|
|
1503
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1504
|
-
<span class="cline-any cline-no"> </span>
|
|
1505
|
-
<span class="cline-any cline-no"> </span>
|
|
1506
975
|
<span class="cline-any cline-neutral"> </span>
|
|
1507
|
-
<span class="cline-any cline-no"> </span>
|
|
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-neutral"> </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
976
|
<span class="cline-any cline-neutral"> </span>
|
|
977
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1522
978
|
<span class="cline-any cline-neutral"> </span>
|
|
1523
979
|
<span class="cline-any cline-neutral"> </span>
|
|
1524
980
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1652,12 +1108,6 @@
|
|
|
1652
1108
|
<span class="cline-any cline-no"> </span>
|
|
1653
1109
|
<span class="cline-any cline-no"> </span>
|
|
1654
1110
|
<span class="cline-any cline-no"> </span>
|
|
1655
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1656
|
-
<span class="cline-any cline-no"> </span>
|
|
1657
|
-
<span class="cline-any cline-no"> </span>
|
|
1658
|
-
<span class="cline-any cline-no"> </span>
|
|
1659
|
-
<span class="cline-any cline-no"> </span>
|
|
1660
|
-
<span class="cline-any cline-no"> </span>
|
|
1661
1111
|
<span class="cline-any cline-no"> </span>
|
|
1662
1112
|
<span class="cline-any cline-no"> </span>
|
|
1663
1113
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1836,13 +1286,11 @@
|
|
|
1836
1286
|
<span class="cline-any cline-no"> </span>
|
|
1837
1287
|
<span class="cline-any cline-neutral"> </span>
|
|
1838
1288
|
<span class="cline-any cline-neutral"> </span>
|
|
1839
|
-
<span class="cline-any cline-no"> </span>
|
|
1840
|
-
<span class="cline-any cline-no"> </span>
|
|
1841
|
-
<span class="cline-any cline-no"> </span>
|
|
1842
1289
|
<span class="cline-any cline-neutral"> </span>
|
|
1843
1290
|
<span class="cline-any cline-no"> </span>
|
|
1844
1291
|
<span class="cline-any cline-no"> </span>
|
|
1845
1292
|
<span class="cline-any cline-no"> </span>
|
|
1293
|
+
<span class="cline-any cline-no"> </span>
|
|
1846
1294
|
<span class="cline-any cline-neutral"> </span>
|
|
1847
1295
|
<span class="cline-any cline-neutral"> </span>
|
|
1848
1296
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1878,32 +1326,11 @@
|
|
|
1878
1326
|
<span class="cline-any cline-neutral"> </span>
|
|
1879
1327
|
<span class="cline-any cline-neutral"> </span>
|
|
1880
1328
|
<span class="cline-any cline-no"> </span>
|
|
1881
|
-
<span class="cline-any cline-no"> </span>
|
|
1882
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1883
1329
|
<span class="cline-any cline-neutral"> </span>
|
|
1884
1330
|
<span class="cline-any cline-neutral"> </span>
|
|
1885
1331
|
<span class="cline-any cline-neutral"> </span>
|
|
1886
1332
|
<span class="cline-any cline-no"> </span>
|
|
1887
1333
|
<span class="cline-any cline-neutral"> </span>
|
|
1888
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1889
|
-
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
1898
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1899
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1900
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1901
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1902
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1903
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1904
|
-
<span class="cline-any cline-no"> </span>
|
|
1905
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1906
|
-
<span class="cline-any cline-no"> </span>
|
|
1907
1334
|
<span class="cline-any cline-no"> </span>
|
|
1908
1335
|
<span class="cline-any cline-no"> </span>
|
|
1909
1336
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1938,7 +1365,6 @@
|
|
|
1938
1365
|
<span class="cline-any cline-neutral"> </span>
|
|
1939
1366
|
<span class="cline-any cline-neutral"> </span>
|
|
1940
1367
|
<span class="cline-any cline-neutral"> </span>
|
|
1941
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1942
1368
|
<span class="cline-any cline-yes">1x</span>
|
|
1943
1369
|
<span class="cline-any cline-yes">1x</span>
|
|
1944
1370
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -1985,7 +1411,6 @@
|
|
|
1985
1411
|
<span class="cline-any cline-no"> </span>
|
|
1986
1412
|
<span class="cline-any cline-no"> </span>
|
|
1987
1413
|
<span class="cline-any cline-no"> </span>
|
|
1988
|
-
<span class="cline-any cline-no"> </span>
|
|
1989
1414
|
<span class="cline-any cline-neutral"> </span>
|
|
1990
1415
|
<span class="cline-any cline-no"> </span>
|
|
1991
1416
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1993,101 +1418,57 @@
|
|
|
1993
1418
|
<span class="cline-any cline-no"> </span>
|
|
1994
1419
|
<span class="cline-any cline-no"> </span>
|
|
1995
1420
|
<span class="cline-any cline-no"> </span>
|
|
1996
|
-
<span class="cline-any cline-no"> </span>
|
|
1997
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1998
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1999
|
-
<span class="cline-any cline-no"> </span>
|
|
2000
|
-
<span class="cline-any cline-no"> </span>
|
|
2001
|
-
<span class="cline-any cline-no"> </span>
|
|
2002
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2003
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2004
|
-
<span class="cline-any cline-no"> </span>
|
|
2005
|
-
<span class="cline-any cline-no"> </span>
|
|
2006
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2007
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2008
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2009
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2010
1421
|
<span class="cline-any cline-neutral"> </span>
|
|
2011
|
-
<span class="cline-any cline-no"> </span>
|
|
2012
|
-
<span class="cline-any cline-no"> </span>
|
|
2013
|
-
<span class="cline-any cline-no"> </span>
|
|
2014
1422
|
<span class="cline-any cline-neutral"> </span>
|
|
2015
1423
|
<span class="cline-any cline-no"> </span>
|
|
2016
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2017
1424
|
<span class="cline-any cline-no"> </span>
|
|
2018
1425
|
<span class="cline-any cline-no"> </span>
|
|
2019
1426
|
<span class="cline-any cline-neutral"> </span>
|
|
2020
|
-
<span class="cline-any cline-no"> </span>
|
|
2021
1427
|
<span class="cline-any cline-neutral"> </span>
|
|
2022
1428
|
<span class="cline-any cline-no"> </span>
|
|
2023
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2024
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2025
1429
|
<span class="cline-any cline-no"> </span>
|
|
2026
1430
|
<span class="cline-any cline-neutral"> </span>
|
|
2027
|
-
<span class="cline-any cline-no"> </span>
|
|
2028
1431
|
<span class="cline-any cline-neutral"> </span>
|
|
2029
1432
|
<span class="cline-any cline-neutral"> </span>
|
|
2030
1433
|
<span class="cline-any cline-neutral"> </span>
|
|
2031
|
-
<span class="cline-any cline-no"> </span>
|
|
2032
|
-
<span class="cline-any cline-no"> </span>
|
|
2033
1434
|
<span class="cline-any cline-neutral"> </span>
|
|
2034
1435
|
<span class="cline-any cline-no"> </span>
|
|
2035
1436
|
<span class="cline-any cline-no"> </span>
|
|
2036
1437
|
<span class="cline-any cline-no"> </span>
|
|
2037
|
-
<span class="cline-any cline-no"> </span>
|
|
2038
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2039
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2040
1438
|
<span class="cline-any cline-neutral"> </span>
|
|
2041
1439
|
<span class="cline-any cline-no"> </span>
|
|
2042
1440
|
<span class="cline-any cline-neutral"> </span>
|
|
2043
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2044
1441
|
<span class="cline-any cline-no"> </span>
|
|
2045
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2046
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2047
1442
|
<span class="cline-any cline-no"> </span>
|
|
2048
1443
|
<span class="cline-any cline-neutral"> </span>
|
|
2049
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2050
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2051
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2052
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2053
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2054
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2055
1444
|
<span class="cline-any cline-no"> </span>
|
|
2056
1445
|
<span class="cline-any cline-neutral"> </span>
|
|
2057
1446
|
<span class="cline-any cline-no"> </span>
|
|
2058
|
-
<span class="cline-any cline-no"> </span>
|
|
2059
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2060
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2061
1447
|
<span class="cline-any cline-neutral"> </span>
|
|
2062
|
-
<span class="cline-any cline-no"> </span>
|
|
2063
1448
|
<span class="cline-any cline-neutral"> </span>
|
|
2064
1449
|
<span class="cline-any cline-no"> </span>
|
|
2065
|
-
<span class="cline-any cline-no"> </span>
|
|
2066
|
-
<span class="cline-any cline-no"> </span>
|
|
2067
1450
|
<span class="cline-any cline-neutral"> </span>
|
|
2068
1451
|
<span class="cline-any cline-no"> </span>
|
|
2069
|
-
<span class="cline-any cline-no"> </span>
|
|
2070
|
-
<span class="cline-any cline-no"> </span>
|
|
2071
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2072
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2073
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2074
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2075
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2076
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2077
|
-
<span class="cline-any cline-no"> </span>
|
|
2078
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2079
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2080
1452
|
<span class="cline-any cline-neutral"> </span>
|
|
2081
1453
|
<span class="cline-any cline-neutral"> </span>
|
|
2082
1454
|
<span class="cline-any cline-neutral"> </span>
|
|
1455
|
+
<span class="cline-any cline-no"> </span>
|
|
1456
|
+
<span class="cline-any cline-no"> </span>
|
|
2083
1457
|
<span class="cline-any cline-neutral"> </span>
|
|
1458
|
+
<span class="cline-any cline-no"> </span>
|
|
1459
|
+
<span class="cline-any cline-no"> </span>
|
|
1460
|
+
<span class="cline-any cline-no"> </span>
|
|
1461
|
+
<span class="cline-any cline-no"> </span>
|
|
2084
1462
|
<span class="cline-any cline-neutral"> </span>
|
|
2085
1463
|
<span class="cline-any cline-neutral"> </span>
|
|
2086
1464
|
<span class="cline-any cline-neutral"> </span>
|
|
1465
|
+
<span class="cline-any cline-no"> </span>
|
|
2087
1466
|
<span class="cline-any cline-neutral"> </span>
|
|
2088
1467
|
<span class="cline-any cline-neutral"> </span>
|
|
1468
|
+
<span class="cline-any cline-no"> </span>
|
|
2089
1469
|
<span class="cline-any cline-neutral"> </span>
|
|
2090
1470
|
<span class="cline-any cline-neutral"> </span>
|
|
1471
|
+
<span class="cline-any cline-no"> </span>
|
|
2091
1472
|
<span class="cline-any cline-neutral"> </span>
|
|
2092
1473
|
<span class="cline-any cline-neutral"> </span>
|
|
2093
1474
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2096,29 +1477,27 @@
|
|
|
2096
1477
|
<span class="cline-any cline-neutral"> </span>
|
|
2097
1478
|
<span class="cline-any cline-neutral"> </span>
|
|
2098
1479
|
<span class="cline-any cline-no"> </span>
|
|
2099
|
-
<span class="cline-any cline-no"> </span>
|
|
2100
|
-
<span class="cline-any cline-no"> </span>
|
|
2101
|
-
<span class="cline-any cline-no"> </span>
|
|
2102
1480
|
<span class="cline-any cline-neutral"> </span>
|
|
2103
1481
|
<span class="cline-any cline-no"> </span>
|
|
2104
1482
|
<span class="cline-any cline-no"> </span>
|
|
2105
|
-
<span class="cline-any cline-no"> </span>
|
|
2106
|
-
<span class="cline-any cline-no"> </span>
|
|
2107
1483
|
<span class="cline-any cline-neutral"> </span>
|
|
2108
|
-
<span class="cline-any cline-
|
|
1484
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1485
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2109
1486
|
<span class="cline-any cline-no"> </span>
|
|
2110
1487
|
<span class="cline-any cline-neutral"> </span>
|
|
2111
1488
|
<span class="cline-any cline-no"> </span>
|
|
2112
1489
|
<span class="cline-any cline-no"> </span>
|
|
1490
|
+
<span class="cline-any cline-no"> </span>
|
|
2113
1491
|
<span class="cline-any cline-neutral"> </span>
|
|
2114
1492
|
<span class="cline-any cline-no"> </span>
|
|
2115
1493
|
<span class="cline-any cline-no"> </span>
|
|
2116
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2117
1494
|
<span class="cline-any cline-no"> </span>
|
|
2118
1495
|
<span class="cline-any cline-neutral"> </span>
|
|
2119
1496
|
<span class="cline-any cline-neutral"> </span>
|
|
2120
1497
|
<span class="cline-any cline-neutral"> </span>
|
|
2121
1498
|
<span class="cline-any cline-neutral"> </span>
|
|
1499
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1500
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2122
1501
|
<span class="cline-any cline-no"> </span>
|
|
2123
1502
|
<span class="cline-any cline-neutral"> </span>
|
|
2124
1503
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2134,18 +1513,9 @@
|
|
|
2134
1513
|
<span class="cline-any cline-no"> </span>
|
|
2135
1514
|
<span class="cline-any cline-neutral"> </span>
|
|
2136
1515
|
<span class="cline-any cline-neutral"> </span>
|
|
2137
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2138
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2139
|
-
<span class="cline-any cline-no"> </span>
|
|
2140
1516
|
<span class="cline-any cline-no"> </span>
|
|
2141
1517
|
<span class="cline-any cline-no"> </span>
|
|
2142
1518
|
<span class="cline-any cline-no"> </span>
|
|
2143
|
-
<span class="cline-any cline-no"> </span>
|
|
2144
|
-
<span class="cline-any cline-no"> </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-no"> </span>
|
|
2149
1519
|
<span class="cline-any cline-neutral"> </span>
|
|
2150
1520
|
<span class="cline-any cline-neutral"> </span>
|
|
2151
1521
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2156,14 +1526,6 @@
|
|
|
2156
1526
|
<span class="cline-any cline-neutral"> </span>
|
|
2157
1527
|
<span class="cline-any cline-neutral"> </span>
|
|
2158
1528
|
<span class="cline-any cline-no"> </span>
|
|
2159
|
-
<span class="cline-any cline-no"> </span>
|
|
2160
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2161
|
-
<span class="cline-any cline-no"> </span>
|
|
2162
|
-
<span class="cline-any cline-no"> </span>
|
|
2163
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2164
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2165
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2166
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2167
1529
|
<span class="cline-any cline-neutral"> </span>
|
|
2168
1530
|
<span class="cline-any cline-no"> </span>
|
|
2169
1531
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2329,10 +1691,6 @@
|
|
|
2329
1691
|
<span class="cline-any cline-neutral"> </span>
|
|
2330
1692
|
<span class="cline-any cline-neutral"> </span>
|
|
2331
1693
|
<span class="cline-any cline-yes">1x</span>
|
|
2332
|
-
<span class="cline-any cline-no"> </span>
|
|
2333
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2334
|
-
<span class="cline-any cline-no"> </span>
|
|
2335
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2336
1694
|
<span class="cline-any cline-neutral"> </span>
|
|
2337
1695
|
<span class="cline-any cline-no"> </span>
|
|
2338
1696
|
<span class="cline-any cline-no"> </span>
|
|
@@ -2487,503 +1845,277 @@
|
|
|
2487
1845
|
<span class="cline-any cline-no"> </span>
|
|
2488
1846
|
<span class="cline-any cline-no"> </span>
|
|
2489
1847
|
<span class="cline-any cline-neutral"> </span>
|
|
2490
|
-
<span class="cline-any cline-neutral"> </span
|
|
2491
|
-
|
|
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';
|
|
2492
1851
|
import { addBreakpointNodesFromApp } from '../../breakpoint';
|
|
2493
1852
|
import { getConceptConstructor } from '../../decorators';
|
|
2494
1853
|
import { config } from '../../config';
|
|
2495
1854
|
import storageService from './service';
|
|
2496
1855
|
import { v4 as uuidv4 } from 'uuid';
|
|
2497
1856
|
import stepRecorder from '../../manager/stepRecorder';
|
|
2498
|
-
import * as jsoner from './jsoner';
|
|
2499
1857
|
/// #if !process.env.NODE_ENV || process.env.BUILD_TARGET === 'node'
|
|
2500
1858
|
import * as fs from 'fs-extra';
|
|
1859
|
+
import * as jsoner from './jsoner';
|
|
2501
1860
|
import type { NaslServer } from 'src/server/naslServer';
|
|
2502
1861
|
/// #endif
|
|
2503
1862
|
|
|
1863
|
+
|
|
1864
|
+
|
|
2504
1865
|
export const batchQuery = storageService.batchQuery;
|
|
2505
1866
|
export const batchAction = storageService.batchAction;
|
|
2506
1867
|
export const batchInstruct = storageService.batchInstruct;
|
|
2507
1868
|
export const breakpoint = storageService.breakpoint;
|
|
2508
1869
|
|
|
2509
1870
|
let tabTimestamp: string;
|
|
2510
|
-
export
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
<span class="cstat-no" title="statement not covered"
|
|
2522
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
<span class="cstat-no" title="statement not covered" > request.onsuccess = <span class="fstat-no" title="function not covered" >(e</span>vent: any) => {</span>
|
|
2526
|
-
const db = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
|
|
2527
|
-
const transaction = <span class="cstat-no" title="statement not covered" >db.transaction('operationRecord', 'readwrite');</span>
|
|
2528
|
-
const objectStore = <span class="cstat-no" title="statement not covered" >transaction.objectStore('operationRecord');</span>
|
|
2529
|
-
<span class="cstat-no" title="statement not covered" > operation.appId = operationRecordInfoMap.get('appId');</span>
|
|
2530
|
-
<span class="cstat-no" title="statement not covered" > operation.branchId = operationRecordInfoMap.get('branchId');</span>
|
|
2531
|
-
<span class="cstat-no" title="statement not covered" > operation.accountId = operationRecordInfoMap.get('accountId');</span>
|
|
2532
|
-
<span class="cstat-no" title="statement not covered" > operation.userId = operationRecordInfoMap.get('userId');</span>
|
|
2533
|
-
<span class="cstat-no" title="statement not covered" > operation.phone = operationRecordInfoMap.get('phone');</span>
|
|
2534
|
-
// 将时间戳添加到记录中
|
|
2535
|
-
<span class="cstat-no" title="statement not covered" > operation.timestamp = Date.now();</span>
|
|
2536
|
-
// 这份数据不存在向上的引用,因此用cloneDeep没有关系
|
|
2537
|
-
<span class="cstat-no" title="statement not covered" > objectStore.put(cloneDeep(operation));</span>
|
|
2538
|
-
<span class="cstat-no" title="statement not covered" > transaction.oncomplete = <span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
2539
|
-
<span class="cstat-no" title="statement not covered" > db.close();</span>
|
|
2540
|
-
};
|
|
2541
|
-
};
|
|
2542
|
-
|
|
2543
|
-
<span class="cstat-no" title="statement not covered" > request.onerror = <span class="fstat-no" title="function not covered" >function(e</span>vent) {</span>
|
|
2544
|
-
<span class="cstat-no" title="statement not covered" > console.log('Failed to open database');</span>
|
|
2545
|
-
};
|
|
2546
|
-
}
|
|
2547
|
-
|
|
2548
|
-
// 删除失效数据
|
|
2549
|
-
async function <span class="fstat-no" title="function not covered" >deleteExpiredRecords(</span>) {
|
|
2550
|
-
<span class="cstat-no" title="statement not covered" > return new Promise(<span class="fstat-no" title="function not covered" >(r</span>esolve, reject) => {</span>
|
|
2551
|
-
const request = <span class="cstat-no" title="statement not covered" >indexedDB.open('naslData', 1);</span>
|
|
2552
|
-
|
|
2553
|
-
<span class="cstat-no" title="statement not covered" > request.onupgradeneeded = <span class="fstat-no" title="function not covered" >(e</span>vent: any) => {</span>
|
|
2554
|
-
const db = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
|
|
2555
|
-
const objectStore = <span class="cstat-no" title="statement not covered" >db.createObjectStore('operationRecord', { autoIncrement: true });</span>
|
|
2556
|
-
<span class="cstat-no" title="statement not covered" > objectStore.createIndex('appId', 'appId');</span>
|
|
2557
|
-
<span class="cstat-no" title="statement not covered" > objectStore.createIndex('timestamp', 'timestamp');</span>
|
|
2558
|
-
};
|
|
2559
|
-
|
|
2560
|
-
<span class="cstat-no" title="statement not covered" > request.onsuccess = <span class="fstat-no" title="function not covered" >(e</span>vent: any) => {</span>
|
|
2561
|
-
const db = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
|
|
2562
|
-
const transaction = <span class="cstat-no" title="statement not covered" >db.transaction('operationRecord', 'readwrite');</span>
|
|
2563
|
-
const objectStore = <span class="cstat-no" title="statement not covered" >transaction.objectStore('operationRecord');</span>
|
|
2564
|
-
const index = <span class="cstat-no" title="statement not covered" >objectStore.index('timestamp');</span>
|
|
2565
|
-
// 设置有效期,默认7天
|
|
2566
|
-
const localStorageExpiresAt = <span class="cstat-no" title="statement not covered" >window.localStorage.getItem('expiresAt');</span>
|
|
2567
|
-
const expiresAt = <span class="cstat-no" title="statement not covered" >Date.now() - (localStorageExpiresAt ? +localStorageExpiresAt : 7 * 24 * 60 * 60 * 1000);</span>
|
|
2568
|
-
const range = <span class="cstat-no" title="statement not covered" >IDBKeyRange.upperBound(expiresAt);</span>
|
|
2569
|
-
const expiredRecordsRequest = <span class="cstat-no" title="statement not covered" >index.openCursor(range);</span>
|
|
2570
|
-
|
|
2571
|
-
<span class="cstat-no" title="statement not covered" > expiredRecordsRequest.onsuccess = <span class="fstat-no" title="function not covered" >(e</span>vent: any) => {</span>
|
|
2572
|
-
const cursor = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
|
|
2573
|
-
<span class="cstat-no" title="statement not covered" > if (cursor) {</span>
|
|
2574
|
-
<span class="cstat-no" title="statement not covered" > console.log(cursor);</span>
|
|
2575
|
-
<span class="cstat-no" title="statement not covered" > objectStore.delete(cursor.primaryKey);</span>
|
|
2576
|
-
<span class="cstat-no" title="statement not covered" > cursor.continue();</span>
|
|
2577
|
-
} else {
|
|
2578
|
-
<span class="cstat-no" title="statement not covered" > resolve(void 0);</span>
|
|
2579
|
-
}
|
|
2580
|
-
};
|
|
2581
|
-
|
|
2582
|
-
<span class="cstat-no" title="statement not covered" > transaction.oncomplete = <span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
2583
|
-
<span class="cstat-no" title="statement not covered" > db.close();</span>
|
|
2584
|
-
};
|
|
2585
|
-
};
|
|
2586
|
-
|
|
2587
|
-
<span class="cstat-no" title="statement not covered" > request.onerror = <span class="fstat-no" title="function not covered" >(e</span>vent) => {</span>
|
|
2588
|
-
<span class="cstat-no" title="statement not covered" > reject('Failed to open database');</span>
|
|
2589
|
-
};
|
|
2590
|
-
});
|
|
2591
|
-
}
|
|
2592
|
-
|
|
2593
|
-
// 操作栈查询
|
|
2594
|
-
export function <span class="fstat-no" title="function not covered" >operationRecordQuery(</span>app: any) {
|
|
2595
|
-
<span class="cstat-no" title="statement not covered" > return new Promise(<span class="fstat-no" title="function not covered" >(r</span>esolve, reject) => {</span>
|
|
2596
|
-
const appId = <span class="cstat-no" title="statement not covered" >app?.id;</span>
|
|
2597
|
-
const branchId = <span class="cstat-no" title="statement not covered" >app?.__branchId;</span>
|
|
2598
|
-
const request = <span class="cstat-no" title="statement not covered" >indexedDB.open('naslData', 1);</span>
|
|
2599
|
-
<span class="cstat-no" title="statement not covered" > request.onsuccess = <span class="fstat-no" title="function not covered" >(e</span>vent: any) => {</span>
|
|
2600
|
-
const db = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
|
|
2601
|
-
const transaction = <span class="cstat-no" title="statement not covered" >db.transaction('operationRecord', 'readonly');</span>
|
|
2602
|
-
const objectStore = <span class="cstat-no" title="statement not covered" >transaction.objectStore('operationRecord');</span>
|
|
2603
|
-
const index = <span class="cstat-no" title="statement not covered" >objectStore.index('appId');</span> // 查询 'appId' 索引
|
|
2604
|
-
const range = <span class="cstat-no" title="statement not covered" >IDBKeyRange.only(appId);</span>
|
|
2605
|
-
const result: any[] = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
2606
|
-
|
|
2607
|
-
const request = <span class="cstat-no" title="statement not covered" >index.openCursor(range);</span>
|
|
2608
|
-
<span class="cstat-no" title="statement not covered" > request.onsuccess = <span class="fstat-no" title="function not covered" >(e</span>vent: any) => {</span>
|
|
2609
|
-
const cursor = <span class="cstat-no" title="statement not covered" >event.target.result;</span>
|
|
2610
|
-
<span class="cstat-no" title="statement not covered" > if (cursor) {</span>
|
|
2611
|
-
const record = <span class="cstat-no" title="statement not covered" >cursor.value;</span>
|
|
2612
|
-
const branchId = <span class="cstat-no" title="statement not covered" >operationRecordInfoMap.get('branchId');</span>
|
|
2613
|
-
<span class="cstat-no" title="statement not covered" > if (record.branchId === branchId) {</span>
|
|
2614
|
-
<span class="cstat-no" title="statement not covered" > result.push(record);</span>
|
|
2615
|
-
}
|
|
2616
|
-
<span class="cstat-no" title="statement not covered" > cursor.continue();</span>
|
|
2617
|
-
} else {
|
|
2618
|
-
<span class="cstat-no" title="statement not covered" > console.log('操作记录栈:', result);</span>
|
|
2619
|
-
<span class="cstat-no" title="statement not covered" > resolve(result);</span>
|
|
2620
|
-
}
|
|
2621
|
-
};
|
|
2622
|
-
|
|
2623
|
-
<span class="cstat-no" title="statement not covered" > transaction.oncomplete = <span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
2624
|
-
<span class="cstat-no" title="statement not covered" > db.close();</span>
|
|
2625
|
-
};
|
|
2626
|
-
};
|
|
2627
|
-
|
|
2628
|
-
<span class="cstat-no" title="statement not covered" > request.onerror = <span class="fstat-no" title="function not covered" >(e</span>vent) => {</span>
|
|
2629
|
-
<span class="cstat-no" title="statement not covered" > reject('Failed to open database');</span>
|
|
2630
|
-
};
|
|
2631
|
-
});
|
|
2632
|
-
}
|
|
2633
|
-
|
|
2634
|
-
// 获取父对象
|
|
2635
|
-
function <span class="fstat-no" title="function not covered" >getParentInfo(</span>appJson: any, path: string) {
|
|
2636
|
-
const pathArr: string[] = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
2637
|
-
<span class="cstat-no" title="statement not covered" > (path?.split('.') || []).forEach(<span class="fstat-no" title="function not covered" >(p</span>athItem: string) => {</span>
|
|
2638
|
-
const arrayPropertyKey = <span class="cstat-no" title="statement not covered" >pathItem.split('[')[0];</span>
|
|
2639
|
-
const matchArr = <span class="cstat-no" title="statement not covered" >pathItem.match(/\[(.+?)\]/);</span>
|
|
2640
|
-
<span class="cstat-no" title="statement not covered" > if (matchArr) {</span>
|
|
2641
|
-
<span class="cstat-no" title="statement not covered" > pathArr.push(arrayPropertyKey, matchArr[0]);</span>
|
|
2642
|
-
} else {
|
|
2643
|
-
<span class="cstat-no" title="statement not covered" > pathArr.push(pathItem);</span>
|
|
2644
|
-
}
|
|
2645
|
-
});
|
|
2646
|
-
<span class="cstat-no" title="statement not covered" > pathArr.pop();</span>
|
|
2647
|
-
let parentPath = <span class="cstat-no" title="statement not covered" >'';</span>
|
|
2648
|
-
<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>
|
|
2649
|
-
const matchArr = <span class="cstat-no" title="statement not covered" >pathItem.match(/\[(.+?)\]/);</span>
|
|
2650
|
-
<span class="cstat-no" title="statement not covered" > if (matchArr || index === 0) {</span>
|
|
2651
|
-
<span class="cstat-no" title="statement not covered" > parentPath += pathItem;</span>
|
|
2652
|
-
} else {
|
|
2653
|
-
<span class="cstat-no" title="statement not covered" > parentPath += `.${pathItem}`</span>
|
|
2654
|
-
}
|
|
2655
|
-
});
|
|
2656
|
-
const parentNode = <span class="cstat-no" title="statement not covered" >jsoner.queryNodeByPath(appJson, parentPath);</span>
|
|
2657
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
2658
|
-
parentPath,
|
|
2659
|
-
parentNode,
|
|
2660
|
-
};
|
|
2661
|
-
}
|
|
2662
|
-
|
|
2663
|
-
// 操作记录回放
|
|
2664
|
-
export async function <span class="fstat-no" title="function not covered" >operationRecordPlayback(</span>app: any, action: 'undo' | 'redo') {
|
|
2665
|
-
const operationRecord: any = <span class="cstat-no" title="statement not covered" >await operationRecordQuery(app);</span>
|
|
2666
|
-
let operationRecordIndex = <span class="cstat-no" title="statement not covered" >operationRecordInfoMap.get('operationRecordIndex');</span>
|
|
2667
|
-
<span class="cstat-no" title="statement not covered" > if ([null, undefined].includes(operationRecordIndex)) {</span>
|
|
2668
|
-
<span class="cstat-no" title="statement not covered" > operationRecordIndex = operationRecord?.length;</span>
|
|
2669
|
-
}
|
|
2670
|
-
const appJson = <span class="cstat-no" title="statement not covered" >app.toJSON();</span>
|
|
2671
|
-
<span class="cstat-no" title="statement not covered" > if (action === 'undo') {</span>
|
|
2672
|
-
<span class="cstat-no" title="statement not covered" > if (operationRecordIndex > 0) {</span>
|
|
2673
|
-
const currentRecordItem = <span class="cstat-no" title="statement not covered" >operationRecord?.[operationRecordIndex];</span>
|
|
2674
|
-
const { type, action: recordItemAction } = <span class="cstat-no" title="statement not covered" >currentRecordItem || {};</span>
|
|
2675
|
-
// 多人协作
|
|
2676
|
-
<span class="cstat-no" title="statement not covered" > if (type === 'cooperation' && recordItemAction === 'confirmPull') {</span>
|
|
2677
|
-
<span class="cstat-no" title="statement not covered" > console.log(`当前所处栈位置:${operationRecordIndex},已经进行了多人协作“合并”操作,无法继续对操作栈进行回放!`);</span>
|
|
2678
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
2679
|
-
}
|
|
2680
|
-
<span class="cstat-no" title="statement not covered" > operationRecordIndex--;</span>
|
|
2681
|
-
} else {
|
|
2682
|
-
<span class="cstat-no" title="statement not covered" > console.log(`当前所处栈位置:${operationRecordIndex},无法继续回放`);</span>
|
|
2683
|
-
<span class="cstat-no" title="statement not covered" > console.log('当前appJSON:', appJson);</span>
|
|
2684
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
2685
|
-
}
|
|
2686
|
-
} else {
|
|
2687
|
-
<span class="cstat-no" title="statement not covered" > if (operationRecordIndex < operationRecord?.length) {</span>
|
|
2688
|
-
<span class="cstat-no" title="statement not covered" > operationRecordIndex++;</span>
|
|
2689
|
-
} else {
|
|
2690
|
-
<span class="cstat-no" title="statement not covered" > console.log(`当前所处栈位置:${operationRecordIndex},无法继续前进`);</span>
|
|
2691
|
-
<span class="cstat-no" title="statement not covered" > console.log('当前appJSON:', appJson);</span>
|
|
2692
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
2693
|
-
}
|
|
2694
|
-
}
|
|
2695
|
-
<span class="cstat-no" title="statement not covered" > operationRecordInfoMap.set('operationRecordIndex', operationRecordIndex);</span>
|
|
2696
|
-
const currentIndex = <span class="cstat-no" title="statement not covered" >operationRecordIndex;</span>
|
|
2697
|
-
<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>
|
|
2698
|
-
const { actionItem } = <span class="cstat-no" title="statement not covered" >recordItem || {};</span>
|
|
2699
|
-
const { list } = <span class="cstat-no" title="statement not covered" >actionItem || {};</span>
|
|
2700
|
-
<span class="cstat-no" title="statement not covered" > [...(list || [])].reverse().forEach(<span class="fstat-no" title="function not covered" >(a</span>ctionItem: any) => {</span>
|
|
2701
|
-
const { path, action, oldObject, parentKey, index: oldIndex } = <span class="cstat-no" title="statement not covered" >actionItem || {};</span>
|
|
2702
|
-
const { parentNode } = <span class="cstat-no" title="statement not covered" >getParentInfo(appJson, path);</span>
|
|
2703
|
-
const node = <span class="cstat-no" title="statement not covered" >jsoner.queryNodeByPath(appJson, path);</span>
|
|
2704
|
-
<span class="cstat-no" title="statement not covered" > switch (action) {</span>
|
|
2705
|
-
case 'create':
|
|
2706
|
-
<span class="cstat-no" title="statement not covered" > if (Array.isArray(parentNode)) {</span>
|
|
2707
|
-
const index = <span class="cstat-no" title="statement not covered" >parentNode.indexOf(node);</span>
|
|
2708
|
-
<span class="cstat-no" title="statement not covered" > if (index !== -1) {</span>
|
|
2709
|
-
<span class="cstat-no" title="statement not covered" > parentNode.splice(index, 1);</span>
|
|
2710
|
-
}
|
|
2711
|
-
} else {
|
|
2712
|
-
<span class="cstat-no" title="statement not covered" > parentNode[parentKey] = null;</span>
|
|
2713
|
-
}
|
|
2714
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2715
|
-
case 'delete':
|
|
2716
|
-
<span class="cstat-no" title="statement not covered" > if (Array.isArray(parentNode) && oldIndex !== -1) {</span>
|
|
2717
|
-
<span class="cstat-no" title="statement not covered" > parentNode.splice(oldIndex, 0, oldObject);</span>
|
|
2718
|
-
} else {
|
|
2719
|
-
<span class="cstat-no" title="statement not covered" > parentNode[parentKey] = oldObject;</span>
|
|
2720
|
-
}
|
|
2721
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2722
|
-
case 'update':
|
|
2723
|
-
<span class="cstat-no" title="statement not covered" > for (const key in oldObject) {</span>
|
|
2724
|
-
(<span class="cstat-no" title="statement not covered" >node as any)[key] = oldObject[key] ?? null;</span>
|
|
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
|
-
/* 获取LogicITEM
|
|
2762
|
-
|
|
2763
|
-
let logicItems =
|
|
2764
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2768
|
-
case 'IfStatement':
|
|
2769
|
-
<span class="cstat-no" title="statement not covered" > logicItems = [...state.consequent, ...state.alternate];</span>
|
|
2770
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2771
|
-
case 'ForEachStatement':
|
|
2772
|
-
<span class="cstat-no" title="statement not covered" > logicItems = [...state.body, state.each, state.start, state.end];</span>
|
|
2773
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2774
|
-
case 'Match':
|
|
2775
|
-
<span class="cstat-no" title="statement not covered" > logicItems = [state.expression, ...state.cases.map(getStatement).flat(1)];</span>
|
|
2776
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2777
|
-
case 'MatchCase':
|
|
2778
|
-
<span class="cstat-no" title="statement not covered" > logicItems = [...state.patterns, ...state.body];</span>
|
|
2779
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2780
|
-
case 'SwitchStatement':
|
|
2781
|
-
<span class="cstat-no" title="statement not covered" > logicItems = state.cases.map(getStatement).flat(1);</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];
|
|
2782
1905
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2783
|
-
|
|
2784
|
-
|
|
1906
|
+
ca<span class="cstat-no" title="statement not covered" >se 'IfS</span>tatement':
|
|
1907
|
+
logicItems = [...state.consequent, ...state.alternate];
|
|
2785
1908
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2786
|
-
|
|
2787
|
-
|
|
1909
|
+
ca<span class="cstat-no" title="statement not covered" >se 'For</span>EachStatement':
|
|
1910
|
+
logicItems = [...state.body, state.each, state.start, state.end];
|
|
2788
1911
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
<span class="cstat-no" title="statement not covered" > getLogic(state.calleewholeKey, app, diffLogicList);</span>
|
|
1912
|
+
ca<span class="cstat-no" title="statement not covered" >se 'Mat</span>ch':
|
|
1913
|
+
logicItems = [state.expression, ...state.cases.map(getStatement).flat(1)];
|
|
2792
1914
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2793
|
-
|
|
2794
|
-
|
|
1915
|
+
ca<span class="cstat-no" title="statement not covered" >se 'Mat</span>chCase':
|
|
1916
|
+
logicItems = [...state.patterns, ...state.body];
|
|
2795
1917
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2796
|
-
|
|
2797
|
-
|
|
1918
|
+
ca<span class="cstat-no" title="statement not covered" >se 'Swi</span>tchStatement':
|
|
1919
|
+
logicItems = state.cases.map(getStatement).flat(1);
|
|
2798
1920
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2799
|
-
|
|
2800
|
-
|
|
1921
|
+
ca<span class="cstat-no" title="statement not covered" >se 'Swi</span>tchCase':
|
|
1922
|
+
logicItems = [state.test, ...state.consequent];
|
|
2801
1923
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2802
|
-
|
|
2803
|
-
|
|
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);
|
|
2804
1936
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2805
|
-
|
|
2806
|
-
|
|
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)];
|
|
2807
1942
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2808
|
-
|
|
2809
|
-
|
|
1943
|
+
ca<span class="cstat-no" title="statement not covered" >se 'Mem</span>berExpression':
|
|
1944
|
+
logicItems = [state.object, state.property];
|
|
2810
1945
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2811
|
-
|
|
2812
|
-
|
|
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)];
|
|
2813
1951
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2814
|
-
|
|
2815
|
-
|
|
1952
|
+
ca<span class="cstat-no" title="statement not covered" >se 'New</span>List':
|
|
1953
|
+
logicItems = [...state.items];
|
|
2816
1954
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
2817
1955
|
default:
|
|
2818
|
-
|
|
2819
|
-
}
|
|
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>
|
|
2820
1958
|
|
|
2821
|
-
|
|
1959
|
+
return logicItems.filter((item: LogicItem) => !!item);
|
|
2822
1960
|
}
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
}
|
|
2829
|
-
/* 分端以后需要改
|
|
2830
|
-
|
|
2831
|
-
|
|
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) {
|
|
2832
1970
|
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
2833
|
-
}
|
|
2834
|
-
|
|
1971
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
1972
|
+
if (action === 'delete') {
|
|
2835
1973
|
<span class="cstat-no" title="statement not covered" > return true;</span>
|
|
2836
|
-
}
|
|
2837
|
-
|
|
2838
|
-
|
|
1974
|
+
} el<span class="cstat-no" title="statement not covered" >se {</span>
|
|
1975
|
+
if ('name' in obj || 'title' in obj) {
|
|
1976
|
+
return true;
|
|
2839
1977
|
}
|
|
2840
1978
|
}
|
|
2841
1979
|
}
|
|
2842
1980
|
|
|
2843
1981
|
let aiExecuted = 0;
|
|
2844
|
-
let sessionPath = ''
|
|
2845
|
-
// AI
|
|
2846
|
-
|
|
2847
|
-
|
|
2848
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2849
|
-
|
|
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 });
|
|
2850
1988
|
<span class="cstat-no" title="statement not covered" > aiExecuted -= 1;</span>
|
|
2851
|
-
}
|
|
2852
|
-
|
|
1989
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
1990
|
+
if (actionMsg.includes('自然语言生成代码') && !action) {
|
|
2853
1991
|
<span class="cstat-no" title="statement not covered" > aiExecuted += 1;</span>
|
|
2854
1992
|
// eslint-disable-next-line prefer-destructuring
|
|
2855
|
-
|
|
1993
|
+
sessionPath = actionMsg.match(/:(.*)/)[1];
|
|
2856
1994
|
}
|
|
2857
1995
|
}
|
|
2858
1996
|
|
|
2859
1997
|
/**
|
|
2860
|
-
*
|
|
2861
|
-
|
|
2862
|
-
async function <span class="
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2866
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
|
|
2870
|
-
|
|
2871
|
-
|
|
2872
|
-
|
|
2873
|
-
|
|
2874
|
-
|
|
2875
|
-
|
|
2876
|
-
<span class="cstat-no" title="statement not covered" >
|
|
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
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
|
|
2890
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
|
|
2894
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2895
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2896
|
-
|
|
2897
|
-
|
|
2898
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
<span class="cstat-no" title="statement not covered" > if (needUpdateBackEnd && !view.view.parentAuth) {</span>
|
|
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
|
-
const isDelete = <span class="cstat-no" title="statement not covered" >
|
|
2982
|
-
const isAuthView =
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
2986
|
-
|
|
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;
|
|
2987
2119
|
// const app = emitTarget.app;
|
|
2988
2120
|
// const diffArr: string[] = [];
|
|
2989
2121
|
// emitTarget.logics.forEach((logic: Logic) => {
|
|
@@ -2998,78 +2130,76 @@ async function <span class="fstat-no" title="function not covered" >doAction(</s
|
|
|
2998
2130
|
// hasBackEnd = true;
|
|
2999
2131
|
// }
|
|
3000
2132
|
// emitTarget.children.forEach((item: View | ViewElement) => loopEle(item, isDelete));
|
|
3001
|
-
// emitTarget.
|
|
2133
|
+
<span class="cstat-no" title="statement not covered" > // emitTarget.elem</span>ents.forEach((item: View | ViewElement) => loopEle(item, isDelete));
|
|
3002
2134
|
}
|
|
3003
2135
|
<span class="cstat-no" title="statement not covered" > hasFrontEnd = true;</span>
|
|
3004
|
-
}
|
|
3005
|
-
|
|
3006
|
-
<span class="
|
|
3007
|
-
const bindDirective =
|
|
3008
|
-
<span class="
|
|
3009
|
-
)
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
}
|
|
3013
|
-
}
|
|
3014
|
-
<span class="
|
|
3015
|
-
const bindDirective =
|
|
3016
|
-
<span class="
|
|
3017
|
-
)
|
|
3018
|
-
|
|
3019
|
-
<span class="cstat-no" title="statement not covered" > hasBackEnd = true</span>
|
|
3020
|
-
}
|
|
3021
|
-
<span class="cstat-no" title="statement not covered" > loopEleAuth((emitTarget as ViewElement))</span>
|
|
3022
|
-
}
|
|
3023
|
-
<span class="cstat-no" title="statement not covered" > if (event?.originEvent?.action !== 'create') {</span>
|
|
3024
|
-
<span class="cstat-no" title="statement not covered" > if (event?.originEvent?.object && event?.originEvent?.object?.bindRoles) {</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) {
|
|
3025
2151
|
<span class="cstat-no" title="statement not covered" > hasBackEnd = true</span>
|
|
3026
2152
|
}
|
|
2153
|
+
<span class="cstat-no" title="statement not covered" > loopEleAuth(emitTarget)</span>
|
|
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>
|
|
3027
2159
|
}
|
|
3028
|
-
<span class="cstat-no" title="statement not covered" > loopEle(
|
|
3029
|
-
}
|
|
3030
|
-
<span class="cstat-no" title="statement not covered" > if (emitTarget.concept === 'BindAttribute' && emitTarget.name === 'url') {</span>
|
|
3031
|
-
const needUpdateBackEnd =
|
|
3032
|
-
(<span class="cstat-no" title="statement not covered" >emitTarget as BindAttribute)?.value?.endsWith('/import') || (emitTarget as BindAttribute)?.value?.includes('/upload/')</span>
|
|
3033
|
-
<span class="cstat-no" title="statement not covered" > if (!(emitTarget as BindAttribute).view.parentAuth && needUpdateBackEnd) {</span>
|
|
3034
|
-
<span class="cstat-no" title="statement not covered" > hasBackEnd = true</span>
|
|
3035
|
-
}
|
|
2160
|
+
<span class="cstat-no" title="statement not covered" > loopEle(emitTarget, true)</span>
|
|
3036
2161
|
}
|
|
3037
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3038
|
-
|
|
3039
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3040
|
-
|
|
3041
|
-
|
|
3042
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3043
|
-
<span class="cstat-no" title="statement not covered"
|
|
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>
|
|
2164
|
+
<span class="cstat-no" title="statement not covered" > emitTarget?.value?.endsWith('/import') || emitTarget?.value?.includes('/upload/')</span>
|
|
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;
|
|
3044
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;
|
|
3045
2181
|
}
|
|
3046
|
-
|
|
3047
|
-
<span class="cstat-no" title="statement not covered"
|
|
3048
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3049
|
-
|
|
3050
|
-
|
|
3051
|
-
|
|
3052
|
-
<span class="cstat-no" title="statement not covered" > if (riskList) {</span>
|
|
3053
|
-
<span class="cstat-no" title="statement not covered" > allRiskList.push(...(riskList || []));</span>
|
|
3054
|
-
}
|
|
3055
|
-
<span class="cstat-no" title="statement not covered" > if (Array.isArray(objItem)) {</span>
|
|
3056
|
-
<span class="cstat-no" title="statement not covered" > if (action === 'update') {</span>
|
|
3057
|
-
<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({
|
|
3058
2188
|
action,
|
|
3059
2189
|
path,
|
|
3060
2190
|
node: objItem[0],
|
|
3061
|
-
})
|
|
3062
|
-
}
|
|
3063
|
-
|
|
3064
|
-
|
|
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({
|
|
3065
2195
|
action,
|
|
3066
2196
|
path,
|
|
3067
2197
|
node: item,
|
|
3068
2198
|
});
|
|
3069
2199
|
});
|
|
3070
|
-
}
|
|
2200
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
3071
2201
|
} else {
|
|
3072
|
-
|
|
2202
|
+
actionList.push({
|
|
3073
2203
|
action,
|
|
3074
2204
|
path,
|
|
3075
2205
|
object: objItem,
|
|
@@ -3077,67 +2207,46 @@ async function <span class="fstat-no" title="function not covered" >doAction(</s
|
|
|
3077
2207
|
}
|
|
3078
2208
|
});
|
|
3079
2209
|
});
|
|
3080
|
-
}
|
|
3081
|
-
} catch (error) {
|
|
3082
|
-
|
|
3083
|
-
|
|
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, {
|
|
3084
2214
|
errorInfo: {
|
|
3085
2215
|
message: error?.message,
|
|
3086
2216
|
stack: error?.stack,
|
|
3087
|
-
}
|
|
2217
|
+
<span class="cstat-no" title="statement not covered" > },</span>
|
|
3088
2218
|
});
|
|
3089
|
-
|
|
3090
|
-
}
|
|
2219
|
+
return;
|
|
2220
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
3091
2221
|
|
|
3092
|
-
const
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
actions: actionList,
|
|
3096
|
-
riskList: allRiskList
|
|
2222
|
+
const instructList = [{
|
|
2223
|
+
uuid: uuidv4().replace(/-/g, ''),
|
|
2224
|
+
<span class="cstat-no" title="statement not covered" > actions: actionList,</span>
|
|
3097
2225
|
}];
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
actionMsg,
|
|
3103
|
-
list: list.map(<span class="fstat-no" title="function not covered" >(i</span>tem: any) => {
|
|
3104
|
-
const { path, action, object, oldObject, parentKey, index } = <span class="cstat-no" title="statement not covered" >item?.originEvent || {};</span>
|
|
3105
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
3106
|
-
path,
|
|
3107
|
-
action,
|
|
3108
|
-
parentKey,
|
|
3109
|
-
index,
|
|
3110
|
-
object: object?.toJSON?.() || object,
|
|
3111
|
-
oldObject: oldObject?.toJSON?.() || oldObject,
|
|
3112
|
-
}
|
|
3113
|
-
}),
|
|
3114
|
-
},
|
|
3115
|
-
};
|
|
3116
|
-
<span class="cstat-no" title="statement not covered" > saveNasl({ app, hasFrontEnd, hasBackEnd, instructList, operationList: [operation] });</span>
|
|
3117
|
-
// 进行nasl操作后需要将Index重置
|
|
3118
|
-
<span class="cstat-no" title="statement not covered" > operationRecordInfoMap.set('operationRecordIndex', null);</span>
|
|
3119
|
-
<span class="cstat-no" title="statement not covered" > if (!app._historying) {</span>
|
|
3120
|
-
<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) {
|
|
3121
2230
|
<span class="cstat-no" title="statement not covered" > app._historyList = app._historyList.splice(0, app._historyIndex);</span>
|
|
3122
2231
|
}
|
|
3123
|
-
|
|
2232
|
+
app._historyList.<span class="fstat-no" title="function not covered" >pu</span>sh({<span class="cstat-no" title="statement not covered" ></span>
|
|
3124
2233
|
actionMsg,
|
|
3125
|
-
|
|
2234
|
+
<span class="cstat-no" title="statement not covered" > list: list.map((item: any) => item.originEv</span>ent),
|
|
3126
2235
|
});
|
|
3127
|
-
<span class="cstat-no" title="statement not covered"
|
|
2236
|
+
app._historyIndex <span class="cstat-no" title="statement not covered" >= app._historyList.length;</span>
|
|
3128
2237
|
} else {
|
|
3129
|
-
const actionMap =
|
|
2238
|
+
const actionMap = {
|
|
3130
2239
|
undo: '已撤销操作:',
|
|
3131
|
-
redo: '
|
|
3132
|
-
}
|
|
3133
|
-
|
|
3134
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3135
|
-
|
|
3136
|
-
<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);
|
|
3137
2246
|
}
|
|
3138
2247
|
<span class="cstat-no" title="statement not covered" > app._historying = false;</span>
|
|
3139
2248
|
}
|
|
3140
|
-
|
|
2249
|
+
stepRecorder.initialized && stepRecorder.record(actionMsg, actionItem, actionList);
|
|
3141
2250
|
}
|
|
3142
2251
|
|
|
3143
2252
|
type Instruct = {
|
|
@@ -3149,7 +2258,6 @@ type TaskOption = {
|
|
|
3149
2258
|
hasFrontEnd: boolean,
|
|
3150
2259
|
hasBackEnd: boolean,
|
|
3151
2260
|
instructList: Instruct[],
|
|
3152
|
-
operationList: Operation[],
|
|
3153
2261
|
};
|
|
3154
2262
|
enum TaskQueueStatus {
|
|
3155
2263
|
ExceedMaxTaskCount,
|
|
@@ -3167,197 +2275,141 @@ class TaskQueue {
|
|
|
3167
2275
|
lastQueue: TaskOption[] = []
|
|
3168
2276
|
running: Boolean = false
|
|
3169
2277
|
maxTaskCount: number = 10
|
|
3170
|
-
status
|
|
3171
|
-
|
|
3172
|
-
|
|
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) {
|
|
3173
2281
|
<span class="cstat-no" title="statement not covered" > this.queue.push(task);</span>
|
|
3174
|
-
|
|
3175
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
}
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
}
|
|
3182
|
-
|
|
3183
|
-
<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>
|
|
3184
2292
|
<span class="cstat-no" title="statement not covered" > this.queue = [];</span>
|
|
3185
2293
|
<span class="cstat-no" title="statement not covered" > this.lastQueue = [];</span>
|
|
3186
|
-
|
|
3187
|
-
|
|
3188
|
-
}
|
|
3189
|
-
|
|
3190
|
-
<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) {
|
|
3191
2299
|
<span class="cstat-no" title="statement not covered" > if (this.running)</span>
|
|
3192
2300
|
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
const app = <span class="cstat-no" title="statement not covered" >
|
|
3197
|
-
let hasFrontEnd =
|
|
3198
|
-
let hasBackEnd =
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
<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>) {
|
|
3203
2310
|
<span class="cstat-no" title="statement not covered" > if (task.hasFrontEnd)</span>
|
|
3204
2311
|
<span class="cstat-no" title="statement not covered" > hasFrontEnd = true;</span>
|
|
3205
2312
|
<span class="cstat-no" title="statement not covered" > if (task.hasBackEnd)</span>
|
|
3206
|
-
|
|
3207
|
-
|
|
3208
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3209
|
-
|
|
3210
|
-
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3214
|
-
|
|
3215
|
-
|
|
3216
|
-
|
|
3217
|
-
|
|
3218
|
-
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,
|
|
3219
2325
|
});
|
|
3220
2326
|
|
|
3221
|
-
// code: 401650, 检测到当前应用拉取操作已被强制结束,
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
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>
|
|
3226
2332
|
// 连接失败,或超时,或后端持久化异常
|
|
3227
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3228
|
-
&& this.status !== TaskQueueStatus.Retrying) {
|
|
3229
|
-
|
|
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;
|
|
3230
2336
|
<span class="cstat-no" title="statement not covered" > this.retry();</span>
|
|
3231
2337
|
} else
|
|
3232
|
-
<span class="cstat-no" title="statement not covered" > this.
|
|
3233
|
-
|
|
3234
|
-
|
|
3235
|
-
}
|
|
3236
|
-
|
|
3237
|
-
<span class="cstat-no" title="statement not covered" > this.running = false
|
|
3238
|
-
|
|
3239
|
-
|
|
3240
|
-
}
|
|
3241
|
-
|
|
3242
|
-
<span class="
|
|
3243
|
-
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
|
|
3247
|
-
<span class="cstat-no" title="statement not covered" > this.status =
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
}
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
const failedQueue =
|
|
3254
|
-
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>
|
|
3255
2361
|
}));
|
|
3256
|
-
const queue =
|
|
3257
|
-
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>
|
|
3258
2364
|
}));
|
|
3259
|
-
|
|
2365
|
+
await storageService.saveFrontendNasl({
|
|
3260
2366
|
body: {
|
|
3261
2367
|
nasl: app?.toJSON(),
|
|
3262
2368
|
failedQueue,
|
|
3263
2369
|
queue,
|
|
3264
|
-
|
|
3265
|
-
}
|
|
3266
|
-
}).catch(
|
|
3267
|
-
<span class="cstat-no" title="statement not covered" > console.log('备份 nasl 失败:', err)
|
|
3268
|
-
})
|
|
3269
|
-
|
|
3270
|
-
|
|
3271
|
-
}
|
|
3272
|
-
|
|
3273
|
-
|
|
3274
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3275
|
-
|
|
3276
|
-
<span class="cstat-no" title="statement not covered" > app.
|
|
3277
|
-
|
|
3278
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
3279
|
-
case TaskQueueStatus.Retrying:
|
|
3280
|
-
<span class="cstat-no" title="statement not covered" > app.emit('SuccessRetry');</span>
|
|
3281
|
-
<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;
|
|
3282
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;
|
|
3283
2389
|
}
|
|
3284
2390
|
}
|
|
3285
2391
|
}
|
|
3286
|
-
|
|
3287
|
-
|
|
3288
|
-
async function
|
|
3289
|
-
|
|
3290
|
-
}
|
|
3291
|
-
|
|
3292
|
-
class
|
|
3293
|
-
|
|
3294
|
-
branchId?: string;
|
|
3295
|
-
accountId?: string;
|
|
3296
|
-
userId?: string;
|
|
3297
|
-
phone?: string;
|
|
3298
|
-
actionItem: any;
|
|
3299
|
-
res?: any;
|
|
3300
|
-
err?: any;
|
|
3301
|
-
parentKey?: string;
|
|
3302
|
-
timestamp?: any;
|
|
3303
|
-
type?: string;
|
|
3304
|
-
uuid?: string;
|
|
3305
|
-
action?: string;
|
|
3306
|
-
}
|
|
3307
|
-
|
|
3308
|
-
// 确保操作非高危
|
|
3309
|
-
function <span class="fstat-no" title="function not covered" >ensureSafe(</span>instructList: any[]) {
|
|
3310
|
-
const riskList: any[] = <span class="cstat-no" title="statement not covered" >[]</span>
|
|
3311
|
-
<span class="cstat-no" title="statement not covered" > instructList?.forEach(<span class="fstat-no" title="function not covered" >(i</span>nstruct) => {</span>
|
|
3312
|
-
<span class="cstat-no" title="statement not covered" > if (instruct?.riskList) {</span>
|
|
3313
|
-
<span class="cstat-no" title="statement not covered" > riskList.push(...(instruct.riskList || []));</span>
|
|
3314
|
-
}
|
|
3315
|
-
<span class="cstat-no" title="statement not covered" > instruct?.actions?.forEach(<span class="fstat-no" title="function not covered" >(a</span>ctionItem: any) => {</span>
|
|
3316
|
-
const { path, action, object } = <span class="cstat-no" title="statement not covered" >actionItem || {};</span>
|
|
3317
|
-
<span class="cstat-no" title="statement not covered" > if (path === 'app') {</span>
|
|
3318
|
-
<span class="cstat-no" title="statement not covered" > switch(action) {</span>
|
|
3319
|
-
case 'create':
|
|
3320
|
-
<span class="cstat-no" title="statement not covered" > riskList.push('重复创建App');</span>
|
|
3321
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
3322
|
-
case 'delete':
|
|
3323
|
-
<span class="cstat-no" title="statement not covered" > riskList.push('删除App');</span>
|
|
3324
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
3325
|
-
case 'update':
|
|
3326
|
-
<span class="cstat-no" title="statement not covered" > if (object?.hasOwnProperty('id')) {</span>
|
|
3327
|
-
<span class="cstat-no" title="statement not covered" > riskList.push('修改AppId');</span>
|
|
3328
|
-
}
|
|
3329
|
-
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
3330
|
-
}
|
|
3331
|
-
}
|
|
3332
|
-
});
|
|
3333
|
-
});
|
|
3334
|
-
<span class="cstat-no" title="statement not covered" > return riskList;</span>
|
|
3335
|
-
}
|
|
3336
|
-
|
|
3337
|
-
async function <span class="fstat-no" title="function not covered" >_saveNasl(</span>options: TaskOption) {
|
|
3338
|
-
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;
|
|
3339
2400
|
<span class="cstat-no" title="statement not covered" > app.emit('saving');</span>
|
|
3340
|
-
|
|
3341
|
-
<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>
|
|
3342
2403
|
<span class="cstat-no" title="statement not covered" > ChangedNASLType = 'both';</span>
|
|
3343
2404
|
} else <span class="cstat-no" title="statement not covered" >if (hasFrontEnd) {</span>
|
|
3344
2405
|
<span class="cstat-no" title="statement not covered" > ChangedNASLType = 'web';</span>
|
|
3345
|
-
} else
|
|
3346
|
-
|
|
3347
|
-
}
|
|
3348
|
-
|
|
3349
|
-
|
|
3350
|
-
|
|
3351
|
-
|
|
3352
|
-
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
3353
|
-
const riskList = <span class="cstat-no" title="statement not covered" >ensureSafe(instructList);</span>
|
|
3354
|
-
<span class="cstat-no" title="statement not covered" > if (Array.isArray(riskList) && riskList.length) {</span>
|
|
3355
|
-
<span class="cstat-no" title="statement not covered" > throw Error(`存在以下高危操作:\n${riskList.map(<span class="fstat-no" title="function not covered" >(r</span>isk, index) => {</span>
|
|
3356
|
-
<span class="cstat-no" title="statement not covered" > return `${index + 1}.${risk};`;</span>
|
|
3357
|
-
}).join('\n')}\n请及时排查原因`);
|
|
3358
|
-
}
|
|
3359
|
-
// 接口请求
|
|
3360
|
-
<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({
|
|
3361
2413
|
body: instructList,
|
|
3362
2414
|
headers: {
|
|
3363
2415
|
appId: app.id,
|
|
@@ -3365,35 +2417,27 @@ async function <span class="fstat-no" title="function not covered" >_saveNasl(</
|
|
|
3365
2417
|
tabTimestamp,
|
|
3366
2418
|
// 其他封装在 storageService 里了
|
|
3367
2419
|
},
|
|
3368
|
-
})
|
|
2420
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
3369
2421
|
} catch (error) {
|
|
3370
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3371
|
-
<span class="cstat-no" title="statement not covered" > console.error(err);</span>
|
|
2422
|
+
err<span class="cstat-no" title="statement not covered" > = error;</span>
|
|
3372
2423
|
}
|
|
3373
|
-
|
|
3374
|
-
<span class="cstat-no" title="statement not covered"
|
|
3375
|
-
...operation,
|
|
3376
|
-
res,
|
|
3377
|
-
err,
|
|
3378
|
-
});
|
|
3379
|
-
});
|
|
3380
|
-
} else <span class="cstat-no" title="statement not covered" >if (config.storage.protocol === 'mock') {</span>
|
|
3381
|
-
// Do nothing
|
|
2424
|
+
} else if (config.storage.protocol === 'mock') {
|
|
2425
|
+
// Do nothing<span class="cstat-no" title="statement not covered" ></span>
|
|
3382
2426
|
} else {
|
|
3383
|
-
const json = <span class="cstat-no" title="statement not covered" >
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
}
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
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, {
|
|
3392
2436
|
spaces: 4,
|
|
3393
|
-
})
|
|
3394
|
-
}
|
|
3395
|
-
|
|
3396
|
-
|
|
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;
|
|
3397
2441
|
}
|
|
3398
2442
|
|
|
3399
2443
|
export interface ProxyApp extends App {
|
|
@@ -3407,123 +2451,123 @@ export interface ProxyApp extends App {
|
|
|
3407
2451
|
_actionMsg: string;
|
|
3408
2452
|
_action: string;
|
|
3409
2453
|
naslServer: NaslServer;
|
|
3410
|
-
}
|
|
3411
|
-
|
|
3412
|
-
|
|
3413
|
-
<span class="cstat-no" title="statement not covered" > app._isCollectingCount
|
|
3414
|
-
<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>];
|
|
3415
2459
|
<span class="cstat-no" title="statement not covered" > app._historyList = [];</span>
|
|
3416
|
-
<span class="cstat-no" title="statement not covered" > app._historyIndex
|
|
3417
|
-
|
|
3418
|
-
<span class="cstat-no" title="statement not covered" > app._timer =
|
|
3419
|
-
|
|
3420
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3421
|
-
const proxyApp =
|
|
3422
|
-
|
|
3423
|
-
})
|
|
3424
|
-
|
|
3425
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3426
|
-
const proxyApp =
|
|
3427
|
-
|
|
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;
|
|
3428
2472
|
});
|
|
3429
2473
|
|
|
3430
2474
|
/**
|
|
3431
|
-
*
|
|
3432
|
-
|
|
3433
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3434
|
-
|
|
3435
|
-
|
|
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) {
|
|
3436
2480
|
<span class="cstat-no" title="statement not covered" > clearTimeout(proxyApp._timer);</span>
|
|
3437
|
-
}
|
|
3438
|
-
|
|
2481
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
2482
|
+
if (!proxyApp._noTimer) {
|
|
3439
2483
|
<span class="cstat-no" title="statement not covered" > proxyApp._noTimer = event.noTimer;</span>
|
|
3440
|
-
}
|
|
3441
|
-
<span class="cstat-no" title="statement not covered"
|
|
3442
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3443
|
-
|
|
3444
|
-
|
|
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, {
|
|
3445
2489
|
errorInfo: {
|
|
3446
2490
|
message: '收集超时,请及时排查原因',
|
|
3447
2491
|
},
|
|
3448
2492
|
});
|
|
3449
|
-
}, 2500)
|
|
3450
|
-
}
|
|
3451
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3452
|
-
|
|
3453
|
-
<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;
|
|
3454
2498
|
}
|
|
3455
|
-
|
|
2499
|
+
proxyApp._isCollectingCount++;
|
|
3456
2500
|
});
|
|
3457
2501
|
|
|
3458
2502
|
/**
|
|
3459
|
-
*
|
|
3460
|
-
|
|
3461
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3462
|
-
|
|
3463
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3464
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3465
|
-
|
|
3466
|
-
|
|
3467
|
-
}
|
|
3468
|
-
//
|
|
3469
|
-
const
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
<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 = [];
|
|
3473
2517
|
<span class="cstat-no" title="statement not covered" > proxyApp._actionMsg = '';</span>
|
|
3474
2518
|
<span class="cstat-no" title="statement not covered" > proxyApp._action = '';</span>
|
|
3475
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3476
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3477
|
-
|
|
3478
|
-
|
|
3479
|
-
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>
|
|
3480
2524
|
});
|
|
3481
|
-
|
|
2525
|
+
await doAction(proxyApp, {
|
|
3482
2526
|
list: collectingList,
|
|
3483
2527
|
actionMsg,
|
|
3484
2528
|
action,
|
|
3485
|
-
})
|
|
3486
|
-
}
|
|
3487
|
-
}
|
|
3488
|
-
|
|
3489
|
-
|
|
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('关闭收集有问题,请排查');
|
|
3490
2534
|
}
|
|
3491
2535
|
});
|
|
3492
2536
|
|
|
3493
2537
|
/**
|
|
3494
|
-
*
|
|
3495
|
-
|
|
3496
|
-
|
|
3497
|
-
|
|
3498
|
-
|
|
3499
|
-
|
|
3500
|
-
|
|
3501
|
-
value: [event]
|
|
3502
|
-
})
|
|
3503
|
-
let actionMsg =
|
|
3504
|
-
|
|
3505
|
-
const { concept, name } =
|
|
3506
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3507
|
-
|
|
3508
|
-
|
|
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 = '添加';
|
|
3509
2553
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
3510
|
-
|
|
3511
|
-
|
|
2554
|
+
ca<span class="cstat-no" title="statement not covered" >se 'del</span>ete':
|
|
2555
|
+
actionMsg = '删除';
|
|
3512
2556
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
3513
|
-
|
|
3514
|
-
|
|
2557
|
+
ca<span class="cstat-no" title="statement not covered" >se 'upd</span>ate':
|
|
2558
|
+
actionMsg = '修改';
|
|
3515
2559
|
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
3516
|
-
}
|
|
3517
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3518
|
-
|
|
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) {
|
|
3519
2563
|
<span class="cstat-no" title="statement not covered" > actionMsg += `“${name}”`;</span>
|
|
3520
2564
|
}
|
|
3521
|
-
|
|
2565
|
+
doAction(proxyApp, {
|
|
3522
2566
|
list: [event],
|
|
3523
2567
|
actionMsg,
|
|
3524
|
-
})
|
|
2568
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
3525
2569
|
} else {
|
|
3526
|
-
|
|
2570
|
+
proxyApp._collectingList.push(event);
|
|
3527
2571
|
}
|
|
3528
2572
|
});
|
|
3529
2573
|
}
|
|
@@ -3538,17 +2582,13 @@ type BreakpointItem =
|
|
|
3538
2582
|
/**
|
|
3539
2583
|
* 加载 app
|
|
3540
2584
|
* @param appId 如果是从文件读,就不需要传
|
|
3541
|
-
* @returns app
|
|
2585
|
+
* @returns app 对象<span class="fstat-no" title="function not covered" ></span>
|
|
3542
2586
|
*/
|
|
3543
|
-
|
|
3544
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3545
|
-
|
|
3546
|
-
|
|
3547
|
-
|
|
3548
|
-
let app: App;
|
|
3549
|
-
<span class="cstat-no" title="statement not covered" > if (config.storage.protocol === 'http') {</span>
|
|
3550
|
-
<span class="cstat-no" title="statement not covered" > console.time('batchQuery');</span>
|
|
3551
|
-
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 = [
|
|
3552
2592
|
storageService.batchQuery({
|
|
3553
2593
|
body: [
|
|
3554
2594
|
{
|
|
@@ -3568,37 +2608,37 @@ export async function <span class="fstat-no" title="function not covered" >loadA
|
|
|
3568
2608
|
storageService.breakpoint({
|
|
3569
2609
|
body: { appId }
|
|
3570
2610
|
})
|
|
3571
|
-
]
|
|
3572
|
-
|
|
3573
|
-
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>
|
|
3574
2612
|
|
|
2613
|
+
const [batchQueryRes, breakpointRes] = await Promise.all(promises)
|
|
2614
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
3575
2615
|
// 请求
|
|
3576
2616
|
<span class="cstat-no" title="statement not covered" > console.timeEnd('batchQuery');</span>
|
|
3577
|
-
|
|
3578
|
-
|
|
3579
|
-
|
|
3580
|
-
|
|
3581
|
-
|
|
3582
|
-
<span class="cstat-no" title="statement not covered" > app = new App(Object.
|
|
3583
|
-
|
|
3584
|
-
|
|
3585
|
-
|
|
3586
|
-
|
|
3587
|
-
|
|
3588
|
-
|
|
3589
|
-
|
|
3590
|
-
|
|
3591
|
-
|
|
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
|
|
3592
2632
|
}
|
|
3593
|
-
}
|
|
3594
|
-
})
|
|
3595
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3596
|
-
|
|
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) {
|
|
3597
2637
|
<span class="cstat-no" title="statement not covered" > app.id = appId;</span>
|
|
3598
|
-
}
|
|
2638
|
+
}<span class="cstat-no" title="statement not covered" ></span>
|
|
3599
2639
|
<span class="cstat-no" title="statement not covered" > addBreakpointNodesFromApp(app)</span>
|
|
3600
|
-
} else
|
|
3601
|
-
|
|
2640
|
+
} else if (config.storage.protocol === 'mock') {
|
|
2641
|
+
app = new App({
|
|
3602
2642
|
id: appId,
|
|
3603
2643
|
concept: 'App',
|
|
3604
2644
|
name: 'devapp',
|
|
@@ -3616,88 +2656,88 @@ export async function <span class="fstat-no" title="function not covered" >loadA
|
|
|
3616
2656
|
dependencies: [],
|
|
3617
2657
|
interfaceDependencies: [],
|
|
3618
2658
|
frontends: [],
|
|
3619
|
-
})
|
|
3620
|
-
} else {
|
|
3621
|
-
const json =
|
|
3622
|
-
|
|
3623
|
-
}
|
|
3624
|
-
|
|
3625
|
-
<span class="cstat-no" title="statement not covered" > handleApp(app as ProxyApp
|
|
3626
|
-
|
|
3627
|
-
|
|
3628
|
-
|
|
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;
|
|
3629
2669
|
}
|
|
3630
|
-
|
|
3631
|
-
|
|
3632
|
-
|
|
3633
|
-
|
|
3634
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3635
|
-
}
|
|
3636
|
-
|
|
3637
|
-
|
|
3638
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3639
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3640
|
-
|
|
3641
|
-
|
|
3642
|
-
|
|
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);
|
|
3643
2683
|
}
|
|
3644
|
-
})
|
|
3645
|
-
}
|
|
3646
|
-
const dbTypes =
|
|
3647
|
-
|
|
3648
|
-
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({
|
|
3649
2689
|
query: {
|
|
3650
2690
|
dbTypes: dbTypes.join(','),
|
|
3651
|
-
}
|
|
3652
|
-
})
|
|
3653
|
-
<span class="cstat-no" title="statement not covered"
|
|
3654
|
-
|
|
3655
|
-
|
|
3656
|
-
|
|
3657
|
-
<span class="cstat-no" title="statement not covered"
|
|
3658
|
-
|
|
3659
|
-
const { naslType, dataBaseTypes } =
|
|
3660
|
-
|
|
3661
|
-
|
|
3662
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3663
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3664
|
-
|
|
3665
|
-
<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>
|
|
3666
2706
|
<span class="cstat-no" title="statement not covered" > dataBaseTypeMap[type] = dataBaseType;</span>
|
|
3667
|
-
|
|
3668
|
-
|
|
3669
|
-
|
|
2707
|
+
co<span class="cstat-no" title="statement not covered" >nst { defaultType } = dataBaseType;</span>
|
|
2708
|
+
if (defaultType) {
|
|
2709
|
+
defaultDataBaseType = dataBaseType;
|
|
3670
2710
|
}
|
|
3671
2711
|
}
|
|
3672
|
-
})
|
|
2712
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
3673
2713
|
}
|
|
3674
|
-
|
|
2714
|
+
columnTypeMap[naslType] = {
|
|
3675
2715
|
dataBaseTypes,
|
|
3676
2716
|
dataBaseTypeMap,
|
|
3677
2717
|
defaultDataBaseType,
|
|
3678
2718
|
};
|
|
3679
|
-
})
|
|
2719
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
3680
2720
|
}
|
|
3681
|
-
|
|
2721
|
+
app.__databaseTypeMap[dbType] = columnTypeMap;
|
|
3682
2722
|
});
|
|
3683
|
-
}
|
|
3684
|
-
}
|
|
3685
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3686
|
-
|
|
3687
|
-
|
|
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]);
|
|
3688
2728
|
});
|
|
3689
2729
|
}
|
|
3690
2730
|
}
|
|
3691
2731
|
|
|
3692
2732
|
/**
|
|
3693
2733
|
* 加载 app
|
|
3694
|
-
* @returns app
|
|
3695
|
-
|
|
3696
|
-
export
|
|
3697
|
-
|
|
3698
|
-
|
|
3699
|
-
|
|
3700
|
-
|
|
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;
|
|
3701
2741
|
}
|
|
3702
2742
|
</pre></td></tr></table></pre>
|
|
3703
2743
|
|
|
@@ -3706,7 +2746,7 @@ export function <span class="fstat-no" title="function not covered" >loadAppSync
|
|
|
3706
2746
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
3707
2747
|
Code coverage generated by
|
|
3708
2748
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
3709
|
-
at 2023-10-
|
|
2749
|
+
at 2023-10-18T11:36:07.885Z
|
|
3710
2750
|
</div>
|
|
3711
2751
|
<script src="../../../prettify.js"></script>
|
|
3712
2752
|
<script>
|