@lcap/nasl 3.4.0-beta.9 → 3.4.1-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/{559608df-ab15-4969-acf0-5239dacd6111.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 +138 -153
- package/coverage/src/automate/engine/index.html +1 -1
- package/coverage/src/automate/engine/utils.js.html +46 -46
- package/coverage/src/bak/index.html +15 -15
- package/coverage/src/bak/translator.js.html +57 -153
- 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 +7 -43
- package/coverage/src/breakpoint/generator/CallbackNode.ts.html +8 -59
- package/coverage/src/breakpoint/generator/index.html +21 -21
- 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 +180 -609
- package/coverage/src/common/Command.ts.html +2 -2
- package/coverage/src/common/EventEmitter.ts.html +6 -6
- package/coverage/src/common/Messager.ts.html +1 -1
- package/coverage/src/common/asyncFuncMap.ts.html +1 -1
- package/coverage/src/common/index.html +21 -36
- package/coverage/src/common/index.ts.html +4 -7
- package/coverage/src/concepts/Abort__.ts.html +9 -39
- package/coverage/src/concepts/Anchor__.ts.html +29 -86
- package/coverage/src/concepts/AnonymousFunction__.ts.html +169 -262
- package/coverage/src/concepts/App__.ts.html +152 -1205
- package/coverage/src/concepts/Argument__.ts.html +51 -120
- package/coverage/src/concepts/Assignee__.ts.html +34 -124
- package/coverage/src/concepts/AssignmentLine__.ts.html +15 -48
- package/coverage/src/concepts/Assignment__.ts.html +69 -147
- package/coverage/src/concepts/Attribute__.ts.html +14 -41
- package/coverage/src/concepts/AuthInterface__.ts.html +6 -9
- package/coverage/src/concepts/AuthLogicForCallInterface__.ts.html +144 -108
- package/coverage/src/concepts/AuthLogic__.ts.html +6 -18
- package/coverage/src/concepts/BackendVariable__.ts.html +51 -135
- package/coverage/src/concepts/Backend__.ts.html +28 -106
- package/coverage/src/concepts/BatchAssignment__.ts.html +169 -274
- package/coverage/src/concepts/BinaryExpression__.ts.html +110 -188
- package/coverage/src/concepts/BindAttribute__.ts.html +93 -213
- package/coverage/src/concepts/BindDirective__.ts.html +26 -131
- package/coverage/src/concepts/BindEvent__.ts.html +71 -167
- package/coverage/src/concepts/BindStyle__.ts.html +21 -78
- package/coverage/src/concepts/BooleanLiteral__.ts.html +20 -47
- package/coverage/src/concepts/CallAuthInterface__.ts.html +48 -105
- package/coverage/src/concepts/CallConnector__.ts.html +35 -62
- package/coverage/src/concepts/CallFunction__.ts.html +160 -328
- package/coverage/src/concepts/CallInterface__.ts.html +60 -93
- package/coverage/src/concepts/CallLogic__.ts.html +427 -544
- package/coverage/src/concepts/CallQueryComponent__.ts.html +93 -126
- package/coverage/src/concepts/Comment__.ts.html +10 -43
- package/coverage/src/concepts/CompletionProperty__.ts.html +13 -40
- package/coverage/src/concepts/ConfigGroup__.ts.html +20 -47
- package/coverage/src/concepts/ConfigPropertyValue__.ts.html +19 -22
- package/coverage/src/concepts/ConfigProperty__.ts.html +40 -97
- package/coverage/src/concepts/Configuration__.ts.html +21 -48
- package/coverage/src/concepts/Connection__.ts.html +22 -97
- package/coverage/src/concepts/ConnectorTrigger__.ts.html +6 -9
- package/coverage/src/concepts/Connector__.ts.html +38 -161
- package/coverage/src/concepts/Constant__.ts.html +24 -84
- package/coverage/src/concepts/DataSource__.ts.html +57 -111
- package/coverage/src/concepts/DatabaseTypeAnnotation__.ts.html +6 -9
- package/coverage/src/concepts/Destination__.ts.html +55 -97
- package/coverage/src/concepts/End__.ts.html +26 -56
- package/coverage/src/concepts/EntityIndex__.ts.html +10 -40
- package/coverage/src/concepts/EntityProperty__.ts.html +56 -164
- package/coverage/src/concepts/Entity__.ts.html +91 -169
- package/coverage/src/concepts/EnumItem__.ts.html +10 -40
- package/coverage/src/concepts/Enum__.ts.html +24 -84
- package/coverage/src/concepts/Event__.ts.html +14 -41
- package/coverage/src/concepts/ExternalDestination__.ts.html +21 -75
- package/coverage/src/concepts/ForEachStatement__.ts.html +95 -143
- package/coverage/src/concepts/FrontendLibrary__.ts.html +20 -71
- package/coverage/src/concepts/FrontendVariable__.ts.html +1 -1
- package/coverage/src/concepts/Frontend__.ts.html +57 -213
- package/coverage/src/concepts/Function__.ts.html +86 -239
- package/coverage/src/concepts/Identifier__.ts.html +73 -103
- package/coverage/src/concepts/IfStatement__.ts.html +75 -138
- package/coverage/src/concepts/Integration__.ts.html +19 -70
- package/coverage/src/concepts/InterfaceParam__.ts.html +21 -78
- package/coverage/src/concepts/Interface__.ts.html +60 -162
- package/coverage/src/concepts/JSBlock__.ts.html +9 -39
- package/coverage/src/concepts/JavaLogic__.ts.html +9 -42
- package/coverage/src/concepts/LogicItem__.ts.html +26 -56
- package/coverage/src/concepts/Logic__.ts.html +322 -409
- package/coverage/src/concepts/MatchCase__.ts.html +97 -181
- package/coverage/src/concepts/Match__.ts.html +63 -135
- package/coverage/src/concepts/MemberExpression__.ts.html +128 -185
- package/coverage/src/concepts/MicroApp__.ts.html +6 -9
- package/coverage/src/concepts/Module__.ts.html +36 -690
- package/coverage/src/concepts/MsgTriggerEvent__.ts.html +14 -41
- package/coverage/src/concepts/MsgTriggerLauncher__.ts.html +14 -41
- package/coverage/src/concepts/Namespace__.ts.html +92 -359
- package/coverage/src/concepts/NewComposite__.ts.html +146 -326
- package/coverage/src/concepts/NewList__.ts.html +57 -195
- package/coverage/src/concepts/NewMap__.ts.html +63 -168
- package/coverage/src/concepts/New__.ts.html +9 -39
- package/coverage/src/concepts/NullLiteral__.ts.html +9 -36
- package/coverage/src/concepts/NumericLiteral__.ts.html +32 -86
- package/coverage/src/concepts/OqlQueryComponent__.ts.html +35 -161
- package/coverage/src/concepts/OverriddenLogic__.ts.html +201 -324
- package/coverage/src/concepts/Param__.ts.html +80 -155
- package/coverage/src/concepts/Point__.ts.html +6 -9
- package/coverage/src/concepts/ProcessComponent__.ts.html +21 -72
- package/coverage/src/concepts/ProcessElement__.ts.html +116 -524
- package/coverage/src/concepts/ProcessOutcome__.ts.html +13 -85
- package/coverage/src/concepts/ProcessOutcomes__.ts.html +13 -85
- package/coverage/src/concepts/Process__.ts.html +70 -217
- package/coverage/src/concepts/QueryAggregateExpression__.ts.html +16 -67
- package/coverage/src/concepts/QueryFieldExpression__.ts.html +11 -41
- package/coverage/src/concepts/QueryFromExpression__.ts.html +21 -81
- package/coverage/src/concepts/QueryGroupByExpression__.ts.html +19 -70
- package/coverage/src/concepts/QueryJoinExpression__.ts.html +25 -85
- package/coverage/src/concepts/QueryLimitExpression__.ts.html +20 -77
- package/coverage/src/concepts/QueryOrderByExpression__.ts.html +20 -80
- package/coverage/src/concepts/QuerySelectExpression__.ts.html +15 -42
- package/coverage/src/concepts/Rect__.ts.html +6 -9
- package/coverage/src/concepts/Return__.ts.html +50 -131
- package/coverage/src/concepts/Role__.ts.html +15 -45
- package/coverage/src/concepts/SelectMembers__.ts.html +24 -81
- package/coverage/src/concepts/Slot__.ts.html +13 -40
- package/coverage/src/concepts/SqlQueryComponent__.ts.html +24 -84
- package/coverage/src/concepts/Start__.ts.html +14 -41
- package/coverage/src/concepts/StringInterpolation__.ts.html +46 -127
- package/coverage/src/concepts/StringLiteral__.ts.html +32 -62
- package/coverage/src/concepts/StructureProperty__.ts.html +29 -86
- package/coverage/src/concepts/Structure__.ts.html +38 -122
- package/coverage/src/concepts/SwitchCase__.ts.html +36 -87
- package/coverage/src/concepts/SwitchStatement__.ts.html +33 -90
- package/coverage/src/concepts/Theme__.ts.html +12 -15
- package/coverage/src/concepts/Transactional__.ts.html +6 -9
- package/coverage/src/concepts/TriggerEvent__.ts.html +14 -41
- package/coverage/src/concepts/TriggerLauncher__.ts.html +13 -46
- package/coverage/src/concepts/TypeAnnotation__.ts.html +117 -348
- package/coverage/src/concepts/TypeParam__.ts.html +12 -42
- package/coverage/src/concepts/UnaryExpression__.ts.html +27 -105
- package/coverage/src/concepts/Unparsed__.ts.html +12 -36
- package/coverage/src/concepts/UseComponent__.ts.html +6 -9
- package/coverage/src/concepts/ValidationRule__.ts.html +48 -87
- package/coverage/src/concepts/Variable__.ts.html +46 -127
- package/coverage/src/concepts/ViewBlock__.ts.html +6 -9
- package/coverage/src/concepts/ViewComponent__.ts.html +24 -99
- package/coverage/src/concepts/ViewElement__.ts.html +288 -498
- package/coverage/src/concepts/View__.ts.html +170 -482
- package/coverage/src/concepts/WhileStatement__.ts.html +55 -118
- package/coverage/src/concepts/basics/stdlib/index.html +1 -1
- package/coverage/src/concepts/basics/stdlib/index.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.auth.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.browser.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.collection.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.configuration.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.core.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.event.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.http.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.interface.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.io.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.logging.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.process.ts.html +2 -2
- package/coverage/src/concepts/basics/stdlib/nasl.ui.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.util.ts.html +3 -3
- package/coverage/src/concepts/basics/stdlib/nasl.validation.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/reference2TypeAnnotationList.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/timeZone.ts.html +1 -1
- package/coverage/src/concepts/basics/types/coreTypeList.ts.html +1 -1
- package/coverage/src/concepts/basics/types/index.html +1 -1
- package/coverage/src/concepts/basics/types/index.ts.html +1 -1
- package/coverage/src/concepts/index.html +964 -1024
- package/coverage/src/concepts/index.ts.html +1 -1
- package/coverage/src/concepts/index__.ts.html +4 -16
- package/coverage/src/config.ts.html +1 -1
- package/coverage/src/decorators/index.html +5 -5
- package/coverage/src/decorators/index.ts.html +32 -32
- package/coverage/src/decorators/promise.ts.html +10 -10
- package/coverage/src/eventBus.ts.html +1 -1
- package/coverage/src/generator/compileComponent.ts.html +1 -1
- package/coverage/src/generator/genBundleFiles.ts.html +23 -17
- package/coverage/src/generator/genHash.ts.html +1 -1
- package/coverage/src/generator/genMetaData.ts.html +16 -103
- package/coverage/src/generator/genReleaseBody.ts.html +43 -43
- package/coverage/src/generator/icestark.ts.html +4 -10
- package/coverage/src/generator/index.html +21 -21
- package/coverage/src/generator/index.ts.html +1 -1
- package/coverage/src/generator/microApp.ts.html +1 -1
- package/coverage/src/generator/permission.ts.html +20 -92
- package/coverage/src/generator/qiankun.ts.html +3 -9
- package/coverage/src/generator/styleReplacer.ts.html +1 -1
- package/coverage/src/index.html +7 -7
- package/coverage/src/index.ts.html +4 -4
- package/coverage/src/manager/diagnostic.ts.html +14 -11
- package/coverage/src/manager/index.html +13 -13
- package/coverage/src/manager/stepRecorder.ts.html +1 -1
- package/coverage/src/natural/genNaturalTS.ts.html +1 -1
- package/coverage/src/natural/index.html +15 -15
- package/coverage/src/natural/index.ts.html +1 -1
- package/coverage/src/natural/naslStdlibMap.ts.html +1 -1
- package/coverage/src/natural/transformTSCode.ts.html +18 -78
- package/coverage/src/sentry/index.html +14 -14
- package/coverage/src/sentry/index.ts.html +32 -38
- package/coverage/src/server/createUiTs.ts.html +6 -15
- package/coverage/src/server/entity2LogicNamespace.ts.html +9 -9
- package/coverage/src/server/event.js.html +1 -1
- package/coverage/src/server/extendBaseNode.ts.html +43 -73
- package/coverage/src/server/formatTsUtils.ts.html +28 -31
- 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 +8 -20
- package/coverage/src/server/getMemberIdentifier.ts.html +120 -231
- package/coverage/src/server/getProcessComponents.ts.html +1 -1
- package/coverage/src/server/getProcesses.ts.html +13 -163
- package/coverage/src/server/getValidates.ts.html +1 -1
- package/coverage/src/server/index.html +63 -63
- package/coverage/src/server/index.ts.html +3 -6
- package/coverage/src/server/naslServer.ts.html +949 -1207
- 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 +14 -59
- package/coverage/src/service/creator/add.configs.js.html +9 -27
- package/coverage/src/service/creator/errHandles.js.html +37 -28
- package/coverage/src/service/creator/index.html +23 -23
- package/coverage/src/service/creator/index.js.html +1 -1
- package/coverage/src/service/datasource/api.js.html +1 -1
- package/coverage/src/service/datasource/index.html +1 -1
- package/coverage/src/service/datasource/index.js.html +1 -1
- package/coverage/src/service/logic/api.js.html +1 -1
- package/coverage/src/service/logic/index.html +1 -1
- package/coverage/src/service/logic/index.js.html +1 -1
- package/coverage/src/service/storage/api.js.html +1 -1
- package/coverage/src/service/storage/index.html +29 -29
- package/coverage/src/service/storage/index.ts.html +1 -1
- package/coverage/src/service/storage/init.ts.html +600 -1533
- package/coverage/src/service/storage/jsoner.ts.html +13 -76
- package/coverage/src/service/storage/map.ts.html +3 -3
- package/coverage/src/service/storage/service.ts.html +1 -1
- package/coverage/src/service/storage/storagePoint.ts.html +1 -1
- package/coverage/src/templator/genCallComponentLogic.ts.html +1 -1
- package/coverage/src/templator/genCreateBlock.ts.html +58 -37
- package/coverage/src/templator/genCurdEditMultipleKeyBlock.ts.html +19 -19
- package/coverage/src/templator/genCurdMultipleKeyBlock.ts.html +89 -71
- package/coverage/src/templator/genEditTableBlock.ts.html +13 -76
- 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 +32 -35
- package/coverage/src/templator/index.html +38 -38
- package/coverage/src/templator/index.ts.html +1 -1
- package/coverage/src/templator/utils.ts.html +11 -74
- package/coverage/src/translator/constant.ts.html +1 -1
- package/coverage/src/translator/index.html +21 -21
- package/coverage/src/translator/index.ts.html +1 -1
- package/coverage/src/translator/utils.ts.html +68 -389
- package/coverage/src/utils/cookie.ts.html +4 -4
- package/coverage/src/utils/env.ts.html +1 -1
- package/coverage/src/utils/index.html +49 -34
- package/coverage/src/utils/index.ts.html +22 -115
- package/coverage/src/utils/logger.ts.html +1 -1
- package/coverage/src/utils/sortTsString.ts.html +10 -25
- package/coverage/src/utils/string.ts.html +8 -110
- package/coverage/src/utils/time-slicing.ts.html +1 -1
- package/coverage/src/utils/traverse.ts.html +1 -1
- package/coverage/src/utils/window.ts.html +1 -1
- package/out/automate/engine/utils.d.ts +1 -1
- package/out/automate/engine/utils.js +1 -5
- package/out/automate/engine/utils.js.map +1 -1
- package/out/common/BaseNode.d.ts +2 -0
- package/out/common/BaseNode.js +24 -1
- package/out/common/BaseNode.js.map +1 -1
- package/out/concepts/BindAttribute__.js +3 -0
- package/out/concepts/BindAttribute__.js.map +1 -1
- package/out/concepts/CallLogic__.js +18 -22
- package/out/concepts/CallLogic__.js.map +1 -1
- package/out/concepts/Destination__.d.ts +1 -1
- package/out/concepts/Destination__.js +2 -2
- package/out/concepts/Destination__.js.map +1 -1
- package/out/concepts/Logic__.js +22 -5
- package/out/concepts/Logic__.js.map +1 -1
- package/out/concepts/ProcessElement__.js +9 -1
- package/out/concepts/ProcessElement__.js.map +1 -1
- package/out/concepts/ViewElement__.d.ts +1 -0
- package/out/concepts/ViewElement__.js +8 -1
- package/out/concepts/ViewElement__.js.map +1 -1
- package/out/concepts/View__.js +1 -1
- package/out/concepts/View__.js.map +1 -1
- package/out/generator/genBundleFiles.d.ts +1 -0
- package/out/generator/genBundleFiles.js +4 -1
- package/out/generator/genBundleFiles.js.map +1 -1
- package/out/server/getProcesses.js +3 -3
- package/out/server/getProcesses.js.map +1 -1
- package/out/server/naslServer.js +9 -2
- package/out/server/naslServer.js.map +1 -1
- package/out/utils/i18nInfo.js +7 -2
- package/out/utils/i18nInfo.js.map +1 -1
- package/package.json +1 -1
- package/src/automate/engine/utils.js +1 -5
- package/src/common/BaseNode.ts +23 -2
- package/src/concepts/BindAttribute__.ts +2 -0
- package/src/concepts/CallLogic__.ts +21 -22
- package/src/concepts/Destination__.ts +2 -2
- package/src/concepts/Logic__.ts +36 -22
- package/src/concepts/ProcessElement__.ts +8 -1
- package/src/concepts/ViewElement__.ts +11 -2
- package/src/concepts/View__.ts +1 -1
- package/src/generator/genBundleFiles.ts +8 -3
- package/src/server/getProcesses.ts +3 -3
- package/src/server/naslServer.ts +9 -2
- package/src/utils/i18nInfo.ts +7 -2
- package/.nyc_output/processinfo/559608df-ab15-4969-acf0-5239dacd6111.json +0 -1
- package/coverage/src/common/utils.ts.html +0 -136
- package/coverage/src/concepts/AbstractInterface__.ts.html +0 -280
- package/coverage/src/concepts/Block__.ts.html +0 -910
- package/coverage/src/concepts/CountersignPolicy__.ts.html +0 -316
- package/coverage/src/concepts/DefaultValue__.ts.html +0 -1000
- package/coverage/src/concepts/I18nInfo__.ts.html +0 -436
- package/coverage/src/concepts/ImportedInterface__.ts.html +0 -268
- package/coverage/src/concepts/MetadataType__.ts.html +0 -2053
- package/coverage/src/concepts/MultiApprovalPolicy__.ts.html +0 -292
- package/coverage/src/concepts/SequentialPolicy__.ts.html +0 -259
- package/coverage/src/concepts/StaticString__.ts.html +0 -403
- package/coverage/src/concepts/basics/constants.ts.html +0 -88
- package/coverage/src/concepts/basics/index.html +0 -116
- package/coverage/src/concepts/utils/asserts.ts.html +0 -27967
- package/coverage/src/concepts/utils/index.html +0 -116
- package/coverage/src/utils/i18nInfo.ts.html +0 -166
- package/coverage/src/utils/time-slicing/constant.ts.html +0 -196
- package/coverage/src/utils/time-slicing/controller.ts.html +0 -1144
- package/coverage/src/utils/time-slicing/index.html +0 -236
- package/coverage/src/utils/time-slicing/index.ts.html +0 -103
- package/coverage/src/utils/time-slicing/page-state.ts.html +0 -121
- package/coverage/src/utils/time-slicing/performance.ts.html +0 -253
- package/coverage/src/utils/time-slicing/runner.ts.html +0 -241
- package/coverage/src/utils/time-slicing/tool.ts.html +0 -220
- package/coverage/src/utils/time-slicing/utils.ts.html +0 -355
- package/coverage/src/utils/time-slicing/wrapper.ts.html +0 -259
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">1.
|
|
26
|
+
<span class="strong">1.72% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>38/
|
|
28
|
+
<span class='fraction'>38/2199</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
33
|
<span class="strong">0% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/
|
|
35
|
+
<span class='fraction'>0/1682</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">0% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>0/
|
|
42
|
+
<span class='fraction'>0/259</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">1.
|
|
47
|
+
<span class="strong">1.76% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>37/
|
|
49
|
+
<span class='fraction'>37/2102</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -4835,93 +4835,7 @@
|
|
|
4835
4835
|
<a name='L4770'></a><a href='#L4770'>4770</a>
|
|
4836
4836
|
<a name='L4771'></a><a href='#L4771'>4771</a>
|
|
4837
4837
|
<a name='L4772'></a><a href='#L4772'>4772</a>
|
|
4838
|
-
<a name='L4773'></a><a href='#L4773'>4773</a>
|
|
4839
|
-
<a name='L4774'></a><a href='#L4774'>4774</a>
|
|
4840
|
-
<a name='L4775'></a><a href='#L4775'>4775</a>
|
|
4841
|
-
<a name='L4776'></a><a href='#L4776'>4776</a>
|
|
4842
|
-
<a name='L4777'></a><a href='#L4777'>4777</a>
|
|
4843
|
-
<a name='L4778'></a><a href='#L4778'>4778</a>
|
|
4844
|
-
<a name='L4779'></a><a href='#L4779'>4779</a>
|
|
4845
|
-
<a name='L4780'></a><a href='#L4780'>4780</a>
|
|
4846
|
-
<a name='L4781'></a><a href='#L4781'>4781</a>
|
|
4847
|
-
<a name='L4782'></a><a href='#L4782'>4782</a>
|
|
4848
|
-
<a name='L4783'></a><a href='#L4783'>4783</a>
|
|
4849
|
-
<a name='L4784'></a><a href='#L4784'>4784</a>
|
|
4850
|
-
<a name='L4785'></a><a href='#L4785'>4785</a>
|
|
4851
|
-
<a name='L4786'></a><a href='#L4786'>4786</a>
|
|
4852
|
-
<a name='L4787'></a><a href='#L4787'>4787</a>
|
|
4853
|
-
<a name='L4788'></a><a href='#L4788'>4788</a>
|
|
4854
|
-
<a name='L4789'></a><a href='#L4789'>4789</a>
|
|
4855
|
-
<a name='L4790'></a><a href='#L4790'>4790</a>
|
|
4856
|
-
<a name='L4791'></a><a href='#L4791'>4791</a>
|
|
4857
|
-
<a name='L4792'></a><a href='#L4792'>4792</a>
|
|
4858
|
-
<a name='L4793'></a><a href='#L4793'>4793</a>
|
|
4859
|
-
<a name='L4794'></a><a href='#L4794'>4794</a>
|
|
4860
|
-
<a name='L4795'></a><a href='#L4795'>4795</a>
|
|
4861
|
-
<a name='L4796'></a><a href='#L4796'>4796</a>
|
|
4862
|
-
<a name='L4797'></a><a href='#L4797'>4797</a>
|
|
4863
|
-
<a name='L4798'></a><a href='#L4798'>4798</a>
|
|
4864
|
-
<a name='L4799'></a><a href='#L4799'>4799</a>
|
|
4865
|
-
<a name='L4800'></a><a href='#L4800'>4800</a>
|
|
4866
|
-
<a name='L4801'></a><a href='#L4801'>4801</a>
|
|
4867
|
-
<a name='L4802'></a><a href='#L4802'>4802</a>
|
|
4868
|
-
<a name='L4803'></a><a href='#L4803'>4803</a>
|
|
4869
|
-
<a name='L4804'></a><a href='#L4804'>4804</a>
|
|
4870
|
-
<a name='L4805'></a><a href='#L4805'>4805</a>
|
|
4871
|
-
<a name='L4806'></a><a href='#L4806'>4806</a>
|
|
4872
|
-
<a name='L4807'></a><a href='#L4807'>4807</a>
|
|
4873
|
-
<a name='L4808'></a><a href='#L4808'>4808</a>
|
|
4874
|
-
<a name='L4809'></a><a href='#L4809'>4809</a>
|
|
4875
|
-
<a name='L4810'></a><a href='#L4810'>4810</a>
|
|
4876
|
-
<a name='L4811'></a><a href='#L4811'>4811</a>
|
|
4877
|
-
<a name='L4812'></a><a href='#L4812'>4812</a>
|
|
4878
|
-
<a name='L4813'></a><a href='#L4813'>4813</a>
|
|
4879
|
-
<a name='L4814'></a><a href='#L4814'>4814</a>
|
|
4880
|
-
<a name='L4815'></a><a href='#L4815'>4815</a>
|
|
4881
|
-
<a name='L4816'></a><a href='#L4816'>4816</a>
|
|
4882
|
-
<a name='L4817'></a><a href='#L4817'>4817</a>
|
|
4883
|
-
<a name='L4818'></a><a href='#L4818'>4818</a>
|
|
4884
|
-
<a name='L4819'></a><a href='#L4819'>4819</a>
|
|
4885
|
-
<a name='L4820'></a><a href='#L4820'>4820</a>
|
|
4886
|
-
<a name='L4821'></a><a href='#L4821'>4821</a>
|
|
4887
|
-
<a name='L4822'></a><a href='#L4822'>4822</a>
|
|
4888
|
-
<a name='L4823'></a><a href='#L4823'>4823</a>
|
|
4889
|
-
<a name='L4824'></a><a href='#L4824'>4824</a>
|
|
4890
|
-
<a name='L4825'></a><a href='#L4825'>4825</a>
|
|
4891
|
-
<a name='L4826'></a><a href='#L4826'>4826</a>
|
|
4892
|
-
<a name='L4827'></a><a href='#L4827'>4827</a>
|
|
4893
|
-
<a name='L4828'></a><a href='#L4828'>4828</a>
|
|
4894
|
-
<a name='L4829'></a><a href='#L4829'>4829</a>
|
|
4895
|
-
<a name='L4830'></a><a href='#L4830'>4830</a>
|
|
4896
|
-
<a name='L4831'></a><a href='#L4831'>4831</a>
|
|
4897
|
-
<a name='L4832'></a><a href='#L4832'>4832</a>
|
|
4898
|
-
<a name='L4833'></a><a href='#L4833'>4833</a>
|
|
4899
|
-
<a name='L4834'></a><a href='#L4834'>4834</a>
|
|
4900
|
-
<a name='L4835'></a><a href='#L4835'>4835</a>
|
|
4901
|
-
<a name='L4836'></a><a href='#L4836'>4836</a>
|
|
4902
|
-
<a name='L4837'></a><a href='#L4837'>4837</a>
|
|
4903
|
-
<a name='L4838'></a><a href='#L4838'>4838</a>
|
|
4904
|
-
<a name='L4839'></a><a href='#L4839'>4839</a>
|
|
4905
|
-
<a name='L4840'></a><a href='#L4840'>4840</a>
|
|
4906
|
-
<a name='L4841'></a><a href='#L4841'>4841</a>
|
|
4907
|
-
<a name='L4842'></a><a href='#L4842'>4842</a>
|
|
4908
|
-
<a name='L4843'></a><a href='#L4843'>4843</a>
|
|
4909
|
-
<a name='L4844'></a><a href='#L4844'>4844</a>
|
|
4910
|
-
<a name='L4845'></a><a href='#L4845'>4845</a>
|
|
4911
|
-
<a name='L4846'></a><a href='#L4846'>4846</a>
|
|
4912
|
-
<a name='L4847'></a><a href='#L4847'>4847</a>
|
|
4913
|
-
<a name='L4848'></a><a href='#L4848'>4848</a>
|
|
4914
|
-
<a name='L4849'></a><a href='#L4849'>4849</a>
|
|
4915
|
-
<a name='L4850'></a><a href='#L4850'>4850</a>
|
|
4916
|
-
<a name='L4851'></a><a href='#L4851'>4851</a>
|
|
4917
|
-
<a name='L4852'></a><a href='#L4852'>4852</a>
|
|
4918
|
-
<a name='L4853'></a><a href='#L4853'>4853</a>
|
|
4919
|
-
<a name='L4854'></a><a href='#L4854'>4854</a>
|
|
4920
|
-
<a name='L4855'></a><a href='#L4855'>4855</a>
|
|
4921
|
-
<a name='L4856'></a><a href='#L4856'>4856</a>
|
|
4922
|
-
<a name='L4857'></a><a href='#L4857'>4857</a>
|
|
4923
|
-
<a name='L4858'></a><a href='#L4858'>4858</a>
|
|
4924
|
-
<a name='L4859'></a><a href='#L4859'>4859</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
4838
|
+
<a name='L4773'></a><a href='#L4773'>4773</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
4925
4839
|
<span class="cline-any cline-yes">1x</span>
|
|
4926
4840
|
<span class="cline-any cline-yes">1x</span>
|
|
4927
4841
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -5009,7 +4923,6 @@
|
|
|
5009
4923
|
<span class="cline-any cline-neutral"> </span>
|
|
5010
4924
|
<span class="cline-any cline-neutral"> </span>
|
|
5011
4925
|
<span class="cline-any cline-neutral"> </span>
|
|
5012
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5013
4926
|
<span class="cline-any cline-yes">1x</span>
|
|
5014
4927
|
<span class="cline-any cline-yes">1x</span>
|
|
5015
4928
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -5025,6 +4938,7 @@
|
|
|
5025
4938
|
<span class="cline-any cline-neutral"> </span>
|
|
5026
4939
|
<span class="cline-any cline-yes">1x</span>
|
|
5027
4940
|
<span class="cline-any cline-yes">1x</span>
|
|
4941
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5028
4942
|
<span class="cline-any cline-yes">1x</span>
|
|
5029
4943
|
<span class="cline-any cline-neutral"> </span>
|
|
5030
4944
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -5062,6 +4976,9 @@
|
|
|
5062
4976
|
<span class="cline-any cline-neutral"> </span>
|
|
5063
4977
|
<span class="cline-any cline-neutral"> </span>
|
|
5064
4978
|
<span class="cline-any cline-neutral"> </span>
|
|
4979
|
+
<span class="cline-any cline-neutral"> </span>
|
|
4980
|
+
<span class="cline-any cline-neutral"> </span>
|
|
4981
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5065
4982
|
<span class="cline-any cline-yes">1x</span>
|
|
5066
4983
|
<span class="cline-any cline-neutral"> </span>
|
|
5067
4984
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -5106,27 +5023,6 @@
|
|
|
5106
5023
|
<span class="cline-any cline-neutral"> </span>
|
|
5107
5024
|
<span class="cline-any cline-neutral"> </span>
|
|
5108
5025
|
<span class="cline-any cline-neutral"> </span>
|
|
5109
|
-
<span class="cline-any cline-no"> </span>
|
|
5110
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5111
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5112
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5113
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5114
|
-
<span class="cline-any cline-no"> </span>
|
|
5115
|
-
<span class="cline-any cline-no"> </span>
|
|
5116
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5117
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5118
|
-
<span class="cline-any cline-yes">1x</span>
|
|
5119
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5120
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5121
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5122
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5123
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5124
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5125
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5126
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5127
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5128
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5129
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5130
5026
|
<span class="cline-any cline-yes">1x</span>
|
|
5131
5027
|
<span class="cline-any cline-neutral"> </span>
|
|
5132
5028
|
<span class="cline-any cline-no"> </span>
|
|
@@ -5296,10 +5192,10 @@
|
|
|
5296
5192
|
<span class="cline-any cline-neutral"> </span>
|
|
5297
5193
|
<span class="cline-any cline-neutral"> </span>
|
|
5298
5194
|
<span class="cline-any cline-neutral"> </span>
|
|
5195
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5299
5196
|
<span class="cline-any cline-no"> </span>
|
|
5300
5197
|
<span class="cline-any cline-no"> </span>
|
|
5301
5198
|
<span class="cline-any cline-neutral"> </span>
|
|
5302
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5303
5199
|
<span class="cline-any cline-no"> </span>
|
|
5304
5200
|
<span class="cline-any cline-no"> </span>
|
|
5305
5201
|
<span class="cline-any cline-no"> </span>
|
|
@@ -5307,11 +5203,21 @@
|
|
|
5307
5203
|
<span class="cline-any cline-neutral"> </span>
|
|
5308
5204
|
<span class="cline-any cline-no"> </span>
|
|
5309
5205
|
<span class="cline-any cline-no"> </span>
|
|
5310
|
-
<span class="cline-any cline-no"> </span>
|
|
5311
5206
|
<span class="cline-any cline-neutral"> </span>
|
|
5312
5207
|
<span class="cline-any cline-neutral"> </span>
|
|
5313
5208
|
<span class="cline-any cline-no"> </span>
|
|
5209
|
+
<span class="cline-any cline-no"> </span>
|
|
5210
|
+
<span class="cline-any cline-no"> </span>
|
|
5211
|
+
<span class="cline-any cline-no"> </span>
|
|
5212
|
+
<span class="cline-any cline-no"> </span>
|
|
5213
|
+
<span class="cline-any cline-no"> </span>
|
|
5214
|
+
<span class="cline-any cline-no"> </span>
|
|
5215
|
+
<span class="cline-any cline-no"> </span>
|
|
5216
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5217
|
+
<span class="cline-any cline-no"> </span>
|
|
5314
5218
|
<span class="cline-any cline-neutral"> </span>
|
|
5219
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5220
|
+
<span class="cline-any cline-no"> </span>
|
|
5315
5221
|
<span class="cline-any cline-no"> </span>
|
|
5316
5222
|
<span class="cline-any cline-no"> </span>
|
|
5317
5223
|
<span class="cline-any cline-no"> </span>
|
|
@@ -5319,26 +5225,40 @@
|
|
|
5319
5225
|
<span class="cline-any cline-no"> </span>
|
|
5320
5226
|
<span class="cline-any cline-no"> </span>
|
|
5321
5227
|
<span class="cline-any cline-neutral"> </span>
|
|
5228
|
+
<span class="cline-any cline-no"> </span>
|
|
5322
5229
|
<span class="cline-any cline-neutral"> </span>
|
|
5323
5230
|
<span class="cline-any cline-neutral"> </span>
|
|
5324
5231
|
<span class="cline-any cline-no"> </span>
|
|
5325
5232
|
<span class="cline-any cline-no"> </span>
|
|
5326
5233
|
<span class="cline-any cline-no"> </span>
|
|
5234
|
+
<span class="cline-any cline-no"> </span>
|
|
5327
5235
|
<span class="cline-any cline-neutral"> </span>
|
|
5236
|
+
<span class="cline-any cline-no"> </span>
|
|
5237
|
+
<span class="cline-any cline-no"> </span>
|
|
5238
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5239
|
+
<span class="cline-any cline-no"> </span>
|
|
5328
5240
|
<span class="cline-any cline-neutral"> </span>
|
|
5329
5241
|
<span class="cline-any cline-no"> </span>
|
|
5330
5242
|
<span class="cline-any cline-no"> </span>
|
|
5243
|
+
<span class="cline-any cline-no"> </span>
|
|
5244
|
+
<span class="cline-any cline-no"> </span>
|
|
5331
5245
|
<span class="cline-any cline-neutral"> </span>
|
|
5332
5246
|
<span class="cline-any cline-no"> </span>
|
|
5333
5247
|
<span class="cline-any cline-no"> </span>
|
|
5248
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5334
5249
|
<span class="cline-any cline-no"> </span>
|
|
5335
5250
|
<span class="cline-any cline-neutral"> </span>
|
|
5336
5251
|
<span class="cline-any cline-neutral"> </span>
|
|
5337
5252
|
<span class="cline-any cline-no"> </span>
|
|
5338
5253
|
<span class="cline-any cline-no"> </span>
|
|
5339
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5340
5254
|
<span class="cline-any cline-no"> </span>
|
|
5341
5255
|
<span class="cline-any cline-no"> </span>
|
|
5256
|
+
<span class="cline-any cline-no"> </span>
|
|
5257
|
+
<span class="cline-any cline-no"> </span>
|
|
5258
|
+
<span class="cline-any cline-no"> </span>
|
|
5259
|
+
<span class="cline-any cline-no"> </span>
|
|
5260
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5261
|
+
<span class="cline-any cline-no"> </span>
|
|
5342
5262
|
<span class="cline-any cline-neutral"> </span>
|
|
5343
5263
|
<span class="cline-any cline-neutral"> </span>
|
|
5344
5264
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -5347,52 +5267,99 @@
|
|
|
5347
5267
|
<span class="cline-any cline-no"> </span>
|
|
5348
5268
|
<span class="cline-any cline-no"> </span>
|
|
5349
5269
|
<span class="cline-any cline-neutral"> </span>
|
|
5270
|
+
<span class="cline-any cline-no"> </span>
|
|
5350
5271
|
<span class="cline-any cline-neutral"> </span>
|
|
5351
5272
|
<span class="cline-any cline-neutral"> </span>
|
|
5273
|
+
<span class="cline-any cline-no"> </span>
|
|
5274
|
+
<span class="cline-any cline-no"> </span>
|
|
5275
|
+
<span class="cline-any cline-no"> </span>
|
|
5276
|
+
<span class="cline-any cline-no"> </span>
|
|
5277
|
+
<span class="cline-any cline-no"> </span>
|
|
5352
5278
|
<span class="cline-any cline-neutral"> </span>
|
|
5279
|
+
<span class="cline-any cline-no"> </span>
|
|
5280
|
+
<span class="cline-any cline-no"> </span>
|
|
5353
5281
|
<span class="cline-any cline-neutral"> </span>
|
|
5354
5282
|
<span class="cline-any cline-neutral"> </span>
|
|
5283
|
+
<span class="cline-any cline-no"> </span>
|
|
5355
5284
|
<span class="cline-any cline-neutral"> </span>
|
|
5356
5285
|
<span class="cline-any cline-neutral"> </span>
|
|
5357
5286
|
<span class="cline-any cline-neutral"> </span>
|
|
5358
5287
|
<span class="cline-any cline-neutral"> </span>
|
|
5288
|
+
<span class="cline-any cline-no"> </span>
|
|
5359
5289
|
<span class="cline-any cline-neutral"> </span>
|
|
5290
|
+
<span class="cline-any cline-no"> </span>
|
|
5291
|
+
<span class="cline-any cline-no"> </span>
|
|
5292
|
+
<span class="cline-any cline-no"> </span>
|
|
5360
5293
|
<span class="cline-any cline-neutral"> </span>
|
|
5294
|
+
<span class="cline-any cline-no"> </span>
|
|
5295
|
+
<span class="cline-any cline-no"> </span>
|
|
5361
5296
|
<span class="cline-any cline-neutral"> </span>
|
|
5297
|
+
<span class="cline-any cline-no"> </span>
|
|
5298
|
+
<span class="cline-any cline-no"> </span>
|
|
5299
|
+
<span class="cline-any cline-no"> </span>
|
|
5300
|
+
<span class="cline-any cline-no"> </span>
|
|
5362
5301
|
<span class="cline-any cline-neutral"> </span>
|
|
5302
|
+
<span class="cline-any cline-no"> </span>
|
|
5303
|
+
<span class="cline-any cline-no"> </span>
|
|
5363
5304
|
<span class="cline-any cline-neutral"> </span>
|
|
5364
5305
|
<span class="cline-any cline-neutral"> </span>
|
|
5365
5306
|
<span class="cline-any cline-neutral"> </span>
|
|
5366
5307
|
<span class="cline-any cline-neutral"> </span>
|
|
5367
|
-
<span class="cline-any cline-
|
|
5308
|
+
<span class="cline-any cline-no"> </span>
|
|
5309
|
+
<span class="cline-any cline-no"> </span>
|
|
5310
|
+
<span class="cline-any cline-no"> </span>
|
|
5368
5311
|
<span class="cline-any cline-no"> </span>
|
|
5369
5312
|
<span class="cline-any cline-neutral"> </span>
|
|
5313
|
+
<span class="cline-any cline-no"> </span>
|
|
5314
|
+
<span class="cline-any cline-no"> </span>
|
|
5370
5315
|
<span class="cline-any cline-neutral"> </span>
|
|
5371
5316
|
<span class="cline-any cline-neutral"> </span>
|
|
5372
5317
|
<span class="cline-any cline-no"> </span>
|
|
5318
|
+
<span class="cline-any cline-no"> </span>
|
|
5319
|
+
<span class="cline-any cline-no"> </span>
|
|
5320
|
+
<span class="cline-any cline-no"> </span>
|
|
5373
5321
|
<span class="cline-any cline-neutral"> </span>
|
|
5374
5322
|
<span class="cline-any cline-no"> </span>
|
|
5375
5323
|
<span class="cline-any cline-no"> </span>
|
|
5376
5324
|
<span class="cline-any cline-neutral"> </span>
|
|
5325
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5377
5326
|
<span class="cline-any cline-no"> </span>
|
|
5378
5327
|
<span class="cline-any cline-no"> </span>
|
|
5379
5328
|
<span class="cline-any cline-no"> </span>
|
|
5380
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5381
5329
|
<span class="cline-any cline-no"> </span>
|
|
5382
5330
|
<span class="cline-any cline-no"> </span>
|
|
5383
5331
|
<span class="cline-any cline-no"> </span>
|
|
5384
5332
|
<span class="cline-any cline-no"> </span>
|
|
5385
5333
|
<span class="cline-any cline-neutral"> </span>
|
|
5334
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5335
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5336
|
+
<span class="cline-any cline-no"> </span>
|
|
5386
5337
|
<span class="cline-any cline-no"> </span>
|
|
5387
5338
|
<span class="cline-any cline-no"> </span>
|
|
5339
|
+
<span class="cline-any cline-no"> </span>
|
|
5340
|
+
<span class="cline-any cline-no"> </span>
|
|
5341
|
+
<span class="cline-any cline-no"> </span>
|
|
5342
|
+
<span class="cline-any cline-no"> </span>
|
|
5343
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5388
5344
|
<span class="cline-any cline-neutral"> </span>
|
|
5389
5345
|
<span class="cline-any cline-neutral"> </span>
|
|
5390
5346
|
<span class="cline-any cline-no"> </span>
|
|
5391
5347
|
<span class="cline-any cline-no"> </span>
|
|
5348
|
+
<span class="cline-any cline-no"> </span>
|
|
5349
|
+
<span class="cline-any cline-no"> </span>
|
|
5350
|
+
<span class="cline-any cline-no"> </span>
|
|
5351
|
+
<span class="cline-any cline-no"> </span>
|
|
5352
|
+
<span class="cline-any cline-no"> </span>
|
|
5392
5353
|
<span class="cline-any cline-neutral"> </span>
|
|
5393
5354
|
<span class="cline-any cline-neutral"> </span>
|
|
5394
5355
|
<span class="cline-any cline-neutral"> </span>
|
|
5395
5356
|
<span class="cline-any cline-no"> </span>
|
|
5357
|
+
<span class="cline-any cline-no"> </span>
|
|
5358
|
+
<span class="cline-any cline-no"> </span>
|
|
5359
|
+
<span class="cline-any cline-no"> </span>
|
|
5360
|
+
<span class="cline-any cline-no"> </span>
|
|
5361
|
+
<span class="cline-any cline-no"> </span>
|
|
5362
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5396
5363
|
<span class="cline-any cline-neutral"> </span>
|
|
5397
5364
|
<span class="cline-any cline-neutral"> </span>
|
|
5398
5365
|
<span class="cline-any cline-no"> </span>
|
|
@@ -5400,7 +5367,7 @@
|
|
|
5400
5367
|
<span class="cline-any cline-no"> </span>
|
|
5401
5368
|
<span class="cline-any cline-no"> </span>
|
|
5402
5369
|
<span class="cline-any cline-no"> </span>
|
|
5403
|
-
<span class="cline-any cline-
|
|
5370
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5404
5371
|
<span class="cline-any cline-no"> </span>
|
|
5405
5372
|
<span class="cline-any cline-no"> </span>
|
|
5406
5373
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -5409,13 +5376,14 @@
|
|
|
5409
5376
|
<span class="cline-any cline-no"> </span>
|
|
5410
5377
|
<span class="cline-any cline-no"> </span>
|
|
5411
5378
|
<span class="cline-any cline-neutral"> </span>
|
|
5379
|
+
<span class="cline-any cline-no"> </span>
|
|
5380
|
+
<span class="cline-any cline-no"> </span>
|
|
5381
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5412
5382
|
<span class="cline-any cline-neutral"> </span>
|
|
5413
5383
|
<span class="cline-any cline-no"> </span>
|
|
5414
5384
|
<span class="cline-any cline-no"> </span>
|
|
5415
5385
|
<span class="cline-any cline-no"> </span>
|
|
5416
5386
|
<span class="cline-any cline-no"> </span>
|
|
5417
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5418
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5419
5387
|
<span class="cline-any cline-no"> </span>
|
|
5420
5388
|
<span class="cline-any cline-no"> </span>
|
|
5421
5389
|
<span class="cline-any cline-no"> </span>
|
|
@@ -5430,12 +5398,19 @@
|
|
|
5430
5398
|
<span class="cline-any cline-no"> </span>
|
|
5431
5399
|
<span class="cline-any cline-no"> </span>
|
|
5432
5400
|
<span class="cline-any cline-no"> </span>
|
|
5401
|
+
<span class="cline-any cline-no"> </span>
|
|
5402
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5403
|
+
<span class="cline-any cline-no"> </span>
|
|
5404
|
+
<span class="cline-any cline-no"> </span>
|
|
5433
5405
|
<span class="cline-any cline-neutral"> </span>
|
|
5434
5406
|
<span class="cline-any cline-neutral"> </span>
|
|
5435
5407
|
<span class="cline-any cline-neutral"> </span>
|
|
5436
5408
|
<span class="cline-any cline-neutral"> </span>
|
|
5437
5409
|
<span class="cline-any cline-no"> </span>
|
|
5438
5410
|
<span class="cline-any cline-no"> </span>
|
|
5411
|
+
<span class="cline-any cline-no"> </span>
|
|
5412
|
+
<span class="cline-any cline-no"> </span>
|
|
5413
|
+
<span class="cline-any cline-no"> </span>
|
|
5439
5414
|
<span class="cline-any cline-neutral"> </span>
|
|
5440
5415
|
<span class="cline-any cline-no"> </span>
|
|
5441
5416
|
<span class="cline-any cline-no"> </span>
|
|
@@ -5443,12 +5418,27 @@
|
|
|
5443
5418
|
<span class="cline-any cline-neutral"> </span>
|
|
5444
5419
|
<span class="cline-any cline-no"> </span>
|
|
5445
5420
|
<span class="cline-any cline-no"> </span>
|
|
5421
|
+
<span class="cline-any cline-no"> </span>
|
|
5422
|
+
<span class="cline-any cline-no"> </span>
|
|
5446
5423
|
<span class="cline-any cline-neutral"> </span>
|
|
5447
5424
|
<span class="cline-any cline-no"> </span>
|
|
5425
|
+
<span class="cline-any cline-no"> </span>
|
|
5426
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5448
5427
|
<span class="cline-any cline-neutral"> </span>
|
|
5449
5428
|
<span class="cline-any cline-neutral"> </span>
|
|
5429
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5430
|
+
<span class="cline-any cline-no"> </span>
|
|
5431
|
+
<span class="cline-any cline-no"> </span>
|
|
5450
5432
|
<span class="cline-any cline-no"> </span>
|
|
5451
5433
|
<span class="cline-any cline-no"> </span>
|
|
5434
|
+
<span class="cline-any cline-no"> </span>
|
|
5435
|
+
<span class="cline-any cline-no"> </span>
|
|
5436
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5437
|
+
<span class="cline-any cline-no"> </span>
|
|
5438
|
+
<span class="cline-any cline-no"> </span>
|
|
5439
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5440
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5441
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5452
5442
|
<span class="cline-any cline-neutral"> </span>
|
|
5453
5443
|
<span class="cline-any cline-neutral"> </span>
|
|
5454
5444
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -5456,39 +5446,63 @@
|
|
|
5456
5446
|
<span class="cline-any cline-neutral"> </span>
|
|
5457
5447
|
<span class="cline-any cline-no"> </span>
|
|
5458
5448
|
<span class="cline-any cline-no"> </span>
|
|
5449
|
+
<span class="cline-any cline-no"> </span>
|
|
5450
|
+
<span class="cline-any cline-no"> </span>
|
|
5451
|
+
<span class="cline-any cline-no"> </span>
|
|
5452
|
+
<span class="cline-any cline-no"> </span>
|
|
5453
|
+
<span class="cline-any cline-no"> </span>
|
|
5454
|
+
<span class="cline-any cline-no"> </span>
|
|
5455
|
+
<span class="cline-any cline-no"> </span>
|
|
5459
5456
|
<span class="cline-any cline-neutral"> </span>
|
|
5460
5457
|
<span class="cline-any cline-neutral"> </span>
|
|
5461
|
-
<span class="cline-any cline-no"> </span>
|
|
5462
5458
|
<span class="cline-any cline-neutral"> </span>
|
|
5463
5459
|
<span class="cline-any cline-neutral"> </span>
|
|
5464
5460
|
<span class="cline-any cline-neutral"> </span>
|
|
5465
5461
|
<span class="cline-any cline-neutral"> </span>
|
|
5466
5462
|
<span class="cline-any cline-neutral"> </span>
|
|
5467
5463
|
<span class="cline-any cline-no"> </span>
|
|
5468
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5469
5464
|
<span class="cline-any cline-no"> </span>
|
|
5470
5465
|
<span class="cline-any cline-no"> </span>
|
|
5471
5466
|
<span class="cline-any cline-neutral"> </span>
|
|
5472
5467
|
<span class="cline-any cline-no"> </span>
|
|
5473
5468
|
<span class="cline-any cline-neutral"> </span>
|
|
5474
5469
|
<span class="cline-any cline-no"> </span>
|
|
5470
|
+
<span class="cline-any cline-no"> </span>
|
|
5471
|
+
<span class="cline-any cline-no"> </span>
|
|
5475
5472
|
<span class="cline-any cline-neutral"> </span>
|
|
5476
5473
|
<span class="cline-any cline-no"> </span>
|
|
5477
5474
|
<span class="cline-any cline-neutral"> </span>
|
|
5478
5475
|
<span class="cline-any cline-neutral"> </span>
|
|
5476
|
+
<span class="cline-any cline-no"> </span>
|
|
5479
5477
|
<span class="cline-any cline-neutral"> </span>
|
|
5480
5478
|
<span class="cline-any cline-neutral"> </span>
|
|
5481
5479
|
<span class="cline-any cline-neutral"> </span>
|
|
5480
|
+
<span class="cline-any cline-no"> </span>
|
|
5481
|
+
<span class="cline-any cline-no"> </span>
|
|
5482
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5483
|
+
<span class="cline-any cline-no"> </span>
|
|
5484
|
+
<span class="cline-any cline-no"> </span>
|
|
5482
5485
|
<span class="cline-any cline-neutral"> </span>
|
|
5483
5486
|
<span class="cline-any cline-neutral"> </span>
|
|
5484
5487
|
<span class="cline-any cline-no"> </span>
|
|
5485
5488
|
<span class="cline-any cline-no"> </span>
|
|
5486
5489
|
<span class="cline-any cline-neutral"> </span>
|
|
5490
|
+
<span class="cline-any cline-no"> </span>
|
|
5491
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5487
5492
|
<span class="cline-any cline-neutral"> </span>
|
|
5488
5493
|
<span class="cline-any cline-neutral"> </span>
|
|
5489
5494
|
<span class="cline-any cline-neutral"> </span>
|
|
5490
5495
|
<span class="cline-any cline-no"> </span>
|
|
5491
5496
|
<span class="cline-any cline-neutral"> </span>
|
|
5497
|
+
<span class="cline-any cline-no"> </span>
|
|
5498
|
+
<span class="cline-any cline-no"> </span>
|
|
5499
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5500
|
+
<span class="cline-any cline-no"> </span>
|
|
5501
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5502
|
+
<span class="cline-any cline-no"> </span>
|
|
5503
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5504
|
+
<span class="cline-any cline-no"> </span>
|
|
5505
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5492
5506
|
<span class="cline-any cline-neutral"> </span>
|
|
5493
5507
|
<span class="cline-any cline-neutral"> </span>
|
|
5494
5508
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -5501,7 +5515,15 @@
|
|
|
5501
5515
|
<span class="cline-any cline-neutral"> </span>
|
|
5502
5516
|
<span class="cline-any cline-neutral"> </span>
|
|
5503
5517
|
<span class="cline-any cline-neutral"> </span>
|
|
5518
|
+
<span class="cline-any cline-no"> </span>
|
|
5519
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5520
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5521
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5522
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5523
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5504
5524
|
<span class="cline-any cline-neutral"> </span>
|
|
5525
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5526
|
+
<span class="cline-any cline-no"> </span>
|
|
5505
5527
|
<span class="cline-any cline-no"> </span>
|
|
5506
5528
|
<span class="cline-any cline-neutral"> </span>
|
|
5507
5529
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -5852,26 +5874,23 @@
|
|
|
5852
5874
|
<span class="cline-any cline-neutral"> </span>
|
|
5853
5875
|
<span class="cline-any cline-neutral"> </span>
|
|
5854
5876
|
<span class="cline-any cline-neutral"> </span>
|
|
5855
|
-
<span class="cline-any cline-no"> </span>
|
|
5856
|
-
<span class="cline-any cline-no"> </span>
|
|
5857
5877
|
<span class="cline-any cline-neutral"> </span>
|
|
5858
5878
|
<span class="cline-any cline-neutral"> </span>
|
|
5859
|
-
<span class="cline-any cline-no"> </span>
|
|
5860
5879
|
<span class="cline-any cline-neutral"> </span>
|
|
5861
|
-
<span class="cline-any cline-no"> </span>
|
|
5862
5880
|
<span class="cline-any cline-neutral"> </span>
|
|
5863
|
-
<span class="cline-any cline-
|
|
5881
|
+
<span class="cline-any cline-yes">1x</span>
|
|
5882
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5864
5883
|
<span class="cline-any cline-no"> </span>
|
|
5865
5884
|
<span class="cline-any cline-no"> </span>
|
|
5866
5885
|
<span class="cline-any cline-neutral"> </span>
|
|
5867
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5868
5886
|
<span class="cline-any cline-no"> </span>
|
|
5869
5887
|
<span class="cline-any cline-neutral"> </span>
|
|
5870
|
-
<span class="cline-any cline-
|
|
5888
|
+
<span class="cline-any cline-no"> </span>
|
|
5871
5889
|
<span class="cline-any cline-no"> </span>
|
|
5872
5890
|
<span class="cline-any cline-neutral"> </span>
|
|
5873
5891
|
<span class="cline-any cline-neutral"> </span>
|
|
5874
5892
|
<span class="cline-any cline-no"> </span>
|
|
5893
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5875
5894
|
<span class="cline-any cline-no"> </span>
|
|
5876
5895
|
<span class="cline-any cline-no"> </span>
|
|
5877
5896
|
<span class="cline-any cline-no"> </span>
|
|
@@ -5882,6 +5901,7 @@
|
|
|
5882
5901
|
<span class="cline-any cline-neutral"> </span>
|
|
5883
5902
|
<span class="cline-any cline-neutral"> </span>
|
|
5884
5903
|
<span class="cline-any cline-neutral"> </span>
|
|
5904
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5885
5905
|
<span class="cline-any cline-no"> </span>
|
|
5886
5906
|
<span class="cline-any cline-no"> </span>
|
|
5887
5907
|
<span class="cline-any cline-no"> </span>
|
|
@@ -5892,7 +5912,6 @@
|
|
|
5892
5912
|
<span class="cline-any cline-neutral"> </span>
|
|
5893
5913
|
<span class="cline-any cline-neutral"> </span>
|
|
5894
5914
|
<span class="cline-any cline-neutral"> </span>
|
|
5895
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5896
5915
|
<span class="cline-any cline-no"> </span>
|
|
5897
5916
|
<span class="cline-any cline-no"> </span>
|
|
5898
5917
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -5911,27 +5930,16 @@
|
|
|
5911
5930
|
<span class="cline-any cline-neutral"> </span>
|
|
5912
5931
|
<span class="cline-any cline-neutral"> </span>
|
|
5913
5932
|
<span class="cline-any cline-no"> </span>
|
|
5914
|
-
<span class="cline-any cline-no"> </span>
|
|
5915
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5916
5933
|
<span class="cline-any cline-neutral"> </span>
|
|
5917
5934
|
<span class="cline-any cline-no"> </span>
|
|
5918
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5919
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5920
5935
|
<span class="cline-any cline-no"> </span>
|
|
5921
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5922
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5923
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5924
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5925
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5926
5936
|
<span class="cline-any cline-no"> </span>
|
|
5927
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5928
5937
|
<span class="cline-any cline-no"> </span>
|
|
5929
5938
|
<span class="cline-any cline-neutral"> </span>
|
|
5930
5939
|
<span class="cline-any cline-neutral"> </span>
|
|
5931
5940
|
<span class="cline-any cline-no"> </span>
|
|
5932
5941
|
<span class="cline-any cline-neutral"> </span>
|
|
5933
5942
|
<span class="cline-any cline-neutral"> </span>
|
|
5934
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5935
5943
|
<span class="cline-any cline-no"> </span>
|
|
5936
5944
|
<span class="cline-any cline-no"> </span>
|
|
5937
5945
|
<span class="cline-any cline-no"> </span>
|
|
@@ -5973,14 +5981,12 @@
|
|
|
5973
5981
|
<span class="cline-any cline-neutral"> </span>
|
|
5974
5982
|
<span class="cline-any cline-no"> </span>
|
|
5975
5983
|
<span class="cline-any cline-neutral"> </span>
|
|
5976
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5977
5984
|
<span class="cline-any cline-no"> </span>
|
|
5978
5985
|
<span class="cline-any cline-neutral"> </span>
|
|
5979
5986
|
<span class="cline-any cline-neutral"> </span>
|
|
5980
5987
|
<span class="cline-any cline-no"> </span>
|
|
5981
5988
|
<span class="cline-any cline-neutral"> </span>
|
|
5982
5989
|
<span class="cline-any cline-neutral"> </span>
|
|
5983
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5984
5990
|
<span class="cline-any cline-no"> </span>
|
|
5985
5991
|
<span class="cline-any cline-no"> </span>
|
|
5986
5992
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -6036,7 +6042,6 @@
|
|
|
6036
6042
|
<span class="cline-any cline-neutral"> </span>
|
|
6037
6043
|
<span class="cline-any cline-no"> </span>
|
|
6038
6044
|
<span class="cline-any cline-neutral"> </span>
|
|
6039
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6040
6045
|
<span class="cline-any cline-no"> </span>
|
|
6041
6046
|
<span class="cline-any cline-neutral"> </span>
|
|
6042
6047
|
<span class="cline-any cline-no"> </span>
|
|
@@ -6044,18 +6049,6 @@
|
|
|
6044
6049
|
<span class="cline-any cline-neutral"> </span>
|
|
6045
6050
|
<span class="cline-any cline-no"> </span>
|
|
6046
6051
|
<span class="cline-any cline-neutral"> </span>
|
|
6047
|
-
<span class="cline-any cline-no"> </span>
|
|
6048
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6049
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6050
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6051
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6052
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6053
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6054
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6055
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6056
|
-
<span class="cline-any cline-yes">1x</span>
|
|
6057
|
-
<span class="cline-any cline-no"> </span>
|
|
6058
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6059
6052
|
<span class="cline-any cline-neutral"> </span>
|
|
6060
6053
|
<span class="cline-any cline-neutral"> </span>
|
|
6061
6054
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -6469,28 +6462,6 @@
|
|
|
6469
6462
|
<span class="cline-any cline-neutral"> </span>
|
|
6470
6463
|
<span class="cline-any cline-neutral"> </span>
|
|
6471
6464
|
<span class="cline-any cline-neutral"> </span>
|
|
6472
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6473
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6474
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6475
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6476
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6477
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6478
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6479
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6480
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6481
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6482
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6483
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6484
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6485
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6486
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6487
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6488
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6489
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6490
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6491
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6492
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6493
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6494
6465
|
<span class="cline-any cline-no"> </span>
|
|
6495
6466
|
<span class="cline-any cline-no"> </span>
|
|
6496
6467
|
<span class="cline-any cline-no"> </span>
|
|
@@ -6516,10 +6487,7 @@
|
|
|
6516
6487
|
<span class="cline-any cline-neutral"> </span>
|
|
6517
6488
|
<span class="cline-any cline-neutral"> </span>
|
|
6518
6489
|
<span class="cline-any cline-no"> </span>
|
|
6519
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6520
|
-
<span class="cline-any cline-no"> </span>
|
|
6521
6490
|
<span class="cline-any cline-no"> </span>
|
|
6522
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6523
6491
|
<span class="cline-any cline-no"> </span>
|
|
6524
6492
|
<span class="cline-any cline-no"> </span>
|
|
6525
6493
|
<span class="cline-any cline-no"> </span>
|
|
@@ -6628,20 +6596,6 @@
|
|
|
6628
6596
|
<span class="cline-any cline-no"> </span>
|
|
6629
6597
|
<span class="cline-any cline-no"> </span>
|
|
6630
6598
|
<span class="cline-any cline-no"> </span>
|
|
6631
|
-
<span class="cline-any cline-no"> </span>
|
|
6632
|
-
<span class="cline-any cline-no"> </span>
|
|
6633
|
-
<span class="cline-any cline-no"> </span>
|
|
6634
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6635
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6636
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6637
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6638
|
-
<span class="cline-any cline-no"> </span>
|
|
6639
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6640
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6641
|
-
<span class="cline-any cline-no"> </span>
|
|
6642
|
-
<span class="cline-any cline-no"> </span>
|
|
6643
|
-
<span class="cline-any cline-no"> </span>
|
|
6644
|
-
<span class="cline-any cline-no"> </span>
|
|
6645
6599
|
<span class="cline-any cline-neutral"> </span>
|
|
6646
6600
|
<span class="cline-any cline-neutral"> </span>
|
|
6647
6601
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -6692,7 +6646,6 @@
|
|
|
6692
6646
|
<span class="cline-any cline-no"> </span>
|
|
6693
6647
|
<span class="cline-any cline-neutral"> </span>
|
|
6694
6648
|
<span class="cline-any cline-neutral"> </span>
|
|
6695
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6696
6649
|
<span class="cline-any cline-no"> </span>
|
|
6697
6650
|
<span class="cline-any cline-no"> </span>
|
|
6698
6651
|
<span class="cline-any cline-no"> </span>
|
|
@@ -6996,29 +6949,6 @@
|
|
|
6996
6949
|
<span class="cline-any cline-neutral"> </span>
|
|
6997
6950
|
<span class="cline-any cline-no"> </span>
|
|
6998
6951
|
<span class="cline-any cline-no"> </span>
|
|
6999
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7000
|
-
<span class="cline-any cline-no"> </span>
|
|
7001
|
-
<span class="cline-any cline-no"> </span>
|
|
7002
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7003
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7004
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7005
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7006
|
-
<span class="cline-any cline-no"> </span>
|
|
7007
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7008
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7009
|
-
<span class="cline-any cline-no"> </span>
|
|
7010
|
-
<span class="cline-any cline-no"> </span>
|
|
7011
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7012
|
-
<span class="cline-any cline-no"> </span>
|
|
7013
|
-
<span class="cline-any cline-no"> </span>
|
|
7014
|
-
<span class="cline-any cline-no"> </span>
|
|
7015
|
-
<span class="cline-any cline-no"> </span>
|
|
7016
|
-
<span class="cline-any cline-no"> </span>
|
|
7017
|
-
<span class="cline-any cline-no"> </span>
|
|
7018
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7019
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7020
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7021
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7022
6952
|
<span class="cline-any cline-no"> </span>
|
|
7023
6953
|
<span class="cline-any cline-no"> </span>
|
|
7024
6954
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -7026,99 +6956,36 @@
|
|
|
7026
6956
|
<span class="cline-any cline-neutral"> </span>
|
|
7027
6957
|
<span class="cline-any cline-neutral"> </span>
|
|
7028
6958
|
<span class="cline-any cline-no"> </span>
|
|
7029
|
-
<span class="cline-any cline-no"> </span>
|
|
7030
|
-
<span class="cline-any cline-no"> </span>
|
|
7031
|
-
<span class="cline-any cline-no"> </span>
|
|
7032
|
-
<span class="cline-any cline-no"> </span>
|
|
7033
|
-
<span class="cline-any cline-no"> </span>
|
|
7034
|
-
<span class="cline-any cline-no"> </span>
|
|
7035
|
-
<span class="cline-any cline-no"> </span>
|
|
7036
|
-
<span class="cline-any cline-no"> </span>
|
|
7037
6959
|
<span class="cline-any cline-neutral"> </span>
|
|
7038
6960
|
<span class="cline-any cline-no"> </span>
|
|
7039
6961
|
<span class="cline-any cline-neutral"> </span>
|
|
7040
|
-
<span class="cline-any cline-no"> </span>
|
|
7041
|
-
<span class="cline-any cline-no"> </span>
|
|
7042
|
-
<span class="cline-any cline-no"> </span>
|
|
7043
|
-
<span class="cline-any cline-no"> </span>
|
|
7044
6962
|
<span class="cline-any cline-neutral"> </span>
|
|
7045
6963
|
<span class="cline-any cline-neutral"> </span>
|
|
7046
6964
|
<span class="cline-any cline-neutral"> </span>
|
|
7047
6965
|
<span class="cline-any cline-neutral"> </span>
|
|
7048
|
-
<span class="cline-any cline-no"> </span>
|
|
7049
|
-
<span class="cline-any cline-no"> </span>
|
|
7050
6966
|
<span class="cline-any cline-neutral"> </span>
|
|
7051
6967
|
<span class="cline-any cline-neutral"> </span>
|
|
7052
6968
|
<span class="cline-any cline-neutral"> </span>
|
|
7053
6969
|
<span class="cline-any cline-neutral"> </span>
|
|
7054
|
-
<span class="cline-any cline-no"> </span>
|
|
7055
|
-
<span class="cline-any cline-no"> </span>
|
|
7056
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7057
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7058
6970
|
<span class="cline-any cline-neutral"> </span>
|
|
7059
6971
|
<span class="cline-any cline-neutral"> </span>
|
|
7060
6972
|
<span class="cline-any cline-no"> </span>
|
|
7061
|
-
<span class="cline-any cline-no"> </span>
|
|
7062
6973
|
<span class="cline-any cline-neutral"> </span>
|
|
7063
6974
|
<span class="cline-any cline-no"> </span>
|
|
7064
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7065
6975
|
<span class="cline-any cline-no"> </span>
|
|
7066
6976
|
<span class="cline-any cline-no"> </span>
|
|
7067
6977
|
<span class="cline-any cline-no"> </span>
|
|
7068
6978
|
<span class="cline-any cline-no"> </span>
|
|
7069
6979
|
<span class="cline-any cline-no"> </span>
|
|
7070
|
-
<span class="cline-any cline-no"> </span>
|
|
7071
|
-
<span class="cline-any cline-no"> </span>
|
|
7072
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7073
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7074
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7075
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7076
|
-
<span class="cline-any cline-no"> </span>
|
|
7077
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7078
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7079
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7080
|
-
<span class="cline-any cline-no"> </span>
|
|
7081
|
-
<span class="cline-any cline-no"> </span>
|
|
7082
|
-
<span class="cline-any cline-no"> </span>
|
|
7083
|
-
<span class="cline-any cline-no"> </span>
|
|
7084
|
-
<span class="cline-any cline-no"> </span>
|
|
7085
|
-
<span class="cline-any cline-no"> </span>
|
|
7086
|
-
<span class="cline-any cline-no"> </span>
|
|
7087
|
-
<span class="cline-any cline-no"> </span>
|
|
7088
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7089
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7090
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7091
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7092
|
-
<span class="cline-any cline-no"> </span>
|
|
7093
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7094
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7095
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7096
|
-
<span class="cline-any cline-no"> </span>
|
|
7097
6980
|
<span class="cline-any cline-neutral"> </span>
|
|
7098
6981
|
<span class="cline-any cline-neutral"> </span>
|
|
7099
|
-
<span class="cline-any cline-no"> </span>
|
|
7100
|
-
<span class="cline-any cline-no"> </span>
|
|
7101
|
-
<span class="cline-any cline-no"> </span>
|
|
7102
6982
|
<span class="cline-any cline-neutral"> </span>
|
|
7103
6983
|
<span class="cline-any cline-neutral"> </span>
|
|
7104
6984
|
<span class="cline-any cline-no"> </span>
|
|
7105
6985
|
<span class="cline-any cline-no"> </span>
|
|
7106
|
-
<span class="cline-any cline-no"> </span>
|
|
7107
|
-
<span class="cline-any cline-no"> </span>
|
|
7108
|
-
<span class="cline-any cline-no"> </span>
|
|
7109
|
-
<span class="cline-any cline-no"> </span>
|
|
7110
|
-
<span class="cline-any cline-no"> </span>
|
|
7111
|
-
<span class="cline-any cline-no"> </span>
|
|
7112
|
-
<span class="cline-any cline-no"> </span>
|
|
7113
|
-
<span class="cline-any cline-no"> </span>
|
|
7114
|
-
<span class="cline-any cline-no"> </span>
|
|
7115
6986
|
<span class="cline-any cline-neutral"> </span>
|
|
7116
6987
|
<span class="cline-any cline-neutral"> </span>
|
|
7117
6988
|
<span class="cline-any cline-neutral"> </span>
|
|
7118
|
-
<span class="cline-any cline-no"> </span>
|
|
7119
|
-
<span class="cline-any cline-no"> </span>
|
|
7120
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7121
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7122
6989
|
<span class="cline-any cline-neutral"> </span>
|
|
7123
6990
|
<span class="cline-any cline-no"> </span>
|
|
7124
6991
|
<span class="cline-any cline-no"> </span>
|
|
@@ -7127,42 +6994,23 @@
|
|
|
7127
6994
|
<span class="cline-any cline-no"> </span>
|
|
7128
6995
|
<span class="cline-any cline-no"> </span>
|
|
7129
6996
|
<span class="cline-any cline-no"> </span>
|
|
7130
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7131
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7132
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7133
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7134
|
-
<span class="cline-any cline-no"> </span>
|
|
7135
|
-
<span class="cline-any cline-no"> </span>
|
|
7136
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7137
|
-
<span class="cline-any cline-no"> </span>
|
|
7138
|
-
<span class="cline-any cline-no"> </span>
|
|
7139
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7140
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7141
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7142
|
-
<span class="cline-any cline-no"> </span>
|
|
7143
6997
|
<span class="cline-any cline-no"> </span>
|
|
7144
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7145
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7146
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7147
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7148
6998
|
<span class="cline-any cline-no"> </span>
|
|
7149
6999
|
<span class="cline-any cline-neutral"> </span>
|
|
7150
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7151
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7152
|
-
<span class="cline-any cline-no"> </span>
|
|
7153
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7154
|
-
<span class="cline-any cline-no"> </span>
|
|
7155
|
-
<span class="cline-any cline-no"> </span>
|
|
7156
|
-
<span class="cline-any cline-no"> </span>
|
|
7157
7000
|
<span class="cline-any cline-no"> </span>
|
|
7001
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7158
7002
|
<span class="cline-any cline-no"> </span>
|
|
7159
7003
|
<span class="cline-any cline-no"> </span>
|
|
7160
7004
|
<span class="cline-any cline-no"> </span>
|
|
7161
7005
|
<span class="cline-any cline-no"> </span>
|
|
7162
7006
|
<span class="cline-any cline-neutral"> </span>
|
|
7007
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7008
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7009
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7163
7010
|
<span class="cline-any cline-no"> </span>
|
|
7164
7011
|
<span class="cline-any cline-no"> </span>
|
|
7165
|
-
<span class="cline-any cline-
|
|
7012
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7013
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7166
7014
|
<span class="cline-any cline-neutral"> </span>
|
|
7167
7015
|
<span class="cline-any cline-neutral"> </span>
|
|
7168
7016
|
<span class="cline-any cline-no"> </span>
|
|
@@ -7171,10 +7019,9 @@
|
|
|
7171
7019
|
<span class="cline-any cline-neutral"> </span>
|
|
7172
7020
|
<span class="cline-any cline-neutral"> </span>
|
|
7173
7021
|
<span class="cline-any cline-neutral"> </span>
|
|
7174
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7175
|
-
<span class="cline-any cline-no"> </span>
|
|
7176
7022
|
<span class="cline-any cline-no"> </span>
|
|
7177
7023
|
<span class="cline-any cline-no"> </span>
|
|
7024
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7178
7025
|
<span class="cline-any cline-no"> </span>
|
|
7179
7026
|
<span class="cline-any cline-neutral"> </span>
|
|
7180
7027
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -7183,13 +7030,12 @@
|
|
|
7183
7030
|
<span class="cline-any cline-no"> </span>
|
|
7184
7031
|
<span class="cline-any cline-no"> </span>
|
|
7185
7032
|
<span class="cline-any cline-no"> </span>
|
|
7186
|
-
<span class="cline-any cline-no"> </span>
|
|
7187
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7188
7033
|
<span class="cline-any cline-neutral"> </span>
|
|
7189
7034
|
<span class="cline-any cline-neutral"> </span>
|
|
7190
7035
|
<span class="cline-any cline-no"> </span>
|
|
7191
7036
|
<span class="cline-any cline-neutral"> </span>
|
|
7192
7037
|
<span class="cline-any cline-neutral"> </span>
|
|
7038
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7193
7039
|
<span class="cline-any cline-no"> </span>
|
|
7194
7040
|
<span class="cline-any cline-neutral"> </span>
|
|
7195
7041
|
<span class="cline-any cline-no"> </span>
|
|
@@ -7443,7 +7289,6 @@
|
|
|
7443
7289
|
<span class="cline-any cline-neutral"> </span>
|
|
7444
7290
|
<span class="cline-any cline-neutral"> </span>
|
|
7445
7291
|
<span class="cline-any cline-neutral"> </span>
|
|
7446
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7447
7292
|
<span class="cline-any cline-no"> </span>
|
|
7448
7293
|
<span class="cline-any cline-no"> </span>
|
|
7449
7294
|
<span class="cline-any cline-no"> </span>
|
|
@@ -7475,6 +7320,7 @@
|
|
|
7475
7320
|
<span class="cline-any cline-neutral"> </span>
|
|
7476
7321
|
<span class="cline-any cline-no"> </span>
|
|
7477
7322
|
<span class="cline-any cline-neutral"> </span>
|
|
7323
|
+
<span class="cline-any cline-no"> </span>
|
|
7478
7324
|
<span class="cline-any cline-neutral"> </span>
|
|
7479
7325
|
<span class="cline-any cline-neutral"> </span>
|
|
7480
7326
|
<span class="cline-any cline-no"> </span>
|
|
@@ -7508,6 +7354,10 @@
|
|
|
7508
7354
|
<span class="cline-any cline-no"> </span>
|
|
7509
7355
|
<span class="cline-any cline-no"> </span>
|
|
7510
7356
|
<span class="cline-any cline-neutral"> </span>
|
|
7357
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7358
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7359
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7360
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7511
7361
|
<span class="cline-any cline-no"> </span>
|
|
7512
7362
|
<span class="cline-any cline-no"> </span>
|
|
7513
7363
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -7518,22 +7368,17 @@
|
|
|
7518
7368
|
<span class="cline-any cline-neutral"> </span>
|
|
7519
7369
|
<span class="cline-any cline-neutral"> </span>
|
|
7520
7370
|
<span class="cline-any cline-neutral"> </span>
|
|
7521
|
-
<span class="cline-any cline-no"> </span>
|
|
7522
7371
|
<span class="cline-any cline-neutral"> </span>
|
|
7523
7372
|
<span class="cline-any cline-neutral"> </span>
|
|
7524
7373
|
<span class="cline-any cline-no"> </span>
|
|
7525
7374
|
<span class="cline-any cline-neutral"> </span>
|
|
7526
7375
|
<span class="cline-any cline-no"> </span>
|
|
7527
|
-
<span class="cline-any cline-no"> </span>
|
|
7528
7376
|
<span class="cline-any cline-neutral"> </span>
|
|
7529
7377
|
<span class="cline-any cline-neutral"> </span>
|
|
7530
7378
|
<span class="cline-any cline-no"> </span>
|
|
7531
7379
|
<span class="cline-any cline-neutral"> </span>
|
|
7532
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7533
7380
|
<span class="cline-any cline-no"> </span>
|
|
7534
7381
|
<span class="cline-any cline-no"> </span>
|
|
7535
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7536
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7537
7382
|
<span class="cline-any cline-no"> </span>
|
|
7538
7383
|
<span class="cline-any cline-neutral"> </span>
|
|
7539
7384
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -7545,12 +7390,9 @@
|
|
|
7545
7390
|
<span class="cline-any cline-neutral"> </span>
|
|
7546
7391
|
<span class="cline-any cline-neutral"> </span>
|
|
7547
7392
|
<span class="cline-any cline-neutral"> </span>
|
|
7548
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7549
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7550
7393
|
<span class="cline-any cline-no"> </span>
|
|
7551
7394
|
<span class="cline-any cline-neutral"> </span>
|
|
7552
7395
|
<span class="cline-any cline-no"> </span>
|
|
7553
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7554
7396
|
<span class="cline-any cline-no"> </span>
|
|
7555
7397
|
<span class="cline-any cline-neutral"> </span>
|
|
7556
7398
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -7609,26 +7451,11 @@
|
|
|
7609
7451
|
<span class="cline-any cline-neutral"> </span>
|
|
7610
7452
|
<span class="cline-any cline-neutral"> </span>
|
|
7611
7453
|
<span class="cline-any cline-no"> </span>
|
|
7612
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7613
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7614
|
-
<span class="cline-any cline-no"> </span>
|
|
7615
|
-
<span class="cline-any cline-no"> </span>
|
|
7616
|
-
<span class="cline-any cline-no"> </span>
|
|
7617
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7618
7454
|
<span class="cline-any cline-no"> </span>
|
|
7619
7455
|
<span class="cline-any cline-no"> </span>
|
|
7620
7456
|
<span class="cline-any cline-neutral"> </span>
|
|
7621
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7622
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7623
7457
|
<span class="cline-any cline-no"> </span>
|
|
7624
7458
|
<span class="cline-any cline-neutral"> </span>
|
|
7625
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7626
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7627
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7628
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7629
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7630
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7631
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7632
7459
|
<span class="cline-any cline-no"> </span>
|
|
7633
7460
|
<span class="cline-any cline-neutral"> </span>
|
|
7634
7461
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -7775,7 +7602,6 @@
|
|
|
7775
7602
|
<span class="cline-any cline-neutral"> </span>
|
|
7776
7603
|
<span class="cline-any cline-neutral"> </span>
|
|
7777
7604
|
<span class="cline-any cline-neutral"> </span>
|
|
7778
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7779
7605
|
<span class="cline-any cline-no"> </span>
|
|
7780
7606
|
<span class="cline-any cline-neutral"> </span>
|
|
7781
7607
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -7930,16 +7756,6 @@
|
|
|
7930
7756
|
<span class="cline-any cline-no"> </span>
|
|
7931
7757
|
<span class="cline-any cline-no"> </span>
|
|
7932
7758
|
<span class="cline-any cline-no"> </span>
|
|
7933
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7934
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7935
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7936
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7937
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7938
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7939
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7940
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7941
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7942
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7943
7759
|
<span class="cline-any cline-no"> </span>
|
|
7944
7760
|
<span class="cline-any cline-no"> </span>
|
|
7945
7761
|
<span class="cline-any cline-no"> </span>
|
|
@@ -8738,6 +8554,7 @@
|
|
|
8738
8554
|
<span class="cline-any cline-neutral"> </span>
|
|
8739
8555
|
<span class="cline-any cline-neutral"> </span>
|
|
8740
8556
|
<span class="cline-any cline-neutral"> </span>
|
|
8557
|
+
<span class="cline-any cline-neutral"> </span>
|
|
8741
8558
|
<span class="cline-any cline-no"> </span>
|
|
8742
8559
|
<span class="cline-any cline-neutral"> </span>
|
|
8743
8560
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -8855,12 +8672,10 @@
|
|
|
8855
8672
|
<span class="cline-any cline-neutral"> </span>
|
|
8856
8673
|
<span class="cline-any cline-neutral"> </span>
|
|
8857
8674
|
<span class="cline-any cline-neutral"> </span>
|
|
8858
|
-
<span class="cline-any cline-no"> </span>
|
|
8859
|
-
<span class="cline-any cline-no"> </span>
|
|
8860
8675
|
<span class="cline-any cline-neutral"> </span>
|
|
8861
|
-
<span class="cline-any cline-no"> </span>
|
|
8862
8676
|
<span class="cline-any cline-neutral"> </span>
|
|
8863
8677
|
<span class="cline-any cline-no"> </span>
|
|
8678
|
+
<span class="cline-any cline-neutral"> </span>
|
|
8864
8679
|
<span class="cline-any cline-no"> </span>
|
|
8865
8680
|
<span class="cline-any cline-neutral"> </span>
|
|
8866
8681
|
<span class="cline-any cline-no"> </span>
|
|
@@ -8870,8 +8685,11 @@
|
|
|
8870
8685
|
<span class="cline-any cline-neutral"> </span>
|
|
8871
8686
|
<span class="cline-any cline-neutral"> </span>
|
|
8872
8687
|
<span class="cline-any cline-no"> </span>
|
|
8688
|
+
<span class="cline-any cline-neutral"> </span>
|
|
8873
8689
|
<span class="cline-any cline-no"> </span>
|
|
8874
8690
|
<span class="cline-any cline-neutral"> </span>
|
|
8691
|
+
<span class="cline-any cline-neutral"> </span>
|
|
8692
|
+
<span class="cline-any cline-no"> </span>
|
|
8875
8693
|
<span class="cline-any cline-no"> </span>
|
|
8876
8694
|
<span class="cline-any cline-no"> </span>
|
|
8877
8695
|
<span class="cline-any cline-no"> </span>
|
|
@@ -8931,8 +8749,6 @@
|
|
|
8931
8749
|
<span class="cline-any cline-no"> </span>
|
|
8932
8750
|
<span class="cline-any cline-neutral"> </span>
|
|
8933
8751
|
<span class="cline-any cline-neutral"> </span>
|
|
8934
|
-
<span class="cline-any cline-no"> </span>
|
|
8935
|
-
<span class="cline-any cline-neutral"> </span>
|
|
8936
8752
|
<span class="cline-any cline-neutral"> </span>
|
|
8937
8753
|
<span class="cline-any cline-neutral"> </span>
|
|
8938
8754
|
<span class="cline-any cline-no"> </span>
|
|
@@ -8997,8 +8813,13 @@
|
|
|
8997
8813
|
<span class="cline-any cline-neutral"> </span>
|
|
8998
8814
|
<span class="cline-any cline-no"> </span>
|
|
8999
8815
|
<span class="cline-any cline-neutral"> </span>
|
|
8816
|
+
<span class="cline-any cline-neutral"> </span>
|
|
8817
|
+
<span class="cline-any cline-neutral"> </span>
|
|
8818
|
+
<span class="cline-any cline-neutral"> </span>
|
|
9000
8819
|
<span class="cline-any cline-no"> </span>
|
|
9001
8820
|
<span class="cline-any cline-no"> </span>
|
|
8821
|
+
<span class="cline-any cline-neutral"> </span>
|
|
8822
|
+
<span class="cline-any cline-neutral"> </span>
|
|
9002
8823
|
<span class="cline-any cline-no"> </span>
|
|
9003
8824
|
<span class="cline-any cline-no"> </span>
|
|
9004
8825
|
<span class="cline-any cline-no"> </span>
|
|
@@ -9007,13 +8828,18 @@
|
|
|
9007
8828
|
<span class="cline-any cline-no"> </span>
|
|
9008
8829
|
<span class="cline-any cline-neutral"> </span>
|
|
9009
8830
|
<span class="cline-any cline-no"> </span>
|
|
8831
|
+
<span class="cline-any cline-neutral"> </span>
|
|
9010
8832
|
<span class="cline-any cline-no"> </span>
|
|
9011
8833
|
<span class="cline-any cline-no"> </span>
|
|
9012
8834
|
<span class="cline-any cline-neutral"> </span>
|
|
9013
8835
|
<span class="cline-any cline-no"> </span>
|
|
9014
8836
|
<span class="cline-any cline-neutral"> </span>
|
|
9015
8837
|
<span class="cline-any cline-neutral"> </span>
|
|
8838
|
+
<span class="cline-any cline-neutral"> </span>
|
|
8839
|
+
<span class="cline-any cline-neutral"> </span>
|
|
9016
8840
|
<span class="cline-any cline-no"> </span>
|
|
8841
|
+
<span class="cline-any cline-neutral"> </span>
|
|
8842
|
+
<span class="cline-any cline-neutral"> </span>
|
|
9017
8843
|
<span class="cline-any cline-no"> </span>
|
|
9018
8844
|
<span class="cline-any cline-no"> </span>
|
|
9019
8845
|
<span class="cline-any cline-no"> </span>
|
|
@@ -9033,7 +8859,11 @@
|
|
|
9033
8859
|
<span class="cline-any cline-neutral"> </span>
|
|
9034
8860
|
<span class="cline-any cline-neutral"> </span>
|
|
9035
8861
|
<span class="cline-any cline-neutral"> </span>
|
|
8862
|
+
<span class="cline-any cline-neutral"> </span>
|
|
8863
|
+
<span class="cline-any cline-neutral"> </span>
|
|
9036
8864
|
<span class="cline-any cline-no"> </span>
|
|
8865
|
+
<span class="cline-any cline-neutral"> </span>
|
|
8866
|
+
<span class="cline-any cline-neutral"> </span>
|
|
9037
8867
|
<span class="cline-any cline-no"> </span>
|
|
9038
8868
|
<span class="cline-any cline-neutral"> </span>
|
|
9039
8869
|
<span class="cline-any cline-no"> </span>
|
|
@@ -9066,11 +8896,6 @@
|
|
|
9066
8896
|
<span class="cline-any cline-neutral"> </span>
|
|
9067
8897
|
<span class="cline-any cline-neutral"> </span>
|
|
9068
8898
|
<span class="cline-any cline-neutral"> </span>
|
|
9069
|
-
<span class="cline-any cline-no"> </span>
|
|
9070
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9071
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9072
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9073
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9074
8899
|
<span class="cline-any cline-neutral"> </span>
|
|
9075
8900
|
<span class="cline-any cline-neutral"> </span>
|
|
9076
8901
|
<span class="cline-any cline-no"> </span>
|
|
@@ -9111,27 +8936,20 @@
|
|
|
9111
8936
|
<span class="cline-any cline-neutral"> </span>
|
|
9112
8937
|
<span class="cline-any cline-neutral"> </span>
|
|
9113
8938
|
<span class="cline-any cline-neutral"> </span>
|
|
8939
|
+
<span class="cline-any cline-yes">1x</span>
|
|
9114
8940
|
<span class="cline-any cline-no"> </span>
|
|
9115
8941
|
<span class="cline-any cline-no"> </span>
|
|
9116
8942
|
<span class="cline-any cline-no"> </span>
|
|
9117
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9118
8943
|
<span class="cline-any cline-no"> </span>
|
|
9119
8944
|
<span class="cline-any cline-no"> </span>
|
|
9120
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9121
8945
|
<span class="cline-any cline-no"> </span>
|
|
9122
8946
|
<span class="cline-any cline-no"> </span>
|
|
9123
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9124
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9125
8947
|
<span class="cline-any cline-no"> </span>
|
|
9126
8948
|
<span class="cline-any cline-no"> </span>
|
|
9127
8949
|
<span class="cline-any cline-neutral"> </span>
|
|
9128
8950
|
<span class="cline-any cline-no"> </span>
|
|
9129
|
-
<span class="cline-any cline-no"> </span>
|
|
9130
8951
|
<span class="cline-any cline-neutral"> </span>
|
|
9131
8952
|
<span class="cline-any cline-neutral"> </span>
|
|
9132
|
-
<span class="cline-any cline-no"> </span>
|
|
9133
|
-
<span class="cline-any cline-no"> </span>
|
|
9134
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9135
8953
|
<span class="cline-any cline-neutral"> </span>
|
|
9136
8954
|
<span class="cline-any cline-neutral"> </span>
|
|
9137
8955
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -9254,16 +9072,33 @@
|
|
|
9254
9072
|
<span class="cline-any cline-neutral"> </span>
|
|
9255
9073
|
<span class="cline-any cline-no"> </span>
|
|
9256
9074
|
<span class="cline-any cline-no"> </span>
|
|
9075
|
+
<span class="cline-any cline-neutral"> </span>
|
|
9076
|
+
<span class="cline-any cline-no"> </span>
|
|
9077
|
+
<span class="cline-any cline-neutral"> </span>
|
|
9078
|
+
<span class="cline-any cline-no"> </span>
|
|
9079
|
+
<span class="cline-any cline-no"> </span>
|
|
9080
|
+
<span class="cline-any cline-no"> </span>
|
|
9081
|
+
<span class="cline-any cline-no"> </span>
|
|
9082
|
+
<span class="cline-any cline-no"> </span>
|
|
9083
|
+
<span class="cline-any cline-no"> </span>
|
|
9084
|
+
<span class="cline-any cline-no"> </span>
|
|
9257
9085
|
<span class="cline-any cline-no"> </span>
|
|
9258
9086
|
<span class="cline-any cline-no"> </span>
|
|
9259
9087
|
<span class="cline-any cline-neutral"> </span>
|
|
9260
9088
|
<span class="cline-any cline-no"> </span>
|
|
9089
|
+
<span class="cline-any cline-neutral"> </span>
|
|
9261
9090
|
<span class="cline-any cline-no"> </span>
|
|
9262
9091
|
<span class="cline-any cline-no"> </span>
|
|
9263
9092
|
<span class="cline-any cline-neutral"> </span>
|
|
9264
9093
|
<span class="cline-any cline-neutral"> </span>
|
|
9265
9094
|
<span class="cline-any cline-neutral"> </span>
|
|
9095
|
+
<span class="cline-any cline-no"> </span>
|
|
9096
|
+
<span class="cline-any cline-no"> </span>
|
|
9097
|
+
<span class="cline-any cline-no"> </span>
|
|
9266
9098
|
<span class="cline-any cline-neutral"> </span>
|
|
9099
|
+
<span class="cline-any cline-no"> </span>
|
|
9100
|
+
<span class="cline-any cline-no"> </span>
|
|
9101
|
+
<span class="cline-any cline-no"> </span>
|
|
9267
9102
|
<span class="cline-any cline-neutral"> </span>
|
|
9268
9103
|
<span class="cline-any cline-neutral"> </span>
|
|
9269
9104
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -9295,7 +9130,6 @@
|
|
|
9295
9130
|
<span class="cline-any cline-neutral"> </span>
|
|
9296
9131
|
<span class="cline-any cline-neutral"> </span>
|
|
9297
9132
|
<span class="cline-any cline-neutral"> </span>
|
|
9298
|
-
<span class="cline-any cline-no"> </span>
|
|
9299
9133
|
<span class="cline-any cline-neutral"> </span>
|
|
9300
9134
|
<span class="cline-any cline-neutral"> </span>
|
|
9301
9135
|
<span class="cline-any cline-no"> </span>
|
|
@@ -9313,7 +9147,6 @@
|
|
|
9313
9147
|
<span class="cline-any cline-no"> </span>
|
|
9314
9148
|
<span class="cline-any cline-no"> </span>
|
|
9315
9149
|
<span class="cline-any cline-no"> </span>
|
|
9316
|
-
<span class="cline-any cline-no"> </span>
|
|
9317
9150
|
<span class="cline-any cline-neutral"> </span>
|
|
9318
9151
|
<span class="cline-any cline-neutral"> </span>
|
|
9319
9152
|
<span class="cline-any cline-no"> </span>
|
|
@@ -9645,6 +9478,7 @@
|
|
|
9645
9478
|
<span class="cline-any cline-no"> </span>
|
|
9646
9479
|
<span class="cline-any cline-no"> </span>
|
|
9647
9480
|
<span class="cline-any cline-no"> </span>
|
|
9481
|
+
<span class="cline-any cline-no"> </span>
|
|
9648
9482
|
<span class="cline-any cline-neutral"> </span>
|
|
9649
9483
|
<span class="cline-any cline-no"> </span>
|
|
9650
9484
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -9703,14 +9537,10 @@
|
|
|
9703
9537
|
<span class="cline-any cline-no"> </span>
|
|
9704
9538
|
<span class="cline-any cline-neutral"> </span>
|
|
9705
9539
|
<span class="cline-any cline-neutral"> </span>
|
|
9706
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9707
9540
|
<span class="cline-any cline-no"> </span>
|
|
9708
9541
|
<span class="cline-any cline-no"> </span>
|
|
9709
9542
|
<span class="cline-any cline-neutral"> </span>
|
|
9710
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9711
|
-
<span class="cline-any cline-no"> </span>
|
|
9712
9543
|
<span class="cline-any cline-no"> </span>
|
|
9713
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9714
9544
|
<span class="cline-any cline-no"> </span>
|
|
9715
9545
|
<span class="cline-any cline-no"> </span>
|
|
9716
9546
|
<span class="cline-any cline-no"> </span>
|
|
@@ -9722,7 +9552,6 @@
|
|
|
9722
9552
|
<span class="cline-any cline-no"> </span>
|
|
9723
9553
|
<span class="cline-any cline-neutral"> </span>
|
|
9724
9554
|
<span class="cline-any cline-neutral"> </span>
|
|
9725
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9726
9555
|
<span class="cline-any cline-no"> </span>
|
|
9727
9556
|
<span class="cline-any cline-neutral"> </span>
|
|
9728
9557
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -9731,7 +9560,6 @@
|
|
|
9731
9560
|
<span class="cline-any cline-neutral"> </span>
|
|
9732
9561
|
<span class="cline-any cline-neutral"> </span>
|
|
9733
9562
|
<span class="cline-any cline-no"> </span>
|
|
9734
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9735
9563
|
<span class="cline-any cline-no"> </span>
|
|
9736
9564
|
<span class="cline-any cline-no"> </span>
|
|
9737
9565
|
<span class="cline-any cline-no"> </span>
|
|
@@ -9861,14 +9689,13 @@ import {
|
|
|
9861
9689
|
AuthLogicForCallInterface,
|
|
9862
9690
|
Connector,
|
|
9863
9691
|
AuthInterface,
|
|
9692
|
+
SynatxNode,
|
|
9864
9693
|
Connection,
|
|
9865
9694
|
TriggerLauncher,
|
|
9866
9695
|
CallConnector,
|
|
9867
|
-
MetadataType,
|
|
9868
|
-
SyntaxNode,
|
|
9869
9696
|
} from '../concepts';
|
|
9870
9697
|
|
|
9871
|
-
import { lsp2tspNumber, SourceMap, SourceMapItem, isSameRange
|
|
9698
|
+
import { lsp2tspNumber, SourceMap, SourceMapItem, isSameRange } from '../translator';
|
|
9872
9699
|
import axios from '../service/storage';
|
|
9873
9700
|
import { translateDiagnosticMessage, naslNodeTranslateMessage, MinRange, checkAStructure_ } from './translator';
|
|
9874
9701
|
import { EventPayload, invokeCommand, registerCommand } from '../common';
|
|
@@ -9883,6 +9710,7 @@ import { EventEmitter } from '../common/EventEmitter';
|
|
|
9883
9710
|
|
|
9884
9711
|
import { traverse } from '../utils';
|
|
9885
9712
|
import { withQueueExecute } from '../decorators';
|
|
9713
|
+
|
|
9886
9714
|
import { getNodeByNodeCallee } from '../automate/engine/utils';
|
|
9887
9715
|
|
|
9888
9716
|
const EmbeddedTSFileLineMap: { [name: string]: number } = {
|
|
@@ -9901,7 +9729,11 @@ const SentryMessager = sentryMonitorTSWorkerMessager(Messager);
|
|
|
9901
9729
|
|
|
9902
9730
|
export interface FileNode extends BaseNode {
|
|
9903
9731
|
getEmbeddedFilePath(name?: string): string;
|
|
9904
|
-
toEmbeddedTSFile():
|
|
9732
|
+
toEmbeddedTSFile(): {
|
|
9733
|
+
filePath: string;
|
|
9734
|
+
code: string;
|
|
9735
|
+
sourceMap: SourceMap;
|
|
9736
|
+
};
|
|
9905
9737
|
}
|
|
9906
9738
|
|
|
9907
9739
|
interface RenameMinRange extends MinRange {
|
|
@@ -9918,7 +9750,6 @@ interface QuoteNode {
|
|
|
9918
9750
|
|
|
9919
9751
|
// 批量查找节点位置的节点信息类型
|
|
9920
9752
|
type QuickInfoNodes = Array<{ filePath: string; node: BaseNode; item: SourceMapItem }>;
|
|
9921
|
-
type QuickInfoMap = Map<BaseNode, TypeAnnotation | { typeAnnotation: TypeAnnotation; option: any }>;
|
|
9922
9753
|
|
|
9923
9754
|
let isChangeInterface = false; // 判断是否导入接口
|
|
9924
9755
|
type ActionNode = { target: Variable; typeannotation: TypeAnnotation };
|
|
@@ -9963,27 +9794,6 @@ export function <span class="fstat-no" title="function not covered" >getDisplayS
|
|
|
9963
9794
|
<span class="cstat-no" title="statement not covered" > return typeList;</span>
|
|
9964
9795
|
}
|
|
9965
9796
|
|
|
9966
|
-
function <span class="fstat-no" title="function not covered" >isCoreDateTimeType(</span>n : Argument): boolean {
|
|
9967
|
-
<span class="cstat-no" title="statement not covered" > return n?.expression?.__TypeAnnotation?.typeName === 'DateTime' &&</span>
|
|
9968
|
-
n?.expression?.__TypeAnnotation?.typeNamespace === 'nasl.core';
|
|
9969
|
-
}
|
|
9970
|
-
|
|
9971
|
-
function <span class="fstat-no" title="function not covered" >isFunctionWithFixedTimeZoneParam(</span>calleeName : string): boolean {
|
|
9972
|
-
const fns = <span class="cstat-no" title="statement not covered" >['CurrDateTime', 'CurrDate', 'CurrTime', 'FormatDateTime'];</span>
|
|
9973
|
-
<span class="cstat-no" title="statement not covered" > return fns.includes(calleeName);</span>
|
|
9974
|
-
}
|
|
9975
|
-
|
|
9976
|
-
const timeZoneArgumentIndexMap = new Map<string, number>([
|
|
9977
|
-
['ToString', 1],
|
|
9978
|
-
['CurrDateTime', 0],
|
|
9979
|
-
['CurrDate', 0],
|
|
9980
|
-
['CurrTime', 0],
|
|
9981
|
-
['FormatDateTime', 2],
|
|
9982
|
-
['jsonSerialize', 1],
|
|
9983
|
-
['GetDateCount', 2],
|
|
9984
|
-
['GetSpecificDaysOfWeek', 3]
|
|
9985
|
-
])
|
|
9986
|
-
|
|
9987
9797
|
@sentryMonitorNaslServer
|
|
9988
9798
|
class NaslServer {
|
|
9989
9799
|
/** naslStdlib文件缓存 */
|
|
@@ -10057,7 +9867,7 @@ class NaslServer {
|
|
|
10057
9867
|
handleMessage: <span class="fstat-no" title="function not covered" >async </span>({ data }: any) => {
|
|
10058
9868
|
<span class="cstat-no" title="statement not covered" > if (data && data.event === 'publishDiagnostics') {</span>
|
|
10059
9869
|
const records = <span class="cstat-no" title="statement not covered" >await this._resolveDiagnosticRecords(data.records);</span>
|
|
10060
|
-
<span class="cstat-no" title="statement not covered" >
|
|
9870
|
+
<span class="cstat-no" title="statement not covered" > this.diagnosticManager.pushAll(records);</span>
|
|
10061
9871
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10062
9872
|
// 结束诊断和标注
|
|
10063
9873
|
<span class="cstat-no" title="statement not covered" > invokeCommand('naslServer:endWork');</span>
|
|
@@ -10153,171 +9963,303 @@ class NaslServer {
|
|
|
10153
9963
|
<span class="cstat-no" title="statement not covered" > await this.getDiagnosticRecordsAndPushAll();</span>
|
|
10154
9964
|
}
|
|
10155
9965
|
|
|
10156
|
-
|
|
10157
|
-
|
|
10158
|
-
<span class="cstat-no" title="statement not covered" >
|
|
9966
|
+
<span class="fstat-no" title="function not covered" > contentToFile(</span>module: Module | App | Connector, results: Array<ReturnType<Structure['toEmbeddedTSFile']>>) {
|
|
9967
|
+
// 禁用的依赖库不生成代码 区分 undefined 和 false
|
|
9968
|
+
<span class="cstat-no" title="statement not covered" > if (module instanceof Module && module.type === 'extension' && module.enable === false) {</span>
|
|
9969
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
10159
9970
|
}
|
|
10160
|
-
|
|
10161
|
-
const self = <span class="cstat-no" title="statement not covered" >this;</span>
|
|
10162
|
-
const results: utils.EmbeddedTSFileResult[] = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
10163
|
-
const getTsFile = <span class="cstat-no" title="statement not covered" >function* <span class="fstat-no" title="function not covered" >getTsFile(</span>node: FileNode, name: string, pre?: Function) {</span>
|
|
10164
|
-
const isContinue = <span class="cstat-no" title="statement not covered" >pre ? <span class="fstat-no" title="function not covered" >(i</span>nput: unknown) => <span class="cstat-no" title="statement not covered" >input instanceof pre </span>: <span class="fstat-no" title="function not covered" >() =</span>> <span class="cstat-no" title="statement not covered" >true;</span></span>
|
|
10165
|
-
|
|
9971
|
+
<span class="cstat-no" title="statement not covered" > module.structures.forEach(<span class="fstat-no" title="function not covered" >(s</span>tructure) => {</span>
|
|
10166
9972
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10167
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10168
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
10169
|
-
}
|
|
10170
|
-
|
|
10171
|
-
const result = <span class="cstat-no" title="statement not covered" >yield* node.toEmbeddedTSFile();</span>
|
|
10172
|
-
|
|
9973
|
+
const result = <span class="cstat-no" title="statement not covered" >structure.toEmbeddedTSFile();</span>
|
|
10173
9974
|
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10174
|
-
|
|
10175
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10176
|
-
|
|
10177
|
-
|
|
10178
|
-
|
|
9975
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
9976
|
+
<span class="cstat-no" title="statement not covered" > structure.sourceMap = result.sourceMap;</span>
|
|
9977
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, structure);</span>
|
|
9978
|
+
} catch (err) {}
|
|
9979
|
+
});
|
|
9980
|
+
<span class="cstat-no" title="statement not covered" > if (module instanceof App) {</span>
|
|
9981
|
+
<span class="cstat-no" title="statement not covered" > module.overriddenLogics?.forEach?.(<span class="fstat-no" title="function not covered" >(l</span>ogic) => {</span>
|
|
9982
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
9983
|
+
<span class="cstat-no" title="statement not covered" > if (!(logic instanceof OverriddenLogic)) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
9984
|
+
const result = <span class="cstat-no" title="statement not covered" >logic.toEmbeddedTSFile();</span>
|
|
9985
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
9986
|
+
<span class="cstat-no" title="statement not covered" > logic.sourceMap = result.sourceMap;</span>
|
|
9987
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, logic);</span>
|
|
9988
|
+
} catch (err) {
|
|
9989
|
+
<span class="cstat-no" title="statement not covered" > console.error('err: ', err);</span>
|
|
10179
9990
|
}
|
|
10180
|
-
}
|
|
10181
|
-
|
|
10182
|
-
|
|
10183
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10184
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10185
|
-
|
|
10186
|
-
|
|
10187
|
-
|
|
10188
|
-
|
|
10189
|
-
|
|
10190
|
-
const view2TSFile = <span class="cstat-no" title="statement not covered" >function* <span class="fstat-no" title="function not covered" >view2TSFile(</span>views: View[]): Generator<void, void, any> {</span>
|
|
10191
|
-
<span class="cstat-no" title="statement not covered" > if (!views || views.length === 0) {</span>
|
|
10192
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
10193
|
-
}
|
|
10194
|
-
|
|
10195
|
-
<span class="cstat-no" title="statement not covered" > for (const view of views) {</span>
|
|
10196
|
-
<span class="cstat-no" title="statement not covered" > yield* getTsFile(view, 'view');</span>
|
|
10197
|
-
|
|
10198
|
-
<span class="cstat-no" title="statement not covered" > if (view.children) {</span>
|
|
10199
|
-
<span class="cstat-no" title="statement not covered" > yield* view2TSFile(view.children);</span>
|
|
9991
|
+
});
|
|
9992
|
+
<span class="cstat-no" title="statement not covered" > module?.backend?.variables?.forEach(<span class="fstat-no" title="function not covered" >(b</span>ackdndVariable) => {</span>
|
|
9993
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
9994
|
+
const result = <span class="cstat-no" title="statement not covered" >backdndVariable.toEmbeddedTSFile();</span>
|
|
9995
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
9996
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
9997
|
+
<span class="cstat-no" title="statement not covered" > backdndVariable.sourceMap = result.sourceMap;</span>
|
|
9998
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, backdndVariable);</span>
|
|
9999
|
+
} catch (err) {
|
|
10000
|
+
<span class="cstat-no" title="statement not covered" > console.error(err);</span>
|
|
10200
10001
|
}
|
|
10201
|
-
}
|
|
10202
|
-
|
|
10203
|
-
|
|
10204
|
-
|
|
10205
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10206
|
-
|
|
10002
|
+
});
|
|
10003
|
+
<span class="cstat-no" title="statement not covered" > module.frontends?.forEach(<span class="fstat-no" title="function not covered" >(f</span>rontend) => {</span>
|
|
10004
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10005
|
+
const result = <span class="cstat-no" title="statement not covered" >frontend.toEmbeddedTSFile();</span>
|
|
10006
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10007
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10008
|
+
<span class="cstat-no" title="statement not covered" > frontend.sourceMap = result.sourceMap;</span>
|
|
10009
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, frontend);</span>
|
|
10010
|
+
} catch (err) {
|
|
10011
|
+
<span class="cstat-no" title="statement not covered" > console.log(err);</span>
|
|
10012
|
+
}
|
|
10013
|
+
<span class="cstat-no" title="statement not covered" > frontend.variables?.forEach(<span class="fstat-no" title="function not covered" >(f</span>rontendVariable) => {</span>
|
|
10014
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10015
|
+
const result = <span class="cstat-no" title="statement not covered" >frontendVariable.toEmbeddedTSFile();</span>
|
|
10016
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10017
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10018
|
+
<span class="cstat-no" title="statement not covered" > frontendVariable.sourceMap = result.sourceMap;</span>
|
|
10019
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, frontendVariable);</span>
|
|
10020
|
+
} catch (err) {
|
|
10021
|
+
<span class="cstat-no" title="statement not covered" > console.log(err);</span>
|
|
10022
|
+
}
|
|
10023
|
+
});
|
|
10024
|
+
<span class="cstat-no" title="statement not covered" > frontend.bindEvents?.forEach(<span class="fstat-no" title="function not covered" >(b</span>indEvent) => {</span>
|
|
10025
|
+
<span class="cstat-no" title="statement not covered" > if (bindEvent?.logics && bindEvent?.logics?.length > 0) {</span>
|
|
10026
|
+
<span class="cstat-no" title="statement not covered" > bindEvent.logics.forEach(<span class="fstat-no" title="function not covered" >(l</span>ogic: Logic) => {</span>
|
|
10027
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10028
|
+
const result = <span class="cstat-no" title="statement not covered" >logic.toEmbeddedTSFile();</span>
|
|
10029
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10030
|
+
<span class="cstat-no" title="statement not covered" > logic.sourceMap = result.sourceMap;</span>
|
|
10031
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, logic);</span>
|
|
10032
|
+
} catch (err) {
|
|
10033
|
+
<span class="cstat-no" title="statement not covered" > console.error('err: ', err);</span>
|
|
10034
|
+
}
|
|
10035
|
+
});
|
|
10036
|
+
}
|
|
10037
|
+
});
|
|
10038
|
+
// view的生成
|
|
10039
|
+
<span class="cstat-no" title="statement not covered" > if (!config.closeViews) {</span>
|
|
10040
|
+
<span class="cstat-no" title="statement not covered" > this.view2TSFile(frontend.views, results);</span>
|
|
10041
|
+
}
|
|
10042
|
+
<span class="cstat-no" title="statement not covered" > frontend.componentDependencies?.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >this.contentToFile(item, results))</span>;</span>
|
|
10043
|
+
});
|
|
10044
|
+
} else {
|
|
10045
|
+
<span class="cstat-no" title="statement not covered" > module.frontends?.forEach(<span class="fstat-no" title="function not covered" >(f</span>rontend) => {</span>
|
|
10046
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10047
|
+
<span class="cstat-no" title="statement not covered" > frontend.logics.forEach(<span class="fstat-no" title="function not covered" >(l</span>ogic) => {</span>
|
|
10048
|
+
const result = <span class="cstat-no" title="statement not covered" >logic.toEmbeddedTSFile();</span>
|
|
10049
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10050
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10051
|
+
<span class="cstat-no" title="statement not covered" > logic.sourceMap = result.sourceMap;</span>
|
|
10052
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, logic);</span>
|
|
10053
|
+
});
|
|
10054
|
+
} catch (err) {
|
|
10055
|
+
<span class="cstat-no" title="statement not covered" > console.log(err);</span>
|
|
10056
|
+
}
|
|
10057
|
+
});
|
|
10207
10058
|
}
|
|
10208
10059
|
|
|
10209
|
-
|
|
10210
|
-
|
|
10211
|
-
|
|
10212
|
-
|
|
10213
|
-
|
|
10214
|
-
|
|
10215
|
-
|
|
10216
|
-
|
|
10217
|
-
|
|
10218
|
-
|
|
10219
|
-
|
|
10220
|
-
|
|
10221
|
-
|
|
10222
|
-
|
|
10223
|
-
|
|
10224
|
-
|
|
10225
|
-
|
|
10226
|
-
|
|
10227
|
-
|
|
10228
|
-
const {
|
|
10229
|
-
namespaces = <span class="branch-0 cbranch-no" title="branch not covered" >[],</span>
|
|
10230
|
-
} = <span class="cstat-no" title="statement not covered" >module as Connector;</span>
|
|
10231
|
-
|
|
10232
|
-
<span class="cstat-no" title="statement not covered" > yield* getTsFiles(structures, 'structure');</span>
|
|
10233
|
-
<span class="cstat-no" title="statement not covered" > yield* getTsFiles(metadataTypes, 'metadataType');</span>
|
|
10060
|
+
(<span class="cstat-no" title="statement not covered" >module as App).dataSources?.forEach(<span class="fstat-no" title="function not covered" >(d</span>ataSource) => {</span>
|
|
10061
|
+
// 本身dataSource也要生成一个文件用于改名
|
|
10062
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10063
|
+
const result = <span class="cstat-no" title="statement not covered" >dataSource.toEmbeddedTSFile();</span>
|
|
10064
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10065
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10066
|
+
<span class="cstat-no" title="statement not covered" > dataSource.sourceMap = result.sourceMap;</span>
|
|
10067
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, dataSource);</span>
|
|
10068
|
+
} catch (err) {}
|
|
10069
|
+
<span class="cstat-no" title="statement not covered" > dataSource.entities.forEach(<span class="fstat-no" title="function not covered" >(e</span>ntity) => {</span>
|
|
10070
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10071
|
+
const result = <span class="cstat-no" title="statement not covered" >entity.toEmbeddedTSFile();</span>
|
|
10072
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10073
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10074
|
+
<span class="cstat-no" title="statement not covered" > entity.sourceMap = result.sourceMap;</span>
|
|
10075
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, entity);</span>
|
|
10076
|
+
} catch (err) {}
|
|
10077
|
+
});
|
|
10078
|
+
});
|
|
10234
10079
|
|
|
10235
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10236
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10237
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10080
|
+
<span class="cstat-no" title="statement not covered" > module?.interfaces?.forEach(<span class="fstat-no" title="function not covered" >(_</span>interface) => {</span>
|
|
10081
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10082
|
+
const result = <span class="cstat-no" title="statement not covered" >_interface.toEmbeddedTSFile();</span>
|
|
10083
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10084
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10085
|
+
<span class="cstat-no" title="statement not covered" > _interface.sourceMap = result.sourceMap;</span>
|
|
10086
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, _interface);</span>
|
|
10087
|
+
} catch (err) {}
|
|
10088
|
+
});
|
|
10089
|
+
<span class="cstat-no" title="statement not covered" > module?.enums?.forEach(<span class="fstat-no" title="function not covered" >(_</span>enum) => {</span>
|
|
10090
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10091
|
+
const result = <span class="cstat-no" title="statement not covered" >_enum.toEmbeddedTSFile();</span>
|
|
10092
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10093
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10094
|
+
<span class="cstat-no" title="statement not covered" > _enum.sourceMap = result.sourceMap;</span>
|
|
10095
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, _enum);</span>
|
|
10096
|
+
} catch (err) {}
|
|
10097
|
+
});
|
|
10098
|
+
<span class="cstat-no" title="statement not covered" > module?.logics?.forEach(<span class="fstat-no" title="function not covered" >(l</span>ogic) => {</span>
|
|
10099
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10100
|
+
<span class="cstat-no" title="statement not covered" > if (!(logic instanceof Logic)) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
10101
|
+
const result = <span class="cstat-no" title="statement not covered" >logic.toEmbeddedTSFile();</span>
|
|
10102
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10103
|
+
<span class="cstat-no" title="statement not covered" > logic.sourceMap = result.sourceMap;</span>
|
|
10104
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, logic);</span>
|
|
10105
|
+
} catch (err) {}
|
|
10106
|
+
});
|
|
10238
10107
|
|
|
10239
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10240
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10241
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10242
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10108
|
+
(<span class="cstat-no" title="statement not covered" >module as App)?.authLogics?.forEach?.(<span class="fstat-no" title="function not covered" >(l</span>ogic) => {</span>
|
|
10109
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10110
|
+
<span class="cstat-no" title="statement not covered" > if (!(logic instanceof Logic)) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
10111
|
+
const result = <span class="cstat-no" title="statement not covered" >logic.toEmbeddedTSFile();</span>
|
|
10112
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10113
|
+
<span class="cstat-no" title="statement not covered" > logic.sourceMap = result.sourceMap;</span>
|
|
10114
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, logic);</span>
|
|
10115
|
+
} catch (err) {}
|
|
10116
|
+
});
|
|
10243
10117
|
|
|
10244
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10245
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10246
|
-
|
|
10118
|
+
(<span class="cstat-no" title="statement not covered" >module as App)?.authLogicsForCallInterface?.forEach?.(<span class="fstat-no" title="function not covered" >(l</span>ogic) => {</span>
|
|
10119
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10120
|
+
<span class="cstat-no" title="statement not covered" > if (!(logic instanceof Logic)) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
10121
|
+
const result = <span class="cstat-no" title="statement not covered" >logic.toEmbeddedTSFile();</span>
|
|
10122
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10123
|
+
<span class="cstat-no" title="statement not covered" > logic.sourceMap = result.sourceMap;</span>
|
|
10124
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, logic);</span>
|
|
10125
|
+
} catch (err) {}
|
|
10126
|
+
});
|
|
10247
10127
|
|
|
10248
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10249
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10250
|
-
|
|
10128
|
+
<span class="cstat-no" title="statement not covered" > module.processes?.forEach(<span class="fstat-no" title="function not covered" >(p</span>rocess) => {</span>
|
|
10129
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10130
|
+
const result = <span class="cstat-no" title="statement not covered" >process.toEmbeddedTSFile();</span>
|
|
10131
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10132
|
+
<span class="cstat-no" title="statement not covered" > process.sourceMap = result.sourceMap;</span>
|
|
10133
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, process);</span>
|
|
10134
|
+
} catch (err) {}
|
|
10135
|
+
});
|
|
10136
|
+
|
|
10137
|
+
<span class="cstat-no" title="statement not covered" > if (module instanceof Connector) {</span>
|
|
10138
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10139
|
+
<span class="cstat-no" title="statement not covered" > module.triggerLaunchers?.forEach(<span class="fstat-no" title="function not covered" >(l</span>auncher) => {</span>
|
|
10140
|
+
const result = <span class="cstat-no" title="statement not covered" >launcher.toEmbeddedTSFile();</span>
|
|
10141
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10142
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10143
|
+
<span class="cstat-no" title="statement not covered" > launcher.sourceMap = result.sourceMap;</span>
|
|
10144
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, launcher);</span>
|
|
10145
|
+
});
|
|
10146
|
+
<span class="cstat-no" title="statement not covered" > module.namespaces?.forEach?.(<span class="fstat-no" title="function not covered" >(n</span>amespace) => {</span>
|
|
10147
|
+
<span class="cstat-no" title="statement not covered" > namespace.logics.forEach(<span class="fstat-no" title="function not covered" >(l</span>ogic) => {</span>
|
|
10148
|
+
const result = <span class="cstat-no" title="statement not covered" >logic.toEmbeddedTSFile();</span>
|
|
10149
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10150
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10151
|
+
<span class="cstat-no" title="statement not covered" > logic.sourceMap = result.sourceMap;</span>
|
|
10152
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, logic);</span>
|
|
10153
|
+
});
|
|
10154
|
+
})
|
|
10155
|
+
<span class="cstat-no" title="statement not covered" > module?.authLogicsForCallInterface?.forEach?.(<span class="fstat-no" title="function not covered" >(l</span>ogic) => {</span>
|
|
10156
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10157
|
+
<span class="cstat-no" title="statement not covered" > if (!(logic instanceof Logic)) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
10158
|
+
const result = <span class="cstat-no" title="statement not covered" >logic.toEmbeddedTSFile();</span>
|
|
10159
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10160
|
+
<span class="cstat-no" title="statement not covered" > logic.sourceMap = result.sourceMap;</span>
|
|
10161
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, logic);</span>
|
|
10162
|
+
} catch (err) {}
|
|
10163
|
+
});
|
|
10164
|
+
} catch (error) {
|
|
10165
|
+
<span class="cstat-no" title="statement not covered" > console.error(error);</span>
|
|
10251
10166
|
}
|
|
10252
|
-
} else {
|
|
10253
|
-
<span class="cstat-no" title="statement not covered" > yield* getTsFiles(concat(frontends, 'logics' as any), 'frontend_logic');</span>
|
|
10254
10167
|
}
|
|
10255
10168
|
|
|
10256
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10257
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10258
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10259
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10260
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10261
|
-
|
|
10262
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10263
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10264
|
-
|
|
10265
|
-
|
|
10266
|
-
<span class="cstat-no" title="statement not covered" > yield* getTsFiles(triggerLaunchers, 'triggerLauncher');</span>
|
|
10267
|
-
<span class="cstat-no" title="statement not covered" > yield* getTsFiles(authLogicsForCallInterface, 'authLogicForCallInterface');</span>
|
|
10268
|
-
<span class="cstat-no" title="statement not covered" > yield* getTsFiles(concat(namespaces, 'logics'), 'namespaces_logic');</span>
|
|
10169
|
+
<span class="cstat-no" title="statement not covered" > if (module instanceof App) {</span>
|
|
10170
|
+
<span class="cstat-no" title="statement not covered" > module?.roles?.forEach(<span class="fstat-no" title="function not covered" >(r</span>ole) => {</span>
|
|
10171
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10172
|
+
const result = <span class="cstat-no" title="statement not covered" >role.toEmbeddedTSFile();</span>
|
|
10173
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10174
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10175
|
+
<span class="cstat-no" title="statement not covered" > role.sourceMap = result.sourceMap;</span>
|
|
10176
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, role);</span>
|
|
10177
|
+
} catch (err) {}
|
|
10178
|
+
});
|
|
10269
10179
|
}
|
|
10270
10180
|
|
|
10271
10181
|
<span class="cstat-no" title="statement not covered" > if (module instanceof App) {</span>
|
|
10272
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10273
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10274
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10182
|
+
<span class="cstat-no" title="statement not covered" > module.connections?.forEach?.(<span class="fstat-no" title="function not covered" >(c</span>onnection) => {</span>
|
|
10183
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10184
|
+
const result = <span class="cstat-no" title="statement not covered" >connection.toEmbeddedTSFile();</span>
|
|
10185
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10186
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10187
|
+
<span class="cstat-no" title="statement not covered" > connection.sourceMap = result.sourceMap;</span>
|
|
10188
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, connection);</span>
|
|
10189
|
+
} catch (err) {}
|
|
10190
|
+
});
|
|
10191
|
+
<span class="cstat-no" title="statement not covered" > module.triggerLaunchers?.forEach?.(<span class="fstat-no" title="function not covered" >(t</span>riggerLauncher) => {</span>
|
|
10192
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10193
|
+
const result = <span class="cstat-no" title="statement not covered" >triggerLauncher.toEmbeddedTSFile();</span>
|
|
10194
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10195
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10196
|
+
<span class="cstat-no" title="statement not covered" > triggerLauncher.sourceMap = result.sourceMap;</span>
|
|
10197
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, triggerLauncher);</span>
|
|
10198
|
+
} catch (err) {}
|
|
10199
|
+
});
|
|
10275
10200
|
}
|
|
10276
10201
|
|
|
10277
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10278
|
-
<span class="cstat-no" title="statement not covered" > if (
|
|
10279
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10202
|
+
<span class="cstat-no" title="statement not covered" > module.configuration?.groups?.forEach(<span class="fstat-no" title="function not covered" >(_</span>group) => {</span>
|
|
10203
|
+
<span class="cstat-no" title="statement not covered" > if (_group.name === 'custom') {</span>
|
|
10204
|
+
<span class="cstat-no" title="statement not covered" > _group.properties.forEach(<span class="fstat-no" title="function not covered" >(_</span>property) => {</span>
|
|
10205
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10206
|
+
const result = <span class="cstat-no" title="statement not covered" >_property.toEmbeddedTSFile();</span>
|
|
10207
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10208
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10209
|
+
<span class="cstat-no" title="statement not covered" > _property.sourceMap = result.sourceMap;</span>
|
|
10210
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, _property);</span>
|
|
10211
|
+
} catch (err) {}
|
|
10212
|
+
});
|
|
10280
10213
|
}
|
|
10281
|
-
}
|
|
10214
|
+
});
|
|
10215
|
+
}
|
|
10282
10216
|
|
|
10283
|
-
<span class="
|
|
10217
|
+
<span class="fstat-no" title="function not covered" > view2TSFile(</span>viewsChildren: View[], results: Array<ReturnType<Structure['toEmbeddedTSFile']>>) {
|
|
10218
|
+
// 如果有子页面
|
|
10219
|
+
<span class="cstat-no" title="statement not covered" > if (viewsChildren && viewsChildren.length) {</span>
|
|
10220
|
+
<span class="cstat-no" title="statement not covered" > viewsChildren.forEach(<span class="fstat-no" title="function not covered" >(v</span>iew) => {</span>
|
|
10221
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10222
|
+
const result = <span class="cstat-no" title="statement not covered" >view.toEmbeddedTSFile();</span>
|
|
10223
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10224
|
+
<span class="cstat-no" title="statement not covered" > view.sourceMap = result.sourceMap;</span>
|
|
10225
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, view);</span>
|
|
10226
|
+
<span class="cstat-no" title="statement not covered" > if (view.children.length) {</span>
|
|
10227
|
+
<span class="cstat-no" title="statement not covered" > this.view2TSFile(view.children, results);</span>
|
|
10228
|
+
}
|
|
10229
|
+
} catch (err) {}
|
|
10230
|
+
});
|
|
10231
|
+
}
|
|
10284
10232
|
}
|
|
10285
10233
|
|
|
10286
10234
|
<span class="fstat-no" title="function not covered" > async </span>openApp(app: App) {
|
|
10287
10235
|
<span class="cstat-no" title="statement not covered" > console.time('生成 TS 文件');</span>
|
|
10288
|
-
const
|
|
10289
|
-
|
|
10236
|
+
const results: Array<ReturnType<Structure['toEmbeddedTSFile']>> = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
10237
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10238
|
+
// app的创建内容
|
|
10239
|
+
<span class="cstat-no" title="statement not covered" > this.contentToFile(app, results);</span>
|
|
10240
|
+
// 其他模块的创建内容
|
|
10241
|
+
<span class="cstat-no" title="statement not covered" > app.integration?.connectors?.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >this.contentToFile(item, results))</span>;</span>
|
|
10242
|
+
<span class="cstat-no" title="statement not covered" > app.dependencies.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >this.contentToFile(item, results))</span>;</span>
|
|
10243
|
+
<span class="cstat-no" title="statement not covered" > app.interfaceDependencies.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >this.contentToFile(item, results))</span>;</span>
|
|
10244
|
+
} catch (err) {
|
|
10245
|
+
<span class="cstat-no" title="statement not covered" > console.log(err);</span>
|
|
10246
|
+
}
|
|
10247
|
+
|
|
10290
10248
|
const files = <span class="cstat-no" title="statement not covered" >results.map(<span class="fstat-no" title="function not covered" >(r</span>esult) => (<span class="cstat-no" title="statement not covered" >{</span></span>
|
|
10291
10249
|
file: result.filePath,
|
|
10292
10250
|
fileContent: result.code,
|
|
10293
10251
|
}));
|
|
10294
|
-
|
|
10295
10252
|
<span class="cstat-no" title="statement not covered" > await this.writeFiles(files);</span>
|
|
10296
10253
|
<span class="cstat-no" title="statement not covered" > this._debugInFileStorage(app, files);</span>
|
|
10297
10254
|
// 修改名称回调
|
|
10298
|
-
<span class="cstat-no" title="statement not covered" > registerCommand('tsRename.change', <span class="fstat-no" title="function not covered" >(v</span>alue: boolean, callback: Function
|
|
10299
|
-
<span class="cstat-no" title="statement not covered" > callback(value
|
|
10255
|
+
<span class="cstat-no" title="statement not covered" > registerCommand('tsRename.change', <span class="fstat-no" title="function not covered" >(v</span>alue: boolean, callback: Function) => {</span>
|
|
10256
|
+
<span class="cstat-no" title="statement not covered" > callback(value);</span>
|
|
10300
10257
|
});
|
|
10301
10258
|
// 删除回调
|
|
10302
10259
|
<span class="cstat-no" title="statement not covered" > registerCommand('tsDelete.change', <span class="fstat-no" title="function not covered" >(c</span>allback: Function) => {</span>
|
|
10303
10260
|
<span class="cstat-no" title="statement not covered" > callback();</span>
|
|
10304
10261
|
});
|
|
10305
10262
|
<span class="cstat-no" title="statement not covered" > console.timeEnd('生成 TS 文件');</span>
|
|
10306
|
-
|
|
10307
|
-
function* <span class="fstat-no" title="function not covered" >getAllTsFiles(</span>) {
|
|
10308
|
-
const files = <span class="cstat-no" title="statement not covered" >yield* self.contentToFile(app);</span>
|
|
10309
|
-
const otherModules = <span class="cstat-no" title="statement not covered" >[</span>
|
|
10310
|
-
...app.integration?.connectors ?? [],
|
|
10311
|
-
...app.dependencies ?? [],
|
|
10312
|
-
...app.interfaceDependencies ?? [],
|
|
10313
|
-
];
|
|
10314
|
-
|
|
10315
|
-
<span class="cstat-no" title="statement not covered" > for (const item of otherModules) {</span>
|
|
10316
|
-
<span class="cstat-no" title="statement not covered" > files.push(...yield* self.contentToFile(item));</span>
|
|
10317
|
-
}
|
|
10318
|
-
|
|
10319
|
-
<span class="cstat-no" title="statement not covered" > return files;</span>
|
|
10320
|
-
}
|
|
10321
10263
|
}
|
|
10322
10264
|
|
|
10323
10265
|
<span class="fstat-no" title="function not covered" > async </span>refreshApp(app: App) {
|
|
@@ -10348,19 +10290,13 @@ class NaslServer {
|
|
|
10348
10290
|
<span class="cstat-no" title="statement not covered" > __naslStdlibFileCacheMap.set(options.file, options);</span>
|
|
10349
10291
|
}
|
|
10350
10292
|
|
|
10351
|
-
/**
|
|
10293
|
+
/** u
|
|
10352
10294
|
* 只新增文件
|
|
10353
10295
|
* @param {*} files
|
|
10354
10296
|
*/
|
|
10355
10297
|
<span class="fstat-no" title="function not covered" > writeFiles(</span>files: Array<tsProtocol.OpenRequestArgs>) {
|
|
10356
10298
|
<span class="cstat-no" title="statement not covered" > files.forEach(<span class="fstat-no" title="function not covered" >({</span> file, fileContent }) => <span class="cstat-no" title="statement not covered" >this.tsFiles.set(file, fileContent))</span>;</span>
|
|
10357
|
-
|
|
10358
|
-
file: key,
|
|
10359
|
-
fileContent: value,
|
|
10360
|
-
}));
|
|
10361
|
-
// const newFiles = require('/Users/sufangzhou/dev/neteast/lcap-ide/packages/nasl/tmp/files-original.json');
|
|
10362
|
-
// debugger;
|
|
10363
|
-
<span class="cstat-no" title="statement not covered" > return this.messager.requestCommand('writeFiles', noRepeatFiles);</span>
|
|
10299
|
+
<span class="cstat-no" title="statement not covered" > return this.messager.requestCommand('writeFiles', files);</span>
|
|
10364
10300
|
}
|
|
10365
10301
|
|
|
10366
10302
|
/**
|
|
@@ -10708,29 +10644,26 @@ class NaslServer {
|
|
|
10708
10644
|
<span class="cstat-no" title="statement not covered" > node.tsErrorDetail = tsErrorDetail;</span>
|
|
10709
10645
|
}
|
|
10710
10646
|
|
|
10711
|
-
|
|
10647
|
+
/**
|
|
10648
|
+
* 处理诊断结果
|
|
10649
|
+
* @param records 结果
|
|
10650
|
+
* @returns 过滤或者转换后的诊断结果
|
|
10651
|
+
*/
|
|
10652
|
+
@withQueueExecute('diagnostic')
|
|
10653
|
+
<span class="fstat-no" title="function not covered" > async </span>_resolveDiagnosticRecords(records: Array<DiagnosticRecord>) {
|
|
10712
10654
|
// 热更新类型标注
|
|
10713
10655
|
<span class="cstat-no" title="statement not covered" > if (records.length) {</span>
|
|
10714
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10656
|
+
<span class="cstat-no" title="statement not covered" > await this.IncrementalAnnotationJSON(records);</span>
|
|
10715
10657
|
}
|
|
10658
|
+
<span class="cstat-no" title="statement not covered" > await Promise.all(</span>
|
|
10659
|
+
records.map(<span class="fstat-no" title="function not covered" >async </span>(record) => {
|
|
10660
|
+
const {node} = <span class="cstat-no" title="statement not covered" >record;</span>
|
|
10661
|
+
<span class="cstat-no" title="statement not covered" > if (!node) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
10716
10662
|
|
|
10717
|
-
|
|
10718
|
-
|
|
10719
|
-
<span class="cstat-no" title="statement not covered" > console.time('处理诊断数据');</span>
|
|
10720
|
-
|
|
10721
|
-
<span class="cstat-no" title="statement not covered" > yield* utils.wrapForEachToGenerator(records, function* <span class="fstat-no" title="function not covered" >resolveRecord(</span>record) {</span>
|
|
10722
|
-
<span class="cstat-no" title="statement not covered" > if (!record || !record.node) {</span>
|
|
10723
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
10724
|
-
}
|
|
10725
|
-
|
|
10726
|
-
const { node } = <span class="cstat-no" title="statement not covered" >record;</span>
|
|
10727
|
-
|
|
10728
|
-
// 先获取原来的节点先清除一下之前有异常的节点,下面重新赋值
|
|
10729
|
-
const oldRecord = <span class="cstat-no" title="statement not covered" >self.diagnosticManager.getRecord?.(record.id);</span>
|
|
10663
|
+
// 先获取原来的节点先清除一下之前有异常的节点,下面重新赋值
|
|
10664
|
+
const oldRecord = <span class="cstat-no" title="statement not covered" >this.diagnosticManager.getRecord?.(record.id);</span>
|
|
10730
10665
|
|
|
10731
|
-
|
|
10732
|
-
<span class="cstat-no" title="statement not covered" > if (oldRecord) {</span>
|
|
10733
|
-
<span class="cstat-no" title="statement not covered" > yield* utils.wrapForEachToGenerator(oldRecord.semanticDiagnostics, <span class="fstat-no" title="function not covered" >(i</span>tem) => {</span>
|
|
10666
|
+
<span class="cstat-no" title="statement not covered" > oldRecord?.semanticDiagnostics.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) => {</span>
|
|
10734
10667
|
<span class="cstat-no" title="statement not covered" > if (item.node) {</span>
|
|
10735
10668
|
<span class="cstat-no" title="statement not covered" > delete item.node.tsErrorDetail;</span>
|
|
10736
10669
|
// 如果logic中有报错就把标识置为true
|
|
@@ -10740,7 +10673,8 @@ class NaslServer {
|
|
|
10740
10673
|
}
|
|
10741
10674
|
});
|
|
10742
10675
|
|
|
10743
|
-
|
|
10676
|
+
// 清空一些状态
|
|
10677
|
+
<span class="cstat-no" title="statement not covered" > oldRecord?.suggestionDiagnostics.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) => {</span>
|
|
10744
10678
|
<span class="cstat-no" title="statement not covered" > if (item.node) {</span>
|
|
10745
10679
|
<span class="cstat-no" title="statement not covered" > delete item.node.tsErrorDetail;</span>
|
|
10746
10680
|
<span class="cstat-no" title="statement not covered" > if (item.node && item.node instanceof Logic) {</span>
|
|
@@ -10748,172 +10682,145 @@ class NaslServer {
|
|
|
10748
10682
|
}
|
|
10749
10683
|
}
|
|
10750
10684
|
});
|
|
10751
|
-
}
|
|
10752
10685
|
|
|
10753
|
-
|
|
10754
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10755
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10756
|
-
|
|
10686
|
+
// 语义诊断
|
|
10687
|
+
<span class="cstat-no" title="statement not covered" > if (isChangeInterface) {</span>
|
|
10688
|
+
<span class="cstat-no" title="statement not covered" > this.existStructureFix(record.semanticDiagnostics, record.node as FileNode, this);</span>
|
|
10689
|
+
}
|
|
10757
10690
|
|
|
10758
|
-
|
|
10759
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10760
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10761
|
-
|
|
10762
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10763
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10764
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10691
|
+
// 单独处理 oql 语义错误提示
|
|
10692
|
+
<span class="cstat-no" title="statement not covered" > if (record.node instanceof Logic) {</span>
|
|
10693
|
+
<span class="cstat-no" title="statement not covered" > record?.syntaxDiagnostics.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) => {</span>
|
|
10694
|
+
const minRange = <span class="cstat-no" title="statement not covered" >this._findMinRange(item as unknown as tsProtocol.DiagnosticWithFileName, record.node as FileNode);</span>
|
|
10695
|
+
<span class="cstat-no" title="statement not covered" > if (minRange?.node instanceof OqlQueryComponent) {</span>
|
|
10696
|
+
<span class="cstat-no" title="statement not covered" > if (item.text === 'Invalid character.') {</span>
|
|
10697
|
+
<span class="cstat-no" title="statement not covered" > record.semanticDiagnostics.push(item);</span>
|
|
10698
|
+
}
|
|
10765
10699
|
}
|
|
10766
|
-
}
|
|
10767
|
-
}
|
|
10768
|
-
}
|
|
10769
|
-
|
|
10770
|
-
// 记录结构体数据
|
|
10771
|
-
<span class="cstat-no" title="statement not covered" > yield* utils.wrapForEachToGenerator(record.semanticDiagnostics, <span class="fstat-no" title="function not covered" >(d</span>iag) => {</span>
|
|
10772
|
-
<span class="cstat-no" title="statement not covered" > checkAStructure_(diag.text);</span>
|
|
10773
|
-
});
|
|
10700
|
+
});
|
|
10701
|
+
}
|
|
10774
10702
|
|
|
10775
|
-
|
|
10776
|
-
|
|
10777
|
-
|
|
10778
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10779
|
-
|
|
10780
|
-
|
|
10781
|
-
|
|
10782
|
-
|
|
10783
|
-
|
|
10784
|
-
|
|
10785
|
-
|
|
10786
|
-
|
|
10787
|
-
|
|
10788
|
-
|
|
10789
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10790
|
-
yield*
|
|
10791
|
-
utils.wrapMapToGenerator(record.semanticDiagnostics, <span class="fstat-no" title="function not covered" >(d</span>iagnostic) => {
|
|
10792
|
-
// 错误降级如果属于草稿态的就降级
|
|
10793
|
-
<span class="cstat-no" title="statement not covered" > if (diagnostic?.node) {</span>
|
|
10794
|
-
let currentNode = <span class="cstat-no" title="statement not covered" >diagnostic.node;</span>
|
|
10795
|
-
<span class="cstat-no" title="statement not covered" > if (diagnostic.severity === 'warning') {</span>
|
|
10796
|
-
<span class="cstat-no" title="statement not covered" > record.suggestionDiagnostics.push(diagnostic);</span>
|
|
10797
|
-
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
10798
|
-
} <span class="cstat-no" title="statement not covered" >if (currentNode.concept === 'OqlQueryComponent') {</span>
|
|
10799
|
-
// OQL别名错误降级为警告
|
|
10800
|
-
<span class="cstat-no" title="statement not covered" > if (diagnostic.originalDiagnostic && diagnostic.originalDiagnostic?.text.includes('__OQL_ALIAS_WARNING__')) {</span>
|
|
10801
|
-
// 重置 图标和错误等级
|
|
10802
|
-
<span class="cstat-no" title="statement not covered" > diagnostic.severity = 'warning';</span>
|
|
10803
|
-
<span class="cstat-no" title="statement not covered" > if (diagnostic.node?.tsErrorDetail) {</span>
|
|
10804
|
-
// 重置组件节点上的错误信息
|
|
10805
|
-
<span class="cstat-no" title="statement not covered" > diagnostic.node.tsErrorDetail.severity = 'warning';</span>
|
|
10806
|
-
}
|
|
10703
|
+
// 记录结构体数据
|
|
10704
|
+
<span class="cstat-no" title="statement not covered" > record.semanticDiagnostics.forEach(<span class="fstat-no" title="function not covered" >(d</span>iag) => <span class="cstat-no" title="statement not covered" >checkAStructure_(diag.text))</span>;</span>
|
|
10705
|
+
|
|
10706
|
+
<span class="cstat-no" title="statement not covered" > record.semanticDiagnostics = record.semanticDiagnostics</span>
|
|
10707
|
+
.map(<span class="fstat-no" title="function not covered" >(d</span>iag) => <span class="cstat-no" title="statement not covered" >this._resolveDiagnostic(diag as unknown as tsProtocol.DiagnosticWithFileName, record.node as FileNode, record))</span>
|
|
10708
|
+
.filter(<span class="fstat-no" title="function not covered" >(d</span>iag) => <span class="cstat-no" title="statement not covered" >!!diag)</span>;
|
|
10709
|
+
<span class="cstat-no" title="statement not covered" > record.semanticDiagnostics.push(...(await this._attachDiagnostics(node)));</span>
|
|
10710
|
+
|
|
10711
|
+
// 报错降级逻辑
|
|
10712
|
+
<span class="cstat-no" title="statement not covered" > record.semanticDiagnostics = record.semanticDiagnostics</span>
|
|
10713
|
+
.map(<span class="fstat-no" title="function not covered" >(d</span>iagnostic) => {
|
|
10714
|
+
// 错误降级如果属于草稿态的就降级
|
|
10715
|
+
<span class="cstat-no" title="statement not covered" > if (diagnostic?.node) {</span>
|
|
10716
|
+
let currentNode = <span class="cstat-no" title="statement not covered" >diagnostic.node;</span>
|
|
10717
|
+
<span class="cstat-no" title="statement not covered" > if (diagnostic.severity === 'warning') {</span>
|
|
10807
10718
|
<span class="cstat-no" title="statement not covered" > record.suggestionDiagnostics.push(diagnostic);</span>
|
|
10808
10719
|
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
10720
|
+
} <span class="cstat-no" title="statement not covered" >if (currentNode.concept === 'OqlQueryComponent') {</span>
|
|
10721
|
+
// OQL别名错误降级为警告
|
|
10722
|
+
<span class="cstat-no" title="statement not covered" > if (diagnostic.originalDiagnostic && diagnostic.originalDiagnostic?.text.includes('__OQL_ALIAS_WARNING__')) {</span>
|
|
10723
|
+
// 重置 图标和错误等级
|
|
10724
|
+
<span class="cstat-no" title="statement not covered" > diagnostic.severity = 'warning';</span>
|
|
10725
|
+
<span class="cstat-no" title="statement not covered" > if (diagnostic.node?.tsErrorDetail) {</span>
|
|
10726
|
+
// 重置组件节点上的错误信息
|
|
10727
|
+
<span class="cstat-no" title="statement not covered" > diagnostic.node.tsErrorDetail.severity = 'warning';</span>
|
|
10728
|
+
}
|
|
10729
|
+
<span class="cstat-no" title="statement not covered" > record.suggestionDiagnostics.push(diagnostic);</span>
|
|
10730
|
+
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
10731
|
+
}
|
|
10809
10732
|
}
|
|
10810
|
-
|
|
10811
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10812
|
-
|
|
10813
|
-
|
|
10814
|
-
|
|
10815
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10816
|
-
|
|
10817
|
-
|
|
10818
|
-
|
|
10733
|
+
<span class="cstat-no" title="statement not covered" > while (currentNode && currentNode?.parentNode?.concept !== 'App') {</span>
|
|
10734
|
+
<span class="cstat-no" title="statement not covered" > if (currentNode.parentKey?.toLowerCase()?.includes('playground')) {</span>
|
|
10735
|
+
// 草稿区降级
|
|
10736
|
+
// 重置 图标和错误等级
|
|
10737
|
+
<span class="cstat-no" title="statement not covered" > diagnostic.severity = 'warning';</span>
|
|
10738
|
+
<span class="cstat-no" title="statement not covered" > if (diagnostic.node?.tsErrorDetail) {</span>
|
|
10739
|
+
// 重置组件节点上的错误信息
|
|
10740
|
+
<span class="cstat-no" title="statement not covered" > diagnostic.node.tsErrorDetail.severity = 'warning';</span>
|
|
10741
|
+
}
|
|
10742
|
+
<span class="cstat-no" title="statement not covered" > record.suggestionDiagnostics.push(diagnostic);</span>
|
|
10743
|
+
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
10819
10744
|
}
|
|
10820
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10821
|
-
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
10745
|
+
<span class="cstat-no" title="statement not covered" > currentNode = currentNode.parentNode;</span>
|
|
10822
10746
|
}
|
|
10823
|
-
<span class="cstat-no" title="statement not covered" > currentNode = currentNode.parentNode;</span>
|
|
10824
|
-
}
|
|
10825
10747
|
|
|
10826
|
-
|
|
10827
|
-
|
|
10828
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10829
|
-
|
|
10830
|
-
}
|
|
10831
|
-
}
|
|
10832
|
-
<span class="cstat-no" title="statement not covered" > return diagnostic;</span>
|
|
10833
|
-
})
|
|
10834
|
-
)
|
|
10835
|
-
.filter(<span class="fstat-no" title="function not covered" >(d</span>iag) => <span class="cstat-no" title="statement not covered" >!!diag)</span>;
|
|
10836
|
-
|
|
10837
|
-
// 处理后的警告异常提示信息
|
|
10838
|
-
<span class="cstat-no" title="statement not covered" > record.suggestionDiagnostics = (</span>
|
|
10839
|
-
yield*
|
|
10840
|
-
utils.wrapMapToGenerator(record.suggestionDiagnostics, function * <span class="fstat-no" title="function not covered" >resolveSuggestionDiagnostic(</span>diag) {
|
|
10841
|
-
// 上面错误降级下来的
|
|
10842
|
-
<span class="cstat-no" title="statement not covered" > if (diag?.node) {</span>
|
|
10843
|
-
<span class="cstat-no" title="statement not covered" > return diag;</span>
|
|
10844
|
-
// 一些已知警告的单独处理
|
|
10845
|
-
} <span class="cstat-no" title="statement not covered" >if (</span>
|
|
10846
|
-
[
|
|
10847
|
-
`'__LogicEmpty' is declared but its value is never read.`,
|
|
10848
|
-
`'__destinationEmpty__' is declared but its value is never read.`,
|
|
10849
|
-
`'__devConfigValueEmpty' is declared but its value is never read.`,
|
|
10850
|
-
`'__onlineConfigValueEmpty' is declared but its value is never read.`,
|
|
10851
|
-
`'__UpdateNoProperty__' is declared but its value is never read.`,
|
|
10852
|
-
].includes(diag.text)
|
|
10853
|
-
) {
|
|
10854
|
-
<span class="cstat-no" title="statement not covered" > return yield* self._resolveDiagnosticWithGenerator(diag as unknown as tsProtocol.DiagnosticWithFileName, record.node as FileNode, record);</span>
|
|
10855
|
-
} <span class="cstat-no" title="statement not covered" >if (diag.text.includes(` is declared but its value is never read.`)) {</span>
|
|
10856
|
-
// 局部变量和输入变量未使用的警告
|
|
10857
|
-
const fromModule = <span class="cstat-no" title="statement not covered" >record.node.parentNode.concept === 'Module';</span>
|
|
10858
|
-
const fromConnector = <span class="cstat-no" title="statement not covered" >record.node.parentNode.concept === 'Connector';</span>
|
|
10859
|
-
<span class="cstat-no" title="statement not covered" > if ((record.node.concept === 'View' || record.node.concept === 'Logic') && !(fromModule || fromConnector)) {</span>
|
|
10860
|
-
/**
|
|
10861
|
-
* javalogic不用提示
|
|
10862
|
-
*/
|
|
10863
|
-
<span class="cstat-no" title="statement not covered" > if (record.node.concept === 'Logic' && self._isJavalogic(record.node as Logic)) {</span>
|
|
10864
|
-
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
10748
|
+
// 没有降级的继续遍历,如果在logic中,logic本身需要有error状态
|
|
10749
|
+
// 如果logic中有报错就把标识置为true
|
|
10750
|
+
<span class="cstat-no" title="statement not covered" > if ((diagnostic.node as any)?.logic) {</span>
|
|
10751
|
+
(<span class="cstat-no" title="statement not covered" >diagnostic.node as any).logic.haveError = true;</span>
|
|
10865
10752
|
}
|
|
10866
|
-
|
|
10867
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10753
|
+
}
|
|
10754
|
+
<span class="cstat-no" title="statement not covered" > return diagnostic;</span>
|
|
10755
|
+
})
|
|
10756
|
+
.filter(<span class="fstat-no" title="function not covered" >(d</span>iag) => <span class="cstat-no" title="statement not covered" >!!diag)</span>;
|
|
10757
|
+
|
|
10758
|
+
// 处理后的警告异常提示信息
|
|
10759
|
+
<span class="cstat-no" title="statement not covered" > record.suggestionDiagnostics = record.suggestionDiagnostics</span>
|
|
10760
|
+
.map(<span class="fstat-no" title="function not covered" >(d</span>iag) => {
|
|
10761
|
+
// 上面错误降级下来的
|
|
10762
|
+
<span class="cstat-no" title="statement not covered" > if (diag?.node) {</span>
|
|
10763
|
+
<span class="cstat-no" title="statement not covered" > return diag;</span>
|
|
10764
|
+
// 一些已知警告的单独处理
|
|
10765
|
+
} <span class="cstat-no" title="statement not covered" >if (</span>
|
|
10766
|
+
[
|
|
10767
|
+
`'__LogicEmpty' is declared but its value is never read.`,
|
|
10768
|
+
`'__destinationEmpty__' is declared but its value is never read.`,
|
|
10769
|
+
`'__devConfigValueEmpty' is declared but its value is never read.`,
|
|
10770
|
+
`'__onlineConfigValueEmpty' is declared but its value is never read.`,
|
|
10771
|
+
`'__UpdateNoProperty__' is declared but its value is never read.`,
|
|
10772
|
+
].includes(diag.text)
|
|
10773
|
+
) {
|
|
10774
|
+
<span class="cstat-no" title="statement not covered" > return this._resolveDiagnostic(diag as unknown as tsProtocol.DiagnosticWithFileName, record.node as FileNode, record);</span>
|
|
10775
|
+
} <span class="cstat-no" title="statement not covered" >if (diag.text.includes(` is declared but its value is never read.`)) {</span>
|
|
10776
|
+
// 局部变量和输入变量未使用的警告
|
|
10777
|
+
const fromModule = <span class="cstat-no" title="statement not covered" >record.node.parentNode.concept === 'Module';</span>
|
|
10778
|
+
const fromConnector = <span class="cstat-no" title="statement not covered" >record.node.parentNode.concept === 'Connector';</span>
|
|
10779
|
+
<span class="cstat-no" title="statement not covered" > if ((record.node.concept === 'View' || record.node.concept === 'Logic') && !(fromModule || fromConnector)) {</span>
|
|
10868
10780
|
/**
|
|
10869
|
-
*
|
|
10870
|
-
* 而且不是foreach中
|
|
10871
|
-
* 而且不是事件逻辑的入参
|
|
10781
|
+
* javalogic不用提示
|
|
10872
10782
|
*/
|
|
10873
|
-
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
10874
|
-
|
|
10875
|
-
|
|
10876
|
-
|
|
10877
|
-
) {
|
|
10878
|
-
|
|
10879
|
-
|
|
10880
|
-
|
|
10881
|
-
|
|
10882
|
-
|
|
10883
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10884
|
-
|
|
10885
|
-
|
|
10886
|
-
|
|
10887
|
-
|
|
10888
|
-
|
|
10889
|
-
|
|
10890
|
-
|
|
10783
|
+
<span class="cstat-no" title="statement not covered" > if (record.node.concept === 'Logic' && this._isJavalogic(record.node as Logic)) {</span>
|
|
10784
|
+
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
10785
|
+
}
|
|
10786
|
+
const minRange = <span class="cstat-no" title="statement not covered" >this._findMinRange(diag as unknown as tsProtocol.DiagnosticWithFileName, record.node as FileNode);</span>
|
|
10787
|
+
<span class="cstat-no" title="statement not covered" > if (minRange) {</span>
|
|
10788
|
+
/**
|
|
10789
|
+
* 如果节点是入参类型
|
|
10790
|
+
* 而且不是foreach中
|
|
10791
|
+
* 而且不是事件逻辑的入参
|
|
10792
|
+
*/
|
|
10793
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
10794
|
+
minRange.node instanceof Param &&
|
|
10795
|
+
minRange.node.parentNode.concept !== 'ForEachStatement' &&
|
|
10796
|
+
!minRange.node.getAncestor('BindEvent')
|
|
10797
|
+
) {
|
|
10798
|
+
const diagnostic = <span class="cstat-no" title="statement not covered" >{</span>
|
|
10799
|
+
node: minRange.node,
|
|
10800
|
+
severity: 'warning',
|
|
10801
|
+
message: `未使用的输入参数${minRange.node.name}`,
|
|
10802
|
+
};
|
|
10803
|
+
<span class="cstat-no" title="statement not covered" > return diagnostic;</span>
|
|
10804
|
+
} <span class="cstat-no" title="statement not covered" >if (minRange.node instanceof Variable) {</span>
|
|
10805
|
+
const diagnostic = <span class="cstat-no" title="statement not covered" >{</span>
|
|
10806
|
+
node: minRange.node,
|
|
10807
|
+
severity: 'warning',
|
|
10808
|
+
message: `未使用的变量${minRange.node.name}`,
|
|
10809
|
+
};
|
|
10810
|
+
<span class="cstat-no" title="statement not covered" > return diagnostic;</span>
|
|
10811
|
+
}
|
|
10891
10812
|
}
|
|
10892
10813
|
}
|
|
10893
10814
|
}
|
|
10894
|
-
|
|
10895
|
-
|
|
10896
|
-
|
|
10897
|
-
)
|
|
10898
|
-
.filter(<span class="fstat-no" title="function not covered" >(d</span>iag) => <span class="cstat-no" title="statement not covered" >!!diag)</span>;
|
|
10899
|
-
|
|
10900
|
-
<span class="cstat-no" title="statement not covered" > record.suggestionDiagnostics.push(...yield* self._attachSuggestionDiagnosticsWithGenerator(node));</span>
|
|
10901
|
-
});
|
|
10902
|
-
|
|
10903
|
-
<span class="cstat-no" title="statement not covered" > console.timeEnd('处理诊断数据');</span>
|
|
10815
|
+
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
10816
|
+
})
|
|
10817
|
+
.filter(<span class="fstat-no" title="function not covered" >(d</span>iag) => <span class="cstat-no" title="statement not covered" >!!diag)</span>;
|
|
10904
10818
|
|
|
10819
|
+
<span class="cstat-no" title="statement not covered" > record.suggestionDiagnostics.push(...this._attachSuggestionDiagnostics(node));</span>
|
|
10820
|
+
})
|
|
10821
|
+
);
|
|
10905
10822
|
<span class="cstat-no" title="statement not covered" > return records;</span>
|
|
10906
10823
|
}
|
|
10907
|
-
|
|
10908
|
-
/**
|
|
10909
|
-
* 处理诊断结果
|
|
10910
|
-
* @param records 结果
|
|
10911
|
-
* @returns 过滤或者转换后的诊断结果
|
|
10912
|
-
*/
|
|
10913
|
-
@withQueueExecute('diagnostic')
|
|
10914
|
-
private <span class="fstat-no" title="function not covered" >_resolveDiagnosticRecords(</span>records: Array<DiagnosticRecord>) {
|
|
10915
|
-
<span class="cstat-no" title="statement not covered" > return utils.timeSlicingWithGenerator(this._resolveDiagnosticRecordsWithGenerator(records));</span>
|
|
10916
|
-
}
|
|
10917
10824
|
|
|
10918
10825
|
/**
|
|
10919
10826
|
* 判断是否是Javalogic
|
|
@@ -10932,7 +10839,7 @@ class NaslServer {
|
|
|
10932
10839
|
* @param fileNode 文件级别的节点
|
|
10933
10840
|
* @returns 诊断结果
|
|
10934
10841
|
*/
|
|
10935
|
-
|
|
10842
|
+
<span class="fstat-no" title="function not covered" > _attachSuggestionDiagnostics(</span>fileNode: BaseNode): Diagnostic[] {
|
|
10936
10843
|
const diagnostics: Diagnostic[] = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
10937
10844
|
<span class="cstat-no" title="statement not covered" > if (fileNode instanceof Logic || fileNode instanceof View) {</span>
|
|
10938
10845
|
<span class="cstat-no" title="statement not covered" > fileNode?.sourceMap.forEach(<span class="fstat-no" title="function not covered" >(v</span>alue, node) => {</span>
|
|
@@ -11294,53 +11201,31 @@ class NaslServer {
|
|
|
11294
11201
|
}
|
|
11295
11202
|
|
|
11296
11203
|
/** 是否被 触发器依赖, 如果存在,返回第一个触发器对应的名称 */
|
|
11297
|
-
<span class="fstat-no" title="function not covered" >
|
|
11204
|
+
<span class="fstat-no" title="function not covered" > async </span>isRefedByTriggerAndReturnFirstRef(fileNode: BaseNode): Promise<{
|
|
11298
11205
|
isRefedByTrigger: boolean;
|
|
11299
11206
|
fRefName: string;
|
|
11300
11207
|
}> {
|
|
11301
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11302
|
-
|
|
11303
|
-
|
|
11304
|
-
|
|
11305
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11306
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11307
|
-
|
|
11308
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11309
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11310
|
-
|
|
11311
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11312
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11313
|
-
}
|
|
11208
|
+
const refs = <span class="cstat-no" title="statement not covered" >await this._isHaveRef(fileNode);</span>
|
|
11209
|
+
const basePath = <span class="cstat-no" title="statement not covered" >TriggerLauncher.getEmbeddedFileBasePath(fileNode.rootNode as App);</span>
|
|
11210
|
+
let flag = <span class="cstat-no" title="statement not covered" >false;</span>
|
|
11211
|
+
let fRefName = <span class="cstat-no" title="statement not covered" >'';</span>
|
|
11212
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
11213
|
+
<span class="cstat-no" title="statement not covered" > for (const ref of refs) {</span>
|
|
11214
|
+
const { file } = <span class="cstat-no" title="statement not covered" >ref;</span>
|
|
11215
|
+
<span class="cstat-no" title="statement not covered" > if (file.startsWith(basePath)) {</span>
|
|
11216
|
+
<span class="cstat-no" title="statement not covered" > flag = true;</span>
|
|
11217
|
+
// file: /embedded/tttta/triggerLaunchers/订阅配置_asd.ts
|
|
11218
|
+
<span class="cstat-no" title="statement not covered" > fRefName = file.split(basePath)[1].split('.')[0];</span>
|
|
11219
|
+
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
11314
11220
|
}
|
|
11315
|
-
} catch (error) {
|
|
11316
|
-
<span class="cstat-no" title="statement not covered" > console.error(error, refs);</span>
|
|
11317
11221
|
}
|
|
11318
|
-
|
|
11319
|
-
|
|
11320
|
-
|
|
11321
|
-
|
|
11322
|
-
|
|
11323
|
-
|
|
11324
|
-
|
|
11325
|
-
// let flag = false;
|
|
11326
|
-
// let fRefName = '';
|
|
11327
|
-
// try {
|
|
11328
|
-
// for (const ref of refs) {
|
|
11329
|
-
// const { file } = ref;
|
|
11330
|
-
// if (file.startsWith(basePath)) {
|
|
11331
|
-
// flag = true;
|
|
11332
|
-
// // file: /embedded/tttta/triggerLaunchers/订阅配置_asd.ts
|
|
11333
|
-
// fRefName = file.split(basePath)[1].split('.')[0];
|
|
11334
|
-
// break;
|
|
11335
|
-
// }
|
|
11336
|
-
// }
|
|
11337
|
-
// } catch (error) {
|
|
11338
|
-
// console.error(error, refs);
|
|
11339
|
-
// }
|
|
11340
|
-
// return {
|
|
11341
|
-
// isRefedByTrigger: flag,
|
|
11342
|
-
// fRefName,
|
|
11343
|
-
// };
|
|
11222
|
+
} catch (error) {
|
|
11223
|
+
<span class="cstat-no" title="statement not covered" > console.error(error, refs);</span>
|
|
11224
|
+
}
|
|
11225
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
11226
|
+
isRefedByTrigger: flag,
|
|
11227
|
+
fRefName,
|
|
11228
|
+
};
|
|
11344
11229
|
}
|
|
11345
11230
|
|
|
11346
11231
|
/**
|
|
@@ -11371,18 +11256,15 @@ class NaslServer {
|
|
|
11371
11256
|
* @param fileNode 文件级别的节点
|
|
11372
11257
|
* @returns 诊断结果
|
|
11373
11258
|
*/
|
|
11374
|
-
|
|
11259
|
+
<span class="fstat-no" title="function not covered" > async </span>_attachDiagnostics(fileNode: BaseNode): Promise<Diagnostic[]> {
|
|
11375
11260
|
// 每次诊断前先清空这个Set
|
|
11376
11261
|
<span class="cstat-no" title="statement not covered" > this.logicSetWithComponentLogic = new Set<string>();</span>
|
|
11377
|
-
|
|
11378
|
-
const self = <span class="cstat-no" title="statement not covered" >this;</span>
|
|
11379
11262
|
const diagnostics: Diagnostic[] = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
11380
|
-
|
|
11381
11263
|
<span class="cstat-no" title="statement not covered" > if (fileNode instanceof View) {</span>
|
|
11382
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11264
|
+
<span class="cstat-no" title="statement not covered" > fileNode?.sourceMap.forEach(<span class="fstat-no" title="function not covered" >(v</span>alue, node) => {</span>
|
|
11383
11265
|
<span class="cstat-no" title="statement not covered" > if (node instanceof ViewElement && node.view === fileNode) {</span>
|
|
11384
11266
|
<span class="cstat-no" title="statement not covered" > if (node.tag) {</span>
|
|
11385
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11267
|
+
<span class="cstat-no" title="statement not covered" > node.bindAttrs.forEach(<span class="fstat-no" title="function not covered" >(b</span>indAttr) => {</span>
|
|
11386
11268
|
<span class="cstat-no" title="statement not covered" > if ((bindAttr.model || bindAttr.sync) && bindAttr.expression) {</span>
|
|
11387
11269
|
const bindExpression = <span class="cstat-no" title="statement not covered" >bindAttr.expression;</span>
|
|
11388
11270
|
let diagnostic;
|
|
@@ -11425,7 +11307,7 @@ class NaslServer {
|
|
|
11425
11307
|
<span class="cstat-no" title="statement not covered" > if (!node.typeAnnotation && !node.__TypeAnnotation) {</span>
|
|
11426
11308
|
const nodeTypeName = <span class="cstat-no" title="statement not covered" >node.concept === 'Return' ? '输出参数' : '局部变量';</span>
|
|
11427
11309
|
let msg;
|
|
11428
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11310
|
+
<span class="cstat-no" title="statement not covered" > fileNode.traverseChildren(<span class="fstat-no" title="function not covered" >(n</span>odeIn) => {</span>
|
|
11429
11311
|
<span class="cstat-no" title="statement not covered" > if (nodeIn && (nodeIn instanceof BatchAssignment || (nodeIn instanceof Assignment && nodeIn.left?.name))) {</span>
|
|
11430
11312
|
// 子页面内部逻辑过滤
|
|
11431
11313
|
<span class="cstat-no" title="statement not covered" > if (nodeIn.view !== fileNode) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
@@ -11482,23 +11364,9 @@ class NaslServer {
|
|
|
11482
11364
|
<span class="cstat-no" title="statement not covered" > node.tsErrorDetail = diagnostic;</span>
|
|
11483
11365
|
<span class="cstat-no" title="statement not covered" > diagnostics.push(diagnostic);</span>
|
|
11484
11366
|
}
|
|
11485
|
-
const fileSourceCode = <span class="cstat-no" title="statement not covered" >self.getNodeCode(fileNode, value);</span>
|
|
11486
|
-
<span class="cstat-no" title="statement not covered" > if (fileSourceCode.includes('|') && fileSourceCode.includes('.metadataTypes.')) {</span>
|
|
11487
|
-
const typeAnnotation = <span class="cstat-no" title="statement not covered" >node.typeAnnotation.toJSON()</span>
|
|
11488
|
-
<span class="cstat-no" title="statement not covered" > yield* self._treeMetadataType2CoreType(typeAnnotation, (node.rootNode as App))</span>
|
|
11489
|
-
const isDuplicate = <span class="cstat-no" title="statement not covered" >yield* self._isDuplicateCoreType(typeAnnotation)</span>
|
|
11490
|
-
<span class="cstat-no" title="statement not covered" > if (isDuplicate) {</span>
|
|
11491
|
-
const diagnostic = <span class="cstat-no" title="statement not covered" >{</span>
|
|
11492
|
-
node: node,
|
|
11493
|
-
severity: 'error',
|
|
11494
|
-
message: `变量 ${node.name} 类型定义包含相同的数据类型`,
|
|
11495
|
-
};
|
|
11496
|
-
<span class="cstat-no" title="statement not covered" > diagnostics.push(diagnostic);</span>
|
|
11497
|
-
}
|
|
11498
|
-
}
|
|
11499
11367
|
} else <span class="cstat-no" title="statement not covered" >if (node instanceof BindAttribute || node instanceof BindDirective || node instanceof BindStyle) {</span>
|
|
11500
11368
|
<span class="cstat-no" title="statement not covered" > if (Array.isArray(node.bindExpressions)) {</span>
|
|
11501
|
-
const exp = <span class="cstat-no" title="statement not covered" >node.bindExpressions.find(<span class="fstat-no" title="function not covered" >(b</span>indExpression) => <span class="cstat-no" title="statement not covered" >
|
|
11369
|
+
const exp = <span class="cstat-no" title="statement not covered" >node.bindExpressions.find(<span class="fstat-no" title="function not covered" >(b</span>indExpression) => <span class="cstat-no" title="statement not covered" >this.hasComponentLogics(bindExpression))</span>;</span>
|
|
11502
11370
|
<span class="cstat-no" title="statement not covered" > if (exp) {</span>
|
|
11503
11371
|
// const element: any = node.getAncestor('ViewElement');
|
|
11504
11372
|
// const api = config.allNodesAPI[element?.tag];
|
|
@@ -11521,7 +11389,7 @@ class NaslServer {
|
|
|
11521
11389
|
}
|
|
11522
11390
|
}
|
|
11523
11391
|
} else <span class="cstat-no" title="statement not covered" >if (node instanceof CallInterface) {</span>
|
|
11524
|
-
const isAuthInterface = <span class="cstat-no" title="statement not covered" >
|
|
11392
|
+
const isAuthInterface = <span class="cstat-no" title="statement not covered" >this.hasAuth(node);</span>
|
|
11525
11393
|
const interfaceName = <span class="cstat-no" title="statement not covered" >node.calleewholeKey.slice(node.calleewholeKey.lastIndexOf('.') + 1);</span>
|
|
11526
11394
|
<span class="cstat-no" title="statement not covered" > if (isAuthInterface) {</span>
|
|
11527
11395
|
const errorMsg = <span class="cstat-no" title="statement not covered" >`${interfaceName} 接口有鉴权方式,不支持在前端调用`;</span>
|
|
@@ -11547,16 +11415,15 @@ class NaslServer {
|
|
|
11547
11415
|
<span class="cstat-no" title="statement not covered" > node.tsErrorDetail = diagnostic;</span>
|
|
11548
11416
|
}
|
|
11549
11417
|
} else {
|
|
11550
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11418
|
+
<span class="cstat-no" title="statement not covered" > this.checkNodeError(node, diagnostics);</span>
|
|
11551
11419
|
}
|
|
11552
11420
|
});
|
|
11553
|
-
}
|
|
11554
|
-
else <span class="cstat-no" title="statement not covered" >if (fileNode instanceof DataSource) {</span>
|
|
11421
|
+
} else <span class="cstat-no" title="statement not covered" >if (fileNode instanceof DataSource) {</span>
|
|
11555
11422
|
const dataSourceGroup = (<span class="cstat-no" title="statement not covered" >fileNode.rootNode as App).configuration?.getGroup('dataSource');</span>
|
|
11556
11423
|
<span class="cstat-no" title="statement not covered" > if (dataSourceGroup) {</span>
|
|
11557
11424
|
const property = <span class="cstat-no" title="statement not covered" >dataSourceGroup.getProperty(fileNode.name);</span>
|
|
11558
11425
|
<span class="cstat-no" title="statement not covered" > if (property && property.values) {</span>
|
|
11559
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11426
|
+
<span class="cstat-no" title="statement not covered" > property.values.forEach(<span class="fstat-no" title="function not covered" >(p</span>ropertyValue) => {</span>
|
|
11560
11427
|
<span class="cstat-no" title="statement not covered" > if (!propertyValue.value && fileNode.name !== 'defaultDS') {</span>
|
|
11561
11428
|
const diagnostic = <span class="cstat-no" title="statement not covered" >{</span>
|
|
11562
11429
|
node: fileNode,
|
|
@@ -11624,7 +11491,7 @@ class NaslServer {
|
|
|
11624
11491
|
const rulesMap: any = <span class="cstat-no" title="statement not covered" >{};</span>
|
|
11625
11492
|
<span class="cstat-no" title="statement not covered" > if (Array.isArray(rules)) {</span>
|
|
11626
11493
|
<span class="cstat-no" title="statement not covered" > rules.forEach(<span class="fstat-no" title="function not covered" >(r</span>ule) => {</span>
|
|
11627
|
-
const match = <span class="cstat-no" title="statement not covered" >rule
|
|
11494
|
+
const match = <span class="cstat-no" title="statement not covered" >rule.match(/^([^()]+)\(([\d\-.]+)\)$/);</span>
|
|
11628
11495
|
<span class="cstat-no" title="statement not covered" > if (match) {</span>
|
|
11629
11496
|
const [, key, value] = <span class="cstat-no" title="statement not covered" >match;</span>
|
|
11630
11497
|
<span class="cstat-no" title="statement not covered" > rulesMap[key] = value;</span>
|
|
@@ -11852,9 +11719,8 @@ class NaslServer {
|
|
|
11852
11719
|
});
|
|
11853
11720
|
}
|
|
11854
11721
|
}
|
|
11855
|
-
|
|
11856
|
-
const { isRefedByTrigger, fRefName } = <span class="cstat-no" title="statement not covered" >
|
|
11857
|
-
|
|
11722
|
+
<span class="cstat-no" title="statement not covered" > if (fileNode instanceof Logic || fileNode instanceof OverriddenLogic) {</span>
|
|
11723
|
+
const { isRefedByTrigger, fRefName } = <span class="cstat-no" title="statement not covered" >await this.isRefedByTriggerAndReturnFirstRef(fileNode);</span>
|
|
11858
11724
|
<span class="cstat-no" title="statement not covered" > if (isRefedByTrigger && !this.isTriggerRule(fileNode)) {</span>
|
|
11859
11725
|
const diagnostic = <span class="cstat-no" title="statement not covered" >{</span>
|
|
11860
11726
|
node: fileNode,
|
|
@@ -11863,11 +11729,21 @@ class NaslServer {
|
|
|
11863
11729
|
};
|
|
11864
11730
|
<span class="cstat-no" title="statement not covered" > diagnostics.push(diagnostic);</span>
|
|
11865
11731
|
}
|
|
11866
|
-
|
|
11867
|
-
|
|
11732
|
+
<span class="cstat-no" title="statement not covered" > fileNode?.sourceMap.forEach(<span class="fstat-no" title="function not covered" >(v</span>alue, node) => {</span>
|
|
11733
|
+
// OQL支持返回复合类型数据了
|
|
11734
|
+
// SqlQueryComponent内部返回值类型,如果是嵌套的就需要报错
|
|
11735
|
+
// if ((node instanceof OqlQueryComponent || node instanceof SqlQueryComponent) && (node as SqlQueryComponent).getTypeBanError()) {
|
|
11736
|
+
// const diagnostic = {
|
|
11737
|
+
// node,
|
|
11738
|
+
// severity: 'error',
|
|
11739
|
+
// message: 'SQL查询:返回类型内部,不支持复杂类型。',
|
|
11740
|
+
// };
|
|
11741
|
+
// node.tsErrorDetail = diagnostic;
|
|
11742
|
+
// diagnostics.push(diagnostic);
|
|
11743
|
+
// }
|
|
11868
11744
|
<span class="cstat-no" title="statement not covered" > if (node instanceof OqlQueryComponent) {</span>
|
|
11869
11745
|
// 自动推导情况
|
|
11870
|
-
const typeAnnotation = <span class="cstat-no" title="statement not covered" >
|
|
11746
|
+
const typeAnnotation = <span class="cstat-no" title="statement not covered" >type2TypeAnnotation((node as any).__nodeType);</span>
|
|
11871
11747
|
<span class="cstat-no" title="statement not covered" > if (!node.typeAnnotation && typeAnnotation) {</span>
|
|
11872
11748
|
<span class="cstat-no" title="statement not covered" > if (typeAnnotation.typeName === 'List' && typeAnnotation.typeKind === 'generic') {</span>
|
|
11873
11749
|
const {typeArguments} = <span class="cstat-no" title="statement not covered" >typeAnnotation;</span>
|
|
@@ -11883,9 +11759,9 @@ class NaslServer {
|
|
|
11883
11759
|
}
|
|
11884
11760
|
}
|
|
11885
11761
|
}
|
|
11886
|
-
|
|
11887
|
-
const nodeTypeName = <span class="cstat-no" title="statement not covered" >node.concept === 'Return' ? '输出参数' : '局部变量';</span>
|
|
11762
|
+
<span class="cstat-no" title="statement not covered" > if (node instanceof Return || node instanceof Variable) {</span>
|
|
11888
11763
|
<span class="cstat-no" title="statement not covered" > if (!node.typeAnnotation && !node.__TypeAnnotation) {</span>
|
|
11764
|
+
const nodeTypeName = <span class="cstat-no" title="statement not covered" >node.concept === 'Return' ? '输出参数' : '局部变量';</span>
|
|
11889
11765
|
let used = <span class="cstat-no" title="statement not covered" >false;</span>
|
|
11890
11766
|
<span class="cstat-no" title="statement not covered" > fileNode?.sourceMap.forEach(<span class="fstat-no" title="function not covered" >(v</span>alueIn, nodeIn) => {</span>
|
|
11891
11767
|
<span class="cstat-no" title="statement not covered" > if (!used && nodeIn && (nodeIn instanceof BatchAssignment || (nodeIn instanceof Assignment && nodeIn.left?.name))) {</span>
|
|
@@ -11920,133 +11796,17 @@ class NaslServer {
|
|
|
11920
11796
|
} else {
|
|
11921
11797
|
<span class="cstat-no" title="statement not covered" > delete node.tsErrorDetail;</span>
|
|
11922
11798
|
}
|
|
11923
|
-
const fileSourceCode = <span class="cstat-no" title="statement not covered" >self.getNodeCode(fileNode, value);</span>
|
|
11924
|
-
<span class="cstat-no" title="statement not covered" > if (fileSourceCode.includes('|') && fileSourceCode.includes('.metadataTypes.')) {</span>
|
|
11925
|
-
const typeAnnotation = <span class="cstat-no" title="statement not covered" >node.typeAnnotation.toJSON()</span>
|
|
11926
|
-
<span class="cstat-no" title="statement not covered" > yield* self._treeMetadataType2CoreType(typeAnnotation, (node.rootNode as App))</span>
|
|
11927
|
-
const isDuplicate = <span class="cstat-no" title="statement not covered" >yield* self._isDuplicateCoreType(typeAnnotation)</span>
|
|
11928
|
-
<span class="cstat-no" title="statement not covered" > if (isDuplicate) {</span>
|
|
11929
|
-
const diagnostic = <span class="cstat-no" title="statement not covered" >{</span>
|
|
11930
|
-
node: node,
|
|
11931
|
-
severity: 'error',
|
|
11932
|
-
message: `${nodeTypeName} ${node.name} 类型定义包含相同的数据类型`,
|
|
11933
|
-
};
|
|
11934
|
-
<span class="cstat-no" title="statement not covered" > diagnostics.push(diagnostic);</span>
|
|
11935
|
-
}
|
|
11936
|
-
}
|
|
11937
|
-
}
|
|
11938
|
-
else <span class="cstat-no" title="statement not covered" >if (node instanceof Param) {</span>
|
|
11939
|
-
const fileSourceCode = <span class="cstat-no" title="statement not covered" >self.getNodeCode(fileNode, value);</span>
|
|
11940
|
-
<span class="cstat-no" title="statement not covered" > if (fileSourceCode.includes('|') && fileSourceCode.includes('.metadataTypes.')) {</span>
|
|
11941
|
-
const typeAnnotation = <span class="cstat-no" title="statement not covered" >node.typeAnnotation.toJSON()</span>
|
|
11942
|
-
<span class="cstat-no" title="statement not covered" > yield* self._treeMetadataType2CoreType(typeAnnotation, (node.rootNode as App))</span>
|
|
11943
|
-
const isDuplicate = <span class="cstat-no" title="statement not covered" >yield* self._isDuplicateCoreType(typeAnnotation)</span>
|
|
11944
|
-
<span class="cstat-no" title="statement not covered" > if (isDuplicate) {</span>
|
|
11945
|
-
const diagnostic = <span class="cstat-no" title="statement not covered" >{</span>
|
|
11946
|
-
node: node,
|
|
11947
|
-
severity: 'error',
|
|
11948
|
-
message: `输入参数 ${node.name} 类型定义包含相同的数据类型`,
|
|
11949
|
-
};
|
|
11950
|
-
<span class="cstat-no" title="statement not covered" > diagnostics.push(diagnostic);</span>
|
|
11951
|
-
}
|
|
11952
|
-
}
|
|
11953
11799
|
}
|
|
11954
|
-
<span class="cstat-no" title="statement not covered" > self.checkNodeError(node, diagnostics);</span>
|
|
11955
|
-
});
|
|
11956
|
-
}
|
|
11957
|
-
else <span class="cstat-no" title="statement not covered" >if (fileNode instanceof Process) {</span>
|
|
11958
|
-
<span class="cstat-no" title="statement not covered" > yield* utils.wrapIteratorToGenerator(fileNode.sourceMap.entries(), <span class="fstat-no" title="function not covered" >([</span>node, value]) => {</span>
|
|
11959
11800
|
<span class="cstat-no" title="statement not covered" > this.checkNodeError(node, diagnostics);</span>
|
|
11960
11801
|
});
|
|
11961
|
-
}
|
|
11962
|
-
else <span class="cstat-no" title="statement not covered" >if (fileNode instanceof MetadataType) {</span>
|
|
11802
|
+
} else <span class="cstat-no" title="statement not covered" >if (fileNode instanceof Process) {</span>
|
|
11963
11803
|
<span class="cstat-no" title="statement not covered" > fileNode?.sourceMap.forEach(<span class="fstat-no" title="function not covered" >(v</span>alue, node) => {</span>
|
|
11964
|
-
|
|
11965
|
-
|
|
11966
|
-
<span class="cstat-no" title="statement not covered" > if (Array.isArray(rules)) {</span>
|
|
11967
|
-
<span class="cstat-no" title="statement not covered" > rules.forEach(<span class="fstat-no" title="function not covered" >(r</span>ule) => {</span>
|
|
11968
|
-
<span class="cstat-no" title="statement not covered" > if (`${rule?.toUI()}` == 'undefined' || `${rule.toUI()}` == 'null') <span class="cstat-no" title="statement not covered" >return</span></span>
|
|
11969
|
-
const match = <span class="cstat-no" title="statement not covered" >rule.toUI?.().match(/^([^()]+)\(([\d\-.]+)\)$/);</span>
|
|
11970
|
-
<span class="cstat-no" title="statement not covered" > if (match) {</span>
|
|
11971
|
-
const [, key, value] = <span class="cstat-no" title="statement not covered" >match;</span>
|
|
11972
|
-
<span class="cstat-no" title="statement not covered" > rulesMap[key] = value;</span>
|
|
11973
|
-
}
|
|
11974
|
-
});
|
|
11975
|
-
}
|
|
11976
|
-
const { typeName } = <span class="cstat-no" title="statement not covered" >typeAnnotation || {};</span>
|
|
11977
|
-
const typeAnnotationErrorDetail: any = <span class="cstat-no" title="statement not covered" >{</span>
|
|
11978
|
-
severity: 'warning',
|
|
11979
|
-
errorPos: {},
|
|
11980
|
-
};
|
|
11981
|
-
const minVal = <span class="cstat-no" title="statement not covered" >rulesMap.min;</span>
|
|
11982
|
-
const maxVal = <span class="cstat-no" title="statement not covered" >rulesMap.max;</span>
|
|
11983
|
-
<span class="cstat-no" title="statement not covered" > if (['Long', 'Decimal'].includes(typeName) && !typeAnnotationErrorDetail.errorPos.min) {</span>
|
|
11984
|
-
<span class="cstat-no" title="statement not covered" > if (minVal && maxVal) {</span>
|
|
11985
|
-
<span class="cstat-no" title="statement not covered" > if (new Decimal(maxVal).lessThan(minVal)) {</span>
|
|
11986
|
-
const errorMsg = <span class="cstat-no" title="statement not covered" >'最小值不得大于最大值';</span>
|
|
11987
|
-
const diag: any = <span class="cstat-no" title="statement not covered" >{</span>
|
|
11988
|
-
node: node,
|
|
11989
|
-
severity: 'warning',
|
|
11990
|
-
message: errorMsg,
|
|
11991
|
-
};
|
|
11992
|
-
<span class="cstat-no" title="statement not covered" > diagnostics.push(diag);</span>
|
|
11993
|
-
<span class="cstat-no" title="statement not covered" > typeAnnotationErrorDetail.errorPos.min = errorMsg;</span>
|
|
11994
|
-
} else {
|
|
11995
|
-
<span class="cstat-no" title="statement not covered" > typeAnnotationErrorDetail.errorPos = {};</span>
|
|
11996
|
-
(<span class="cstat-no" title="statement not covered" >node as MetadataType).typeAnnotation.tsErrorDetail = null;</span>
|
|
11997
|
-
}
|
|
11998
|
-
}
|
|
11999
|
-
}
|
|
12000
|
-
<span class="cstat-no" title="statement not covered" > if (Object.keys(typeAnnotationErrorDetail.errorPos).length) {</span>
|
|
12001
|
-
<span class="cstat-no" title="statement not covered" > typeAnnotation.tsErrorDetail = typeAnnotationErrorDetail;</span>
|
|
12002
|
-
}
|
|
12003
|
-
})
|
|
11804
|
+
<span class="cstat-no" title="statement not covered" > this.checkNodeError(node, diagnostics);</span>
|
|
11805
|
+
});
|
|
12004
11806
|
}
|
|
12005
|
-
|
|
12006
11807
|
<span class="cstat-no" title="statement not covered" > return diagnostics;</span>
|
|
12007
11808
|
}
|
|
12008
11809
|
|
|
12009
|
-
<span class="fstat-no" title="function not covered" > *_</span>treeMetadataType2CoreType(type: TypeAnnotation, app: App): Generator<any, void, any> {
|
|
12010
|
-
const self = <span class="cstat-no" title="statement not covered" >this;</span>
|
|
12011
|
-
|
|
12012
|
-
<span class="cstat-no" title="statement not covered" > yield* utils.wrapForEachToGenerator(type.typeArguments ?? [], function* <span class="fstat-no" title="function not covered" >wrapForEach(</span>item) {</span>
|
|
12013
|
-
<span class="cstat-no" title="statement not covered" > if (item.typeNamespace?.endsWith('.metadataTypes')) {</span>
|
|
12014
|
-
let originType = <span class="cstat-no" title="statement not covered" >{} as TypeAnnotation</span>
|
|
12015
|
-
<span class="cstat-no" title="statement not covered" > if (item.typeNamespace === 'app.metadataTypes') {</span>
|
|
12016
|
-
<span class="cstat-no" title="statement not covered" > originType = app.metadataTypes?.find(<span class="fstat-no" title="function not covered" >(m</span>etadataType) => <span class="cstat-no" title="statement not covered" >metadataType.name === item.typeName)</span>?.typeAnnotation;</span>
|
|
12017
|
-
} else <span class="cstat-no" title="statement not covered" >if (item.typeNamespace?.startsWith('extensions.') && item.typeNamespace?.endsWith('.metadataTypes')) {</span>
|
|
12018
|
-
const dependencyName = <span class="cstat-no" title="statement not covered" >item.typeNamespace.replace('extensions.', '').replace('.metadataTypes', '')</span>
|
|
12019
|
-
<span class="cstat-no" title="statement not covered" > originType = app.dependencies?.find(<span class="fstat-no" title="function not covered" >(d</span>ependency) => <span class="cstat-no" title="statement not covered" >dependency.name === dependencyName)</span>?.metadataTypes?.find(<span class="fstat-no" title="function not covered" >(e</span>le) => <span class="cstat-no" title="statement not covered" >ele.name === item.typeName)</span>?.typeAnnotation ?? {} as TypeAnnotation</span>
|
|
12020
|
-
}
|
|
12021
|
-
<span class="cstat-no" title="statement not covered" > item.typeKind = 'primitive'</span>
|
|
12022
|
-
<span class="cstat-no" title="statement not covered" > item.typeNamespace = 'nasl.core'</span>
|
|
12023
|
-
<span class="cstat-no" title="statement not covered" > item.typeName = originType?.typeName</span>
|
|
12024
|
-
}
|
|
12025
|
-
|
|
12026
|
-
<span class="cstat-no" title="statement not covered" > yield* utils.wrapForEachToGenerator(type.typeArguments ?? [], function* <span class="fstat-no" title="function not covered" >wrapForEach2(</span>ele) {</span>
|
|
12027
|
-
<span class="cstat-no" title="statement not covered" > yield* self._treeMetadataType2CoreType(ele, app)</span>
|
|
12028
|
-
});
|
|
12029
|
-
});
|
|
12030
|
-
}
|
|
12031
|
-
|
|
12032
|
-
<span class="fstat-no" title="function not covered" > *_</span>isDuplicateCoreType(type: TypeAnnotation): Generator<any, boolean, any> {
|
|
12033
|
-
const argsStringList = <span class="cstat-no" title="statement not covered" >type.typeArguments?.map(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >JSON.stringify(item))</span> || []</span>
|
|
12034
|
-
const setList = <span class="cstat-no" title="statement not covered" >Array.from(new Set(argsStringList))</span>
|
|
12035
|
-
<span class="cstat-no" title="statement not covered" > if (argsStringList.length > setList.length) {</span>
|
|
12036
|
-
<span class="cstat-no" title="statement not covered" > return true</span>
|
|
12037
|
-
}
|
|
12038
|
-
|
|
12039
|
-
let flag = <span class="cstat-no" title="statement not covered" >false</span>
|
|
12040
|
-
|
|
12041
|
-
<span class="cstat-no" title="statement not covered" > for (const ele of type.typeArguments ?? []) {</span>
|
|
12042
|
-
const subFlag = <span class="cstat-no" title="statement not covered" >yield* this._isDuplicateCoreType(ele)</span>
|
|
12043
|
-
<span class="cstat-no" title="statement not covered" > if (subFlag) {</span>
|
|
12044
|
-
<span class="cstat-no" title="statement not covered" > flag = true</span>
|
|
12045
|
-
}
|
|
12046
|
-
}
|
|
12047
|
-
|
|
12048
|
-
<span class="cstat-no" title="statement not covered" > return flag</span>
|
|
12049
|
-
}
|
|
12050
11810
|
<span class="fstat-no" title="function not covered" > checkNodeError(</span>node: BaseNode, diagnostics: Diagnostic[]): any {
|
|
12051
11811
|
<span class="cstat-no" title="statement not covered" > if (!node) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
12052
11812
|
// 如果节点是match的看看节点里是不是有重复的
|
|
@@ -12299,10 +12059,9 @@ class NaslServer {
|
|
|
12299
12059
|
}
|
|
12300
12060
|
|
|
12301
12061
|
/* 接口导入查找 */
|
|
12302
|
-
|
|
12062
|
+
<span class="fstat-no" title="function not covered" > existStructureFix(</span>semanticDiagnostics: Diagnostic[], node: FileNode, that: any) {
|
|
12303
12063
|
let module: Module;
|
|
12304
|
-
|
|
12305
|
-
<span class="cstat-no" title="statement not covered" > yield* utils.wrapForEachToGenerator(semanticDiagnostics, <span class="fstat-no" title="function not covered" >(d</span>iag) => {</span>
|
|
12064
|
+
<span class="cstat-no" title="statement not covered" > semanticDiagnostics.map(<span class="fstat-no" title="function not covered" >(d</span>iag) => {</span>
|
|
12306
12065
|
const minRange = <span class="cstat-no" title="statement not covered" >this._findMinRange(diag as unknown as tsProtocol.DiagnosticWithFileName, node);</span>
|
|
12307
12066
|
<span class="cstat-no" title="statement not covered" > if (diag.text?.includes('has no exported member named')) {</span>
|
|
12308
12067
|
<span class="cstat-no" title="statement not covered" > if (minRange.node instanceof Logic) {</span>
|
|
@@ -12333,8 +12092,9 @@ class NaslServer {
|
|
|
12333
12092
|
}
|
|
12334
12093
|
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
12335
12094
|
}
|
|
12336
|
-
|
|
12095
|
+
<span class="cstat-no" title="statement not covered" > return diag;</span>
|
|
12337
12096
|
|
|
12097
|
+
});
|
|
12338
12098
|
<span class="cstat-no" title="statement not covered" > if (actionArr.length) {</span>
|
|
12339
12099
|
<span class="cstat-no" title="statement not covered" > if (timer) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
12340
12100
|
<span class="cstat-no" title="statement not covered" > timer = window.setTimeout(<span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
@@ -12361,54 +12121,50 @@ class NaslServer {
|
|
|
12361
12121
|
* @param fileNode 页面节点
|
|
12362
12122
|
* @returns 处理后的结果
|
|
12363
12123
|
*/
|
|
12364
|
-
|
|
12124
|
+
<span class="fstat-no" title="function not covered" > _resolveDiagnostic(</span>diagnostic: tsProtocol.DiagnosticWithFileName, fileNode: FileNode, record: DiagnosticRecord): Diagnostic {
|
|
12365
12125
|
// 拓展模块中的翻译先过滤掉,因为有错用户也不能修改
|
|
12366
12126
|
<span class="cstat-no" title="statement not covered" > if (((fileNode as any).module || (fileNode as any).connector) && !(fileNode instanceof ConfigProperty)) {</span>
|
|
12367
12127
|
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
12368
12128
|
}
|
|
12129
|
+
// 过滤掉java依赖库的报错
|
|
12130
|
+
// if ('compilerInfoMap' in fileNode && (fileNode as any).compilerInfoMap?.java) {
|
|
12131
|
+
// return;
|
|
12132
|
+
// }
|
|
12369
12133
|
<span class="cstat-no" title="statement not covered" > if (fileNode.concept === 'OverriddenLogic' && diagnostic.text === `'__LogicEmpty' is declared but its value is never read.`) {</span>
|
|
12370
12134
|
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
12371
12135
|
}
|
|
12372
|
-
const minRange = <span class="cstat-no" title="statement not covered" >
|
|
12136
|
+
const minRange = <span class="cstat-no" title="statement not covered" >this._findMinRange(diagnostic, fileNode);</span>
|
|
12373
12137
|
const tsErrorDetail = <span class="cstat-no" title="statement not covered" >{</span>
|
|
12374
12138
|
severity: diagnostic.category === 'error' ? 'error' : 'warning',
|
|
12375
12139
|
message: translateDiagnosticMessage(diagnostic.text),
|
|
12376
12140
|
// 保留原来的内容方便查询一些问题
|
|
12377
12141
|
originalDiagnostic: diagnostic,
|
|
12378
12142
|
};
|
|
12379
|
-
<span class="cstat-no" title="statement not covered" > yield;</span>
|
|
12380
12143
|
|
|
12381
12144
|
let result: Diagnostic;
|
|
12382
12145
|
<span class="cstat-no" title="statement not covered" > if (minRange) {</span>
|
|
12383
12146
|
// 节点的error要置为true
|
|
12384
12147
|
<span class="cstat-no" title="statement not covered" > result = naslNodeTranslateMessage(minRange, tsErrorDetail);</span>
|
|
12385
|
-
<span class="cstat-no" title="statement not covered" > yield;</span>
|
|
12386
12148
|
} else {
|
|
12387
12149
|
// 没找到节点, 先把问题暴露出来
|
|
12388
12150
|
<span class="cstat-no" title="statement not covered" > result = tsErrorDetail;</span>
|
|
12389
12151
|
}
|
|
12390
|
-
|
|
12391
|
-
<span class="cstat-no" title="statement not covered" > if (result) {</span>
|
|
12152
|
+
<span class="cstat-no" title="statement not covered" > if (result)</span>
|
|
12392
12153
|
<span class="cstat-no" title="statement not covered" > result.id = record.filePath + (result ? JSON.stringify({ start: result.originalDiagnostic.start, end: result.originalDiagnostic.end }) : '');</span>
|
|
12393
|
-
}
|
|
12394
|
-
|
|
12395
12154
|
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
12396
12155
|
}
|
|
12397
12156
|
|
|
12398
12157
|
/**
|
|
12399
|
-
*
|
|
12400
|
-
*
|
|
12401
|
-
* @
|
|
12158
|
+
* 通过节点诊断反过来查找节点
|
|
12159
|
+
* @param diagnostic 诊断信息
|
|
12160
|
+
* @param fileNode 文件级别节点
|
|
12161
|
+
* @returns 找到的节点
|
|
12402
12162
|
*/
|
|
12403
|
-
|
|
12404
|
-
diagnostic: tsProtocol.DiagnosticWithFileName | tsProtocol.ReferencesResponseItem,
|
|
12405
|
-
fileNode: FileNode
|
|
12406
|
-
): Generator<void, MinRange> {
|
|
12163
|
+
<span class="fstat-no" title="function not covered" > _findMinRange(</span>diagnostic: tsProtocol.DiagnosticWithFileName | tsProtocol.ReferencesResponseItem, fileNode: FileNode) {
|
|
12407
12164
|
let minRange: MinRange;
|
|
12408
|
-
const {
|
|
12165
|
+
const {sourceMap} = <span class="cstat-no" title="statement not covered" >fileNode;</span>
|
|
12409
12166
|
// 是否找到了行内准确的,是的话,就不走多行的
|
|
12410
12167
|
let haveLineNode = <span class="cstat-no" title="statement not covered" >false;</span>
|
|
12411
|
-
|
|
12412
12168
|
<span class="cstat-no" title="statement not covered" > for (const [node, item] of sourceMap.entries()) {</span>
|
|
12413
12169
|
/**
|
|
12414
12170
|
* 当前内容的开始行 <= 诊断开始的行 &&
|
|
@@ -12465,30 +12221,15 @@ class NaslServer {
|
|
|
12465
12221
|
}
|
|
12466
12222
|
}
|
|
12467
12223
|
}
|
|
12468
|
-
|
|
12469
|
-
<span class="cstat-no" title="statement not covered" > yield;</span>
|
|
12470
12224
|
}
|
|
12471
|
-
|
|
12472
12225
|
<span class="cstat-no" title="statement not covered" > if (!minRange) {</span>
|
|
12473
12226
|
<span class="cstat-no" title="statement not covered" > if (fileNode instanceof View) {</span>
|
|
12474
|
-
<span class="cstat-no" title="statement not covered" > return { node: fileNode, item: sourceMap.get(fileNode) }
|
|
12475
|
-
}
|
|
12476
|
-
<span class="cstat-no" title="statement not covered" > if (process.env.NODE_ENV === 'development') {</span>
|
|
12477
|
-
<span class="cstat-no" title="statement not covered" > console.log(minRange, '需要特殊看下,为什么没找到内容-------------');</span>
|
|
12227
|
+
<span class="cstat-no" title="statement not covered" > return { node: fileNode, item: sourceMap.get(fileNode) };</span>
|
|
12478
12228
|
}
|
|
12229
|
+
<span class="cstat-no" title="statement not covered" > console.log(minRange, '需要特殊看下,为什么没找到内容-------------');</span>
|
|
12479
12230
|
}
|
|
12480
|
-
|
|
12481
12231
|
<span class="cstat-no" title="statement not covered" > return minRange;</span>
|
|
12482
12232
|
}
|
|
12483
|
-
|
|
12484
|
-
/**
|
|
12485
|
-
* 查找节点
|
|
12486
|
-
*
|
|
12487
|
-
* @description 同步模式
|
|
12488
|
-
*/
|
|
12489
|
-
<span class="fstat-no" title="function not covered" > _findMinRange(</span>...args: Parameters<NaslServer['_findMinRangeWithGenerator']>) {
|
|
12490
|
-
<span class="cstat-no" title="statement not covered" > return utils.runGeneratorSync(this._findMinRangeWithGenerator(...args));</span>
|
|
12491
|
-
}
|
|
12492
12233
|
|
|
12493
12234
|
/**
|
|
12494
12235
|
* 查看当前节点是不是有引用
|
|
@@ -12633,7 +12374,6 @@ class NaslServer {
|
|
|
12633
12374
|
line: lsp2tspNumber(currentSource.start.line),
|
|
12634
12375
|
offset: lsp2tspNumber(currentSource.start.character),
|
|
12635
12376
|
});
|
|
12636
|
-
// console.log(parentRefs.refs)
|
|
12637
12377
|
<span class="cstat-no" title="statement not covered" > refsList = [...refsList, ...parentRefs.refs];</span>
|
|
12638
12378
|
}
|
|
12639
12379
|
|
|
@@ -12788,22 +12528,12 @@ class NaslServer {
|
|
|
12788
12528
|
<span class="cstat-no" title="statement not covered" > if (node instanceof Return && node.parentNode instanceof ProcessElement) {</span>
|
|
12789
12529
|
const { currentSource, fileNode } = <span class="cstat-no" title="statement not covered" >this.getCurrentSource(node.parentNode);</span>
|
|
12790
12530
|
<span class="cstat-no" title="statement not covered" > if (currentSource) {</span>
|
|
12791
|
-
// 流程任务出参查找引用需要查找到流程任务完成逻辑
|
|
12792
|
-
// const parentRefs = await this.references({
|
|
12793
|
-
// file: (fileNode as FileNode).getEmbeddedFilePath(),
|
|
12794
|
-
// line: lsp2tspNumber(currentSource.start.line),
|
|
12795
|
-
// offset: lsp2tspNumber(currentSource.start.character),
|
|
12796
|
-
// });
|
|
12797
|
-
// refsList = [...refsList, ...parentRefs.refs];
|
|
12798
|
-
// console.log(parentRefs.refs)
|
|
12799
|
-
|
|
12800
|
-
// 流程任务出参查找引用比较特殊,需要查找到 const process = {...} 的引用
|
|
12801
12531
|
const code = <span class="cstat-no" title="statement not covered" >this.getNodeCode(fileNode, currentSource);</span>
|
|
12802
12532
|
const prefix = <span class="cstat-no" title="statement not covered" >'__ProcessIdentification__';</span>
|
|
12803
12533
|
const positions = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
12804
12534
|
let pos = <span class="cstat-no" title="statement not covered" >code.indexOf(prefix);</span>
|
|
12805
12535
|
// 需要再次定位到processelement对象上,避免process上存在同名参数
|
|
12806
|
-
<span class="cstat-no" title="statement not covered" > pos =
|
|
12536
|
+
<span class="cstat-no" title="statement not covered" > pos = code.indexOf(node.parentNode.name, pos + prefix.length);</span>
|
|
12807
12537
|
<span class="cstat-no" title="statement not covered" > pos = pos === -1 ? pos : code.indexOf(node.name, pos + prefix.length);</span>
|
|
12808
12538
|
// pos === -1:两种情况:
|
|
12809
12539
|
// 1、找到最后一个节点了,继续找找不下去了。
|
|
@@ -13208,7 +12938,7 @@ class NaslServer {
|
|
|
13208
12938
|
// 如果跳转链接或者页面变量同一个param和TypeAnnotation 有两个过滤掉一个
|
|
13209
12939
|
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
13210
12940
|
(minRange.node instanceof Param || minRange.node instanceof Variable || minRange.node instanceof Return) &&
|
|
13211
|
-
(node instanceof Entity || node instanceof Enum || node instanceof Structure
|
|
12941
|
+
(node instanceof Entity || node instanceof Enum || node instanceof Structure)
|
|
13212
12942
|
) {
|
|
13213
12943
|
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
13214
12944
|
}
|
|
@@ -13533,7 +13263,7 @@ class NaslServer {
|
|
|
13533
13263
|
<span class="fstat-no" title="function not covered" > getCurrentSource(</span>node: BaseNode) {
|
|
13534
13264
|
<span class="cstat-no" title="statement not covered" > if (node instanceof App || node instanceof Theme) <span class="cstat-no" title="statement not covered" >return { fileNode: null };</span></span>
|
|
13535
13265
|
let {sourceMap} = <span class="cstat-no" title="statement not covered" >node;</span>
|
|
13536
|
-
let fileNode = <span class="cstat-no" title="statement not covered" >node
|
|
13266
|
+
let fileNode = <span class="cstat-no" title="statement not covered" >node;</span>
|
|
13537
13267
|
// 如果没有sourceMap,就继续向上找 ,或者到module结束
|
|
13538
13268
|
// 如果 节点找到 app 或者module 停止 或者entity找到DataSource为止
|
|
13539
13269
|
// 如果当前节点是view就不要向上查找了
|
|
@@ -13549,7 +13279,7 @@ class NaslServer {
|
|
|
13549
13279
|
!(fileNode instanceof View) &&
|
|
13550
13280
|
!(fileNode instanceof ConfigProperty)
|
|
13551
13281
|
) {
|
|
13552
|
-
<span class="cstat-no" title="statement not covered" > fileNode = fileNode.parentNode
|
|
13282
|
+
<span class="cstat-no" title="statement not covered" > fileNode = fileNode.parentNode;</span>
|
|
13553
13283
|
<span class="cstat-no" title="statement not covered" > sourceMap = fileNode?.sourceMap;</span>
|
|
13554
13284
|
}
|
|
13555
13285
|
const currentSource = <span class="cstat-no" title="statement not covered" >sourceMap && sourceMap.get(node);</span>
|
|
@@ -13593,6 +13323,7 @@ class NaslServer {
|
|
|
13593
13323
|
getFieldKey: fieldKey,
|
|
13594
13324
|
});
|
|
13595
13325
|
}
|
|
13326
|
+
|
|
13596
13327
|
}
|
|
13597
13328
|
|
|
13598
13329
|
<span class="fstat-no" title="function not covered" > _getFieldKeySelectCompletion(</span>args: any) {
|
|
@@ -13702,237 +13433,245 @@ class NaslServer {
|
|
|
13702
13433
|
}
|
|
13703
13434
|
|
|
13704
13435
|
/**
|
|
13705
|
-
* 获取传入节点的
|
|
13706
|
-
*
|
|
13707
|
-
* @
|
|
13436
|
+
* 获取传入节点的TypeAnnotation
|
|
13437
|
+
* @param nodes {filePath: string, node: BaseNode, item: SourceMapItem}
|
|
13438
|
+
* @returns Map<BaseNode, TypeAnnotation | { typeAnnotation: TypeAnnotation, option: any }>
|
|
13439
|
+
* 普通的TypeAnnotation,额外的可能携带 option
|
|
13440
|
+
* 这里会处理callloigc callinterface 和 callfuntion 的 argment的参数一起携带回去,
|
|
13441
|
+
* 也就是说如果 只传入了这个也会一起返回argment的节点,所以返回map最好去get结果
|
|
13708
13442
|
*/
|
|
13709
|
-
|
|
13443
|
+
<span class="fstat-no" title="function not covered" > async </span>getQuickInfoNodesTypeMap(nodes: QuickInfoNodes, lotFlag?: boolean) {
|
|
13710
13444
|
interface argDetail {
|
|
13711
13445
|
file: string;
|
|
13712
13446
|
line: number;
|
|
13713
13447
|
offset: number;
|
|
13714
13448
|
}
|
|
13715
|
-
|
|
13716
|
-
const self = <span class="cstat-no" title="statement not covered" >this;</span>
|
|
13717
13449
|
const args: Array<argDetail> = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
13718
13450
|
// 要通过自己或者依赖关系拿的
|
|
13719
|
-
const getFromOthers:
|
|
13451
|
+
const getFromOthers: Map<BaseNode, TypeAnnotation | { typeAnnotation: TypeAnnotation; option: any }> = <span class="cstat-no" title="statement not covered" >new Map();</span>
|
|
13720
13452
|
// 总共要返回出去的
|
|
13721
|
-
const types:
|
|
13453
|
+
const types: Map<BaseNode, TypeAnnotation | { typeAnnotation: TypeAnnotation; option: any }> = <span class="cstat-no" title="statement not covered" >new Map();</span>
|
|
13722
13454
|
const newQuickInfoNodes: QuickInfoNodes = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
13723
13455
|
|
|
13724
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13725
|
-
|
|
13726
|
-
|
|
13727
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13728
|
-
|
|
13729
|
-
|
|
13730
|
-
const nodeTypeAnnotation = <span class="cstat-no" title="statement not covered" >self.getCurrentNodeKnownTypeAnnotation(node);</span>
|
|
13731
|
-
<span class="cstat-no" title="statement not covered" > yield;</span>
|
|
13456
|
+
<span class="cstat-no" title="statement not covered" > await utils.timeSlicing(</span>
|
|
13457
|
+
nodes,
|
|
13458
|
+
<span class="fstat-no" title="function not covered" > (i</span>temDetail) => {
|
|
13459
|
+
const { node, filePath, item } = <span class="cstat-no" title="statement not covered" >itemDetail;</span>
|
|
13460
|
+
// 先按照顺序占位
|
|
13461
|
+
<span class="cstat-no" title="statement not covered" > types.set(node, null);</span>
|
|
13732
13462
|
|
|
13733
|
-
|
|
13734
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13735
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13736
|
-
|
|
13737
|
-
|
|
13738
|
-
|
|
13739
|
-
|
|
13740
|
-
|
|
13741
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13742
|
-
|
|
13743
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13744
|
-
|
|
13745
|
-
|
|
13746
|
-
|
|
13747
|
-
|
|
13748
|
-
|
|
13749
|
-
|
|
13750
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13751
|
-
|
|
13752
|
-
|
|
13753
|
-
|
|
13754
|
-
|
|
13755
|
-
|
|
13756
|
-
|
|
13757
|
-
|
|
13758
|
-
|
|
13759
|
-
|
|
13760
|
-
|
|
13761
|
-
|
|
13762
|
-
|
|
13763
|
-
|
|
13764
|
-
|
|
13765
|
-
|
|
13766
|
-
|
|
13767
|
-
|
|
13768
|
-
|
|
13769
|
-
|
|
13770
|
-
|
|
13771
|
-
|
|
13772
|
-
|
|
13773
|
-
|
|
13774
|
-
|
|
13775
|
-
|
|
13776
|
-
<span class="cstat-no" title="statement not covered" > newQuickInfoNodes.push(itemDetail);</span>
|
|
13777
|
-
const fileDetail = <span class="cstat-no" title="statement not covered" >{</span>
|
|
13778
|
-
file: filePath,
|
|
13779
|
-
line: lsp2tspNumber(item.start.line),
|
|
13780
|
-
offset: lsp2tspNumber(item.start.character),
|
|
13781
|
-
};
|
|
13463
|
+
// 获取已知节点类型的类型
|
|
13464
|
+
const nodeTypeAnnotation = <span class="cstat-no" title="statement not covered" >this.getCurrentNodeKnownTypeAnnotation(node);</span>
|
|
13465
|
+
<span class="cstat-no" title="statement not covered" > if (nodeTypeAnnotation) {</span>
|
|
13466
|
+
<span class="cstat-no" title="statement not covered" > types.set(node, nodeTypeAnnotation);</span>
|
|
13467
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
13468
|
+
}
|
|
13469
|
+
// 要通过自己或者依赖关系拿的,二次遍历
|
|
13470
|
+
<span class="cstat-no" title="statement not covered" > if (['Argument', 'Assignment', 'MatchCase'].includes(node.concept)) {</span>
|
|
13471
|
+
<span class="cstat-no" title="statement not covered" > getFromOthers.set(node, null);</span>
|
|
13472
|
+
}
|
|
13473
|
+
<span class="cstat-no" title="statement not covered" > if (['Return', 'Variable'].includes(node.concept) && (node as Variable).typeAnnotation) {</span>
|
|
13474
|
+
<span class="cstat-no" title="statement not covered" > types.set(node, (node as Variable).typeAnnotation);</span>
|
|
13475
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
13476
|
+
}
|
|
13477
|
+
// 如果 入参不是虚拟节点的,就不去请求类型
|
|
13478
|
+
// 只有虚拟节点的入参,才没有类型
|
|
13479
|
+
<span class="cstat-no" title="statement not covered" > if (node.concept === 'Param' && (node.parentKey !== 'virtualParams' && node.parentKey !== 'item' && node.parentNode.concept !== 'AnonymousFunction')) {</span>
|
|
13480
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
13481
|
+
}
|
|
13482
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
13483
|
+
![
|
|
13484
|
+
'Identifier',
|
|
13485
|
+
'UnaryExpression',
|
|
13486
|
+
'BinaryExpression',
|
|
13487
|
+
'CallLogic',
|
|
13488
|
+
'CallFunction',
|
|
13489
|
+
'CallInterface',
|
|
13490
|
+
'MemberExpression',
|
|
13491
|
+
'Return',
|
|
13492
|
+
'Variable',
|
|
13493
|
+
'Match',
|
|
13494
|
+
'NewComposite',
|
|
13495
|
+
'NewList',
|
|
13496
|
+
'NewMap',
|
|
13497
|
+
'OqlQueryComponent',
|
|
13498
|
+
'QueryFieldExpression',
|
|
13499
|
+
'QueryGroupByExpression',
|
|
13500
|
+
'Param',
|
|
13501
|
+
'BackendVariable',
|
|
13502
|
+
'CallAuthInterface',
|
|
13503
|
+
].includes(node.concept)
|
|
13504
|
+
)
|
|
13505
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
13782
13506
|
|
|
13783
|
-
|
|
13784
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13785
|
-
|
|
13507
|
+
// 要去ls那边获取的
|
|
13508
|
+
<span class="cstat-no" title="statement not covered" > newQuickInfoNodes.push(itemDetail);</span>
|
|
13509
|
+
const fileDetail = <span class="cstat-no" title="statement not covered" >{</span>
|
|
13510
|
+
file: filePath,
|
|
13511
|
+
line: lsp2tspNumber(item.start.line),
|
|
13512
|
+
offset: lsp2tspNumber(item.start.character),
|
|
13513
|
+
};
|
|
13786
13514
|
|
|
13787
|
-
|
|
13788
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13789
|
-
|
|
13790
|
-
}
|
|
13515
|
+
const getCode = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(r</span>ange: SourceMapItem) => {</span>
|
|
13516
|
+
<span class="cstat-no" title="statement not covered" > return this.tsFiles.get(filePath)?.slice(range.start.offset, range.end.offset) ?? '';</span>
|
|
13517
|
+
};
|
|
13791
13518
|
|
|
13792
|
-
|
|
13519
|
+
// 位置计算偏移
|
|
13520
|
+
<span class="cstat-no" title="statement not covered" > if ('getQuickInfoOffset' in node) {</span>
|
|
13521
|
+
<span class="cstat-no" title="statement not covered" > Object.assign(fileDetail, (node as any).getQuickInfoOffset(fileDetail, getCode(item)));</span>
|
|
13522
|
+
}
|
|
13793
13523
|
|
|
13794
|
-
|
|
13795
|
-
|
|
13796
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13797
|
-
|
|
13798
|
-
|
|
13799
|
-
|
|
13800
|
-
|
|
13801
|
-
|
|
13802
|
-
|
|
13803
|
-
|
|
13804
|
-
|
|
13805
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13806
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13807
|
-
} else {
|
|
13808
|
-
// 如果有泛型先往前找一找
|
|
13809
|
-
<span class="cstat-no" title="statement not covered" > if (code.includes('<')) {</span>
|
|
13810
|
-
<span class="cstat-no" title="statement not covered" > indexOf = Math.min(code.indexOf('<'), code.indexOf('('));</span>
|
|
13524
|
+
// 位置计算偏移2
|
|
13525
|
+
// TODO: 之后考虑把这些偏移量计算全都挪到节点内部去
|
|
13526
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
13527
|
+
node.concept === 'BinaryExpression' ||
|
|
13528
|
+
node.concept === 'CallFunction' ||
|
|
13529
|
+
node.concept === 'CallInterface'
|
|
13530
|
+
) {
|
|
13531
|
+
const code = <span class="cstat-no" title="statement not covered" >getCode(item);</span>
|
|
13532
|
+
// 如果没有括号 ,括号就在外面,就 -1
|
|
13533
|
+
// 有括号就找到括号的位置 然后 -1
|
|
13534
|
+
let indexOf = <span class="cstat-no" title="statement not covered" >0;</span>
|
|
13535
|
+
<span class="cstat-no" title="statement not covered" > if (!code.includes('(')) {</span>
|
|
13536
|
+
<span class="cstat-no" title="statement not covered" > indexOf = -1;</span>
|
|
13811
13537
|
} else {
|
|
13812
|
-
|
|
13538
|
+
// 如果有泛型先往前找一找
|
|
13539
|
+
<span class="cstat-no" title="statement not covered" > if (code.includes('<')) {</span>
|
|
13540
|
+
<span class="cstat-no" title="statement not covered" > indexOf = Math.min(code.indexOf('<'), code.indexOf('('));</span>
|
|
13541
|
+
} else {
|
|
13542
|
+
<span class="cstat-no" title="statement not covered" > indexOf = code.indexOf('(');</span>
|
|
13543
|
+
}
|
|
13544
|
+
const subStr = <span class="cstat-no" title="statement not covered" >code.substring(0, indexOf);</span>
|
|
13545
|
+
const codeArr = <span class="cstat-no" title="statement not covered" >subStr?.split('.');</span>
|
|
13546
|
+
const lastLen = <span class="cstat-no" title="statement not covered" >codeArr?.[codeArr.length - 1]?.length;</span>
|
|
13547
|
+
<span class="cstat-no" title="statement not covered" > indexOf = subStr.length - lastLen;</span>
|
|
13813
13548
|
}
|
|
13814
|
-
|
|
13815
|
-
|
|
13816
|
-
|
|
13817
|
-
|
|
13818
|
-
|
|
13819
|
-
|
|
13820
|
-
|
|
13821
|
-
|
|
13822
|
-
|
|
13823
|
-
|
|
13824
|
-
|
|
13825
|
-
|
|
13826
|
-
|
|
13827
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13828
|
-
|
|
13829
|
-
|
|
13830
|
-
|
|
13831
|
-
|
|
13832
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13833
|
-
|
|
13834
|
-
|
|
13835
|
-
|
|
13836
|
-
|
|
13837
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13838
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13839
|
-
|
|
13549
|
+
<span class="cstat-no" title="statement not covered" > fileDetail.offset += indexOf;</span>
|
|
13550
|
+
} else <span class="cstat-no" title="statement not covered" >if (</span>
|
|
13551
|
+
node.concept === 'MemberExpression' ||
|
|
13552
|
+
node.concept === 'Identifier' ||
|
|
13553
|
+
node.concept === 'QueryFieldExpression' ||
|
|
13554
|
+
node.concept === 'QueryGroupByExpression'
|
|
13555
|
+
) {
|
|
13556
|
+
const code = <span class="cstat-no" title="statement not covered" >getCode(item);</span>
|
|
13557
|
+
<span class="cstat-no" title="statement not covered" > if (code.includes('.')) {</span>
|
|
13558
|
+
const codeArr = <span class="cstat-no" title="statement not covered" >code?.split('.');</span>
|
|
13559
|
+
const lastLen = <span class="cstat-no" title="statement not covered" >codeArr?.[codeArr.length - 1]?.length;</span>
|
|
13560
|
+
// MemberExpression取最后一位当做类型
|
|
13561
|
+
const indexOf = <span class="cstat-no" title="statement not covered" >code.length - lastLen;</span>
|
|
13562
|
+
<span class="cstat-no" title="statement not covered" > fileDetail.offset = fileDetail.offset + indexOf;</span>
|
|
13563
|
+
}
|
|
13564
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.concept === 'Match') {</span>
|
|
13565
|
+
const code = <span class="cstat-no" title="statement not covered" >getCode(item);</span>
|
|
13566
|
+
// 去查return 后面的返回值,变成函数调用
|
|
13567
|
+
<span class="cstat-no" title="statement not covered" > if (code?.endsWith(';\n')) {</span>
|
|
13568
|
+
<span class="cstat-no" title="statement not covered" > fileDetail.line = item.end.line - 1;</span>
|
|
13569
|
+
} else {
|
|
13570
|
+
<span class="cstat-no" title="statement not covered" > fileDetail.line = item.end.line;</span>
|
|
13571
|
+
}
|
|
13572
|
+
const indexOf = <span class="cstat-no" title="statement not covered" >code.indexOf('return __MatchExpressionFuntion');</span>
|
|
13573
|
+
let newCode = <span class="cstat-no" title="statement not covered" >code.substring(0, indexOf);</span>
|
|
13574
|
+
<span class="cstat-no" title="statement not covered" > newCode = newCode.substring(newCode.lastIndexOf('\n'), indexOf);</span>
|
|
13575
|
+
<span class="cstat-no" title="statement not covered" > fileDetail.offset = newCode.length + 'return '.length;</span>
|
|
13576
|
+
} else <span class="cstat-no" title="statement not covered" >if (['NewComposite', 'NewList', 'NewMap'].includes(node.concept)) {</span>
|
|
13577
|
+
const code = <span class="cstat-no" title="statement not covered" >getCode(item);</span>
|
|
13840
13578
|
<span class="cstat-no" title="statement not covered" > fileDetail.line = item.end.line;</span>
|
|
13579
|
+
const indexOf = <span class="cstat-no" title="statement not covered" >code.indexOf('return __newComposite');</span>
|
|
13580
|
+
let newCode = <span class="cstat-no" title="statement not covered" >code.substring(0, indexOf);</span>
|
|
13581
|
+
<span class="cstat-no" title="statement not covered" > newCode = newCode.substring(newCode.lastIndexOf('\n'), indexOf);</span>
|
|
13582
|
+
<span class="cstat-no" title="statement not covered" > fileDetail.offset = newCode.length + 'return '.length;</span>
|
|
13583
|
+
} else <span class="cstat-no" title="statement not covered" >if (['OqlQueryComponent'].includes(node.concept)) {</span>
|
|
13584
|
+
<span class="cstat-no" title="statement not covered" > fileDetail.offset += 10;</span>
|
|
13841
13585
|
}
|
|
13842
|
-
|
|
13843
|
-
|
|
13844
|
-
|
|
13845
|
-
|
|
13846
|
-
|
|
13847
|
-
|
|
13848
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13849
|
-
|
|
13850
|
-
|
|
13851
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13852
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13853
|
-
|
|
13854
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13855
|
-
|
|
13856
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13857
|
-
|
|
13858
|
-
|
|
13859
|
-
|
|
13860
|
-
|
|
13861
|
-
|
|
13862
|
-
|
|
13863
|
-
|
|
13864
|
-
|
|
13865
|
-
<span class="cstat-no" title="statement not covered" > types.set(node, Object.freeze(nodeTypeAnnotation) as TypeAnnotation);</span>
|
|
13866
|
-
|
|
13867
|
-
const type = <span class="cstat-no" title="statement not covered" >itemType ? (Object.isFrozen(itemType) ? itemType : Object.freeze(itemType)) : null;</span>
|
|
13868
|
-
<span class="cstat-no" title="statement not covered" > if (type) {</span>
|
|
13869
|
-
(<span class="cstat-no" title="statement not covered" >node as any).__nodeType = type;</span>
|
|
13870
|
-
} else {
|
|
13871
|
-
<span class="cstat-no" title="statement not covered" > delete (node as any).__nodeType;</span>
|
|
13872
|
-
}
|
|
13873
|
-
});
|
|
13874
|
-
<span class="cstat-no" title="statement not covered" > yield* utils.wrapIteratorToGenerator(getFromOthers.entries(), <span class="fstat-no" title="function not covered" >function*</span> ([node]) {</span>
|
|
13875
|
-
<span class="cstat-no" title="statement not covered" > if (node instanceof Assignment) {</span>
|
|
13876
|
-
<span class="cstat-no" title="statement not covered" > if (!types.get(node.left)) {</span>
|
|
13877
|
-
<span class="cstat-no" title="statement not covered" > types.set(node.left, types.get(node.right));</span>
|
|
13586
|
+
<span class="cstat-no" title="statement not covered" > args.push(fileDetail);</span>
|
|
13587
|
+
},
|
|
13588
|
+
{ minimum: 1000 },
|
|
13589
|
+
);
|
|
13590
|
+
|
|
13591
|
+
const resultMap: any = <span class="cstat-no" title="statement not covered" >(await this.getNaslNodeTypeFull(args))?.response;</span>
|
|
13592
|
+
<span class="cstat-no" title="statement not covered" > await utils.timeSlicing(</span>
|
|
13593
|
+
args,
|
|
13594
|
+
<span class="fstat-no" title="function not covered" > ({</span> file, line, offset }, index) => {
|
|
13595
|
+
const item = (<span class="cstat-no" title="statement not covered" >resultMap as any)?.[file]?.[line]?.[offset];</span>
|
|
13596
|
+
const itemType = <span class="cstat-no" title="statement not covered" >item?.[0]?.nodeType;</span>
|
|
13597
|
+
const nodeTypeAnnotation = <span class="cstat-no" title="statement not covered" >type2TypeAnnotation(itemType);</span>
|
|
13598
|
+
const {node} = <span class="cstat-no" title="statement not covered" >newQuickInfoNodes[index];</span>
|
|
13599
|
+
|
|
13600
|
+
<span class="cstat-no" title="statement not covered" > types.set(node, Object.freeze(nodeTypeAnnotation) as TypeAnnotation);</span>
|
|
13601
|
+
|
|
13602
|
+
const type = <span class="cstat-no" title="statement not covered" >itemType ? (Object.isFrozen(itemType) ? itemType : Object.freeze(itemType)) : null;</span>
|
|
13603
|
+
|
|
13604
|
+
<span class="cstat-no" title="statement not covered" > if (type) {</span>
|
|
13605
|
+
(<span class="cstat-no" title="statement not covered" >node as any).__nodeType = type;</span>
|
|
13606
|
+
} else {
|
|
13607
|
+
<span class="cstat-no" title="statement not covered" > delete (node as any).__nodeType;</span>
|
|
13878
13608
|
}
|
|
13879
|
-
}
|
|
13880
|
-
|
|
13881
|
-
|
|
13882
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13883
|
-
|
|
13884
|
-
|
|
13885
|
-
|
|
13886
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13887
|
-
|
|
13888
|
-
|
|
13889
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13609
|
+
},
|
|
13610
|
+
{ minimum: 100 },
|
|
13611
|
+
);
|
|
13612
|
+
<span class="cstat-no" title="statement not covered" > await utils.timeSlicing(</span>
|
|
13613
|
+
Array.from(getFromOthers.entries()),
|
|
13614
|
+
<span class="fstat-no" title="function not covered" > ([</span>node]) => {
|
|
13615
|
+
<span class="cstat-no" title="statement not covered" > if (node instanceof Assignment) {</span>
|
|
13616
|
+
<span class="cstat-no" title="statement not covered" > if (!types.get(node.left)) {</span>
|
|
13617
|
+
<span class="cstat-no" title="statement not covered" > types.set(node.left, types.get(node.right));</span>
|
|
13618
|
+
}
|
|
13619
|
+
} else <span class="cstat-no" title="statement not covered" >if (node instanceof Argument) {</span>
|
|
13620
|
+
// 如果Argument,但是没可以用的类型,就用原来logic的参数类型
|
|
13621
|
+
const argType = <span class="cstat-no" title="statement not covered" >this.getArgumentTypeAnnotation(node, newQuickInfoNodes, types as any);</span>
|
|
13622
|
+
<span class="cstat-no" title="statement not covered" > types.set(node, argType);</span>
|
|
13623
|
+
} else <span class="cstat-no" title="statement not covered" >if (node instanceof MatchCase) {</span>
|
|
13624
|
+
// matchCase的类型
|
|
13625
|
+
// 直接从最后一项的返回值取,有就有没有就没有
|
|
13626
|
+
<span class="cstat-no" title="statement not covered" > if (node.body?.length) {</span>
|
|
13627
|
+
const last = <span class="cstat-no" title="statement not covered" >node.body[node.body.length - 1];</span>
|
|
13628
|
+
<span class="cstat-no" title="statement not covered" > if (types.get(last)) {</span>
|
|
13629
|
+
<span class="cstat-no" title="statement not covered" > types.set(node, types.get(last));</span>
|
|
13630
|
+
}
|
|
13890
13631
|
}
|
|
13891
13632
|
}
|
|
13892
|
-
}
|
|
13893
|
-
|
|
13894
|
-
|
|
13895
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13896
|
-
|
|
13897
|
-
<span class="
|
|
13898
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13899
|
-
|
|
13900
|
-
|
|
13901
|
-
|
|
13902
|
-
<span class="cstat-no" title="statement not covered" > if (
|
|
13903
|
-
|
|
13904
|
-
|
|
13905
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13906
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13907
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13633
|
+
},
|
|
13634
|
+
{ minimum: 100 },
|
|
13635
|
+
);
|
|
13636
|
+
<span class="cstat-no" title="statement not covered" > await utils.timeSlicing(</span>
|
|
13637
|
+
Array.from(types.entries()),
|
|
13638
|
+
<span class="fstat-no" title="function not covered" > ([</span>node, value]) => {
|
|
13639
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
13640
|
+
// 因为node可能是经过处理的TypeAnnotation
|
|
13641
|
+
<span class="cstat-no" title="statement not covered" > node.__isCorrectTypeAnnotation = true;</span>
|
|
13642
|
+
<span class="cstat-no" title="statement not covered" > if (value) {</span>
|
|
13643
|
+
<span class="cstat-no" title="statement not covered" > if (node instanceof OqlQueryComponent) {</span>
|
|
13644
|
+
// 自动推导情况
|
|
13645
|
+
const typeAnnotation = <span class="cstat-no" title="statement not covered" >value as TypeAnnotation;</span>
|
|
13646
|
+
<span class="cstat-no" title="statement not covered" > if (!node.typeAnnotation && typeAnnotation) {</span>
|
|
13647
|
+
<span class="cstat-no" title="statement not covered" > if (typeAnnotation.typeName === 'List' && typeAnnotation.typeKind === 'generic') {</span>
|
|
13648
|
+
const {typeArguments} = <span class="cstat-no" title="statement not covered" >typeAnnotation;</span>
|
|
13649
|
+
<span class="cstat-no" title="statement not covered" > if (typeArguments.length && typeArguments[0].isComplexType()) {</span>
|
|
13650
|
+
<span class="cstat-no" title="statement not covered" > delete node.__TypeAnnotation;</span>
|
|
13651
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
13652
|
+
}
|
|
13908
13653
|
}
|
|
13909
13654
|
}
|
|
13910
13655
|
}
|
|
13656
|
+
<span class="cstat-no" title="statement not covered" > if (value instanceof TypeAnnotation) {</span>
|
|
13657
|
+
<span class="cstat-no" title="statement not covered" > node.__TypeAnnotation = value;</span>
|
|
13658
|
+
} else <span class="cstat-no" title="statement not covered" >if (value.typeAnnotation) {</span>
|
|
13659
|
+
<span class="cstat-no" title="statement not covered" > node.__TypeAnnotation = value.typeAnnotation;</span>
|
|
13660
|
+
}
|
|
13661
|
+
} else {
|
|
13662
|
+
// 清空原来已经赋值上去的类型,可能原来有现在没有了
|
|
13663
|
+
<span class="cstat-no" title="statement not covered" > delete node.__TypeAnnotation;</span>
|
|
13911
13664
|
}
|
|
13912
|
-
|
|
13913
|
-
|
|
13914
|
-
|
|
13915
|
-
|
|
13916
|
-
}
|
|
13917
|
-
} else {
|
|
13918
|
-
// 清空原来已经赋值上去的类型,可能原来有现在没有了
|
|
13919
|
-
<span class="cstat-no" title="statement not covered" > delete node.__TypeAnnotation;</span>
|
|
13665
|
+
} catch (err) {
|
|
13666
|
+
// if (globalThis.window) {
|
|
13667
|
+
// console.log(err);
|
|
13668
|
+
// }
|
|
13920
13669
|
}
|
|
13921
|
-
}
|
|
13922
|
-
|
|
13923
|
-
|
|
13924
|
-
// }
|
|
13925
|
-
}
|
|
13926
|
-
});
|
|
13670
|
+
},
|
|
13671
|
+
{ minimum: 100 },
|
|
13672
|
+
);
|
|
13927
13673
|
<span class="cstat-no" title="statement not covered" > return types;</span>
|
|
13928
13674
|
}
|
|
13929
|
-
|
|
13930
|
-
/**
|
|
13931
|
-
* 获取传入节点的 TypeAnnotation
|
|
13932
|
-
*/
|
|
13933
|
-
<span class="fstat-no" title="function not covered" > getQuickInfoNodesTypeMap(</span>nodes: QuickInfoNodes, flag?: boolean) {
|
|
13934
|
-
<span class="cstat-no" title="statement not covered" > return utils.runGeneratorAsync(this._getQuickInfoNodesTypeMapWithGenerator(nodes));</span>
|
|
13935
|
-
}
|
|
13936
13675
|
|
|
13937
13676
|
// 全量标注并且返回json
|
|
13938
13677
|
@withQueueExecute('annotation')
|
|
@@ -13943,7 +13682,7 @@ class NaslServer {
|
|
|
13943
13682
|
const nodes: QuickInfoNodes = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
13944
13683
|
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.forEach(<span class="fstat-no" title="function not covered" >(f</span>ileNode, filePath) => {</span>
|
|
13945
13684
|
// 先不排除view,传递给后端的时候,去除views下的标注
|
|
13946
|
-
<span class="cstat-no" title="statement not covered" > if (!['Structure', 'DataSource', 'Entity', 'Enum', 'Role'
|
|
13685
|
+
<span class="cstat-no" title="statement not covered" > if (!['Structure', 'DataSource', 'Entity', 'Enum', 'Role'].includes(fileNode.concept)) {</span>
|
|
13947
13686
|
<span class="cstat-no" title="statement not covered" > fileNode.sourceMap.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem, node) => {</span>
|
|
13948
13687
|
<span class="cstat-no" title="statement not covered" > nodes.push({</span>
|
|
13949
13688
|
filePath,
|
|
@@ -13968,35 +13707,28 @@ class NaslServer {
|
|
|
13968
13707
|
}
|
|
13969
13708
|
|
|
13970
13709
|
// 增量标注
|
|
13971
|
-
|
|
13710
|
+
@withQueueExecute('annotation')
|
|
13711
|
+
<span class="fstat-no" title="function not covered" > async </span>IncrementalAnnotationJSON(records: DiagnosticRecord[]) {
|
|
13972
13712
|
<span class="cstat-no" title="statement not covered" > console.time('增量标注');</span>
|
|
13973
13713
|
const nodes: QuickInfoNodes = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
13974
|
-
|
|
13975
|
-
|
|
13976
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13977
|
-
const fileNode = <span class="cstat-no" title="statement not covered" >self.file2NodeMap.get(record.filePath);</span>
|
|
13978
|
-
|
|
13979
|
-
<span class="cstat-no" title="statement not covered" > if (!fileNode) {</span>
|
|
13980
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
13981
|
-
}
|
|
13982
|
-
|
|
13714
|
+
<span class="cstat-no" title="statement not covered" > records.forEach(<span class="fstat-no" title="function not covered" >(r</span>ecord) => {</span>
|
|
13715
|
+
const fileNode = <span class="cstat-no" title="statement not covered" >this.file2NodeMap.get(record.filePath);</span>
|
|
13716
|
+
<span class="cstat-no" title="statement not covered" > if (!fileNode) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
13983
13717
|
<span class="cstat-no" title="statement not covered" > record.id = fileNode.id;</span>
|
|
13984
13718
|
<span class="cstat-no" title="statement not covered" > record.node = fileNode;</span>
|
|
13985
|
-
|
|
13986
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13987
|
-
<span class="
|
|
13719
|
+
<span class="cstat-no" title="statement not covered" > if (!['Structure', 'DataSource', 'Entity', 'Enum', 'Role'].includes(fileNode.concept)) {</span>
|
|
13720
|
+
<span class="cstat-no" title="statement not covered" > fileNode.sourceMap &&</span>
|
|
13721
|
+
fileNode.sourceMap.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem, nodeItem) => {
|
|
13722
|
+
<span class="cstat-no" title="statement not covered" > nodes.push({</span>
|
|
13723
|
+
filePath: record.filePath,
|
|
13724
|
+
node: nodeItem,
|
|
13725
|
+
item,
|
|
13726
|
+
});
|
|
13727
|
+
});
|
|
13988
13728
|
}
|
|
13989
|
-
|
|
13990
|
-
<span class="cstat-no" title="statement not covered" > yield* utils.wrapIteratorToGenerator(fileNode.sourceMap.entries(), <span class="fstat-no" title="function not covered" >([</span>nodeItem, item]) => {</span>
|
|
13991
|
-
<span class="cstat-no" title="statement not covered" > nodes.push({</span>
|
|
13992
|
-
filePath: record.filePath,
|
|
13993
|
-
node: nodeItem,
|
|
13994
|
-
item,
|
|
13995
|
-
});
|
|
13996
|
-
});
|
|
13997
13729
|
});
|
|
13998
13730
|
|
|
13999
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13731
|
+
<span class="cstat-no" title="statement not covered" > await this.getQuickInfoNodesTypeMap(nodes);</span>
|
|
14000
13732
|
<span class="cstat-no" title="statement not covered" > console.timeEnd('增量标注');</span>
|
|
14001
13733
|
}
|
|
14002
13734
|
|
|
@@ -14111,12 +13843,33 @@ class NaslServer {
|
|
|
14111
13843
|
|
|
14112
13844
|
// jsonSerializer 是 CallLogic,其余是 CallFunction
|
|
14113
13845
|
<span class="cstat-no" title="statement not covered" > if (node instanceof CallFunction || node instanceof CallLogic) {</span>
|
|
14114
|
-
const
|
|
13846
|
+
const getTimeZoneArgumentIndex = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(c</span>alleeName : string) => {</span>
|
|
13847
|
+
let tzArgIdx;
|
|
13848
|
+
<span class="cstat-no" title="statement not covered" > switch (calleeName) {</span>
|
|
13849
|
+
// 按意淫的使用频次
|
|
13850
|
+
case 'ToString': <span class="cstat-no" title="statement not covered" >tzArgIdx = 1; <span class="cstat-no" title="statement not covered" ></span>break;</span>
|
|
13851
|
+
case 'CurrDateTime': <span class="cstat-no" title="statement not covered" >tzArgIdx = 0; <span class="cstat-no" title="statement not covered" ></span>break;</span>
|
|
13852
|
+
case 'CurrDate': <span class="cstat-no" title="statement not covered" >tzArgIdx = 0; <span class="cstat-no" title="statement not covered" ></span>break;</span>
|
|
13853
|
+
case 'CurrTime': <span class="cstat-no" title="statement not covered" >tzArgIdx = 0; <span class="cstat-no" title="statement not covered" ></span>break;</span>
|
|
13854
|
+
case 'FormatDateTime': <span class="cstat-no" title="statement not covered" >tzArgIdx = 2; <span class="cstat-no" title="statement not covered" ></span>break;</span>
|
|
13855
|
+
case 'jsonSerialize': <span class="cstat-no" title="statement not covered" >tzArgIdx = 1; <span class="cstat-no" title="statement not covered" ></span>break;</span>
|
|
13856
|
+
case 'GetDateCount': <span class="cstat-no" title="statement not covered" >tzArgIdx = 2; <span class="cstat-no" title="statement not covered" ></span>break;</span>
|
|
13857
|
+
case 'GetSpecificDaysOfWeek': <span class="cstat-no" title="statement not covered" >tzArgIdx = 3; <span class="cstat-no" title="statement not covered" ></span>break;</span>
|
|
13858
|
+
default: <span class="cstat-no" title="statement not covered" >tzArgIdx = -1; <span class="cstat-no" title="statement not covered" ></span>break;</span>
|
|
13859
|
+
}
|
|
13860
|
+
<span class="cstat-no" title="statement not covered" > return tzArgIdx;</span>
|
|
13861
|
+
}
|
|
13862
|
+
const isCoreDateTimeType = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(n</span> : Argument) => {</span>
|
|
13863
|
+
<span class="cstat-no" title="statement not covered" > return n?.expression?.__TypeAnnotation?.typeName === 'DateTime' &&</span>
|
|
13864
|
+
n?.expression?.__TypeAnnotation?.typeNamespace === 'nasl.core';
|
|
13865
|
+
};
|
|
13866
|
+
|
|
13867
|
+
const tzArgIdx = <span class="cstat-no" title="statement not covered" >getTimeZoneArgumentIndex(node.calleeName);</span>
|
|
14115
13868
|
const args = <span class="cstat-no" title="statement not covered" >node.arguments;</span>
|
|
14116
13869
|
const tzArg = <span class="cstat-no" title="statement not covered" >args ? args[tzArgIdx] : undefined;</span>
|
|
14117
13870
|
|
|
14118
|
-
<span class="cstat-no" title="statement not covered" > if (tzArgIdx && tzArg?.keyword === '时区'
|
|
14119
|
-
<span class="cstat-no" title="statement not covered" > if (!
|
|
13871
|
+
<span class="cstat-no" title="statement not covered" > if (tzArgIdx !== -1 && tzArg?.keyword === '时区') {</span>
|
|
13872
|
+
<span class="cstat-no" title="statement not covered" > if (!isCoreDateTimeType(node.arguments[0])) {</span>
|
|
14120
13873
|
<span class="cstat-no" title="statement not covered" > node.arguments.pop();</span>
|
|
14121
13874
|
}
|
|
14122
13875
|
}
|
|
@@ -14129,11 +13882,7 @@ class NaslServer {
|
|
|
14129
13882
|
* 如果内部表达式的,就用表达式的,如果没有就试试用默认值的
|
|
14130
13883
|
* 获取logic的默认值和原来Arg的类型和默认值对应
|
|
14131
13884
|
*/
|
|
14132
|
-
<span class="fstat-no" title="function not covered" >
|
|
14133
|
-
node: Argument,
|
|
14134
|
-
QuickInfoNodes: QuickInfoNodes,
|
|
14135
|
-
types: Map<BaseNode, TypeAnnotation>,
|
|
14136
|
-
): Generator<void, { typeAnnotation: TypeAnnotation; option: object }, void> {
|
|
13885
|
+
<span class="fstat-no" title="function not covered" > getArgumentTypeAnnotation(</span>node: Argument, QuickInfoNodes: QuickInfoNodes, types: Map<BaseNode, TypeAnnotation>) {
|
|
14137
13886
|
// 直接复用内部expression的type类型
|
|
14138
13887
|
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
14139
13888
|
node.parentNode instanceof CallLogic &&
|
|
@@ -14145,7 +13894,7 @@ class NaslServer {
|
|
|
14145
13894
|
<span class="cstat-no" title="statement not covered" > if (nodeType && Array.isArray(nodeType.fnParams)) {</span>
|
|
14146
13895
|
const index = <span class="cstat-no" title="statement not covered" >node.parentNode.arguments.indexOf(node);</span>
|
|
14147
13896
|
const type = <span class="cstat-no" title="statement not covered" >nodeType.fnParams[index]?.typeInfo;</span>
|
|
14148
|
-
const nodeTypeAnnotation = <span class="cstat-no" title="statement not covered" >
|
|
13897
|
+
const nodeTypeAnnotation = <span class="cstat-no" title="statement not covered" >type2TypeAnnotation(type);</span>
|
|
14149
13898
|
<span class="cstat-no" title="statement not covered" > if (nodeTypeAnnotation) {</span>
|
|
14150
13899
|
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
14151
13900
|
typeAnnotation: nodeTypeAnnotation,
|
|
@@ -14153,7 +13902,6 @@ class NaslServer {
|
|
|
14153
13902
|
};
|
|
14154
13903
|
}
|
|
14155
13904
|
}
|
|
14156
|
-
<span class="cstat-no" title="statement not covered" > yield;</span>
|
|
14157
13905
|
}
|
|
14158
13906
|
// 获取返回值结果里找到父级的callLogic || CallInterface的类型填充进去Argument
|
|
14159
13907
|
const App = <span class="cstat-no" title="statement not covered" >node.app;</span>
|
|
@@ -14168,8 +13916,7 @@ class NaslServer {
|
|
|
14168
13916
|
}
|
|
14169
13917
|
}
|
|
14170
13918
|
// 用户自己声明的用用户的
|
|
14171
|
-
const callObj = <span class="cstat-no" title="statement not covered" >App.findNodeByCompleteName(`${parent.calleeNamespace}.${parent.calleeName}`);</span>
|
|
14172
|
-
<span class="cstat-no" title="statement not covered" > yield;</span>
|
|
13919
|
+
const callObj = <span class="cstat-no" title="statement not covered" >App.findNodeByCompleteName(`${parent.calleeNamespace }.${ parent.calleeName}`);</span>
|
|
14173
13920
|
const index = <span class="cstat-no" title="statement not covered" >parent.arguments.indexOf(node);</span>
|
|
14174
13921
|
const param = <span class="cstat-no" title="statement not covered" >callObj?.params?.[index] || {};</span>
|
|
14175
13922
|
// 取出参数的类型
|
|
@@ -14261,7 +14008,7 @@ class NaslServer {
|
|
|
14261
14008
|
* @param targetNode 当前操作的节点
|
|
14262
14009
|
* @param result toTs生成的内容
|
|
14263
14010
|
*/
|
|
14264
|
-
<span class="fstat-no" title="function not covered" > async </span>handleDelete(fileNode: BaseNode, targetNode: BaseNode, result:
|
|
14011
|
+
<span class="fstat-no" title="function not covered" > async </span>handleDelete(fileNode: BaseNode, targetNode: BaseNode, result: ReturnType<Structure['toEmbeddedTSFile']>) {
|
|
14265
14012
|
const filePath = (<span class="cstat-no" title="statement not covered" >fileNode as FileNode).getEmbeddedFilePath();</span>
|
|
14266
14013
|
// 如果要删除,而且当前要删Logic就直接删除并且清除错误
|
|
14267
14014
|
/**
|
|
@@ -14301,7 +14048,7 @@ class NaslServer {
|
|
|
14301
14048
|
* @param targetNode 触发修改的节点
|
|
14302
14049
|
* @param result 生成代码的code 和位置信息
|
|
14303
14050
|
*/
|
|
14304
|
-
<span class="fstat-no" title="function not covered" > async </span>handleChange(fileNode: BaseNode, targetNode: BaseNode, result:
|
|
14051
|
+
<span class="fstat-no" title="function not covered" > async </span>handleChange(fileNode: BaseNode, targetNode: BaseNode, result: ReturnType<Structure['toEmbeddedTSFile']>, action: string) {
|
|
14305
14052
|
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, fileNode);</span>
|
|
14306
14053
|
|
|
14307
14054
|
const outputFiles = <span class="cstat-no" title="statement not covered" >[{ file: result.filePath, fileContent: result.code }];</span>
|
|
@@ -14346,7 +14093,7 @@ class NaslServer {
|
|
|
14346
14093
|
* @param isRename 是不是修改名字
|
|
14347
14094
|
* @param oldFilePath 如果是改名,文件级别的才会有这个参数,用于文件新增替换
|
|
14348
14095
|
*/
|
|
14349
|
-
<span class="fstat-no" title="function not covered" > async </span>handleRename(fileNode: BaseNode, targetNode: BaseNode, result:
|
|
14096
|
+
<span class="fstat-no" title="function not covered" > async </span>handleRename(fileNode: BaseNode, targetNode: BaseNode, result: ReturnType<Structure['toEmbeddedTSFile']>, oldFilePath?: string) {
|
|
14350
14097
|
// rename 场景
|
|
14351
14098
|
const outputFiles = <span class="cstat-no" title="statement not covered" >[{ file: result.filePath, fileContent: result.code }];</span>
|
|
14352
14099
|
// 如果是要修改顶级文件名
|
|
@@ -14450,7 +14197,7 @@ class NaslServer {
|
|
|
14450
14197
|
const fileNodeChildren = <span class="cstat-no" title="statement not covered" >[...fileNode.views, ...fileNode.variables];</span>
|
|
14451
14198
|
<span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i < fileNodeChildren.length; i++) {</span>
|
|
14452
14199
|
const fileNodeItem = <span class="cstat-no" title="statement not covered" >fileNodeChildren[i];</span>
|
|
14453
|
-
const result = <span class="cstat-no" title="statement not covered" >
|
|
14200
|
+
const result = (<span class="cstat-no" title="statement not covered" >fileNodeItem as FileNode).toEmbeddedTSFile();</span>
|
|
14454
14201
|
<span class="cstat-no" title="statement not covered" > fileNodeItem.sourceMap = result.sourceMap;</span>
|
|
14455
14202
|
<span class="cstat-no" title="statement not covered" > if (action === 'create') {</span>
|
|
14456
14203
|
<span class="cstat-no" title="statement not covered" > await this.handleChange(fileNodeItem, fileNodeItem, result, action);</span>
|
|
@@ -14473,7 +14220,7 @@ class NaslServer {
|
|
|
14473
14220
|
const fileNodeChildren = <span class="cstat-no" title="statement not covered" >fileNode.children;</span>
|
|
14474
14221
|
<span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i < fileNodeChildren.length; i++) {</span>
|
|
14475
14222
|
const fileNodeItem = <span class="cstat-no" title="statement not covered" >fileNodeChildren[i];</span>
|
|
14476
|
-
const result = <span class="cstat-no" title="statement not covered" >
|
|
14223
|
+
const result = (<span class="cstat-no" title="statement not covered" >fileNodeItem as FileNode).toEmbeddedTSFile();</span>
|
|
14477
14224
|
<span class="cstat-no" title="statement not covered" > fileNodeItem.sourceMap = result.sourceMap;</span>
|
|
14478
14225
|
<span class="cstat-no" title="statement not covered" > if (action === 'create') {</span>
|
|
14479
14226
|
<span class="cstat-no" title="statement not covered" > await this.handleChange(fileNodeItem, fileNodeItem, result, action);</span>
|
|
@@ -14497,7 +14244,8 @@ class NaslServer {
|
|
|
14497
14244
|
<span class="cstat-no" title="statement not covered" > isChangeInterface = true;</span>
|
|
14498
14245
|
}
|
|
14499
14246
|
const module: Module = <span class="cstat-no" title="statement not covered" >targetNode as Module;</span>
|
|
14500
|
-
const results = <span class="cstat-no" title="statement not covered" >
|
|
14247
|
+
const results: Array<ReturnType<Structure['toEmbeddedTSFile']>> = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
14248
|
+
<span class="cstat-no" title="statement not covered" > this.contentToFile(module, results);</span>
|
|
14501
14249
|
<span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i < results.length; i++) {</span>
|
|
14502
14250
|
const result = <span class="cstat-no" title="statement not covered" >results[i];</span>
|
|
14503
14251
|
const node = <span class="cstat-no" title="statement not covered" >this.file2NodeMap.get(result.filePath);</span>
|
|
@@ -14524,7 +14272,7 @@ class NaslServer {
|
|
|
14524
14272
|
<span class="cstat-no" title="statement not covered" > if (fileNode instanceof DataSource) {</span>
|
|
14525
14273
|
(<span class="cstat-no" title="statement not covered" >fileNode as DataSource).entities.forEach(<span class="fstat-no" title="function not covered" >async </span>(entity) => {</span>
|
|
14526
14274
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
14527
|
-
const result = <span class="cstat-no" title="statement not covered" >
|
|
14275
|
+
const result = <span class="cstat-no" title="statement not covered" >entity.toEmbeddedTSFile();</span>
|
|
14528
14276
|
const parentPath = <span class="cstat-no" title="statement not covered" >oldpath.replace('.ts', '/');</span>
|
|
14529
14277
|
const currentOldPath = <span class="cstat-no" title="statement not covered" >`${parentPath }/entities/${ entity.name }.ts`;</span>
|
|
14530
14278
|
// 因为重命名这里只有当前修改父级的 旧名称, 所以他的子集也要根据旧名称去查依赖 更新内容
|
|
@@ -14561,25 +14309,20 @@ class NaslServer {
|
|
|
14561
14309
|
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
14562
14310
|
}
|
|
14563
14311
|
|
|
14564
|
-
// debugger;
|
|
14565
14312
|
<span class="cstat-no" title="statement not covered" > if (process.env.NODE_ENV === 'development') {</span>
|
|
14566
14313
|
<span class="cstat-no" title="statement not covered" > console.time('重新生成 TS 文件');</span>
|
|
14567
14314
|
}
|
|
14568
|
-
|
|
14569
|
-
const fileTsPath = <span class="cstat-no" title="statement not covered" >fileNode.getEmbeddedFilePath();</span>
|
|
14570
|
-
const result = <span class="cstat-no" title="statement not covered" >await utils.timeSlicingWithGenerator(fileNode.toEmbeddedTSFile());</span>
|
|
14571
|
-
|
|
14315
|
+
const result = (<span class="cstat-no" title="statement not covered" >fileNode as FileNode).toEmbeddedTSFile();</span>
|
|
14572
14316
|
<span class="cstat-no" title="statement not covered" > if (process.env.NODE_ENV === 'development') {</span>
|
|
14573
14317
|
<span class="cstat-no" title="statement not covered" > console.timeEnd('重新生成 TS 文件');</span>
|
|
14574
|
-
<span class="cstat-no" title="statement not covered" > console.log('重新生成 TS 文件',
|
|
14318
|
+
<span class="cstat-no" title="statement not covered" > console.log('重新生成 TS 文件', (fileNode as FileNode).getEmbeddedFilePath());</span>
|
|
14575
14319
|
}
|
|
14576
14320
|
|
|
14577
14321
|
// 当前操作的节点
|
|
14578
14322
|
// 如果当前没有生成tsFile
|
|
14579
|
-
<span class="cstat-no" title="statement not covered" > if (!result
|
|
14323
|
+
<span class="cstat-no" title="statement not covered" > if (!result) {</span>
|
|
14580
14324
|
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
14581
14325
|
}
|
|
14582
|
-
|
|
14583
14326
|
// 修改触发修改文件
|
|
14584
14327
|
<span class="cstat-no" title="statement not covered" > this._debugInFileStorage(targetNode, [</span>
|
|
14585
14328
|
{
|
|
@@ -14589,7 +14332,6 @@ class NaslServer {
|
|
|
14589
14332
|
]);
|
|
14590
14333
|
|
|
14591
14334
|
<span class="cstat-no" title="statement not covered" > fileNode.sourceMap = result.sourceMap;</span>
|
|
14592
|
-
|
|
14593
14335
|
<span class="cstat-no" title="statement not covered" > if (action === 'update' || action === 'create') {</span>
|
|
14594
14336
|
<span class="cstat-no" title="statement not covered" > if ($event?.field !== 'name') {</span>
|
|
14595
14337
|
<span class="cstat-no" title="statement not covered" > await this.handleChange(fileNode, targetNode, result, action);</span>
|
|
@@ -14644,7 +14386,7 @@ export { NaslServer };
|
|
|
14644
14386
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
14645
14387
|
Code coverage generated by
|
|
14646
14388
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
14647
|
-
at 2023-
|
|
14389
|
+
at 2023-10-18T11:36:07.885Z
|
|
14648
14390
|
</div>
|
|
14649
14391
|
<script src="../../prettify.js"></script>
|
|
14650
14392
|
<script>
|