@lcap/nasl 3.3.3-beta.8 → 3.3.5-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nyc_output/{78804420-ead6-486f-b682-ab54ccd95dc9.json → b920244d-8d01-4e76-be5a-95132217c5a1.json} +1 -1
- package/.nyc_output/processinfo/b920244d-8d01-4e76-be5a-95132217c5a1.json +1 -0
- package/.nyc_output/processinfo/index.json +1 -1
- package/coverage/index.html +113 -128
- package/coverage/src/automate/engine/index.html +1 -1
- package/coverage/src/automate/engine/utils.js.html +26 -26
- package/coverage/src/bak/index.html +15 -15
- package/coverage/src/bak/translator.js.html +63 -390
- package/coverage/src/breakpoint/generator/AfterStartNode.ts.html +1 -1
- package/coverage/src/breakpoint/generator/BeforeEndNode.ts.html +1 -1
- package/coverage/src/breakpoint/generator/BreakpointNode.ts.html +1 -1
- package/coverage/src/breakpoint/generator/CallbackNode.ts.html +1 -1
- package/coverage/src/breakpoint/generator/index.html +1 -1
- package/coverage/src/breakpoint/generator/index.ts.html +1 -1
- package/coverage/src/breakpoint/index.html +1 -1
- package/coverage/src/breakpoint/index.ts.html +1 -1
- package/coverage/src/breakpoint/shared/constants.ts.html +1 -1
- package/coverage/src/breakpoint/shared/index.html +1 -1
- package/coverage/src/breakpoint/shared/index.ts.html +1 -1
- package/coverage/src/breakpoint/shared/operations.ts.html +2 -2
- package/coverage/src/breakpoint/shared/socket.ts.html +1 -1
- package/coverage/src/breakpoint/shared/utils.ts.html +1 -1
- package/coverage/src/breakpoint/store/core.ts.html +3 -3
- package/coverage/src/breakpoint/store/dock.ts.html +1 -1
- package/coverage/src/breakpoint/store/index.html +1 -1
- package/coverage/src/breakpoint/store/index.ts.html +1 -1
- package/coverage/src/common/BaseNode.ts.html +370 -592
- package/coverage/src/common/Command.ts.html +1 -1
- package/coverage/src/common/EventEmitter.ts.html +34 -31
- package/coverage/src/common/Messager.ts.html +1 -1
- package/coverage/src/common/asyncFuncMap.ts.html +1 -1
- package/coverage/src/common/index.html +23 -38
- package/coverage/src/common/index.ts.html +4 -7
- package/coverage/src/concepts/Abort__.ts.html +9 -36
- package/coverage/src/concepts/Anchor__.ts.html +22 -58
- package/coverage/src/concepts/AnonymousFunction__.ts.html +77 -107
- package/coverage/src/concepts/App__.ts.html +253 -907
- package/coverage/src/concepts/Argument__.ts.html +54 -195
- package/coverage/src/concepts/Assignee__.ts.html +70 -79
- package/coverage/src/concepts/AssignmentLine__.ts.html +21 -33
- package/coverage/src/concepts/Assignment__.ts.html +49 -130
- package/coverage/src/concepts/Attribute__.ts.html +179 -20
- package/coverage/src/concepts/AuthInterface__.ts.html +1 -1
- package/coverage/src/concepts/AuthLogicForCallInterface__.ts.html +161 -98
- package/coverage/src/concepts/AuthLogic__.ts.html +1 -1
- package/coverage/src/concepts/BackendVariable__.ts.html +226 -139
- package/coverage/src/concepts/Backend__.ts.html +35 -86
- package/coverage/src/concepts/BatchAssignment__.ts.html +65 -95
- package/coverage/src/concepts/BinaryExpression__.ts.html +89 -218
- package/coverage/src/concepts/BindAttribute__.ts.html +125 -440
- package/coverage/src/concepts/BindDirective__.ts.html +40 -64
- package/coverage/src/concepts/BindEvent__.ts.html +71 -86
- package/coverage/src/concepts/BindStyle__.ts.html +34 -58
- package/coverage/src/concepts/BooleanLiteral__.ts.html +8 -32
- package/coverage/src/concepts/CallAuthInterface__.ts.html +57 -87
- package/coverage/src/concepts/CallConnector__.ts.html +35 -59
- package/coverage/src/concepts/CallFunction__.ts.html +145 -247
- package/coverage/src/concepts/CallInterface__.ts.html +77 -53
- package/coverage/src/concepts/CallLogic__.ts.html +181 -244
- package/coverage/src/concepts/CallQueryComponent__.ts.html +181 -103
- package/coverage/src/concepts/Comment__.ts.html +10 -40
- package/coverage/src/concepts/CompletionProperty__.ts.html +17 -23
- package/coverage/src/concepts/ConfigGroup__.ts.html +27 -27
- package/coverage/src/concepts/ConfigPropertyValue__.ts.html +1 -1
- package/coverage/src/concepts/ConfigProperty__.ts.html +36 -66
- package/coverage/src/concepts/Configuration__.ts.html +27 -27
- package/coverage/src/concepts/Connection__.ts.html +29 -77
- package/coverage/src/concepts/ConnectorTrigger__.ts.html +1 -1
- package/coverage/src/concepts/Connector__.ts.html +92 -80
- package/coverage/src/concepts/Constant__.ts.html +222 -72
- package/coverage/src/concepts/DataSource__.ts.html +32 -59
- package/coverage/src/concepts/DatabaseTypeAnnotation__.ts.html +1 -1
- package/coverage/src/{utils/time-slicing/controller.ts.html → concepts/DefaultValue__.ts.html} +294 -459
- package/coverage/src/concepts/Destination__.ts.html +67 -79
- package/coverage/src/concepts/End__.ts.html +21 -48
- package/coverage/src/concepts/EntityIndex__.ts.html +17 -35
- package/coverage/src/concepts/EntityProperty__.ts.html +208 -118
- package/coverage/src/concepts/Entity__.ts.html +123 -81
- package/coverage/src/concepts/EnumItem__.ts.html +10 -37
- package/coverage/src/concepts/Enum__.ts.html +32 -65
- package/coverage/src/concepts/Event__.ts.html +21 -21
- package/coverage/src/concepts/ExternalDestination__.ts.html +30 -57
- package/coverage/src/concepts/ForEachStatement__.ts.html +89 -98
- package/coverage/src/concepts/FrontendLibrary__.ts.html +35 -35
- package/coverage/src/concepts/FrontendVariable__.ts.html +1 -1
- package/coverage/src/concepts/Frontend__.ts.html +93 -132
- package/coverage/src/concepts/Function__.ts.html +98 -131
- package/coverage/src/concepts/Identifier__.ts.html +67 -103
- package/coverage/src/concepts/IfStatement__.ts.html +67 -88
- package/coverage/src/concepts/Integration__.ts.html +31 -37
- package/coverage/src/concepts/InterfaceParam__.ts.html +179 -65
- package/coverage/src/concepts/Interface__.ts.html +74 -107
- package/coverage/src/concepts/JSBlock__.ts.html +11 -212
- package/coverage/src/concepts/JavaLogic__.ts.html +9 -39
- package/coverage/src/concepts/LogicItem__.ts.html +17 -44
- package/coverage/src/concepts/Logic__.ts.html +503 -263
- package/coverage/src/concepts/MatchCase__.ts.html +87 -126
- package/coverage/src/concepts/Match__.ts.html +56 -74
- package/coverage/src/concepts/MemberExpression__.ts.html +59 -95
- package/coverage/src/concepts/MicroApp__.ts.html +1 -1
- package/coverage/src/concepts/Module__.ts.html +136 -625
- package/coverage/src/concepts/MsgTriggerEvent__.ts.html +21 -21
- package/coverage/src/concepts/MsgTriggerLauncher__.ts.html +21 -21
- package/coverage/src/concepts/Namespace__.ts.html +178 -166
- package/coverage/src/concepts/NewComposite__.ts.html +178 -295
- package/coverage/src/concepts/NewList__.ts.html +75 -129
- package/coverage/src/concepts/NewMap__.ts.html +139 -100
- package/coverage/src/concepts/New__.ts.html +9 -39
- package/coverage/src/concepts/NullLiteral__.ts.html +5 -29
- package/coverage/src/concepts/NumericLiteral__.ts.html +29 -65
- package/coverage/src/concepts/OqlQueryComponent__.ts.html +39 -69
- package/coverage/src/concepts/OverriddenLogic__.ts.html +264 -234
- package/coverage/src/concepts/Param__.ts.html +154 -196
- package/coverage/src/concepts/Point__.ts.html +1 -1
- package/coverage/src/concepts/ProcessComponent__.ts.html +36 -36
- package/coverage/src/concepts/ProcessElement__.ts.html +285 -183
- package/coverage/src/concepts/ProcessOutcome__.ts.html +13 -82
- package/coverage/src/concepts/ProcessOutcomes__.ts.html +20 -80
- package/coverage/src/concepts/Process__.ts.html +284 -122
- package/coverage/src/concepts/QueryAggregateExpression__.ts.html +20 -50
- package/coverage/src/concepts/QueryFieldExpression__.ts.html +11 -38
- package/coverage/src/concepts/QueryFromExpression__.ts.html +29 -62
- package/coverage/src/concepts/QueryGroupByExpression__.ts.html +23 -53
- package/coverage/src/concepts/QueryJoinExpression__.ts.html +41 -62
- package/coverage/src/concepts/QueryLimitExpression__.ts.html +29 -59
- package/coverage/src/concepts/QueryOrderByExpression__.ts.html +29 -62
- package/coverage/src/concepts/QuerySelectExpression__.ts.html +22 -22
- package/coverage/src/concepts/Rect__.ts.html +1 -1
- package/coverage/src/concepts/Return__.ts.html +187 -148
- package/coverage/src/concepts/Role__.ts.html +15 -42
- package/coverage/src/concepts/SelectMembers__.ts.html +31 -55
- package/coverage/src/concepts/Slot__.ts.html +17 -23
- package/coverage/src/concepts/SqlQueryComponent__.ts.html +28 -67
- package/coverage/src/concepts/Start__.ts.html +5 -29
- package/coverage/src/concepts/StringInterpolation__.ts.html +31 -79
- package/coverage/src/concepts/StringLiteral__.ts.html +26 -53
- package/coverage/src/concepts/StructureProperty__.ts.html +175 -64
- package/coverage/src/concepts/Structure__.ts.html +73 -67
- package/coverage/src/concepts/SwitchCase__.ts.html +45 -66
- package/coverage/src/concepts/SwitchStatement__.ts.html +28 -58
- package/coverage/src/concepts/Theme__.ts.html +7 -7
- package/coverage/src/concepts/Transactional__.ts.html +1 -1
- package/coverage/src/concepts/TriggerEvent__.ts.html +21 -21
- package/coverage/src/concepts/TriggerLauncher__.ts.html +13 -43
- package/coverage/src/concepts/TypeAnnotation__.ts.html +106 -223
- package/coverage/src/concepts/TypeParam__.ts.html +11 -38
- package/coverage/src/concepts/UnaryExpression__.ts.html +28 -73
- package/coverage/src/concepts/Unparsed__.ts.html +6 -27
- package/coverage/src/concepts/UseComponent__.ts.html +1 -1
- package/coverage/src/concepts/ValidationRule__.ts.html +57 -60
- package/coverage/src/concepts/Variable__.ts.html +238 -142
- package/coverage/src/concepts/ViewBlock__.ts.html +1 -1
- package/coverage/src/concepts/ViewComponent__.ts.html +80 -8
- package/coverage/src/concepts/ViewElement__.ts.html +238 -463
- package/coverage/src/concepts/View__.ts.html +296 -251
- package/coverage/src/concepts/WhileStatement__.ts.html +54 -75
- package/coverage/src/concepts/basics/stdlib/index.html +8 -8
- package/coverage/src/concepts/basics/stdlib/index.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.auth.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.browser.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.collection.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.configuration.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.core.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.event.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.http.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.interface.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.io.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.logging.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.process.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.ui.ts.html +1 -1
- package/coverage/src/concepts/basics/stdlib/nasl.util.ts.html +130 -19
- 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 +858 -858
- package/coverage/src/concepts/index.ts.html +1 -1
- package/coverage/src/concepts/index__.ts.html +2 -2
- package/coverage/src/config.ts.html +1 -1
- package/coverage/src/decorators/index.html +16 -16
- package/coverage/src/decorators/index.ts.html +40 -31
- package/coverage/src/decorators/promise.ts.html +10 -10
- package/coverage/src/eventBus.ts.html +1 -1
- package/coverage/src/generator/compileComponent.ts.html +4 -4
- package/coverage/src/generator/genBundleFiles.ts.html +23 -17
- package/coverage/src/generator/genHash.ts.html +3 -3
- package/coverage/src/generator/genMetaData.ts.html +31 -76
- package/coverage/src/generator/genReleaseBody.ts.html +4 -4
- package/coverage/src/generator/icestark.ts.html +4 -10
- package/coverage/src/generator/index.html +20 -20
- 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 +1 -1
- package/coverage/src/index.ts.html +7 -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 +1 -1
- 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 +1 -1
- package/coverage/src/sentry/index.html +14 -14
- package/coverage/src/sentry/index.ts.html +32 -38
- package/coverage/src/server/createUiTs.ts.html +1 -1
- package/coverage/src/server/entity2LogicNamespace.ts.html +1 -1
- package/coverage/src/server/event.js.html +1 -1
- package/coverage/src/server/extendBaseNode.ts.html +4 -7
- package/coverage/src/server/formatTsUtils.ts.html +2 -2
- package/coverage/src/server/getConnector.ts.html +1 -1
- package/coverage/src/server/getExtensionModules.ts.html +1 -1
- package/coverage/src/server/getFunctions.ts.html +4 -4
- package/coverage/src/server/getInterfaces.ts.html +1 -1
- package/coverage/src/server/getLogging.ts.html +2 -2
- package/coverage/src/server/getLogics.ts.html +1 -1
- package/coverage/src/server/getMemberIdentifier.ts.html +128 -131
- package/coverage/src/server/getProcessComponents.ts.html +3 -3
- package/coverage/src/server/getProcesses.ts.html +1 -1
- package/coverage/src/server/getValidates.ts.html +4 -4
- package/coverage/src/server/index.html +26 -26
- package/coverage/src/server/index.ts.html +1 -1
- package/coverage/src/server/naslServer.ts.html +880 -1177
- package/coverage/src/server/naslStdlibMap.ts.html +1 -1
- package/coverage/src/server/process2LogicNamespace.ts.html +52 -52
- package/coverage/src/server/translator.ts.html +14 -50
- package/coverage/src/service/creator/add.configs.js.html +2 -2
- package/coverage/src/service/creator/errHandles.js.html +1 -1
- package/coverage/src/service/creator/index.html +1 -1
- 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 +27 -27
- package/coverage/src/service/storage/index.ts.html +1 -1
- package/coverage/src/service/storage/init.ts.html +137 -110
- package/coverage/src/service/storage/jsoner.ts.html +13 -76
- package/coverage/src/service/storage/map.ts.html +3 -3
- package/coverage/src/service/storage/service.ts.html +1 -1
- package/coverage/src/service/storage/storagePoint.ts.html +1 -1
- package/coverage/src/templator/genCallComponentLogic.ts.html +1 -1
- package/coverage/src/templator/genCreateBlock.ts.html +56 -47
- package/coverage/src/templator/genCurdEditMultipleKeyBlock.ts.html +31 -49
- package/coverage/src/templator/genCurdMultipleKeyBlock.ts.html +89 -80
- package/coverage/src/templator/genEditTableBlock.ts.html +9 -12
- 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 +1 -1
- package/coverage/src/templator/genUpdateBlock.ts.html +36 -48
- package/coverage/src/templator/index.html +39 -39
- package/coverage/src/templator/index.ts.html +1 -1
- package/coverage/src/templator/utils.ts.html +11 -77
- package/coverage/src/translator/constant.ts.html +1 -1
- package/coverage/src/translator/index.html +21 -21
- package/coverage/src/translator/index.ts.html +1 -1
- package/coverage/src/translator/utils.ts.html +68 -389
- package/coverage/src/utils/cookie.ts.html +4 -4
- package/coverage/src/utils/env.ts.html +1 -1
- package/coverage/src/utils/index.html +41 -26
- package/coverage/src/utils/index.ts.html +9 -63
- package/coverage/src/utils/logger.ts.html +13 -13
- package/coverage/src/utils/sortTsString.ts.html +10 -25
- package/coverage/src/utils/string.ts.html +8 -110
- package/coverage/src/utils/time-slicing.ts.html +1 -1
- package/coverage/src/utils/traverse.ts.html +1 -1
- package/coverage/src/utils/window.ts.html +1 -1
- package/out/common/Command.js +1 -1
- package/out/common/Command.js.map +1 -1
- package/out/concepts/Match__.js +1 -1
- package/out/concepts/Match__.js.map +1 -1
- package/out/concepts/View__.js +2 -2
- package/out/concepts/View__.js.map +1 -1
- package/package.json +1 -1
- package/src/common/Command.ts +1 -1
- package/src/concepts/Match__.ts +1 -1
- package/src/concepts/View__.ts +5 -5
- package/.nyc_output/processinfo/78804420-ead6-486f-b682-ab54ccd95dc9.json +0 -1
- package/coverage/cobertura-coverage.xml +0 -71878
- package/coverage/src/automate/engine/index.js.html +0 -1471
- package/coverage/src/automate/engine/operators.js.html +0 -862
- package/coverage/src/automate/engine/uniqueName.js.html +0 -412
- package/coverage/src/automate/engine/viewCache.js.html +0 -214
- package/coverage/src/automate/template/index.html +0 -116
- package/coverage/src/automate/template/myProcess.js.html +0 -34645
- package/coverage/src/common/utils.ts.html +0 -136
- package/coverage/src/concepts/DataElement__.ts.html +0 -118
- package/coverage/src/concepts/MetadataType__.ts.html +0 -2053
- package/coverage/src/utils/time-slicing/constant.ts.html +0 -196
- package/coverage/src/utils/time-slicing/index.html +0 -236
- package/coverage/src/utils/time-slicing/index.ts.html +0 -103
- package/coverage/src/utils/time-slicing/page-state.ts.html +0 -121
- package/coverage/src/utils/time-slicing/performance.ts.html +0 -253
- package/coverage/src/utils/time-slicing/runner.ts.html +0 -247
- package/coverage/src/utils/time-slicing/tool.ts.html +0 -220
- package/coverage/src/utils/time-slicing/utils.ts.html +0 -355
- package/coverage/src/utils/time-slicing/wrapper.ts.html +0 -259
- package/coverage/src/utils/time.ts.html +0 -118
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">1.
|
|
26
|
+
<span class="strong">1.78% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>39/2183</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/1680</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.81% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>38/2095</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -4820,106 +4820,7 @@
|
|
|
4820
4820
|
<a name='L4755'></a><a href='#L4755'>4755</a>
|
|
4821
4821
|
<a name='L4756'></a><a href='#L4756'>4756</a>
|
|
4822
4822
|
<a name='L4757'></a><a href='#L4757'>4757</a>
|
|
4823
|
-
<a name='L4758'></a><a href='#L4758'>4758</a>
|
|
4824
|
-
<a name='L4759'></a><a href='#L4759'>4759</a>
|
|
4825
|
-
<a name='L4760'></a><a href='#L4760'>4760</a>
|
|
4826
|
-
<a name='L4761'></a><a href='#L4761'>4761</a>
|
|
4827
|
-
<a name='L4762'></a><a href='#L4762'>4762</a>
|
|
4828
|
-
<a name='L4763'></a><a href='#L4763'>4763</a>
|
|
4829
|
-
<a name='L4764'></a><a href='#L4764'>4764</a>
|
|
4830
|
-
<a name='L4765'></a><a href='#L4765'>4765</a>
|
|
4831
|
-
<a name='L4766'></a><a href='#L4766'>4766</a>
|
|
4832
|
-
<a name='L4767'></a><a href='#L4767'>4767</a>
|
|
4833
|
-
<a name='L4768'></a><a href='#L4768'>4768</a>
|
|
4834
|
-
<a name='L4769'></a><a href='#L4769'>4769</a>
|
|
4835
|
-
<a name='L4770'></a><a href='#L4770'>4770</a>
|
|
4836
|
-
<a name='L4771'></a><a href='#L4771'>4771</a>
|
|
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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
4823
|
+
<a name='L4758'></a><a href='#L4758'>4758</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
4923
4824
|
<span class="cline-any cline-yes">1x</span>
|
|
4924
4825
|
<span class="cline-any cline-yes">1x</span>
|
|
4925
4826
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -5006,8 +4907,6 @@
|
|
|
5006
4907
|
<span class="cline-any cline-neutral"> </span>
|
|
5007
4908
|
<span class="cline-any cline-neutral"> </span>
|
|
5008
4909
|
<span class="cline-any cline-neutral"> </span>
|
|
5009
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5010
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5011
4910
|
<span class="cline-any cline-yes">1x</span>
|
|
5012
4911
|
<span class="cline-any cline-yes">1x</span>
|
|
5013
4912
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -5023,6 +4922,7 @@
|
|
|
5023
4922
|
<span class="cline-any cline-neutral"> </span>
|
|
5024
4923
|
<span class="cline-any cline-yes">1x</span>
|
|
5025
4924
|
<span class="cline-any cline-yes">1x</span>
|
|
4925
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5026
4926
|
<span class="cline-any cline-yes">1x</span>
|
|
5027
4927
|
<span class="cline-any cline-neutral"> </span>
|
|
5028
4928
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -5060,6 +4960,9 @@
|
|
|
5060
4960
|
<span class="cline-any cline-neutral"> </span>
|
|
5061
4961
|
<span class="cline-any cline-neutral"> </span>
|
|
5062
4962
|
<span class="cline-any cline-neutral"> </span>
|
|
4963
|
+
<span class="cline-any cline-neutral"> </span>
|
|
4964
|
+
<span class="cline-any cline-neutral"> </span>
|
|
4965
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5063
4966
|
<span class="cline-any cline-yes">1x</span>
|
|
5064
4967
|
<span class="cline-any cline-neutral"> </span>
|
|
5065
4968
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -5104,6 +5007,7 @@
|
|
|
5104
5007
|
<span class="cline-any cline-neutral"> </span>
|
|
5105
5008
|
<span class="cline-any cline-neutral"> </span>
|
|
5106
5009
|
<span class="cline-any cline-neutral"> </span>
|
|
5010
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5107
5011
|
<span class="cline-any cline-no"> </span>
|
|
5108
5012
|
<span class="cline-any cline-neutral"> </span>
|
|
5109
5013
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -5113,6 +5017,7 @@
|
|
|
5113
5017
|
<span class="cline-any cline-no"> </span>
|
|
5114
5018
|
<span class="cline-any cline-neutral"> </span>
|
|
5115
5019
|
<span class="cline-any cline-neutral"> </span>
|
|
5020
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5116
5021
|
<span class="cline-any cline-yes">1x</span>
|
|
5117
5022
|
<span class="cline-any cline-neutral"> </span>
|
|
5118
5023
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -5294,10 +5199,10 @@
|
|
|
5294
5199
|
<span class="cline-any cline-neutral"> </span>
|
|
5295
5200
|
<span class="cline-any cline-neutral"> </span>
|
|
5296
5201
|
<span class="cline-any cline-neutral"> </span>
|
|
5202
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5297
5203
|
<span class="cline-any cline-no"> </span>
|
|
5298
5204
|
<span class="cline-any cline-no"> </span>
|
|
5299
5205
|
<span class="cline-any cline-neutral"> </span>
|
|
5300
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5301
5206
|
<span class="cline-any cline-no"> </span>
|
|
5302
5207
|
<span class="cline-any cline-no"> </span>
|
|
5303
5208
|
<span class="cline-any cline-no"> </span>
|
|
@@ -5305,38 +5210,62 @@
|
|
|
5305
5210
|
<span class="cline-any cline-neutral"> </span>
|
|
5306
5211
|
<span class="cline-any cline-no"> </span>
|
|
5307
5212
|
<span class="cline-any cline-no"> </span>
|
|
5308
|
-
<span class="cline-any cline-no"> </span>
|
|
5309
5213
|
<span class="cline-any cline-neutral"> </span>
|
|
5310
5214
|
<span class="cline-any cline-neutral"> </span>
|
|
5311
5215
|
<span class="cline-any cline-no"> </span>
|
|
5216
|
+
<span class="cline-any cline-no"> </span>
|
|
5217
|
+
<span class="cline-any cline-no"> </span>
|
|
5218
|
+
<span class="cline-any cline-no"> </span>
|
|
5219
|
+
<span class="cline-any cline-no"> </span>
|
|
5220
|
+
<span class="cline-any cline-no"> </span>
|
|
5221
|
+
<span class="cline-any cline-no"> </span>
|
|
5222
|
+
<span class="cline-any cline-no"> </span>
|
|
5223
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5224
|
+
<span class="cline-any cline-no"> </span>
|
|
5225
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5312
5226
|
<span class="cline-any cline-neutral"> </span>
|
|
5313
5227
|
<span class="cline-any cline-no"> </span>
|
|
5314
5228
|
<span class="cline-any cline-no"> </span>
|
|
5315
5229
|
<span class="cline-any cline-no"> </span>
|
|
5230
|
+
<span class="cline-any cline-no"> </span>
|
|
5316
5231
|
<span class="cline-any cline-neutral"> </span>
|
|
5317
5232
|
<span class="cline-any cline-no"> </span>
|
|
5318
5233
|
<span class="cline-any cline-no"> </span>
|
|
5319
5234
|
<span class="cline-any cline-neutral"> </span>
|
|
5235
|
+
<span class="cline-any cline-no"> </span>
|
|
5320
5236
|
<span class="cline-any cline-neutral"> </span>
|
|
5321
5237
|
<span class="cline-any cline-neutral"> </span>
|
|
5322
5238
|
<span class="cline-any cline-no"> </span>
|
|
5323
5239
|
<span class="cline-any cline-no"> </span>
|
|
5324
5240
|
<span class="cline-any cline-no"> </span>
|
|
5241
|
+
<span class="cline-any cline-no"> </span>
|
|
5242
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5243
|
+
<span class="cline-any cline-no"> </span>
|
|
5244
|
+
<span class="cline-any cline-no"> </span>
|
|
5325
5245
|
<span class="cline-any cline-neutral"> </span>
|
|
5246
|
+
<span class="cline-any cline-no"> </span>
|
|
5326
5247
|
<span class="cline-any cline-neutral"> </span>
|
|
5327
5248
|
<span class="cline-any cline-no"> </span>
|
|
5328
5249
|
<span class="cline-any cline-no"> </span>
|
|
5250
|
+
<span class="cline-any cline-no"> </span>
|
|
5251
|
+
<span class="cline-any cline-no"> </span>
|
|
5329
5252
|
<span class="cline-any cline-neutral"> </span>
|
|
5330
5253
|
<span class="cline-any cline-no"> </span>
|
|
5331
5254
|
<span class="cline-any cline-no"> </span>
|
|
5255
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5332
5256
|
<span class="cline-any cline-no"> </span>
|
|
5333
5257
|
<span class="cline-any cline-neutral"> </span>
|
|
5334
5258
|
<span class="cline-any cline-neutral"> </span>
|
|
5335
5259
|
<span class="cline-any cline-no"> </span>
|
|
5336
5260
|
<span class="cline-any cline-no"> </span>
|
|
5337
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5338
5261
|
<span class="cline-any cline-no"> </span>
|
|
5339
5262
|
<span class="cline-any cline-no"> </span>
|
|
5263
|
+
<span class="cline-any cline-no"> </span>
|
|
5264
|
+
<span class="cline-any cline-no"> </span>
|
|
5265
|
+
<span class="cline-any cline-no"> </span>
|
|
5266
|
+
<span class="cline-any cline-no"> </span>
|
|
5267
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5268
|
+
<span class="cline-any cline-no"> </span>
|
|
5340
5269
|
<span class="cline-any cline-neutral"> </span>
|
|
5341
5270
|
<span class="cline-any cline-neutral"> </span>
|
|
5342
5271
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -5345,52 +5274,99 @@
|
|
|
5345
5274
|
<span class="cline-any cline-no"> </span>
|
|
5346
5275
|
<span class="cline-any cline-no"> </span>
|
|
5347
5276
|
<span class="cline-any cline-neutral"> </span>
|
|
5277
|
+
<span class="cline-any cline-no"> </span>
|
|
5348
5278
|
<span class="cline-any cline-neutral"> </span>
|
|
5349
5279
|
<span class="cline-any cline-neutral"> </span>
|
|
5280
|
+
<span class="cline-any cline-no"> </span>
|
|
5281
|
+
<span class="cline-any cline-no"> </span>
|
|
5282
|
+
<span class="cline-any cline-no"> </span>
|
|
5283
|
+
<span class="cline-any cline-no"> </span>
|
|
5284
|
+
<span class="cline-any cline-no"> </span>
|
|
5350
5285
|
<span class="cline-any cline-neutral"> </span>
|
|
5286
|
+
<span class="cline-any cline-no"> </span>
|
|
5287
|
+
<span class="cline-any cline-no"> </span>
|
|
5351
5288
|
<span class="cline-any cline-neutral"> </span>
|
|
5352
5289
|
<span class="cline-any cline-neutral"> </span>
|
|
5290
|
+
<span class="cline-any cline-no"> </span>
|
|
5353
5291
|
<span class="cline-any cline-neutral"> </span>
|
|
5354
5292
|
<span class="cline-any cline-neutral"> </span>
|
|
5355
5293
|
<span class="cline-any cline-neutral"> </span>
|
|
5356
5294
|
<span class="cline-any cline-neutral"> </span>
|
|
5295
|
+
<span class="cline-any cline-no"> </span>
|
|
5357
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>
|
|
5358
5300
|
<span class="cline-any cline-neutral"> </span>
|
|
5301
|
+
<span class="cline-any cline-no"> </span>
|
|
5302
|
+
<span class="cline-any cline-no"> </span>
|
|
5359
5303
|
<span class="cline-any cline-neutral"> </span>
|
|
5304
|
+
<span class="cline-any cline-no"> </span>
|
|
5305
|
+
<span class="cline-any cline-no"> </span>
|
|
5306
|
+
<span class="cline-any cline-no"> </span>
|
|
5307
|
+
<span class="cline-any cline-no"> </span>
|
|
5360
5308
|
<span class="cline-any cline-neutral"> </span>
|
|
5309
|
+
<span class="cline-any cline-no"> </span>
|
|
5310
|
+
<span class="cline-any cline-no"> </span>
|
|
5361
5311
|
<span class="cline-any cline-neutral"> </span>
|
|
5362
5312
|
<span class="cline-any cline-neutral"> </span>
|
|
5363
5313
|
<span class="cline-any cline-neutral"> </span>
|
|
5364
5314
|
<span class="cline-any cline-neutral"> </span>
|
|
5365
|
-
<span class="cline-any cline-
|
|
5315
|
+
<span class="cline-any cline-no"> </span>
|
|
5316
|
+
<span class="cline-any cline-no"> </span>
|
|
5317
|
+
<span class="cline-any cline-no"> </span>
|
|
5366
5318
|
<span class="cline-any cline-no"> </span>
|
|
5367
5319
|
<span class="cline-any cline-neutral"> </span>
|
|
5320
|
+
<span class="cline-any cline-no"> </span>
|
|
5321
|
+
<span class="cline-any cline-no"> </span>
|
|
5368
5322
|
<span class="cline-any cline-neutral"> </span>
|
|
5369
5323
|
<span class="cline-any cline-neutral"> </span>
|
|
5370
5324
|
<span class="cline-any cline-no"> </span>
|
|
5325
|
+
<span class="cline-any cline-no"> </span>
|
|
5326
|
+
<span class="cline-any cline-no"> </span>
|
|
5327
|
+
<span class="cline-any cline-no"> </span>
|
|
5371
5328
|
<span class="cline-any cline-neutral"> </span>
|
|
5372
5329
|
<span class="cline-any cline-no"> </span>
|
|
5373
5330
|
<span class="cline-any cline-no"> </span>
|
|
5374
5331
|
<span class="cline-any cline-neutral"> </span>
|
|
5332
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5375
5333
|
<span class="cline-any cline-no"> </span>
|
|
5376
5334
|
<span class="cline-any cline-no"> </span>
|
|
5377
5335
|
<span class="cline-any cline-no"> </span>
|
|
5378
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5379
5336
|
<span class="cline-any cline-no"> </span>
|
|
5380
5337
|
<span class="cline-any cline-no"> </span>
|
|
5381
5338
|
<span class="cline-any cline-no"> </span>
|
|
5382
5339
|
<span class="cline-any cline-no"> </span>
|
|
5383
5340
|
<span class="cline-any cline-neutral"> </span>
|
|
5341
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5342
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5343
|
+
<span class="cline-any cline-no"> </span>
|
|
5344
|
+
<span class="cline-any cline-no"> </span>
|
|
5345
|
+
<span class="cline-any cline-no"> </span>
|
|
5384
5346
|
<span class="cline-any cline-no"> </span>
|
|
5385
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-neutral"> </span>
|
|
5386
5351
|
<span class="cline-any cline-neutral"> </span>
|
|
5387
5352
|
<span class="cline-any cline-neutral"> </span>
|
|
5388
5353
|
<span class="cline-any cline-no"> </span>
|
|
5389
5354
|
<span class="cline-any cline-no"> </span>
|
|
5355
|
+
<span class="cline-any cline-no"> </span>
|
|
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>
|
|
5390
5360
|
<span class="cline-any cline-neutral"> </span>
|
|
5391
5361
|
<span class="cline-any cline-neutral"> </span>
|
|
5392
5362
|
<span class="cline-any cline-neutral"> </span>
|
|
5393
5363
|
<span class="cline-any cline-no"> </span>
|
|
5364
|
+
<span class="cline-any cline-no"> </span>
|
|
5365
|
+
<span class="cline-any cline-no"> </span>
|
|
5366
|
+
<span class="cline-any cline-no"> </span>
|
|
5367
|
+
<span class="cline-any cline-no"> </span>
|
|
5368
|
+
<span class="cline-any cline-no"> </span>
|
|
5369
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5394
5370
|
<span class="cline-any cline-neutral"> </span>
|
|
5395
5371
|
<span class="cline-any cline-neutral"> </span>
|
|
5396
5372
|
<span class="cline-any cline-no"> </span>
|
|
@@ -5398,7 +5374,7 @@
|
|
|
5398
5374
|
<span class="cline-any cline-no"> </span>
|
|
5399
5375
|
<span class="cline-any cline-no"> </span>
|
|
5400
5376
|
<span class="cline-any cline-no"> </span>
|
|
5401
|
-
<span class="cline-any cline-
|
|
5377
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5402
5378
|
<span class="cline-any cline-no"> </span>
|
|
5403
5379
|
<span class="cline-any cline-no"> </span>
|
|
5404
5380
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -5407,13 +5383,14 @@
|
|
|
5407
5383
|
<span class="cline-any cline-no"> </span>
|
|
5408
5384
|
<span class="cline-any cline-no"> </span>
|
|
5409
5385
|
<span class="cline-any cline-neutral"> </span>
|
|
5386
|
+
<span class="cline-any cline-no"> </span>
|
|
5387
|
+
<span class="cline-any cline-no"> </span>
|
|
5388
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5410
5389
|
<span class="cline-any cline-neutral"> </span>
|
|
5411
5390
|
<span class="cline-any cline-no"> </span>
|
|
5412
5391
|
<span class="cline-any cline-no"> </span>
|
|
5413
5392
|
<span class="cline-any cline-no"> </span>
|
|
5414
5393
|
<span class="cline-any cline-no"> </span>
|
|
5415
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5416
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5417
5394
|
<span class="cline-any cline-no"> </span>
|
|
5418
5395
|
<span class="cline-any cline-no"> </span>
|
|
5419
5396
|
<span class="cline-any cline-no"> </span>
|
|
@@ -5428,12 +5405,19 @@
|
|
|
5428
5405
|
<span class="cline-any cline-no"> </span>
|
|
5429
5406
|
<span class="cline-any cline-no"> </span>
|
|
5430
5407
|
<span class="cline-any cline-no"> </span>
|
|
5408
|
+
<span class="cline-any cline-no"> </span>
|
|
5409
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5410
|
+
<span class="cline-any cline-no"> </span>
|
|
5411
|
+
<span class="cline-any cline-no"> </span>
|
|
5431
5412
|
<span class="cline-any cline-neutral"> </span>
|
|
5432
5413
|
<span class="cline-any cline-neutral"> </span>
|
|
5433
5414
|
<span class="cline-any cline-neutral"> </span>
|
|
5434
5415
|
<span class="cline-any cline-neutral"> </span>
|
|
5435
5416
|
<span class="cline-any cline-no"> </span>
|
|
5436
5417
|
<span class="cline-any cline-no"> </span>
|
|
5418
|
+
<span class="cline-any cline-no"> </span>
|
|
5419
|
+
<span class="cline-any cline-no"> </span>
|
|
5420
|
+
<span class="cline-any cline-no"> </span>
|
|
5437
5421
|
<span class="cline-any cline-neutral"> </span>
|
|
5438
5422
|
<span class="cline-any cline-no"> </span>
|
|
5439
5423
|
<span class="cline-any cline-no"> </span>
|
|
@@ -5441,10 +5425,22 @@
|
|
|
5441
5425
|
<span class="cline-any cline-neutral"> </span>
|
|
5442
5426
|
<span class="cline-any cline-no"> </span>
|
|
5443
5427
|
<span class="cline-any cline-no"> </span>
|
|
5428
|
+
<span class="cline-any cline-no"> </span>
|
|
5429
|
+
<span class="cline-any cline-no"> </span>
|
|
5444
5430
|
<span class="cline-any cline-neutral"> </span>
|
|
5445
5431
|
<span class="cline-any cline-no"> </span>
|
|
5432
|
+
<span class="cline-any cline-no"> </span>
|
|
5433
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5446
5434
|
<span class="cline-any cline-neutral"> </span>
|
|
5447
5435
|
<span class="cline-any cline-neutral"> </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-no"> </span>
|
|
5440
|
+
<span class="cline-any cline-no"> </span>
|
|
5441
|
+
<span class="cline-any cline-no"> </span>
|
|
5442
|
+
<span class="cline-any cline-no"> </span>
|
|
5443
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5448
5444
|
<span class="cline-any cline-no"> </span>
|
|
5449
5445
|
<span class="cline-any cline-no"> </span>
|
|
5450
5446
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -5452,38 +5448,65 @@
|
|
|
5452
5448
|
<span class="cline-any cline-neutral"> </span>
|
|
5453
5449
|
<span class="cline-any cline-neutral"> </span>
|
|
5454
5450
|
<span class="cline-any cline-neutral"> </span>
|
|
5451
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5452
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5453
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5454
|
+
<span class="cline-any cline-no"> </span>
|
|
5455
|
+
<span class="cline-any cline-no"> </span>
|
|
5456
|
+
<span class="cline-any cline-no"> </span>
|
|
5457
|
+
<span class="cline-any cline-no"> </span>
|
|
5458
|
+
<span class="cline-any cline-no"> </span>
|
|
5459
|
+
<span class="cline-any cline-no"> </span>
|
|
5460
|
+
<span class="cline-any cline-no"> </span>
|
|
5455
5461
|
<span class="cline-any cline-no"> </span>
|
|
5456
5462
|
<span class="cline-any cline-no"> </span>
|
|
5457
5463
|
<span class="cline-any cline-neutral"> </span>
|
|
5458
5464
|
<span class="cline-any cline-neutral"> </span>
|
|
5459
|
-
<span class="cline-any cline-no"> </span>
|
|
5460
5465
|
<span class="cline-any cline-neutral"> </span>
|
|
5461
5466
|
<span class="cline-any cline-neutral"> </span>
|
|
5462
5467
|
<span class="cline-any cline-neutral"> </span>
|
|
5463
5468
|
<span class="cline-any cline-neutral"> </span>
|
|
5464
5469
|
<span class="cline-any cline-neutral"> </span>
|
|
5465
5470
|
<span class="cline-any cline-no"> </span>
|
|
5466
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5467
5471
|
<span class="cline-any cline-no"> </span>
|
|
5468
5472
|
<span class="cline-any cline-no"> </span>
|
|
5469
5473
|
<span class="cline-any cline-neutral"> </span>
|
|
5470
5474
|
<span class="cline-any cline-no"> </span>
|
|
5471
5475
|
<span class="cline-any cline-neutral"> </span>
|
|
5472
5476
|
<span class="cline-any cline-no"> </span>
|
|
5477
|
+
<span class="cline-any cline-no"> </span>
|
|
5478
|
+
<span class="cline-any cline-no"> </span>
|
|
5473
5479
|
<span class="cline-any cline-neutral"> </span>
|
|
5474
5480
|
<span class="cline-any cline-no"> </span>
|
|
5475
5481
|
<span class="cline-any cline-neutral"> </span>
|
|
5476
5482
|
<span class="cline-any cline-neutral"> </span>
|
|
5483
|
+
<span class="cline-any cline-no"> </span>
|
|
5477
5484
|
<span class="cline-any cline-neutral"> </span>
|
|
5478
5485
|
<span class="cline-any cline-neutral"> </span>
|
|
5479
5486
|
<span class="cline-any cline-neutral"> </span>
|
|
5487
|
+
<span class="cline-any cline-no"> </span>
|
|
5488
|
+
<span class="cline-any cline-no"> </span>
|
|
5480
5489
|
<span class="cline-any cline-neutral"> </span>
|
|
5490
|
+
<span class="cline-any cline-no"> </span>
|
|
5491
|
+
<span class="cline-any cline-no"> </span>
|
|
5492
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5493
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5494
|
+
<span class="cline-any cline-no"> </span>
|
|
5495
|
+
<span class="cline-any cline-no"> </span>
|
|
5481
5496
|
<span class="cline-any cline-neutral"> </span>
|
|
5482
5497
|
<span class="cline-any cline-no"> </span>
|
|
5498
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5499
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5500
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5501
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5483
5502
|
<span class="cline-any cline-no"> </span>
|
|
5484
5503
|
<span class="cline-any cline-neutral"> </span>
|
|
5504
|
+
<span class="cline-any cline-no"> </span>
|
|
5505
|
+
<span class="cline-any cline-no"> </span>
|
|
5485
5506
|
<span class="cline-any cline-neutral"> </span>
|
|
5507
|
+
<span class="cline-any cline-no"> </span>
|
|
5486
5508
|
<span class="cline-any cline-neutral"> </span>
|
|
5509
|
+
<span class="cline-any cline-no"> </span>
|
|
5487
5510
|
<span class="cline-any cline-neutral"> </span>
|
|
5488
5511
|
<span class="cline-any cline-no"> </span>
|
|
5489
5512
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -5499,8 +5522,16 @@
|
|
|
5499
5522
|
<span class="cline-any cline-neutral"> </span>
|
|
5500
5523
|
<span class="cline-any cline-neutral"> </span>
|
|
5501
5524
|
<span class="cline-any cline-neutral"> </span>
|
|
5525
|
+
<span class="cline-any cline-no"> </span>
|
|
5526
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5527
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5528
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5529
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5530
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5531
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5502
5532
|
<span class="cline-any cline-neutral"> </span>
|
|
5503
5533
|
<span class="cline-any cline-no"> </span>
|
|
5534
|
+
<span class="cline-any cline-no"> </span>
|
|
5504
5535
|
<span class="cline-any cline-neutral"> </span>
|
|
5505
5536
|
<span class="cline-any cline-neutral"> </span>
|
|
5506
5537
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -5850,26 +5881,23 @@
|
|
|
5850
5881
|
<span class="cline-any cline-neutral"> </span>
|
|
5851
5882
|
<span class="cline-any cline-neutral"> </span>
|
|
5852
5883
|
<span class="cline-any cline-neutral"> </span>
|
|
5853
|
-
<span class="cline-any cline-no"> </span>
|
|
5854
|
-
<span class="cline-any cline-no"> </span>
|
|
5855
5884
|
<span class="cline-any cline-neutral"> </span>
|
|
5856
5885
|
<span class="cline-any cline-neutral"> </span>
|
|
5857
|
-
<span class="cline-any cline-no"> </span>
|
|
5858
5886
|
<span class="cline-any cline-neutral"> </span>
|
|
5859
|
-
<span class="cline-any cline-no"> </span>
|
|
5860
5887
|
<span class="cline-any cline-neutral"> </span>
|
|
5861
|
-
<span class="cline-any cline-
|
|
5888
|
+
<span class="cline-any cline-yes">1x</span>
|
|
5889
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5862
5890
|
<span class="cline-any cline-no"> </span>
|
|
5863
5891
|
<span class="cline-any cline-no"> </span>
|
|
5864
5892
|
<span class="cline-any cline-neutral"> </span>
|
|
5865
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5866
5893
|
<span class="cline-any cline-no"> </span>
|
|
5867
5894
|
<span class="cline-any cline-neutral"> </span>
|
|
5868
|
-
<span class="cline-any cline-
|
|
5895
|
+
<span class="cline-any cline-no"> </span>
|
|
5869
5896
|
<span class="cline-any cline-no"> </span>
|
|
5870
5897
|
<span class="cline-any cline-neutral"> </span>
|
|
5871
5898
|
<span class="cline-any cline-neutral"> </span>
|
|
5872
5899
|
<span class="cline-any cline-no"> </span>
|
|
5900
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5873
5901
|
<span class="cline-any cline-no"> </span>
|
|
5874
5902
|
<span class="cline-any cline-no"> </span>
|
|
5875
5903
|
<span class="cline-any cline-no"> </span>
|
|
@@ -5880,6 +5908,7 @@
|
|
|
5880
5908
|
<span class="cline-any cline-neutral"> </span>
|
|
5881
5909
|
<span class="cline-any cline-neutral"> </span>
|
|
5882
5910
|
<span class="cline-any cline-neutral"> </span>
|
|
5911
|
+
<span class="cline-any cline-neutral"> </span>
|
|
5883
5912
|
<span class="cline-any cline-no"> </span>
|
|
5884
5913
|
<span class="cline-any cline-no"> </span>
|
|
5885
5914
|
<span class="cline-any cline-no"> </span>
|
|
@@ -5890,7 +5919,6 @@
|
|
|
5890
5919
|
<span class="cline-any cline-neutral"> </span>
|
|
5891
5920
|
<span class="cline-any cline-neutral"> </span>
|
|
5892
5921
|
<span class="cline-any cline-neutral"> </span>
|
|
5893
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5894
5922
|
<span class="cline-any cline-no"> </span>
|
|
5895
5923
|
<span class="cline-any cline-no"> </span>
|
|
5896
5924
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -5909,27 +5937,16 @@
|
|
|
5909
5937
|
<span class="cline-any cline-neutral"> </span>
|
|
5910
5938
|
<span class="cline-any cline-neutral"> </span>
|
|
5911
5939
|
<span class="cline-any cline-no"> </span>
|
|
5912
|
-
<span class="cline-any cline-no"> </span>
|
|
5913
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5914
5940
|
<span class="cline-any cline-neutral"> </span>
|
|
5915
5941
|
<span class="cline-any cline-no"> </span>
|
|
5916
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5917
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5918
5942
|
<span class="cline-any cline-no"> </span>
|
|
5919
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5920
|
-
<span class="cline-any cline-neutral"> </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
5943
|
<span class="cline-any cline-no"> </span>
|
|
5925
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5926
5944
|
<span class="cline-any cline-no"> </span>
|
|
5927
5945
|
<span class="cline-any cline-neutral"> </span>
|
|
5928
5946
|
<span class="cline-any cline-neutral"> </span>
|
|
5929
5947
|
<span class="cline-any cline-no"> </span>
|
|
5930
5948
|
<span class="cline-any cline-neutral"> </span>
|
|
5931
5949
|
<span class="cline-any cline-neutral"> </span>
|
|
5932
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5933
5950
|
<span class="cline-any cline-no"> </span>
|
|
5934
5951
|
<span class="cline-any cline-no"> </span>
|
|
5935
5952
|
<span class="cline-any cline-no"> </span>
|
|
@@ -5971,14 +5988,12 @@
|
|
|
5971
5988
|
<span class="cline-any cline-neutral"> </span>
|
|
5972
5989
|
<span class="cline-any cline-no"> </span>
|
|
5973
5990
|
<span class="cline-any cline-neutral"> </span>
|
|
5974
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5975
5991
|
<span class="cline-any cline-no"> </span>
|
|
5976
5992
|
<span class="cline-any cline-neutral"> </span>
|
|
5977
5993
|
<span class="cline-any cline-neutral"> </span>
|
|
5978
5994
|
<span class="cline-any cline-no"> </span>
|
|
5979
5995
|
<span class="cline-any cline-neutral"> </span>
|
|
5980
5996
|
<span class="cline-any cline-neutral"> </span>
|
|
5981
|
-
<span class="cline-any cline-neutral"> </span>
|
|
5982
5997
|
<span class="cline-any cline-no"> </span>
|
|
5983
5998
|
<span class="cline-any cline-no"> </span>
|
|
5984
5999
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -6034,7 +6049,6 @@
|
|
|
6034
6049
|
<span class="cline-any cline-neutral"> </span>
|
|
6035
6050
|
<span class="cline-any cline-no"> </span>
|
|
6036
6051
|
<span class="cline-any cline-neutral"> </span>
|
|
6037
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6038
6052
|
<span class="cline-any cline-no"> </span>
|
|
6039
6053
|
<span class="cline-any cline-neutral"> </span>
|
|
6040
6054
|
<span class="cline-any cline-no"> </span>
|
|
@@ -6042,18 +6056,6 @@
|
|
|
6042
6056
|
<span class="cline-any cline-neutral"> </span>
|
|
6043
6057
|
<span class="cline-any cline-no"> </span>
|
|
6044
6058
|
<span class="cline-any cline-neutral"> </span>
|
|
6045
|
-
<span class="cline-any cline-no"> </span>
|
|
6046
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6047
|
-
<span class="cline-any cline-neutral"> </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-yes">1x</span>
|
|
6055
|
-
<span class="cline-any cline-no"> </span>
|
|
6056
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6057
6059
|
<span class="cline-any cline-neutral"> </span>
|
|
6058
6060
|
<span class="cline-any cline-neutral"> </span>
|
|
6059
6061
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -6467,28 +6469,6 @@
|
|
|
6467
6469
|
<span class="cline-any cline-neutral"> </span>
|
|
6468
6470
|
<span class="cline-any cline-neutral"> </span>
|
|
6469
6471
|
<span class="cline-any cline-neutral"> </span>
|
|
6470
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6471
|
-
<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
6472
|
<span class="cline-any cline-no"> </span>
|
|
6493
6473
|
<span class="cline-any cline-no"> </span>
|
|
6494
6474
|
<span class="cline-any cline-no"> </span>
|
|
@@ -6514,10 +6494,7 @@
|
|
|
6514
6494
|
<span class="cline-any cline-neutral"> </span>
|
|
6515
6495
|
<span class="cline-any cline-neutral"> </span>
|
|
6516
6496
|
<span class="cline-any cline-no"> </span>
|
|
6517
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6518
|
-
<span class="cline-any cline-no"> </span>
|
|
6519
6497
|
<span class="cline-any cline-no"> </span>
|
|
6520
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6521
6498
|
<span class="cline-any cline-no"> </span>
|
|
6522
6499
|
<span class="cline-any cline-no"> </span>
|
|
6523
6500
|
<span class="cline-any cline-no"> </span>
|
|
@@ -6626,20 +6603,6 @@
|
|
|
6626
6603
|
<span class="cline-any cline-no"> </span>
|
|
6627
6604
|
<span class="cline-any cline-no"> </span>
|
|
6628
6605
|
<span class="cline-any cline-no"> </span>
|
|
6629
|
-
<span class="cline-any cline-no"> </span>
|
|
6630
|
-
<span class="cline-any cline-no"> </span>
|
|
6631
|
-
<span class="cline-any cline-no"> </span>
|
|
6632
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6633
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6634
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6635
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6636
|
-
<span class="cline-any cline-no"> </span>
|
|
6637
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6638
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6639
|
-
<span class="cline-any cline-no"> </span>
|
|
6640
|
-
<span class="cline-any cline-no"> </span>
|
|
6641
|
-
<span class="cline-any cline-no"> </span>
|
|
6642
|
-
<span class="cline-any cline-no"> </span>
|
|
6643
6606
|
<span class="cline-any cline-neutral"> </span>
|
|
6644
6607
|
<span class="cline-any cline-neutral"> </span>
|
|
6645
6608
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -6690,7 +6653,6 @@
|
|
|
6690
6653
|
<span class="cline-any cline-no"> </span>
|
|
6691
6654
|
<span class="cline-any cline-neutral"> </span>
|
|
6692
6655
|
<span class="cline-any cline-neutral"> </span>
|
|
6693
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6694
6656
|
<span class="cline-any cline-no"> </span>
|
|
6695
6657
|
<span class="cline-any cline-no"> </span>
|
|
6696
6658
|
<span class="cline-any cline-no"> </span>
|
|
@@ -6974,145 +6936,11 @@
|
|
|
6974
6936
|
<span class="cline-any cline-neutral"> </span>
|
|
6975
6937
|
<span class="cline-any cline-neutral"> </span>
|
|
6976
6938
|
<span class="cline-any cline-neutral"> </span>
|
|
6977
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6978
|
-
<span class="cline-any cline-no"> </span>
|
|
6979
|
-
<span class="cline-any cline-no"> </span>
|
|
6980
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6981
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6982
|
-
<span class="cline-any cline-no"> </span>
|
|
6983
|
-
<span class="cline-any cline-no"> </span>
|
|
6984
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6985
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6986
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6987
|
-
<span class="cline-any cline-no"> </span>
|
|
6988
|
-
<span class="cline-any cline-no"> </span>
|
|
6989
|
-
<span class="cline-any cline-no"> </span>
|
|
6990
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6991
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6992
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6993
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6994
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6995
|
-
<span class="cline-any cline-no"> </span>
|
|
6996
|
-
<span class="cline-any cline-no"> </span>
|
|
6997
|
-
<span class="cline-any cline-neutral"> </span>
|
|
6998
|
-
<span class="cline-any cline-no"> </span>
|
|
6999
|
-
<span class="cline-any cline-no"> </span>
|
|
7000
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7001
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7002
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7003
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7004
|
-
<span class="cline-any cline-no"> </span>
|
|
7005
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7006
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7007
|
-
<span class="cline-any cline-no"> </span>
|
|
7008
|
-
<span class="cline-any cline-no"> </span>
|
|
7009
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7010
|
-
<span class="cline-any cline-no"> </span>
|
|
7011
|
-
<span class="cline-any cline-no"> </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-neutral"> </span>
|
|
7017
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7018
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7019
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7020
|
-
<span class="cline-any cline-no"> </span>
|
|
7021
|
-
<span class="cline-any cline-no"> </span>
|
|
7022
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7023
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7024
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7025
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7026
|
-
<span class="cline-any cline-no"> </span>
|
|
7027
|
-
<span class="cline-any cline-no"> </span>
|
|
7028
|
-
<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-neutral"> </span>
|
|
7036
|
-
<span class="cline-any cline-no"> </span>
|
|
7037
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7038
|
-
<span class="cline-any cline-no"> </span>
|
|
7039
|
-
<span class="cline-any cline-no"> </span>
|
|
7040
|
-
<span class="cline-any cline-no"> </span>
|
|
7041
|
-
<span class="cline-any cline-no"> </span>
|
|
7042
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7043
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7044
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7045
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7046
|
-
<span class="cline-any cline-no"> </span>
|
|
7047
|
-
<span class="cline-any cline-no"> </span>
|
|
7048
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7049
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7050
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7051
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7052
|
-
<span class="cline-any cline-no"> </span>
|
|
7053
|
-
<span class="cline-any cline-no"> </span>
|
|
7054
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7055
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7056
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7057
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7058
|
-
<span class="cline-any cline-no"> </span>
|
|
7059
|
-
<span class="cline-any cline-no"> </span>
|
|
7060
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7061
|
-
<span class="cline-any cline-no"> </span>
|
|
7062
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7063
|
-
<span class="cline-any cline-no"> </span>
|
|
7064
|
-
<span class="cline-any cline-no"> </span>
|
|
7065
|
-
<span class="cline-any cline-no"> </span>
|
|
7066
|
-
<span class="cline-any cline-no"> </span>
|
|
7067
|
-
<span class="cline-any cline-no"> </span>
|
|
7068
|
-
<span class="cline-any cline-no"> </span>
|
|
7069
|
-
<span class="cline-any cline-no"> </span>
|
|
7070
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7071
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7072
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7073
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7074
|
-
<span class="cline-any cline-no"> </span>
|
|
7075
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7076
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7077
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7078
|
-
<span class="cline-any cline-no"> </span>
|
|
7079
|
-
<span class="cline-any cline-no"> </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-neutral"> </span>
|
|
7087
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7088
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7089
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7090
|
-
<span class="cline-any cline-no"> </span>
|
|
7091
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7092
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7093
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7094
|
-
<span class="cline-any cline-no"> </span>
|
|
7095
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7096
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7097
|
-
<span class="cline-any cline-no"> </span>
|
|
7098
|
-
<span class="cline-any cline-no"> </span>
|
|
7099
|
-
<span class="cline-any cline-no"> </span>
|
|
7100
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7101
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7102
|
-
<span class="cline-any cline-no"> </span>
|
|
7103
|
-
<span class="cline-any cline-no"> </span>
|
|
7104
|
-
<span class="cline-any cline-no"> </span>
|
|
7105
|
-
<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>
|
|
6939
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7111
6940
|
<span class="cline-any cline-no"> </span>
|
|
7112
6941
|
<span class="cline-any cline-no"> </span>
|
|
7113
6942
|
<span class="cline-any cline-neutral"> </span>
|
|
7114
6943
|
<span class="cline-any cline-neutral"> </span>
|
|
7115
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7116
6944
|
<span class="cline-any cline-no"> </span>
|
|
7117
6945
|
<span class="cline-any cline-no"> </span>
|
|
7118
6946
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -7121,6 +6949,11 @@
|
|
|
7121
6949
|
<span class="cline-any cline-no"> </span>
|
|
7122
6950
|
<span class="cline-any cline-no"> </span>
|
|
7123
6951
|
<span class="cline-any cline-no"> </span>
|
|
6952
|
+
<span class="cline-any cline-neutral"> </span>
|
|
6953
|
+
<span class="cline-any cline-neutral"> </span>
|
|
6954
|
+
<span class="cline-any cline-neutral"> </span>
|
|
6955
|
+
<span class="cline-any cline-neutral"> </span>
|
|
6956
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7124
6957
|
<span class="cline-any cline-no"> </span>
|
|
7125
6958
|
<span class="cline-any cline-no"> </span>
|
|
7126
6959
|
<span class="cline-any cline-no"> </span>
|
|
@@ -7130,13 +6963,25 @@
|
|
|
7130
6963
|
<span class="cline-any cline-neutral"> </span>
|
|
7131
6964
|
<span class="cline-any cline-neutral"> </span>
|
|
7132
6965
|
<span class="cline-any cline-no"> </span>
|
|
7133
|
-
<span class="cline-any cline-no"> </span>
|
|
7134
6966
|
<span class="cline-any cline-neutral"> </span>
|
|
7135
6967
|
<span class="cline-any cline-no"> </span>
|
|
7136
|
-
<span class="cline-any cline-no"> </span>
|
|
7137
6968
|
<span class="cline-any cline-neutral"> </span>
|
|
7138
6969
|
<span class="cline-any cline-neutral"> </span>
|
|
7139
6970
|
<span class="cline-any cline-neutral"> </span>
|
|
6971
|
+
<span class="cline-any cline-neutral"> </span>
|
|
6972
|
+
<span class="cline-any cline-neutral"> </span>
|
|
6973
|
+
<span class="cline-any cline-neutral"> </span>
|
|
6974
|
+
<span class="cline-any cline-neutral"> </span>
|
|
6975
|
+
<span class="cline-any cline-neutral"> </span>
|
|
6976
|
+
<span class="cline-any cline-neutral"> </span>
|
|
6977
|
+
<span class="cline-any cline-neutral"> </span>
|
|
6978
|
+
<span class="cline-any cline-neutral"> </span>
|
|
6979
|
+
<span class="cline-any cline-no"> </span>
|
|
6980
|
+
<span class="cline-any cline-neutral"> </span>
|
|
6981
|
+
<span class="cline-any cline-no"> </span>
|
|
6982
|
+
<span class="cline-any cline-no"> </span>
|
|
6983
|
+
<span class="cline-any cline-no"> </span>
|
|
6984
|
+
<span class="cline-any cline-no"> </span>
|
|
7140
6985
|
<span class="cline-any cline-no"> </span>
|
|
7141
6986
|
<span class="cline-any cline-no"> </span>
|
|
7142
6987
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -7144,6 +6989,8 @@
|
|
|
7144
6989
|
<span class="cline-any cline-neutral"> </span>
|
|
7145
6990
|
<span class="cline-any cline-neutral"> </span>
|
|
7146
6991
|
<span class="cline-any cline-no"> </span>
|
|
6992
|
+
<span class="cline-any cline-no"> </span>
|
|
6993
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7147
6994
|
<span class="cline-any cline-neutral"> </span>
|
|
7148
6995
|
<span class="cline-any cline-neutral"> </span>
|
|
7149
6996
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -7155,37 +7002,47 @@
|
|
|
7155
7002
|
<span class="cline-any cline-no"> </span>
|
|
7156
7003
|
<span class="cline-any cline-no"> </span>
|
|
7157
7004
|
<span class="cline-any cline-no"> </span>
|
|
7158
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7159
|
-
<span class="cline-any cline-no"> </span>
|
|
7160
7005
|
<span class="cline-any cline-no"> </span>
|
|
7006
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7161
7007
|
<span class="cline-any cline-no"> </span>
|
|
7162
7008
|
<span class="cline-any cline-neutral"> </span>
|
|
7163
7009
|
<span class="cline-any cline-no"> </span>
|
|
7164
7010
|
<span class="cline-any cline-no"> </span>
|
|
7165
7011
|
<span class="cline-any cline-no"> </span>
|
|
7012
|
+
<span class="cline-any cline-no"> </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-neutral"> </span>
|
|
7017
|
+
<span class="cline-any cline-no"> </span>
|
|
7018
|
+
<span class="cline-any cline-no"> </span>
|
|
7019
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7169
7020
|
<span class="cline-any cline-neutral"> </span>
|
|
7170
7021
|
<span class="cline-any cline-neutral"> </span>
|
|
7171
7022
|
<span class="cline-any cline-neutral"> </span>
|
|
7172
7023
|
<span class="cline-any cline-no"> </span>
|
|
7173
7024
|
<span class="cline-any cline-no"> </span>
|
|
7025
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7026
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7027
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7028
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7174
7029
|
<span class="cline-any cline-no"> </span>
|
|
7175
7030
|
<span class="cline-any cline-no"> </span>
|
|
7176
7031
|
<span class="cline-any cline-neutral"> </span>
|
|
7177
7032
|
<span class="cline-any cline-no"> </span>
|
|
7033
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7034
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7178
7035
|
<span class="cline-any cline-no"> </span>
|
|
7036
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7179
7037
|
<span class="cline-any cline-no"> </span>
|
|
7180
7038
|
<span class="cline-any cline-no"> </span>
|
|
7181
7039
|
<span class="cline-any cline-no"> </span>
|
|
7182
|
-
<span class="cline-any cline-no"> </span>
|
|
7183
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7184
7040
|
<span class="cline-any cline-neutral"> </span>
|
|
7185
7041
|
<span class="cline-any cline-neutral"> </span>
|
|
7186
7042
|
<span class="cline-any cline-no"> </span>
|
|
7187
7043
|
<span class="cline-any cline-neutral"> </span>
|
|
7188
7044
|
<span class="cline-any cline-neutral"> </span>
|
|
7045
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7189
7046
|
<span class="cline-any cline-no"> </span>
|
|
7190
7047
|
<span class="cline-any cline-neutral"> </span>
|
|
7191
7048
|
<span class="cline-any cline-no"> </span>
|
|
@@ -7439,7 +7296,6 @@
|
|
|
7439
7296
|
<span class="cline-any cline-neutral"> </span>
|
|
7440
7297
|
<span class="cline-any cline-neutral"> </span>
|
|
7441
7298
|
<span class="cline-any cline-neutral"> </span>
|
|
7442
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7443
7299
|
<span class="cline-any cline-no"> </span>
|
|
7444
7300
|
<span class="cline-any cline-no"> </span>
|
|
7445
7301
|
<span class="cline-any cline-no"> </span>
|
|
@@ -7471,6 +7327,7 @@
|
|
|
7471
7327
|
<span class="cline-any cline-neutral"> </span>
|
|
7472
7328
|
<span class="cline-any cline-no"> </span>
|
|
7473
7329
|
<span class="cline-any cline-neutral"> </span>
|
|
7330
|
+
<span class="cline-any cline-no"> </span>
|
|
7474
7331
|
<span class="cline-any cline-neutral"> </span>
|
|
7475
7332
|
<span class="cline-any cline-neutral"> </span>
|
|
7476
7333
|
<span class="cline-any cline-no"> </span>
|
|
@@ -7504,6 +7361,10 @@
|
|
|
7504
7361
|
<span class="cline-any cline-no"> </span>
|
|
7505
7362
|
<span class="cline-any cline-no"> </span>
|
|
7506
7363
|
<span class="cline-any cline-neutral"> </span>
|
|
7364
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7365
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7366
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7367
|
+
<span class="cline-any cline-neutral"> </span>
|
|
7507
7368
|
<span class="cline-any cline-no"> </span>
|
|
7508
7369
|
<span class="cline-any cline-no"> </span>
|
|
7509
7370
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -7514,22 +7375,17 @@
|
|
|
7514
7375
|
<span class="cline-any cline-neutral"> </span>
|
|
7515
7376
|
<span class="cline-any cline-neutral"> </span>
|
|
7516
7377
|
<span class="cline-any cline-neutral"> </span>
|
|
7517
|
-
<span class="cline-any cline-no"> </span>
|
|
7518
7378
|
<span class="cline-any cline-neutral"> </span>
|
|
7519
7379
|
<span class="cline-any cline-neutral"> </span>
|
|
7520
7380
|
<span class="cline-any cline-no"> </span>
|
|
7521
7381
|
<span class="cline-any cline-neutral"> </span>
|
|
7522
7382
|
<span class="cline-any cline-no"> </span>
|
|
7523
|
-
<span class="cline-any cline-no"> </span>
|
|
7524
7383
|
<span class="cline-any cline-neutral"> </span>
|
|
7525
7384
|
<span class="cline-any cline-neutral"> </span>
|
|
7526
7385
|
<span class="cline-any cline-no"> </span>
|
|
7527
7386
|
<span class="cline-any cline-neutral"> </span>
|
|
7528
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7529
7387
|
<span class="cline-any cline-no"> </span>
|
|
7530
7388
|
<span class="cline-any cline-no"> </span>
|
|
7531
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7532
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7533
7389
|
<span class="cline-any cline-no"> </span>
|
|
7534
7390
|
<span class="cline-any cline-neutral"> </span>
|
|
7535
7391
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -7541,12 +7397,9 @@
|
|
|
7541
7397
|
<span class="cline-any cline-neutral"> </span>
|
|
7542
7398
|
<span class="cline-any cline-neutral"> </span>
|
|
7543
7399
|
<span class="cline-any cline-neutral"> </span>
|
|
7544
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7545
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7546
7400
|
<span class="cline-any cline-no"> </span>
|
|
7547
7401
|
<span class="cline-any cline-neutral"> </span>
|
|
7548
7402
|
<span class="cline-any cline-no"> </span>
|
|
7549
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7550
7403
|
<span class="cline-any cline-no"> </span>
|
|
7551
7404
|
<span class="cline-any cline-neutral"> </span>
|
|
7552
7405
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -7605,25 +7458,10 @@
|
|
|
7605
7458
|
<span class="cline-any cline-neutral"> </span>
|
|
7606
7459
|
<span class="cline-any cline-neutral"> </span>
|
|
7607
7460
|
<span class="cline-any cline-no"> </span>
|
|
7608
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7609
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7610
|
-
<span class="cline-any cline-no"> </span>
|
|
7611
7461
|
<span class="cline-any cline-no"> </span>
|
|
7612
7462
|
<span class="cline-any cline-no"> </span>
|
|
7613
7463
|
<span class="cline-any cline-neutral"> </span>
|
|
7614
7464
|
<span class="cline-any cline-no"> </span>
|
|
7615
|
-
<span class="cline-any cline-no"> </span>
|
|
7616
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7617
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7618
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7619
|
-
<span class="cline-any cline-no"> </span>
|
|
7620
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7621
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7622
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7623
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7624
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7625
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7626
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7627
7465
|
<span class="cline-any cline-neutral"> </span>
|
|
7628
7466
|
<span class="cline-any cline-no"> </span>
|
|
7629
7467
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -7771,7 +7609,6 @@
|
|
|
7771
7609
|
<span class="cline-any cline-neutral"> </span>
|
|
7772
7610
|
<span class="cline-any cline-neutral"> </span>
|
|
7773
7611
|
<span class="cline-any cline-neutral"> </span>
|
|
7774
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7775
7612
|
<span class="cline-any cline-no"> </span>
|
|
7776
7613
|
<span class="cline-any cline-neutral"> </span>
|
|
7777
7614
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -7926,16 +7763,6 @@
|
|
|
7926
7763
|
<span class="cline-any cline-no"> </span>
|
|
7927
7764
|
<span class="cline-any cline-no"> </span>
|
|
7928
7765
|
<span class="cline-any cline-no"> </span>
|
|
7929
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7930
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7931
|
-
<span class="cline-any cline-neutral"> </span>
|
|
7932
|
-
<span class="cline-any cline-neutral"> </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
7766
|
<span class="cline-any cline-no"> </span>
|
|
7940
7767
|
<span class="cline-any cline-no"> </span>
|
|
7941
7768
|
<span class="cline-any cline-no"> </span>
|
|
@@ -8731,6 +8558,8 @@
|
|
|
8731
8558
|
<span class="cline-any cline-neutral"> </span>
|
|
8732
8559
|
<span class="cline-any cline-neutral"> </span>
|
|
8733
8560
|
<span class="cline-any cline-neutral"> </span>
|
|
8561
|
+
<span class="cline-any cline-no"> </span>
|
|
8562
|
+
<span class="cline-any cline-neutral"> </span>
|
|
8734
8563
|
<span class="cline-any cline-neutral"> </span>
|
|
8735
8564
|
<span class="cline-any cline-neutral"> </span>
|
|
8736
8565
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -8851,12 +8680,10 @@
|
|
|
8851
8680
|
<span class="cline-any cline-neutral"> </span>
|
|
8852
8681
|
<span class="cline-any cline-neutral"> </span>
|
|
8853
8682
|
<span class="cline-any cline-neutral"> </span>
|
|
8854
|
-
<span class="cline-any cline-no"> </span>
|
|
8855
|
-
<span class="cline-any cline-no"> </span>
|
|
8856
8683
|
<span class="cline-any cline-neutral"> </span>
|
|
8857
|
-
<span class="cline-any cline-no"> </span>
|
|
8858
8684
|
<span class="cline-any cline-neutral"> </span>
|
|
8859
8685
|
<span class="cline-any cline-no"> </span>
|
|
8686
|
+
<span class="cline-any cline-neutral"> </span>
|
|
8860
8687
|
<span class="cline-any cline-no"> </span>
|
|
8861
8688
|
<span class="cline-any cline-neutral"> </span>
|
|
8862
8689
|
<span class="cline-any cline-no"> </span>
|
|
@@ -8866,8 +8693,11 @@
|
|
|
8866
8693
|
<span class="cline-any cline-neutral"> </span>
|
|
8867
8694
|
<span class="cline-any cline-neutral"> </span>
|
|
8868
8695
|
<span class="cline-any cline-no"> </span>
|
|
8696
|
+
<span class="cline-any cline-neutral"> </span>
|
|
8869
8697
|
<span class="cline-any cline-no"> </span>
|
|
8870
8698
|
<span class="cline-any cline-neutral"> </span>
|
|
8699
|
+
<span class="cline-any cline-neutral"> </span>
|
|
8700
|
+
<span class="cline-any cline-no"> </span>
|
|
8871
8701
|
<span class="cline-any cline-no"> </span>
|
|
8872
8702
|
<span class="cline-any cline-no"> </span>
|
|
8873
8703
|
<span class="cline-any cline-no"> </span>
|
|
@@ -8927,8 +8757,6 @@
|
|
|
8927
8757
|
<span class="cline-any cline-no"> </span>
|
|
8928
8758
|
<span class="cline-any cline-neutral"> </span>
|
|
8929
8759
|
<span class="cline-any cline-neutral"> </span>
|
|
8930
|
-
<span class="cline-any cline-no"> </span>
|
|
8931
|
-
<span class="cline-any cline-neutral"> </span>
|
|
8932
8760
|
<span class="cline-any cline-neutral"> </span>
|
|
8933
8761
|
<span class="cline-any cline-neutral"> </span>
|
|
8934
8762
|
<span class="cline-any cline-no"> </span>
|
|
@@ -8993,6 +8821,9 @@
|
|
|
8993
8821
|
<span class="cline-any cline-neutral"> </span>
|
|
8994
8822
|
<span class="cline-any cline-no"> </span>
|
|
8995
8823
|
<span class="cline-any cline-neutral"> </span>
|
|
8824
|
+
<span class="cline-any cline-neutral"> </span>
|
|
8825
|
+
<span class="cline-any cline-neutral"> </span>
|
|
8826
|
+
<span class="cline-any cline-neutral"> </span>
|
|
8996
8827
|
<span class="cline-any cline-no"> </span>
|
|
8997
8828
|
<span class="cline-any cline-no"> </span>
|
|
8998
8829
|
<span class="cline-any cline-no"> </span>
|
|
@@ -9003,12 +8834,14 @@
|
|
|
9003
8834
|
<span class="cline-any cline-no"> </span>
|
|
9004
8835
|
<span class="cline-any cline-neutral"> </span>
|
|
9005
8836
|
<span class="cline-any cline-no"> </span>
|
|
8837
|
+
<span class="cline-any cline-neutral"> </span>
|
|
9006
8838
|
<span class="cline-any cline-no"> </span>
|
|
9007
8839
|
<span class="cline-any cline-no"> </span>
|
|
9008
8840
|
<span class="cline-any cline-neutral"> </span>
|
|
9009
8841
|
<span class="cline-any cline-no"> </span>
|
|
9010
8842
|
<span class="cline-any cline-neutral"> </span>
|
|
9011
8843
|
<span class="cline-any cline-neutral"> </span>
|
|
8844
|
+
<span class="cline-any cline-neutral"> </span>
|
|
9012
8845
|
<span class="cline-any cline-no"> </span>
|
|
9013
8846
|
<span class="cline-any cline-no"> </span>
|
|
9014
8847
|
<span class="cline-any cline-no"> </span>
|
|
@@ -9067,13 +8900,6 @@
|
|
|
9067
8900
|
<span class="cline-any cline-neutral"> </span>
|
|
9068
8901
|
<span class="cline-any cline-neutral"> </span>
|
|
9069
8902
|
<span class="cline-any cline-neutral"> </span>
|
|
9070
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9071
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9072
|
-
<span class="cline-any cline-no"> </span>
|
|
9073
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9074
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9075
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9076
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9077
8903
|
<span class="cline-any cline-yes">1x</span>
|
|
9078
8904
|
<span class="cline-any cline-no"> </span>
|
|
9079
8905
|
<span class="cline-any cline-no"> </span>
|
|
@@ -9107,27 +8933,20 @@
|
|
|
9107
8933
|
<span class="cline-any cline-neutral"> </span>
|
|
9108
8934
|
<span class="cline-any cline-neutral"> </span>
|
|
9109
8935
|
<span class="cline-any cline-neutral"> </span>
|
|
8936
|
+
<span class="cline-any cline-yes">1x</span>
|
|
9110
8937
|
<span class="cline-any cline-no"> </span>
|
|
9111
8938
|
<span class="cline-any cline-no"> </span>
|
|
9112
8939
|
<span class="cline-any cline-no"> </span>
|
|
9113
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9114
8940
|
<span class="cline-any cline-no"> </span>
|
|
9115
8941
|
<span class="cline-any cline-no"> </span>
|
|
9116
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9117
8942
|
<span class="cline-any cline-no"> </span>
|
|
9118
8943
|
<span class="cline-any cline-no"> </span>
|
|
9119
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9120
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9121
8944
|
<span class="cline-any cline-no"> </span>
|
|
9122
8945
|
<span class="cline-any cline-no"> </span>
|
|
9123
8946
|
<span class="cline-any cline-neutral"> </span>
|
|
9124
8947
|
<span class="cline-any cline-no"> </span>
|
|
9125
|
-
<span class="cline-any cline-no"> </span>
|
|
9126
8948
|
<span class="cline-any cline-neutral"> </span>
|
|
9127
8949
|
<span class="cline-any cline-neutral"> </span>
|
|
9128
|
-
<span class="cline-any cline-no"> </span>
|
|
9129
|
-
<span class="cline-any cline-no"> </span>
|
|
9130
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9131
8950
|
<span class="cline-any cline-neutral"> </span>
|
|
9132
8951
|
<span class="cline-any cline-neutral"> </span>
|
|
9133
8952
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -9157,11 +8976,6 @@
|
|
|
9157
8976
|
<span class="cline-any cline-no"> </span>
|
|
9158
8977
|
<span class="cline-any cline-no"> </span>
|
|
9159
8978
|
<span class="cline-any cline-no"> </span>
|
|
9160
|
-
<span class="cline-any cline-no"> </span>
|
|
9161
|
-
<span class="cline-any cline-no"> </span>
|
|
9162
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9163
|
-
<span class="cline-any cline-no"> </span>
|
|
9164
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9165
8979
|
<span class="cline-any cline-neutral"> </span>
|
|
9166
8980
|
<span class="cline-any cline-neutral"> </span>
|
|
9167
8981
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -9261,6 +9075,11 @@
|
|
|
9261
9075
|
<span class="cline-any cline-neutral"> </span>
|
|
9262
9076
|
<span class="cline-any cline-neutral"> </span>
|
|
9263
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>
|
|
9264
9083
|
<span class="cline-any cline-neutral"> </span>
|
|
9265
9084
|
<span class="cline-any cline-neutral"> </span>
|
|
9266
9085
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -9290,10 +9109,6 @@
|
|
|
9290
9109
|
<span class="cline-any cline-neutral"> </span>
|
|
9291
9110
|
<span class="cline-any cline-neutral"> </span>
|
|
9292
9111
|
<span class="cline-any cline-neutral"> </span>
|
|
9293
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9294
|
-
<span class="cline-any cline-no"> </span>
|
|
9295
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9296
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9297
9112
|
<span class="cline-any cline-no"> </span>
|
|
9298
9113
|
<span class="cline-any cline-no"> </span>
|
|
9299
9114
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -9303,10 +9118,6 @@
|
|
|
9303
9118
|
<span class="cline-any cline-neutral"> </span>
|
|
9304
9119
|
<span class="cline-any cline-neutral"> </span>
|
|
9305
9120
|
<span class="cline-any cline-neutral"> </span>
|
|
9306
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9307
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9308
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9309
|
-
<span class="cline-any cline-no"> </span>
|
|
9310
9121
|
<span class="cline-any cline-no"> </span>
|
|
9311
9122
|
<span class="cline-any cline-no"> </span>
|
|
9312
9123
|
<span class="cline-any cline-no"> </span>
|
|
@@ -9316,10 +9127,6 @@
|
|
|
9316
9127
|
<span class="cline-any cline-neutral"> </span>
|
|
9317
9128
|
<span class="cline-any cline-neutral"> </span>
|
|
9318
9129
|
<span class="cline-any cline-neutral"> </span>
|
|
9319
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9320
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9321
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9322
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9323
9130
|
<span class="cline-any cline-no"> </span>
|
|
9324
9131
|
<span class="cline-any cline-no"> </span>
|
|
9325
9132
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -9641,6 +9448,7 @@
|
|
|
9641
9448
|
<span class="cline-any cline-no"> </span>
|
|
9642
9449
|
<span class="cline-any cline-no"> </span>
|
|
9643
9450
|
<span class="cline-any cline-no"> </span>
|
|
9451
|
+
<span class="cline-any cline-no"> </span>
|
|
9644
9452
|
<span class="cline-any cline-neutral"> </span>
|
|
9645
9453
|
<span class="cline-any cline-no"> </span>
|
|
9646
9454
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -9699,15 +9507,11 @@
|
|
|
9699
9507
|
<span class="cline-any cline-no"> </span>
|
|
9700
9508
|
<span class="cline-any cline-neutral"> </span>
|
|
9701
9509
|
<span class="cline-any cline-neutral"> </span>
|
|
9702
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9703
9510
|
<span class="cline-any cline-no"> </span>
|
|
9704
9511
|
<span class="cline-any cline-no"> </span>
|
|
9705
9512
|
<span class="cline-any cline-neutral"> </span>
|
|
9706
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9707
9513
|
<span class="cline-any cline-no"> </span>
|
|
9708
9514
|
<span class="cline-any cline-no"> </span>
|
|
9709
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9710
|
-
<span class="cline-any cline-no"> </span>
|
|
9711
9515
|
<span class="cline-any cline-no"> </span>
|
|
9712
9516
|
<span class="cline-any cline-no"> </span>
|
|
9713
9517
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -9718,7 +9522,6 @@
|
|
|
9718
9522
|
<span class="cline-any cline-no"> </span>
|
|
9719
9523
|
<span class="cline-any cline-neutral"> </span>
|
|
9720
9524
|
<span class="cline-any cline-neutral"> </span>
|
|
9721
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9722
9525
|
<span class="cline-any cline-no"> </span>
|
|
9723
9526
|
<span class="cline-any cline-neutral"> </span>
|
|
9724
9527
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -9727,7 +9530,6 @@
|
|
|
9727
9530
|
<span class="cline-any cline-neutral"> </span>
|
|
9728
9531
|
<span class="cline-any cline-neutral"> </span>
|
|
9729
9532
|
<span class="cline-any cline-no"> </span>
|
|
9730
|
-
<span class="cline-any cline-neutral"> </span>
|
|
9731
9533
|
<span class="cline-any cline-no"> </span>
|
|
9732
9534
|
<span class="cline-any cline-no"> </span>
|
|
9733
9535
|
<span class="cline-any cline-no"> </span>
|
|
@@ -9854,17 +9656,15 @@ import {
|
|
|
9854
9656
|
Integration,
|
|
9855
9657
|
Backend,
|
|
9856
9658
|
CallAuthInterface,
|
|
9857
|
-
AuthLogicForCallInterface,
|
|
9858
9659
|
Connector,
|
|
9859
9660
|
AuthInterface,
|
|
9860
9661
|
Connection,
|
|
9861
9662
|
TriggerLauncher,
|
|
9862
9663
|
CallConnector,
|
|
9863
|
-
|
|
9864
|
-
SyntaxNode,
|
|
9664
|
+
DefaultValue,
|
|
9865
9665
|
} from '../concepts';
|
|
9866
9666
|
|
|
9867
|
-
import { lsp2tspNumber, SourceMap, SourceMapItem, isSameRange
|
|
9667
|
+
import { lsp2tspNumber, SourceMap, SourceMapItem, isSameRange } from '../translator';
|
|
9868
9668
|
import axios from '../service/storage';
|
|
9869
9669
|
import { translateDiagnosticMessage, naslNodeTranslateMessage, MinRange, checkAStructure_ } from './translator';
|
|
9870
9670
|
import { EventPayload, invokeCommand, registerCommand } from '../common';
|
|
@@ -9879,6 +9679,7 @@ import { EventEmitter } from '../common/EventEmitter';
|
|
|
9879
9679
|
|
|
9880
9680
|
import { traverse } from '../utils';
|
|
9881
9681
|
import { withQueueExecute } from '../decorators';
|
|
9682
|
+
|
|
9882
9683
|
import { getNodeByNodeCallee } from '../automate/engine/utils';
|
|
9883
9684
|
|
|
9884
9685
|
const EmbeddedTSFileLineMap: { [name: string]: number } = {
|
|
@@ -9897,7 +9698,11 @@ const SentryMessager = sentryMonitorTSWorkerMessager(Messager);
|
|
|
9897
9698
|
|
|
9898
9699
|
export interface FileNode extends BaseNode {
|
|
9899
9700
|
getEmbeddedFilePath(name?: string): string;
|
|
9900
|
-
toEmbeddedTSFile():
|
|
9701
|
+
toEmbeddedTSFile(): {
|
|
9702
|
+
filePath: string;
|
|
9703
|
+
code: string;
|
|
9704
|
+
sourceMap: SourceMap;
|
|
9705
|
+
};
|
|
9901
9706
|
}
|
|
9902
9707
|
|
|
9903
9708
|
interface RenameMinRange extends MinRange {
|
|
@@ -9914,7 +9719,6 @@ interface QuoteNode {
|
|
|
9914
9719
|
|
|
9915
9720
|
// 批量查找节点位置的节点信息类型
|
|
9916
9721
|
type QuickInfoNodes = Array<{ filePath: string; node: BaseNode; item: SourceMapItem }>;
|
|
9917
|
-
type QuickInfoMap = Map<BaseNode, TypeAnnotation | { typeAnnotation: TypeAnnotation; option: any }>;
|
|
9918
9722
|
|
|
9919
9723
|
let isChangeInterface = false; // 判断是否导入接口
|
|
9920
9724
|
type ActionNode = { target: Variable; typeannotation: TypeAnnotation };
|
|
@@ -9959,6 +9763,7 @@ export function <span class="fstat-no" title="function not covered" >getDisplayS
|
|
|
9959
9763
|
<span class="cstat-no" title="statement not covered" > return typeList;</span>
|
|
9960
9764
|
}
|
|
9961
9765
|
|
|
9766
|
+
|
|
9962
9767
|
function <span class="fstat-no" title="function not covered" >isCoreDateTimeType(</span>n : Argument): boolean {
|
|
9963
9768
|
<span class="cstat-no" title="statement not covered" > return n?.expression?.__TypeAnnotation?.typeName === 'DateTime' &&</span>
|
|
9964
9769
|
n?.expression?.__TypeAnnotation?.typeNamespace === 'nasl.core';
|
|
@@ -9969,6 +9774,7 @@ function <span class="fstat-no" title="function not covered" >isFunctionWithFixe
|
|
|
9969
9774
|
<span class="cstat-no" title="statement not covered" > return fns.includes(calleeName);</span>
|
|
9970
9775
|
}
|
|
9971
9776
|
|
|
9777
|
+
|
|
9972
9778
|
const timeZoneArgumentIndexMap = new Map<string, number>([
|
|
9973
9779
|
['ToString', 1],
|
|
9974
9780
|
['CurrDateTime', 0],
|
|
@@ -10053,7 +9859,7 @@ class NaslServer {
|
|
|
10053
9859
|
handleMessage: <span class="fstat-no" title="function not covered" >async </span>({ data }: any) => {
|
|
10054
9860
|
<span class="cstat-no" title="statement not covered" > if (data && data.event === 'publishDiagnostics') {</span>
|
|
10055
9861
|
const records = <span class="cstat-no" title="statement not covered" >await this._resolveDiagnosticRecords(data.records);</span>
|
|
10056
|
-
<span class="cstat-no" title="statement not covered" >
|
|
9862
|
+
<span class="cstat-no" title="statement not covered" > this.diagnosticManager.pushAll(records);</span>
|
|
10057
9863
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10058
9864
|
// 结束诊断和标注
|
|
10059
9865
|
<span class="cstat-no" title="statement not covered" > invokeCommand('naslServer:endWork');</span>
|
|
@@ -10149,145 +9955,292 @@ class NaslServer {
|
|
|
10149
9955
|
<span class="cstat-no" title="statement not covered" > await this.getDiagnosticRecordsAndPushAll();</span>
|
|
10150
9956
|
}
|
|
10151
9957
|
|
|
10152
|
-
|
|
10153
|
-
|
|
10154
|
-
<span class="cstat-no" title="statement not covered" >
|
|
9958
|
+
<span class="fstat-no" title="function not covered" > contentToFile(</span>module: Module | App | Connector, results: Array<ReturnType<Structure['toEmbeddedTSFile']>>) {
|
|
9959
|
+
// 禁用的依赖库不生成代码 区分 undefined 和 false
|
|
9960
|
+
<span class="cstat-no" title="statement not covered" > if (module instanceof Module && module.type === 'extension' && module.enable === false) {</span>
|
|
9961
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
10155
9962
|
}
|
|
10156
|
-
|
|
10157
|
-
const self = <span class="cstat-no" title="statement not covered" >this;</span>
|
|
10158
|
-
const results: utils.EmbeddedTSFileResult[] = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
10159
|
-
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>
|
|
10160
|
-
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>
|
|
10161
|
-
|
|
9963
|
+
<span class="cstat-no" title="statement not covered" > module.structures.forEach(<span class="fstat-no" title="function not covered" >(s</span>tructure) => {</span>
|
|
10162
9964
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10163
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10164
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
10165
|
-
}
|
|
10166
|
-
|
|
10167
|
-
const result = <span class="cstat-no" title="statement not covered" >yield* node.toEmbeddedTSFile();</span>
|
|
10168
|
-
|
|
9965
|
+
const result = <span class="cstat-no" title="statement not covered" >structure.toEmbeddedTSFile();</span>
|
|
10169
9966
|
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10170
|
-
|
|
10171
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10172
|
-
|
|
10173
|
-
|
|
10174
|
-
|
|
9967
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
9968
|
+
<span class="cstat-no" title="statement not covered" > structure.sourceMap = result.sourceMap;</span>
|
|
9969
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, structure);</span>
|
|
9970
|
+
} catch (err) {}
|
|
9971
|
+
});
|
|
9972
|
+
<span class="cstat-no" title="statement not covered" > if (module instanceof App) {</span>
|
|
9973
|
+
<span class="cstat-no" title="statement not covered" > module.overriddenLogics?.forEach?.(<span class="fstat-no" title="function not covered" >(l</span>ogic) => {</span>
|
|
9974
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
9975
|
+
<span class="cstat-no" title="statement not covered" > if (!(logic instanceof OverriddenLogic)) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
9976
|
+
const result = <span class="cstat-no" title="statement not covered" >logic.toEmbeddedTSFile();</span>
|
|
9977
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
9978
|
+
<span class="cstat-no" title="statement not covered" > logic.sourceMap = result.sourceMap;</span>
|
|
9979
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, logic);</span>
|
|
9980
|
+
} catch (err) {
|
|
9981
|
+
<span class="cstat-no" title="statement not covered" > console.error('err: ', err);</span>
|
|
10175
9982
|
}
|
|
10176
|
-
}
|
|
10177
|
-
|
|
10178
|
-
|
|
10179
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10180
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10181
|
-
|
|
10182
|
-
|
|
10183
|
-
|
|
10184
|
-
|
|
10185
|
-
|
|
10186
|
-
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>
|
|
10187
|
-
<span class="cstat-no" title="statement not covered" > if (!views || views.length === 0) {</span>
|
|
10188
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
10189
|
-
}
|
|
10190
|
-
|
|
10191
|
-
<span class="cstat-no" title="statement not covered" > for (const view of views) {</span>
|
|
10192
|
-
<span class="cstat-no" title="statement not covered" > yield* getTsFile(view, 'view');</span>
|
|
10193
|
-
|
|
10194
|
-
<span class="cstat-no" title="statement not covered" > if (view.children) {</span>
|
|
10195
|
-
<span class="cstat-no" title="statement not covered" > yield* view2TSFile(view.children);</span>
|
|
9983
|
+
});
|
|
9984
|
+
<span class="cstat-no" title="statement not covered" > module?.backend?.variables?.forEach(<span class="fstat-no" title="function not covered" >(b</span>ackdndVariable) => {</span>
|
|
9985
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
9986
|
+
const result = <span class="cstat-no" title="statement not covered" >backdndVariable.toEmbeddedTSFile();</span>
|
|
9987
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
9988
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
9989
|
+
<span class="cstat-no" title="statement not covered" > backdndVariable.sourceMap = result.sourceMap;</span>
|
|
9990
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, backdndVariable);</span>
|
|
9991
|
+
} catch (err) {
|
|
9992
|
+
<span class="cstat-no" title="statement not covered" > console.error(err);</span>
|
|
10196
9993
|
}
|
|
10197
|
-
}
|
|
10198
|
-
|
|
10199
|
-
|
|
10200
|
-
|
|
10201
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10202
|
-
|
|
9994
|
+
});
|
|
9995
|
+
<span class="cstat-no" title="statement not covered" > module.frontends?.forEach(<span class="fstat-no" title="function not covered" >(f</span>rontend) => {</span>
|
|
9996
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
9997
|
+
const result = <span class="cstat-no" title="statement not covered" >frontend.toEmbeddedTSFile();</span>
|
|
9998
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
9999
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10000
|
+
<span class="cstat-no" title="statement not covered" > frontend.sourceMap = result.sourceMap;</span>
|
|
10001
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, frontend);</span>
|
|
10002
|
+
} catch (err) {
|
|
10003
|
+
<span class="cstat-no" title="statement not covered" > console.log(err);</span>
|
|
10004
|
+
}
|
|
10005
|
+
<span class="cstat-no" title="statement not covered" > frontend.variables?.forEach(<span class="fstat-no" title="function not covered" >(f</span>rontendVariable) => {</span>
|
|
10006
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10007
|
+
const result = <span class="cstat-no" title="statement not covered" >frontendVariable.toEmbeddedTSFile();</span>
|
|
10008
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10009
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10010
|
+
<span class="cstat-no" title="statement not covered" > frontendVariable.sourceMap = result.sourceMap;</span>
|
|
10011
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, frontendVariable);</span>
|
|
10012
|
+
} catch (err) {
|
|
10013
|
+
<span class="cstat-no" title="statement not covered" > console.log(err);</span>
|
|
10014
|
+
}
|
|
10015
|
+
});
|
|
10016
|
+
<span class="cstat-no" title="statement not covered" > frontend.bindEvents?.forEach(<span class="fstat-no" title="function not covered" >(b</span>indEvent) => {</span>
|
|
10017
|
+
<span class="cstat-no" title="statement not covered" > if (bindEvent?.logics && bindEvent?.logics?.length > 0) {</span>
|
|
10018
|
+
<span class="cstat-no" title="statement not covered" > bindEvent.logics.forEach(<span class="fstat-no" title="function not covered" >(l</span>ogic: Logic) => {</span>
|
|
10019
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10020
|
+
const result = <span class="cstat-no" title="statement not covered" >logic.toEmbeddedTSFile();</span>
|
|
10021
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10022
|
+
<span class="cstat-no" title="statement not covered" > logic.sourceMap = result.sourceMap;</span>
|
|
10023
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, logic);</span>
|
|
10024
|
+
} catch (err) {
|
|
10025
|
+
<span class="cstat-no" title="statement not covered" > console.error('err: ', err);</span>
|
|
10026
|
+
}
|
|
10027
|
+
});
|
|
10028
|
+
}
|
|
10029
|
+
});
|
|
10030
|
+
// view的生成
|
|
10031
|
+
<span class="cstat-no" title="statement not covered" > if (!config.closeViews) {</span>
|
|
10032
|
+
<span class="cstat-no" title="statement not covered" > this.view2TSFile(frontend.views, results);</span>
|
|
10033
|
+
}
|
|
10034
|
+
<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>
|
|
10035
|
+
});
|
|
10036
|
+
} else {
|
|
10037
|
+
<span class="cstat-no" title="statement not covered" > module.frontends?.forEach(<span class="fstat-no" title="function not covered" >(f</span>rontend) => {</span>
|
|
10038
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10039
|
+
<span class="cstat-no" title="statement not covered" > frontend.logics.forEach(<span class="fstat-no" title="function not covered" >(l</span>ogic) => {</span>
|
|
10040
|
+
const result = <span class="cstat-no" title="statement not covered" >logic.toEmbeddedTSFile();</span>
|
|
10041
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10042
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10043
|
+
<span class="cstat-no" title="statement not covered" > logic.sourceMap = result.sourceMap;</span>
|
|
10044
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, logic);</span>
|
|
10045
|
+
});
|
|
10046
|
+
} catch (err) {
|
|
10047
|
+
<span class="cstat-no" title="statement not covered" > console.log(err);</span>
|
|
10048
|
+
}
|
|
10049
|
+
});
|
|
10203
10050
|
}
|
|
10204
10051
|
|
|
10205
|
-
|
|
10206
|
-
|
|
10207
|
-
|
|
10208
|
-
|
|
10209
|
-
|
|
10210
|
-
|
|
10211
|
-
|
|
10212
|
-
|
|
10213
|
-
|
|
10214
|
-
|
|
10215
|
-
|
|
10216
|
-
|
|
10217
|
-
|
|
10218
|
-
|
|
10219
|
-
|
|
10220
|
-
|
|
10221
|
-
|
|
10222
|
-
|
|
10223
|
-
|
|
10224
|
-
const {
|
|
10225
|
-
namespaces = <span class="branch-0 cbranch-no" title="branch not covered" >[],</span>
|
|
10226
|
-
} = <span class="cstat-no" title="statement not covered" >module as Connector;</span>
|
|
10227
|
-
|
|
10228
|
-
<span class="cstat-no" title="statement not covered" > yield* getTsFiles(structures, 'structure');</span>
|
|
10229
|
-
<span class="cstat-no" title="statement not covered" > yield* getTsFiles(metadataTypes, 'metadataType');</span>
|
|
10052
|
+
(<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>
|
|
10053
|
+
// 本身dataSource也要生成一个文件用于改名
|
|
10054
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10055
|
+
const result = <span class="cstat-no" title="statement not covered" >dataSource.toEmbeddedTSFile();</span>
|
|
10056
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10057
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10058
|
+
<span class="cstat-no" title="statement not covered" > dataSource.sourceMap = result.sourceMap;</span>
|
|
10059
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, dataSource);</span>
|
|
10060
|
+
} catch (err) {}
|
|
10061
|
+
<span class="cstat-no" title="statement not covered" > dataSource.entities.forEach(<span class="fstat-no" title="function not covered" >(e</span>ntity) => {</span>
|
|
10062
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10063
|
+
const result = <span class="cstat-no" title="statement not covered" >entity.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" > entity.sourceMap = result.sourceMap;</span>
|
|
10067
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, entity);</span>
|
|
10068
|
+
} catch (err) {}
|
|
10069
|
+
});
|
|
10070
|
+
});
|
|
10230
10071
|
|
|
10231
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10232
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10233
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10072
|
+
<span class="cstat-no" title="statement not covered" > module?.interfaces?.forEach(<span class="fstat-no" title="function not covered" >(_</span>interface) => {</span>
|
|
10073
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10074
|
+
const result = <span class="cstat-no" title="statement not covered" >_interface.toEmbeddedTSFile();</span>
|
|
10075
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10076
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10077
|
+
<span class="cstat-no" title="statement not covered" > _interface.sourceMap = result.sourceMap;</span>
|
|
10078
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, _interface);</span>
|
|
10079
|
+
} catch (err) {}
|
|
10080
|
+
});
|
|
10081
|
+
<span class="cstat-no" title="statement not covered" > module?.enums?.forEach(<span class="fstat-no" title="function not covered" >(_</span>enum) => {</span>
|
|
10082
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10083
|
+
const result = <span class="cstat-no" title="statement not covered" >_enum.toEmbeddedTSFile();</span>
|
|
10084
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10085
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10086
|
+
<span class="cstat-no" title="statement not covered" > _enum.sourceMap = result.sourceMap;</span>
|
|
10087
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, _enum);</span>
|
|
10088
|
+
} catch (err) {}
|
|
10089
|
+
});
|
|
10090
|
+
<span class="cstat-no" title="statement not covered" > module?.logics?.forEach(<span class="fstat-no" title="function not covered" >(l</span>ogic) => {</span>
|
|
10091
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10092
|
+
<span class="cstat-no" title="statement not covered" > if (!(logic instanceof Logic)) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
10093
|
+
const result = <span class="cstat-no" title="statement not covered" >logic.toEmbeddedTSFile();</span>
|
|
10094
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10095
|
+
<span class="cstat-no" title="statement not covered" > logic.sourceMap = result.sourceMap;</span>
|
|
10096
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, logic);</span>
|
|
10097
|
+
} catch (err) {}
|
|
10098
|
+
});
|
|
10234
10099
|
|
|
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" >
|
|
10238
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10100
|
+
(<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>
|
|
10101
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10102
|
+
<span class="cstat-no" title="statement not covered" > if (!(logic instanceof Logic)) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
10103
|
+
const result = <span class="cstat-no" title="statement not covered" >logic.toEmbeddedTSFile();</span>
|
|
10104
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10105
|
+
<span class="cstat-no" title="statement not covered" > logic.sourceMap = result.sourceMap;</span>
|
|
10106
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, logic);</span>
|
|
10107
|
+
} catch (err) {}
|
|
10108
|
+
});
|
|
10239
10109
|
|
|
10240
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10241
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10242
|
-
|
|
10110
|
+
(<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>
|
|
10111
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10112
|
+
<span class="cstat-no" title="statement not covered" > if (!(logic instanceof Logic)) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
10113
|
+
const result = <span class="cstat-no" title="statement not covered" >logic.toEmbeddedTSFile();</span>
|
|
10114
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10115
|
+
<span class="cstat-no" title="statement not covered" > logic.sourceMap = result.sourceMap;</span>
|
|
10116
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, logic);</span>
|
|
10117
|
+
} catch (err) {}
|
|
10118
|
+
});
|
|
10243
10119
|
|
|
10244
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10245
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10246
|
-
|
|
10120
|
+
<span class="cstat-no" title="statement not covered" > module.processes?.forEach(<span class="fstat-no" title="function not covered" >(p</span>rocess) => {</span>
|
|
10121
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10122
|
+
const result = <span class="cstat-no" title="statement not covered" >process.toEmbeddedTSFile();</span>
|
|
10123
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10124
|
+
<span class="cstat-no" title="statement not covered" > process.sourceMap = result.sourceMap;</span>
|
|
10125
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, process);</span>
|
|
10126
|
+
} catch (err) {}
|
|
10127
|
+
});
|
|
10128
|
+
|
|
10129
|
+
<span class="cstat-no" title="statement not covered" > if (module instanceof Connector) {</span>
|
|
10130
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10131
|
+
<span class="cstat-no" title="statement not covered" > module.triggerLaunchers?.forEach(<span class="fstat-no" title="function not covered" >(l</span>auncher) => {</span>
|
|
10132
|
+
const result = <span class="cstat-no" title="statement not covered" >launcher.toEmbeddedTSFile();</span>
|
|
10133
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10134
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10135
|
+
<span class="cstat-no" title="statement not covered" > launcher.sourceMap = result.sourceMap;</span>
|
|
10136
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, launcher);</span>
|
|
10137
|
+
});
|
|
10138
|
+
<span class="cstat-no" title="statement not covered" > module.namespaces?.forEach?.(<span class="fstat-no" title="function not covered" >(n</span>amespace) => {</span>
|
|
10139
|
+
<span class="cstat-no" title="statement not covered" > namespace.logics.forEach(<span class="fstat-no" title="function not covered" >(l</span>ogic) => {</span>
|
|
10140
|
+
const result = <span class="cstat-no" title="statement not covered" >logic.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" > logic.sourceMap = result.sourceMap;</span>
|
|
10144
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, logic);</span>
|
|
10145
|
+
});
|
|
10146
|
+
})
|
|
10147
|
+
<span class="cstat-no" title="statement not covered" > module?.authLogicsForCallInterface?.forEach?.(<span class="fstat-no" title="function not covered" >(l</span>ogic) => {</span>
|
|
10148
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10149
|
+
<span class="cstat-no" title="statement not covered" > if (!(logic instanceof Logic)) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
10150
|
+
const result = <span class="cstat-no" title="statement not covered" >logic.toEmbeddedTSFile();</span>
|
|
10151
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10152
|
+
<span class="cstat-no" title="statement not covered" > logic.sourceMap = result.sourceMap;</span>
|
|
10153
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, logic);</span>
|
|
10154
|
+
} catch (err) {}
|
|
10155
|
+
});
|
|
10156
|
+
} catch (error) {
|
|
10157
|
+
<span class="cstat-no" title="statement not covered" > console.error(error);</span>
|
|
10247
10158
|
}
|
|
10248
|
-
} else {
|
|
10249
|
-
<span class="cstat-no" title="statement not covered" > yield* getTsFiles(concat(frontends, 'logics' as any), 'frontend_logic');</span>
|
|
10250
10159
|
}
|
|
10251
10160
|
|
|
10252
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10253
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10254
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10255
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10256
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10257
|
-
|
|
10258
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10259
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10260
|
-
|
|
10261
|
-
|
|
10262
|
-
<span class="cstat-no" title="statement not covered" > yield* getTsFiles(triggerLaunchers, 'triggerLauncher');</span>
|
|
10263
|
-
<span class="cstat-no" title="statement not covered" > yield* getTsFiles(authLogicsForCallInterface, 'authLogicForCallInterface');</span>
|
|
10264
|
-
<span class="cstat-no" title="statement not covered" > yield* getTsFiles(concat(namespaces, 'logics'), 'namespaces_logic');</span>
|
|
10161
|
+
<span class="cstat-no" title="statement not covered" > if (module instanceof App) {</span>
|
|
10162
|
+
<span class="cstat-no" title="statement not covered" > module?.roles?.forEach(<span class="fstat-no" title="function not covered" >(r</span>ole) => {</span>
|
|
10163
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10164
|
+
const result = <span class="cstat-no" title="statement not covered" >role.toEmbeddedTSFile();</span>
|
|
10165
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10166
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10167
|
+
<span class="cstat-no" title="statement not covered" > role.sourceMap = result.sourceMap;</span>
|
|
10168
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, role);</span>
|
|
10169
|
+
} catch (err) {}
|
|
10170
|
+
});
|
|
10265
10171
|
}
|
|
10266
10172
|
|
|
10267
10173
|
<span class="cstat-no" title="statement not covered" > if (module instanceof App) {</span>
|
|
10268
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10269
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10270
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10174
|
+
<span class="cstat-no" title="statement not covered" > module.connections?.forEach?.(<span class="fstat-no" title="function not covered" >(c</span>onnection) => {</span>
|
|
10175
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10176
|
+
const result = <span class="cstat-no" title="statement not covered" >connection.toEmbeddedTSFile();</span>
|
|
10177
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10178
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10179
|
+
<span class="cstat-no" title="statement not covered" > connection.sourceMap = result.sourceMap;</span>
|
|
10180
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, connection);</span>
|
|
10181
|
+
} catch (err) {}
|
|
10182
|
+
});
|
|
10183
|
+
<span class="cstat-no" title="statement not covered" > module.triggerLaunchers?.forEach?.(<span class="fstat-no" title="function not covered" >(t</span>riggerLauncher) => {</span>
|
|
10184
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10185
|
+
const result = <span class="cstat-no" title="statement not covered" >triggerLauncher.toEmbeddedTSFile();</span>
|
|
10186
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10187
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10188
|
+
<span class="cstat-no" title="statement not covered" > triggerLauncher.sourceMap = result.sourceMap;</span>
|
|
10189
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, triggerLauncher);</span>
|
|
10190
|
+
} catch (err) {}
|
|
10191
|
+
});
|
|
10271
10192
|
}
|
|
10272
10193
|
|
|
10273
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10274
|
-
<span class="cstat-no" title="statement not covered" > if (
|
|
10275
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10194
|
+
<span class="cstat-no" title="statement not covered" > module.configuration?.groups?.forEach(<span class="fstat-no" title="function not covered" >(_</span>group) => {</span>
|
|
10195
|
+
<span class="cstat-no" title="statement not covered" > if (_group.name === 'custom') {</span>
|
|
10196
|
+
<span class="cstat-no" title="statement not covered" > _group.properties.forEach(<span class="fstat-no" title="function not covered" >(_</span>property) => {</span>
|
|
10197
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10198
|
+
const result = <span class="cstat-no" title="statement not covered" >_property.toEmbeddedTSFile();</span>
|
|
10199
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10200
|
+
// sourceMap都存在目录级别内容下,在页面层级下去找
|
|
10201
|
+
<span class="cstat-no" title="statement not covered" > _property.sourceMap = result.sourceMap;</span>
|
|
10202
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, _property);</span>
|
|
10203
|
+
} catch (err) {}
|
|
10204
|
+
});
|
|
10276
10205
|
}
|
|
10277
|
-
}
|
|
10206
|
+
});
|
|
10207
|
+
}
|
|
10278
10208
|
|
|
10279
|
-
<span class="
|
|
10209
|
+
<span class="fstat-no" title="function not covered" > view2TSFile(</span>viewsChildren: View[], results: Array<ReturnType<Structure['toEmbeddedTSFile']>>) {
|
|
10210
|
+
// 如果有子页面
|
|
10211
|
+
<span class="cstat-no" title="statement not covered" > if (viewsChildren && viewsChildren.length) {</span>
|
|
10212
|
+
<span class="cstat-no" title="statement not covered" > viewsChildren.forEach(<span class="fstat-no" title="function not covered" >(v</span>iew) => {</span>
|
|
10213
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10214
|
+
const result = <span class="cstat-no" title="statement not covered" >view.toEmbeddedTSFile();</span>
|
|
10215
|
+
<span class="cstat-no" title="statement not covered" > results.push(result);</span>
|
|
10216
|
+
<span class="cstat-no" title="statement not covered" > view.sourceMap = result.sourceMap;</span>
|
|
10217
|
+
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, view);</span>
|
|
10218
|
+
<span class="cstat-no" title="statement not covered" > if (view.children.length) {</span>
|
|
10219
|
+
<span class="cstat-no" title="statement not covered" > this.view2TSFile(view.children, results);</span>
|
|
10220
|
+
}
|
|
10221
|
+
} catch (err) {}
|
|
10222
|
+
});
|
|
10223
|
+
}
|
|
10280
10224
|
}
|
|
10281
10225
|
|
|
10282
10226
|
<span class="fstat-no" title="function not covered" > async </span>openApp(app: App) {
|
|
10283
10227
|
<span class="cstat-no" title="statement not covered" > console.time('生成 TS 文件');</span>
|
|
10284
|
-
const
|
|
10285
|
-
|
|
10228
|
+
const results: Array<ReturnType<Structure['toEmbeddedTSFile']>> = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
10229
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
10230
|
+
// app的创建内容
|
|
10231
|
+
<span class="cstat-no" title="statement not covered" > this.contentToFile(app, results);</span>
|
|
10232
|
+
// 其他模块的创建内容
|
|
10233
|
+
<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>
|
|
10234
|
+
<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>
|
|
10235
|
+
<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>
|
|
10236
|
+
} catch (err) {
|
|
10237
|
+
<span class="cstat-no" title="statement not covered" > console.log(err);</span>
|
|
10238
|
+
}
|
|
10239
|
+
|
|
10286
10240
|
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>
|
|
10287
10241
|
file: result.filePath,
|
|
10288
10242
|
fileContent: result.code,
|
|
10289
10243
|
}));
|
|
10290
|
-
|
|
10291
10244
|
<span class="cstat-no" title="statement not covered" > await this.writeFiles(files);</span>
|
|
10292
10245
|
<span class="cstat-no" title="statement not covered" > this._debugInFileStorage(app, files);</span>
|
|
10293
10246
|
// 修改名称回调
|
|
@@ -10299,21 +10252,6 @@ class NaslServer {
|
|
|
10299
10252
|
<span class="cstat-no" title="statement not covered" > callback();</span>
|
|
10300
10253
|
});
|
|
10301
10254
|
<span class="cstat-no" title="statement not covered" > console.timeEnd('生成 TS 文件');</span>
|
|
10302
|
-
|
|
10303
|
-
function* <span class="fstat-no" title="function not covered" >getAllTsFiles(</span>) {
|
|
10304
|
-
const files = <span class="cstat-no" title="statement not covered" >yield* self.contentToFile(app);</span>
|
|
10305
|
-
const otherModules = <span class="cstat-no" title="statement not covered" >[</span>
|
|
10306
|
-
...app.integration?.connectors ?? [],
|
|
10307
|
-
...app.dependencies ?? [],
|
|
10308
|
-
...app.interfaceDependencies ?? [],
|
|
10309
|
-
];
|
|
10310
|
-
|
|
10311
|
-
<span class="cstat-no" title="statement not covered" > for (const item of otherModules) {</span>
|
|
10312
|
-
<span class="cstat-no" title="statement not covered" > files.push(...yield* self.contentToFile(item));</span>
|
|
10313
|
-
}
|
|
10314
|
-
|
|
10315
|
-
<span class="cstat-no" title="statement not covered" > return files;</span>
|
|
10316
|
-
}
|
|
10317
10255
|
}
|
|
10318
10256
|
|
|
10319
10257
|
<span class="fstat-no" title="function not covered" > async </span>refreshApp(app: App) {
|
|
@@ -10344,19 +10282,13 @@ class NaslServer {
|
|
|
10344
10282
|
<span class="cstat-no" title="statement not covered" > __naslStdlibFileCacheMap.set(options.file, options);</span>
|
|
10345
10283
|
}
|
|
10346
10284
|
|
|
10347
|
-
/**
|
|
10285
|
+
/** u
|
|
10348
10286
|
* 只新增文件
|
|
10349
10287
|
* @param {*} files
|
|
10350
10288
|
*/
|
|
10351
10289
|
<span class="fstat-no" title="function not covered" > writeFiles(</span>files: Array<tsProtocol.OpenRequestArgs>) {
|
|
10352
10290
|
<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>
|
|
10353
|
-
|
|
10354
|
-
file: key,
|
|
10355
|
-
fileContent: value,
|
|
10356
|
-
}));
|
|
10357
|
-
// const newFiles = require('/Users/sufangzhou/dev/neteast/lcap-ide/packages/nasl/tmp/files-original.json');
|
|
10358
|
-
// debugger;
|
|
10359
|
-
<span class="cstat-no" title="statement not covered" > return this.messager.requestCommand('writeFiles', noRepeatFiles);</span>
|
|
10291
|
+
<span class="cstat-no" title="statement not covered" > return this.messager.requestCommand('writeFiles', files);</span>
|
|
10360
10292
|
}
|
|
10361
10293
|
|
|
10362
10294
|
/**
|
|
@@ -10704,29 +10636,26 @@ class NaslServer {
|
|
|
10704
10636
|
<span class="cstat-no" title="statement not covered" > node.tsErrorDetail = tsErrorDetail;</span>
|
|
10705
10637
|
}
|
|
10706
10638
|
|
|
10707
|
-
|
|
10639
|
+
/**
|
|
10640
|
+
* 处理诊断结果
|
|
10641
|
+
* @param records 结果
|
|
10642
|
+
* @returns 过滤或者转换后的诊断结果
|
|
10643
|
+
*/
|
|
10644
|
+
@withQueueExecute('diagnostic')
|
|
10645
|
+
<span class="fstat-no" title="function not covered" > async </span>_resolveDiagnosticRecords(records: Array<DiagnosticRecord>) {
|
|
10708
10646
|
// 热更新类型标注
|
|
10709
10647
|
<span class="cstat-no" title="statement not covered" > if (records.length) {</span>
|
|
10710
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10648
|
+
<span class="cstat-no" title="statement not covered" > await this.IncrementalAnnotationJSON(records);</span>
|
|
10711
10649
|
}
|
|
10650
|
+
<span class="cstat-no" title="statement not covered" > await Promise.all(</span>
|
|
10651
|
+
records.map(<span class="fstat-no" title="function not covered" >async </span>(record) => {
|
|
10652
|
+
const {node} = <span class="cstat-no" title="statement not covered" >record;</span>
|
|
10653
|
+
<span class="cstat-no" title="statement not covered" > if (!node) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
10712
10654
|
|
|
10713
|
-
|
|
10714
|
-
|
|
10715
|
-
<span class="cstat-no" title="statement not covered" > console.time('处理诊断数据');</span>
|
|
10716
|
-
|
|
10717
|
-
<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>
|
|
10718
|
-
<span class="cstat-no" title="statement not covered" > if (!record || !record.node) {</span>
|
|
10719
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
10720
|
-
}
|
|
10721
|
-
|
|
10722
|
-
const { node } = <span class="cstat-no" title="statement not covered" >record;</span>
|
|
10723
|
-
|
|
10724
|
-
// 先获取原来的节点先清除一下之前有异常的节点,下面重新赋值
|
|
10725
|
-
const oldRecord = <span class="cstat-no" title="statement not covered" >self.diagnosticManager.getRecord?.(record.id);</span>
|
|
10655
|
+
// 先获取原来的节点先清除一下之前有异常的节点,下面重新赋值
|
|
10656
|
+
const oldRecord = <span class="cstat-no" title="statement not covered" >this.diagnosticManager.getRecord?.(record.id);</span>
|
|
10726
10657
|
|
|
10727
|
-
|
|
10728
|
-
<span class="cstat-no" title="statement not covered" > if (oldRecord) {</span>
|
|
10729
|
-
<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>
|
|
10658
|
+
<span class="cstat-no" title="statement not covered" > oldRecord?.semanticDiagnostics.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) => {</span>
|
|
10730
10659
|
<span class="cstat-no" title="statement not covered" > if (item.node) {</span>
|
|
10731
10660
|
<span class="cstat-no" title="statement not covered" > delete item.node.tsErrorDetail;</span>
|
|
10732
10661
|
// 如果logic中有报错就把标识置为true
|
|
@@ -10736,7 +10665,8 @@ class NaslServer {
|
|
|
10736
10665
|
}
|
|
10737
10666
|
});
|
|
10738
10667
|
|
|
10739
|
-
|
|
10668
|
+
// 清空一些状态
|
|
10669
|
+
<span class="cstat-no" title="statement not covered" > oldRecord?.suggestionDiagnostics.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) => {</span>
|
|
10740
10670
|
<span class="cstat-no" title="statement not covered" > if (item.node) {</span>
|
|
10741
10671
|
<span class="cstat-no" title="statement not covered" > delete item.node.tsErrorDetail;</span>
|
|
10742
10672
|
<span class="cstat-no" title="statement not covered" > if (item.node && item.node instanceof Logic) {</span>
|
|
@@ -10744,172 +10674,145 @@ class NaslServer {
|
|
|
10744
10674
|
}
|
|
10745
10675
|
}
|
|
10746
10676
|
});
|
|
10747
|
-
}
|
|
10748
10677
|
|
|
10749
|
-
|
|
10750
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10751
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10752
|
-
|
|
10678
|
+
// 语义诊断
|
|
10679
|
+
<span class="cstat-no" title="statement not covered" > if (isChangeInterface) {</span>
|
|
10680
|
+
<span class="cstat-no" title="statement not covered" > this.existStructureFix(record.semanticDiagnostics, record.node as FileNode, this);</span>
|
|
10681
|
+
}
|
|
10753
10682
|
|
|
10754
|
-
|
|
10755
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10756
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10757
|
-
|
|
10758
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10759
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10760
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10683
|
+
// 单独处理 oql 语义错误提示
|
|
10684
|
+
<span class="cstat-no" title="statement not covered" > if (record.node instanceof Logic) {</span>
|
|
10685
|
+
<span class="cstat-no" title="statement not covered" > record?.syntaxDiagnostics.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) => {</span>
|
|
10686
|
+
const minRange = <span class="cstat-no" title="statement not covered" >this._findMinRange(item as unknown as tsProtocol.DiagnosticWithFileName, record.node as FileNode);</span>
|
|
10687
|
+
<span class="cstat-no" title="statement not covered" > if (minRange?.node instanceof OqlQueryComponent) {</span>
|
|
10688
|
+
<span class="cstat-no" title="statement not covered" > if (item.text === 'Invalid character.') {</span>
|
|
10689
|
+
<span class="cstat-no" title="statement not covered" > record.semanticDiagnostics.push(item);</span>
|
|
10690
|
+
}
|
|
10761
10691
|
}
|
|
10762
|
-
}
|
|
10763
|
-
}
|
|
10764
|
-
}
|
|
10765
|
-
|
|
10766
|
-
// 记录结构体数据
|
|
10767
|
-
<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>
|
|
10768
|
-
<span class="cstat-no" title="statement not covered" > checkAStructure_(diag.text);</span>
|
|
10769
|
-
});
|
|
10692
|
+
});
|
|
10693
|
+
}
|
|
10770
10694
|
|
|
10771
|
-
|
|
10772
|
-
|
|
10773
|
-
|
|
10774
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10775
|
-
|
|
10776
|
-
|
|
10777
|
-
|
|
10778
|
-
|
|
10779
|
-
|
|
10780
|
-
|
|
10781
|
-
|
|
10782
|
-
|
|
10783
|
-
|
|
10784
|
-
|
|
10785
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10786
|
-
yield*
|
|
10787
|
-
utils.wrapMapToGenerator(record.semanticDiagnostics, <span class="fstat-no" title="function not covered" >(d</span>iagnostic) => {
|
|
10788
|
-
// 错误降级如果属于草稿态的就降级
|
|
10789
|
-
<span class="cstat-no" title="statement not covered" > if (diagnostic?.node) {</span>
|
|
10790
|
-
let currentNode = <span class="cstat-no" title="statement not covered" >diagnostic.node;</span>
|
|
10791
|
-
<span class="cstat-no" title="statement not covered" > if (diagnostic.severity === 'warning') {</span>
|
|
10792
|
-
<span class="cstat-no" title="statement not covered" > record.suggestionDiagnostics.push(diagnostic);</span>
|
|
10793
|
-
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
10794
|
-
} <span class="cstat-no" title="statement not covered" >if (currentNode.concept === 'OqlQueryComponent') {</span>
|
|
10795
|
-
// OQL别名错误降级为警告
|
|
10796
|
-
<span class="cstat-no" title="statement not covered" > if (diagnostic.originalDiagnostic && diagnostic.originalDiagnostic?.text.includes('__OQL_ALIAS_WARNING__')) {</span>
|
|
10797
|
-
// 重置 图标和错误等级
|
|
10798
|
-
<span class="cstat-no" title="statement not covered" > diagnostic.severity = 'warning';</span>
|
|
10799
|
-
<span class="cstat-no" title="statement not covered" > if (diagnostic.node?.tsErrorDetail) {</span>
|
|
10800
|
-
// 重置组件节点上的错误信息
|
|
10801
|
-
<span class="cstat-no" title="statement not covered" > diagnostic.node.tsErrorDetail.severity = 'warning';</span>
|
|
10802
|
-
}
|
|
10695
|
+
// 记录结构体数据
|
|
10696
|
+
<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>
|
|
10697
|
+
|
|
10698
|
+
<span class="cstat-no" title="statement not covered" > record.semanticDiagnostics = record.semanticDiagnostics</span>
|
|
10699
|
+
.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>
|
|
10700
|
+
.filter(<span class="fstat-no" title="function not covered" >(d</span>iag) => <span class="cstat-no" title="statement not covered" >!!diag)</span>;
|
|
10701
|
+
<span class="cstat-no" title="statement not covered" > record.semanticDiagnostics.push(...(await this._attachDiagnostics(node)));</span>
|
|
10702
|
+
|
|
10703
|
+
// 报错降级逻辑
|
|
10704
|
+
<span class="cstat-no" title="statement not covered" > record.semanticDiagnostics = record.semanticDiagnostics</span>
|
|
10705
|
+
.map(<span class="fstat-no" title="function not covered" >(d</span>iagnostic) => {
|
|
10706
|
+
// 错误降级如果属于草稿态的就降级
|
|
10707
|
+
<span class="cstat-no" title="statement not covered" > if (diagnostic?.node) {</span>
|
|
10708
|
+
let currentNode = <span class="cstat-no" title="statement not covered" >diagnostic.node;</span>
|
|
10709
|
+
<span class="cstat-no" title="statement not covered" > if (diagnostic.severity === 'warning') {</span>
|
|
10803
10710
|
<span class="cstat-no" title="statement not covered" > record.suggestionDiagnostics.push(diagnostic);</span>
|
|
10804
10711
|
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
10712
|
+
} <span class="cstat-no" title="statement not covered" >if (currentNode.concept === 'OqlQueryComponent') {</span>
|
|
10713
|
+
// OQL别名错误降级为警告
|
|
10714
|
+
<span class="cstat-no" title="statement not covered" > if (diagnostic.originalDiagnostic && diagnostic.originalDiagnostic?.text.includes('__OQL_ALIAS_WARNING__')) {</span>
|
|
10715
|
+
// 重置 图标和错误等级
|
|
10716
|
+
<span class="cstat-no" title="statement not covered" > diagnostic.severity = 'warning';</span>
|
|
10717
|
+
<span class="cstat-no" title="statement not covered" > if (diagnostic.node?.tsErrorDetail) {</span>
|
|
10718
|
+
// 重置组件节点上的错误信息
|
|
10719
|
+
<span class="cstat-no" title="statement not covered" > diagnostic.node.tsErrorDetail.severity = 'warning';</span>
|
|
10720
|
+
}
|
|
10721
|
+
<span class="cstat-no" title="statement not covered" > record.suggestionDiagnostics.push(diagnostic);</span>
|
|
10722
|
+
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
10723
|
+
}
|
|
10805
10724
|
}
|
|
10806
|
-
|
|
10807
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10808
|
-
|
|
10809
|
-
|
|
10810
|
-
|
|
10811
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10812
|
-
|
|
10813
|
-
|
|
10814
|
-
|
|
10725
|
+
<span class="cstat-no" title="statement not covered" > while (currentNode && currentNode?.parentNode?.concept !== 'App') {</span>
|
|
10726
|
+
<span class="cstat-no" title="statement not covered" > if (currentNode.parentKey?.toLowerCase()?.includes('playground')) {</span>
|
|
10727
|
+
// 草稿区降级
|
|
10728
|
+
// 重置 图标和错误等级
|
|
10729
|
+
<span class="cstat-no" title="statement not covered" > diagnostic.severity = 'warning';</span>
|
|
10730
|
+
<span class="cstat-no" title="statement not covered" > if (diagnostic.node?.tsErrorDetail) {</span>
|
|
10731
|
+
// 重置组件节点上的错误信息
|
|
10732
|
+
<span class="cstat-no" title="statement not covered" > diagnostic.node.tsErrorDetail.severity = 'warning';</span>
|
|
10733
|
+
}
|
|
10734
|
+
<span class="cstat-no" title="statement not covered" > record.suggestionDiagnostics.push(diagnostic);</span>
|
|
10735
|
+
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
10815
10736
|
}
|
|
10816
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10817
|
-
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
10737
|
+
<span class="cstat-no" title="statement not covered" > currentNode = currentNode.parentNode;</span>
|
|
10818
10738
|
}
|
|
10819
|
-
<span class="cstat-no" title="statement not covered" > currentNode = currentNode.parentNode;</span>
|
|
10820
|
-
}
|
|
10821
10739
|
|
|
10822
|
-
|
|
10823
|
-
|
|
10824
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10825
|
-
|
|
10826
|
-
}
|
|
10827
|
-
}
|
|
10828
|
-
<span class="cstat-no" title="statement not covered" > return diagnostic;</span>
|
|
10829
|
-
})
|
|
10830
|
-
)
|
|
10831
|
-
.filter(<span class="fstat-no" title="function not covered" >(d</span>iag) => <span class="cstat-no" title="statement not covered" >!!diag)</span>;
|
|
10832
|
-
|
|
10833
|
-
// 处理后的警告异常提示信息
|
|
10834
|
-
<span class="cstat-no" title="statement not covered" > record.suggestionDiagnostics = (</span>
|
|
10835
|
-
yield*
|
|
10836
|
-
utils.wrapMapToGenerator(record.suggestionDiagnostics, function * <span class="fstat-no" title="function not covered" >resolveSuggestionDiagnostic(</span>diag) {
|
|
10837
|
-
// 上面错误降级下来的
|
|
10838
|
-
<span class="cstat-no" title="statement not covered" > if (diag?.node) {</span>
|
|
10839
|
-
<span class="cstat-no" title="statement not covered" > return diag;</span>
|
|
10840
|
-
// 一些已知警告的单独处理
|
|
10841
|
-
} <span class="cstat-no" title="statement not covered" >if (</span>
|
|
10842
|
-
[
|
|
10843
|
-
`'__LogicEmpty' is declared but its value is never read.`,
|
|
10844
|
-
`'__destinationEmpty__' is declared but its value is never read.`,
|
|
10845
|
-
`'__devConfigValueEmpty' is declared but its value is never read.`,
|
|
10846
|
-
`'__onlineConfigValueEmpty' is declared but its value is never read.`,
|
|
10847
|
-
`'__UpdateNoProperty__' is declared but its value is never read.`,
|
|
10848
|
-
].includes(diag.text)
|
|
10849
|
-
) {
|
|
10850
|
-
<span class="cstat-no" title="statement not covered" > return yield* self._resolveDiagnosticWithGenerator(diag as unknown as tsProtocol.DiagnosticWithFileName, record.node as FileNode, record);</span>
|
|
10851
|
-
} <span class="cstat-no" title="statement not covered" >if (diag.text.includes(` is declared but its value is never read.`)) {</span>
|
|
10852
|
-
// 局部变量和输入变量未使用的警告
|
|
10853
|
-
const fromModule = <span class="cstat-no" title="statement not covered" >record.node.parentNode.concept === 'Module';</span>
|
|
10854
|
-
const fromConnector = <span class="cstat-no" title="statement not covered" >record.node.parentNode.concept === 'Connector';</span>
|
|
10855
|
-
<span class="cstat-no" title="statement not covered" > if ((record.node.concept === 'View' || record.node.concept === 'Logic') && !(fromModule || fromConnector)) {</span>
|
|
10856
|
-
/**
|
|
10857
|
-
* javalogic不用提示
|
|
10858
|
-
*/
|
|
10859
|
-
<span class="cstat-no" title="statement not covered" > if (record.node.concept === 'Logic' && self._isJavalogic(record.node as Logic)) {</span>
|
|
10860
|
-
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
10740
|
+
// 没有降级的继续遍历,如果在logic中,logic本身需要有error状态
|
|
10741
|
+
// 如果logic中有报错就把标识置为true
|
|
10742
|
+
<span class="cstat-no" title="statement not covered" > if ((diagnostic.node as any)?.logic) {</span>
|
|
10743
|
+
(<span class="cstat-no" title="statement not covered" >diagnostic.node as any).logic.haveError = true;</span>
|
|
10861
10744
|
}
|
|
10862
|
-
|
|
10863
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10745
|
+
}
|
|
10746
|
+
<span class="cstat-no" title="statement not covered" > return diagnostic;</span>
|
|
10747
|
+
})
|
|
10748
|
+
.filter(<span class="fstat-no" title="function not covered" >(d</span>iag) => <span class="cstat-no" title="statement not covered" >!!diag)</span>;
|
|
10749
|
+
|
|
10750
|
+
// 处理后的警告异常提示信息
|
|
10751
|
+
<span class="cstat-no" title="statement not covered" > record.suggestionDiagnostics = record.suggestionDiagnostics</span>
|
|
10752
|
+
.map(<span class="fstat-no" title="function not covered" >(d</span>iag) => {
|
|
10753
|
+
// 上面错误降级下来的
|
|
10754
|
+
<span class="cstat-no" title="statement not covered" > if (diag?.node) {</span>
|
|
10755
|
+
<span class="cstat-no" title="statement not covered" > return diag;</span>
|
|
10756
|
+
// 一些已知警告的单独处理
|
|
10757
|
+
} <span class="cstat-no" title="statement not covered" >if (</span>
|
|
10758
|
+
[
|
|
10759
|
+
`'__LogicEmpty' is declared but its value is never read.`,
|
|
10760
|
+
`'__destinationEmpty__' is declared but its value is never read.`,
|
|
10761
|
+
`'__devConfigValueEmpty' is declared but its value is never read.`,
|
|
10762
|
+
`'__onlineConfigValueEmpty' is declared but its value is never read.`,
|
|
10763
|
+
`'__UpdateNoProperty__' is declared but its value is never read.`,
|
|
10764
|
+
].includes(diag.text)
|
|
10765
|
+
) {
|
|
10766
|
+
<span class="cstat-no" title="statement not covered" > return this._resolveDiagnostic(diag as unknown as tsProtocol.DiagnosticWithFileName, record.node as FileNode, record);</span>
|
|
10767
|
+
} <span class="cstat-no" title="statement not covered" >if (diag.text.includes(` is declared but its value is never read.`)) {</span>
|
|
10768
|
+
// 局部变量和输入变量未使用的警告
|
|
10769
|
+
const fromModule = <span class="cstat-no" title="statement not covered" >record.node.parentNode.concept === 'Module';</span>
|
|
10770
|
+
const fromConnector = <span class="cstat-no" title="statement not covered" >record.node.parentNode.concept === 'Connector';</span>
|
|
10771
|
+
<span class="cstat-no" title="statement not covered" > if ((record.node.concept === 'View' || record.node.concept === 'Logic') && !(fromModule || fromConnector)) {</span>
|
|
10864
10772
|
/**
|
|
10865
|
-
*
|
|
10866
|
-
* 而且不是foreach中
|
|
10867
|
-
* 而且不是事件逻辑的入参
|
|
10773
|
+
* javalogic不用提示
|
|
10868
10774
|
*/
|
|
10869
|
-
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
10870
|
-
|
|
10871
|
-
|
|
10872
|
-
|
|
10873
|
-
) {
|
|
10874
|
-
|
|
10875
|
-
|
|
10876
|
-
|
|
10877
|
-
|
|
10878
|
-
|
|
10879
|
-
<span class="cstat-no" title="statement not covered" >
|
|
10880
|
-
|
|
10881
|
-
|
|
10882
|
-
|
|
10883
|
-
|
|
10884
|
-
|
|
10885
|
-
|
|
10886
|
-
|
|
10775
|
+
<span class="cstat-no" title="statement not covered" > if (record.node.concept === 'Logic' && this._isJavalogic(record.node as Logic)) {</span>
|
|
10776
|
+
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
10777
|
+
}
|
|
10778
|
+
const minRange = <span class="cstat-no" title="statement not covered" >this._findMinRange(diag as unknown as tsProtocol.DiagnosticWithFileName, record.node as FileNode);</span>
|
|
10779
|
+
<span class="cstat-no" title="statement not covered" > if (minRange) {</span>
|
|
10780
|
+
/**
|
|
10781
|
+
* 如果节点是入参类型
|
|
10782
|
+
* 而且不是foreach中
|
|
10783
|
+
* 而且不是事件逻辑的入参
|
|
10784
|
+
*/
|
|
10785
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
10786
|
+
minRange.node instanceof Param &&
|
|
10787
|
+
minRange.node.parentNode.concept !== 'ForEachStatement' &&
|
|
10788
|
+
!minRange.node.getAncestor('BindEvent')
|
|
10789
|
+
) {
|
|
10790
|
+
const diagnostic = <span class="cstat-no" title="statement not covered" >{</span>
|
|
10791
|
+
node: minRange.node,
|
|
10792
|
+
severity: 'warning',
|
|
10793
|
+
message: `未使用的输入参数${minRange.node.name}`,
|
|
10794
|
+
};
|
|
10795
|
+
<span class="cstat-no" title="statement not covered" > return diagnostic;</span>
|
|
10796
|
+
} <span class="cstat-no" title="statement not covered" >if (minRange.node instanceof Variable) {</span>
|
|
10797
|
+
const diagnostic = <span class="cstat-no" title="statement not covered" >{</span>
|
|
10798
|
+
node: minRange.node,
|
|
10799
|
+
severity: 'warning',
|
|
10800
|
+
message: `未使用的变量${minRange.node.name}`,
|
|
10801
|
+
};
|
|
10802
|
+
<span class="cstat-no" title="statement not covered" > return diagnostic;</span>
|
|
10803
|
+
}
|
|
10887
10804
|
}
|
|
10888
10805
|
}
|
|
10889
10806
|
}
|
|
10890
|
-
|
|
10891
|
-
|
|
10892
|
-
|
|
10893
|
-
)
|
|
10894
|
-
.filter(<span class="fstat-no" title="function not covered" >(d</span>iag) => <span class="cstat-no" title="statement not covered" >!!diag)</span>;
|
|
10895
|
-
|
|
10896
|
-
<span class="cstat-no" title="statement not covered" > record.suggestionDiagnostics.push(...yield* self._attachSuggestionDiagnosticsWithGenerator(node));</span>
|
|
10897
|
-
});
|
|
10898
|
-
|
|
10899
|
-
<span class="cstat-no" title="statement not covered" > console.timeEnd('处理诊断数据');</span>
|
|
10807
|
+
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
10808
|
+
})
|
|
10809
|
+
.filter(<span class="fstat-no" title="function not covered" >(d</span>iag) => <span class="cstat-no" title="statement not covered" >!!diag)</span>;
|
|
10900
10810
|
|
|
10811
|
+
<span class="cstat-no" title="statement not covered" > record.suggestionDiagnostics.push(...this._attachSuggestionDiagnostics(node));</span>
|
|
10812
|
+
})
|
|
10813
|
+
);
|
|
10901
10814
|
<span class="cstat-no" title="statement not covered" > return records;</span>
|
|
10902
10815
|
}
|
|
10903
|
-
|
|
10904
|
-
/**
|
|
10905
|
-
* 处理诊断结果
|
|
10906
|
-
* @param records 结果
|
|
10907
|
-
* @returns 过滤或者转换后的诊断结果
|
|
10908
|
-
*/
|
|
10909
|
-
@withQueueExecute('diagnostic')
|
|
10910
|
-
private <span class="fstat-no" title="function not covered" >_resolveDiagnosticRecords(</span>records: Array<DiagnosticRecord>) {
|
|
10911
|
-
<span class="cstat-no" title="statement not covered" > return utils.timeSlicingWithGenerator(this._resolveDiagnosticRecordsWithGenerator(records));</span>
|
|
10912
|
-
}
|
|
10913
10816
|
|
|
10914
10817
|
/**
|
|
10915
10818
|
* 判断是否是Javalogic
|
|
@@ -10928,7 +10831,7 @@ class NaslServer {
|
|
|
10928
10831
|
* @param fileNode 文件级别的节点
|
|
10929
10832
|
* @returns 诊断结果
|
|
10930
10833
|
*/
|
|
10931
|
-
|
|
10834
|
+
<span class="fstat-no" title="function not covered" > _attachSuggestionDiagnostics(</span>fileNode: BaseNode): Diagnostic[] {
|
|
10932
10835
|
const diagnostics: Diagnostic[] = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
10933
10836
|
<span class="cstat-no" title="statement not covered" > if (fileNode instanceof Logic || fileNode instanceof View) {</span>
|
|
10934
10837
|
<span class="cstat-no" title="statement not covered" > fileNode?.sourceMap.forEach(<span class="fstat-no" title="function not covered" >(v</span>alue, node) => {</span>
|
|
@@ -11290,53 +11193,31 @@ class NaslServer {
|
|
|
11290
11193
|
}
|
|
11291
11194
|
|
|
11292
11195
|
/** 是否被 触发器依赖, 如果存在,返回第一个触发器对应的名称 */
|
|
11293
|
-
<span class="fstat-no" title="function not covered" >
|
|
11196
|
+
<span class="fstat-no" title="function not covered" > async </span>isRefedByTriggerAndReturnFirstRef(fileNode: BaseNode): Promise<{
|
|
11294
11197
|
isRefedByTrigger: boolean;
|
|
11295
11198
|
fRefName: string;
|
|
11296
11199
|
}> {
|
|
11297
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11298
|
-
|
|
11299
|
-
|
|
11300
|
-
|
|
11301
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11302
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11303
|
-
|
|
11304
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11305
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11306
|
-
|
|
11307
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11308
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11309
|
-
}
|
|
11200
|
+
const refs = <span class="cstat-no" title="statement not covered" >await this._isHaveRef(fileNode);</span>
|
|
11201
|
+
const basePath = <span class="cstat-no" title="statement not covered" >TriggerLauncher.getEmbeddedFileBasePath(fileNode.rootNode as App);</span>
|
|
11202
|
+
let flag = <span class="cstat-no" title="statement not covered" >false;</span>
|
|
11203
|
+
let fRefName = <span class="cstat-no" title="statement not covered" >'';</span>
|
|
11204
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
11205
|
+
<span class="cstat-no" title="statement not covered" > for (const ref of refs) {</span>
|
|
11206
|
+
const { file } = <span class="cstat-no" title="statement not covered" >ref;</span>
|
|
11207
|
+
<span class="cstat-no" title="statement not covered" > if (file.startsWith(basePath)) {</span>
|
|
11208
|
+
<span class="cstat-no" title="statement not covered" > flag = true;</span>
|
|
11209
|
+
// file: /embedded/tttta/triggerLaunchers/订阅配置_asd.ts
|
|
11210
|
+
<span class="cstat-no" title="statement not covered" > fRefName = file.split(basePath)[1].split('.')[0];</span>
|
|
11211
|
+
<span class="cstat-no" title="statement not covered" > break;</span>
|
|
11310
11212
|
}
|
|
11311
|
-
} catch (error) {
|
|
11312
|
-
<span class="cstat-no" title="statement not covered" > console.error(error, refs);</span>
|
|
11313
11213
|
}
|
|
11314
|
-
|
|
11315
|
-
|
|
11316
|
-
|
|
11317
|
-
|
|
11318
|
-
|
|
11319
|
-
|
|
11320
|
-
|
|
11321
|
-
// let flag = false;
|
|
11322
|
-
// let fRefName = '';
|
|
11323
|
-
// try {
|
|
11324
|
-
// for (const ref of refs) {
|
|
11325
|
-
// const { file } = ref;
|
|
11326
|
-
// if (file.startsWith(basePath)) {
|
|
11327
|
-
// flag = true;
|
|
11328
|
-
// // file: /embedded/tttta/triggerLaunchers/订阅配置_asd.ts
|
|
11329
|
-
// fRefName = file.split(basePath)[1].split('.')[0];
|
|
11330
|
-
// break;
|
|
11331
|
-
// }
|
|
11332
|
-
// }
|
|
11333
|
-
// } catch (error) {
|
|
11334
|
-
// console.error(error, refs);
|
|
11335
|
-
// }
|
|
11336
|
-
// return {
|
|
11337
|
-
// isRefedByTrigger: flag,
|
|
11338
|
-
// fRefName,
|
|
11339
|
-
// };
|
|
11214
|
+
} catch (error) {
|
|
11215
|
+
<span class="cstat-no" title="statement not covered" > console.error(error, refs);</span>
|
|
11216
|
+
}
|
|
11217
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
11218
|
+
isRefedByTrigger: flag,
|
|
11219
|
+
fRefName,
|
|
11220
|
+
};
|
|
11340
11221
|
}
|
|
11341
11222
|
|
|
11342
11223
|
/**
|
|
@@ -11367,18 +11248,15 @@ class NaslServer {
|
|
|
11367
11248
|
* @param fileNode 文件级别的节点
|
|
11368
11249
|
* @returns 诊断结果
|
|
11369
11250
|
*/
|
|
11370
|
-
|
|
11251
|
+
<span class="fstat-no" title="function not covered" > async </span>_attachDiagnostics(fileNode: BaseNode): Promise<Diagnostic[]> {
|
|
11371
11252
|
// 每次诊断前先清空这个Set
|
|
11372
11253
|
<span class="cstat-no" title="statement not covered" > this.logicSetWithComponentLogic = new Set<string>();</span>
|
|
11373
|
-
|
|
11374
|
-
const self = <span class="cstat-no" title="statement not covered" >this;</span>
|
|
11375
11254
|
const diagnostics: Diagnostic[] = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
11376
|
-
|
|
11377
11255
|
<span class="cstat-no" title="statement not covered" > if (fileNode instanceof View) {</span>
|
|
11378
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11256
|
+
<span class="cstat-no" title="statement not covered" > fileNode?.sourceMap.forEach(<span class="fstat-no" title="function not covered" >(v</span>alue, node) => {</span>
|
|
11379
11257
|
<span class="cstat-no" title="statement not covered" > if (node instanceof ViewElement && node.view === fileNode) {</span>
|
|
11380
11258
|
<span class="cstat-no" title="statement not covered" > if (node.tag) {</span>
|
|
11381
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11259
|
+
<span class="cstat-no" title="statement not covered" > node.bindAttrs.forEach(<span class="fstat-no" title="function not covered" >(b</span>indAttr) => {</span>
|
|
11382
11260
|
<span class="cstat-no" title="statement not covered" > if ((bindAttr.model || bindAttr.sync) && bindAttr.expression) {</span>
|
|
11383
11261
|
const bindExpression = <span class="cstat-no" title="statement not covered" >bindAttr.expression;</span>
|
|
11384
11262
|
let diagnostic;
|
|
@@ -11421,7 +11299,7 @@ class NaslServer {
|
|
|
11421
11299
|
<span class="cstat-no" title="statement not covered" > if (!node.typeAnnotation && !node.__TypeAnnotation) {</span>
|
|
11422
11300
|
const nodeTypeName = <span class="cstat-no" title="statement not covered" >node.concept === 'Return' ? '输出参数' : '局部变量';</span>
|
|
11423
11301
|
let msg;
|
|
11424
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11302
|
+
<span class="cstat-no" title="statement not covered" > fileNode.traverseChildren(<span class="fstat-no" title="function not covered" >(n</span>odeIn) => {</span>
|
|
11425
11303
|
<span class="cstat-no" title="statement not covered" > if (nodeIn && (nodeIn instanceof BatchAssignment || (nodeIn instanceof Assignment && nodeIn.left?.name))) {</span>
|
|
11426
11304
|
// 子页面内部逻辑过滤
|
|
11427
11305
|
<span class="cstat-no" title="statement not covered" > if (nodeIn.view !== fileNode) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
@@ -11478,23 +11356,9 @@ class NaslServer {
|
|
|
11478
11356
|
<span class="cstat-no" title="statement not covered" > node.tsErrorDetail = diagnostic;</span>
|
|
11479
11357
|
<span class="cstat-no" title="statement not covered" > diagnostics.push(diagnostic);</span>
|
|
11480
11358
|
}
|
|
11481
|
-
const fileSourceCode = <span class="cstat-no" title="statement not covered" >self.getNodeCode(fileNode, value);</span>
|
|
11482
|
-
<span class="cstat-no" title="statement not covered" > if (fileSourceCode.includes('|') && fileSourceCode.includes('.metadataTypes.')) {</span>
|
|
11483
|
-
const typeAnnotation = <span class="cstat-no" title="statement not covered" >node.typeAnnotation.toJSON()</span>
|
|
11484
|
-
<span class="cstat-no" title="statement not covered" > self._treeMetadataType2CoreType(typeAnnotation, (node.rootNode as App))</span>
|
|
11485
|
-
const isDuplicate = <span class="cstat-no" title="statement not covered" >self._isDuplicateCoreType(typeAnnotation)</span>
|
|
11486
|
-
<span class="cstat-no" title="statement not covered" > if (isDuplicate) {</span>
|
|
11487
|
-
const diagnostic = <span class="cstat-no" title="statement not covered" >{</span>
|
|
11488
|
-
node: node,
|
|
11489
|
-
severity: 'error',
|
|
11490
|
-
message: `变量 ${node.name} 类型定义包含相同的数据类型`,
|
|
11491
|
-
};
|
|
11492
|
-
<span class="cstat-no" title="statement not covered" > diagnostics.push(diagnostic);</span>
|
|
11493
|
-
}
|
|
11494
|
-
}
|
|
11495
11359
|
} else <span class="cstat-no" title="statement not covered" >if (node instanceof BindAttribute || node instanceof BindDirective || node instanceof BindStyle) {</span>
|
|
11496
11360
|
<span class="cstat-no" title="statement not covered" > if (Array.isArray(node.bindExpressions)) {</span>
|
|
11497
|
-
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" >
|
|
11361
|
+
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>
|
|
11498
11362
|
<span class="cstat-no" title="statement not covered" > if (exp) {</span>
|
|
11499
11363
|
// const element: any = node.getAncestor('ViewElement');
|
|
11500
11364
|
// const api = config.allNodesAPI[element?.tag];
|
|
@@ -11517,7 +11381,7 @@ class NaslServer {
|
|
|
11517
11381
|
}
|
|
11518
11382
|
}
|
|
11519
11383
|
} else <span class="cstat-no" title="statement not covered" >if (node instanceof CallInterface) {</span>
|
|
11520
|
-
const isAuthInterface = <span class="cstat-no" title="statement not covered" >
|
|
11384
|
+
const isAuthInterface = <span class="cstat-no" title="statement not covered" >this.hasAuth(node);</span>
|
|
11521
11385
|
const interfaceName = <span class="cstat-no" title="statement not covered" >node.calleewholeKey.slice(node.calleewholeKey.lastIndexOf('.') + 1);</span>
|
|
11522
11386
|
<span class="cstat-no" title="statement not covered" > if (isAuthInterface) {</span>
|
|
11523
11387
|
const errorMsg = <span class="cstat-no" title="statement not covered" >`${interfaceName} 接口有鉴权方式,不支持在前端调用`;</span>
|
|
@@ -11543,16 +11407,15 @@ class NaslServer {
|
|
|
11543
11407
|
<span class="cstat-no" title="statement not covered" > node.tsErrorDetail = diagnostic;</span>
|
|
11544
11408
|
}
|
|
11545
11409
|
} else {
|
|
11546
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11410
|
+
<span class="cstat-no" title="statement not covered" > this.checkNodeError(node, diagnostics);</span>
|
|
11547
11411
|
}
|
|
11548
11412
|
});
|
|
11549
|
-
}
|
|
11550
|
-
else <span class="cstat-no" title="statement not covered" >if (fileNode instanceof DataSource) {</span>
|
|
11413
|
+
} else <span class="cstat-no" title="statement not covered" >if (fileNode instanceof DataSource) {</span>
|
|
11551
11414
|
const dataSourceGroup = (<span class="cstat-no" title="statement not covered" >fileNode.rootNode as App).configuration?.getGroup('dataSource');</span>
|
|
11552
11415
|
<span class="cstat-no" title="statement not covered" > if (dataSourceGroup) {</span>
|
|
11553
11416
|
const property = <span class="cstat-no" title="statement not covered" >dataSourceGroup.getProperty(fileNode.name);</span>
|
|
11554
11417
|
<span class="cstat-no" title="statement not covered" > if (property && property.values) {</span>
|
|
11555
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11418
|
+
<span class="cstat-no" title="statement not covered" > property.values.forEach(<span class="fstat-no" title="function not covered" >(p</span>ropertyValue) => {</span>
|
|
11556
11419
|
<span class="cstat-no" title="statement not covered" > if (!propertyValue.value && fileNode.name !== 'defaultDS') {</span>
|
|
11557
11420
|
const diagnostic = <span class="cstat-no" title="statement not covered" >{</span>
|
|
11558
11421
|
node: fileNode,
|
|
@@ -11620,7 +11483,7 @@ class NaslServer {
|
|
|
11620
11483
|
const rulesMap: any = <span class="cstat-no" title="statement not covered" >{};</span>
|
|
11621
11484
|
<span class="cstat-no" title="statement not covered" > if (Array.isArray(rules)) {</span>
|
|
11622
11485
|
<span class="cstat-no" title="statement not covered" > rules.forEach(<span class="fstat-no" title="function not covered" >(r</span>ule) => {</span>
|
|
11623
|
-
const match = <span class="cstat-no" title="statement not covered" >rule
|
|
11486
|
+
const match = <span class="cstat-no" title="statement not covered" >rule.match(/^([^()]+)\(([\d\-.]+)\)$/);</span>
|
|
11624
11487
|
<span class="cstat-no" title="statement not covered" > if (match) {</span>
|
|
11625
11488
|
const [, key, value] = <span class="cstat-no" title="statement not covered" >match;</span>
|
|
11626
11489
|
<span class="cstat-no" title="statement not covered" > rulesMap[key] = value;</span>
|
|
@@ -11848,9 +11711,8 @@ class NaslServer {
|
|
|
11848
11711
|
});
|
|
11849
11712
|
}
|
|
11850
11713
|
}
|
|
11851
|
-
|
|
11852
|
-
const { isRefedByTrigger, fRefName } = <span class="cstat-no" title="statement not covered" >
|
|
11853
|
-
|
|
11714
|
+
<span class="cstat-no" title="statement not covered" > if (fileNode instanceof Logic || fileNode instanceof OverriddenLogic) {</span>
|
|
11715
|
+
const { isRefedByTrigger, fRefName } = <span class="cstat-no" title="statement not covered" >await this.isRefedByTriggerAndReturnFirstRef(fileNode);</span>
|
|
11854
11716
|
<span class="cstat-no" title="statement not covered" > if (isRefedByTrigger && !this.isTriggerRule(fileNode)) {</span>
|
|
11855
11717
|
const diagnostic = <span class="cstat-no" title="statement not covered" >{</span>
|
|
11856
11718
|
node: fileNode,
|
|
@@ -11859,8 +11721,18 @@ class NaslServer {
|
|
|
11859
11721
|
};
|
|
11860
11722
|
<span class="cstat-no" title="statement not covered" > diagnostics.push(diagnostic);</span>
|
|
11861
11723
|
}
|
|
11862
|
-
|
|
11863
|
-
|
|
11724
|
+
<span class="cstat-no" title="statement not covered" > fileNode?.sourceMap.forEach(<span class="fstat-no" title="function not covered" >(v</span>alue, node) => {</span>
|
|
11725
|
+
// OQL支持返回复合类型数据了
|
|
11726
|
+
// SqlQueryComponent内部返回值类型,如果是嵌套的就需要报错
|
|
11727
|
+
// if ((node instanceof OqlQueryComponent || node instanceof SqlQueryComponent) && (node as SqlQueryComponent).getTypeBanError()) {
|
|
11728
|
+
// const diagnostic = {
|
|
11729
|
+
// node,
|
|
11730
|
+
// severity: 'error',
|
|
11731
|
+
// message: 'SQL查询:返回类型内部,不支持复杂类型。',
|
|
11732
|
+
// };
|
|
11733
|
+
// node.tsErrorDetail = diagnostic;
|
|
11734
|
+
// diagnostics.push(diagnostic);
|
|
11735
|
+
// }
|
|
11864
11736
|
<span class="cstat-no" title="statement not covered" > if (node instanceof OqlQueryComponent) {</span>
|
|
11865
11737
|
// 自动推导情况
|
|
11866
11738
|
const typeAnnotation = <span class="cstat-no" title="statement not covered" >type2TypeAnnotation((node as any).__nodeType);</span>
|
|
@@ -11879,9 +11751,9 @@ class NaslServer {
|
|
|
11879
11751
|
}
|
|
11880
11752
|
}
|
|
11881
11753
|
}
|
|
11882
|
-
|
|
11883
|
-
const nodeTypeName = <span class="cstat-no" title="statement not covered" >node.concept === 'Return' ? '输出参数' : '局部变量';</span>
|
|
11754
|
+
<span class="cstat-no" title="statement not covered" > if (node instanceof Return || node instanceof Variable) {</span>
|
|
11884
11755
|
<span class="cstat-no" title="statement not covered" > if (!node.typeAnnotation && !node.__TypeAnnotation) {</span>
|
|
11756
|
+
const nodeTypeName = <span class="cstat-no" title="statement not covered" >node.concept === 'Return' ? '输出参数' : '局部变量';</span>
|
|
11885
11757
|
let used = <span class="cstat-no" title="statement not covered" >false;</span>
|
|
11886
11758
|
<span class="cstat-no" title="statement not covered" > fileNode?.sourceMap.forEach(<span class="fstat-no" title="function not covered" >(v</span>alueIn, nodeIn) => {</span>
|
|
11887
11759
|
<span class="cstat-no" title="statement not covered" > if (!used && nodeIn && (nodeIn instanceof BatchAssignment || (nodeIn instanceof Assignment && nodeIn.left?.name))) {</span>
|
|
@@ -11911,136 +11783,22 @@ class NaslServer {
|
|
|
11911
11783
|
severity: 'error',
|
|
11912
11784
|
message: `${nodeTypeName} ${node.name} ${msg}`,
|
|
11913
11785
|
};
|
|
11914
|
-
<span class="cstat-no" title="statement not covered" > node.
|
|
11786
|
+
<span class="cstat-no" title="statement not covered" > node.__aStructureError = diagnostic;</span>
|
|
11915
11787
|
<span class="cstat-no" title="statement not covered" > diagnostics.push(diagnostic);</span>
|
|
11916
11788
|
} else {
|
|
11917
|
-
<span class="cstat-no" title="statement not covered" >
|
|
11918
|
-
}
|
|
11919
|
-
const fileSourceCode = <span class="cstat-no" title="statement not covered" >this.getNodeCode(fileNode, value);</span>
|
|
11920
|
-
<span class="cstat-no" title="statement not covered" > if (fileSourceCode.includes('|') && fileSourceCode.includes('.metadataTypes.')) {</span>
|
|
11921
|
-
const typeAnnotation = <span class="cstat-no" title="statement not covered" >node.typeAnnotation.toJSON()</span>
|
|
11922
|
-
<span class="cstat-no" title="statement not covered" > this._treeMetadataType2CoreType(typeAnnotation, (node.rootNode as App))</span>
|
|
11923
|
-
const isDuplicate = <span class="cstat-no" title="statement not covered" >this._isDuplicateCoreType(typeAnnotation)</span>
|
|
11924
|
-
<span class="cstat-no" title="statement not covered" > if (isDuplicate) {</span>
|
|
11925
|
-
const diagnostic = <span class="cstat-no" title="statement not covered" >{</span>
|
|
11926
|
-
node: node,
|
|
11927
|
-
severity: 'error',
|
|
11928
|
-
message: `${nodeTypeName} ${node.name} 类型定义包含相同的数据类型`,
|
|
11929
|
-
};
|
|
11930
|
-
<span class="cstat-no" title="statement not covered" > diagnostics.push(diagnostic);</span>
|
|
11931
|
-
}
|
|
11932
|
-
}
|
|
11933
|
-
}
|
|
11934
|
-
else <span class="cstat-no" title="statement not covered" >if (node instanceof Param) {</span>
|
|
11935
|
-
const fileSourceCode = <span class="cstat-no" title="statement not covered" >this.getNodeCode(fileNode, value);</span>
|
|
11936
|
-
<span class="cstat-no" title="statement not covered" > if (fileSourceCode.includes('|') && fileSourceCode.includes('.metadataTypes.')) {</span>
|
|
11937
|
-
const typeAnnotation = <span class="cstat-no" title="statement not covered" >node.typeAnnotation.toJSON()</span>
|
|
11938
|
-
<span class="cstat-no" title="statement not covered" > this._treeMetadataType2CoreType(typeAnnotation, (node.rootNode as App))</span>
|
|
11939
|
-
const isDuplicate = <span class="cstat-no" title="statement not covered" >this._isDuplicateCoreType(typeAnnotation)</span>
|
|
11940
|
-
<span class="cstat-no" title="statement not covered" > if (isDuplicate) {</span>
|
|
11941
|
-
const diagnostic = <span class="cstat-no" title="statement not covered" >{</span>
|
|
11942
|
-
node: node,
|
|
11943
|
-
severity: 'error',
|
|
11944
|
-
message: `输入参数 ${node.name} 类型定义包含相同的数据类型`,
|
|
11945
|
-
};
|
|
11946
|
-
<span class="cstat-no" title="statement not covered" > diagnostics.push(diagnostic);</span>
|
|
11947
|
-
}
|
|
11789
|
+
<span class="cstat-no" title="statement not covered" > node.__aStructureError = null;</span>
|
|
11948
11790
|
}
|
|
11949
11791
|
}
|
|
11950
11792
|
<span class="cstat-no" title="statement not covered" > this.checkNodeError(node, diagnostics);</span>
|
|
11951
11793
|
});
|
|
11952
|
-
}
|
|
11953
|
-
|
|
11954
|
-
<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>
|
|
11794
|
+
} else <span class="cstat-no" title="statement not covered" >if (fileNode instanceof Process) {</span>
|
|
11795
|
+
<span class="cstat-no" title="statement not covered" > fileNode?.sourceMap.forEach(<span class="fstat-no" title="function not covered" >(v</span>alue, node) => {</span>
|
|
11955
11796
|
<span class="cstat-no" title="statement not covered" > this.checkNodeError(node, diagnostics);</span>
|
|
11956
11797
|
});
|
|
11957
11798
|
}
|
|
11958
|
-
else <span class="cstat-no" title="statement not covered" >if (fileNode instanceof MetadataType) {</span>
|
|
11959
|
-
<span class="cstat-no" title="statement not covered" > fileNode?.sourceMap.forEach(<span class="fstat-no" title="function not covered" >(v</span>alue, node) => {</span>
|
|
11960
|
-
const rulesMap: any = <span class="cstat-no" title="statement not covered" >{};</span>
|
|
11961
|
-
const { rules, typeAnnotation } = <span class="cstat-no" title="statement not covered" >node as MetadataType;</span>
|
|
11962
|
-
<span class="cstat-no" title="statement not covered" > if (Array.isArray(rules)) {</span>
|
|
11963
|
-
<span class="cstat-no" title="statement not covered" > rules.forEach(<span class="fstat-no" title="function not covered" >(r</span>ule) => {</span>
|
|
11964
|
-
<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>
|
|
11965
|
-
const match = <span class="cstat-no" title="statement not covered" >rule.toUI?.().match(/^([^()]+)\(([\d\-.]+)\)$/);</span>
|
|
11966
|
-
<span class="cstat-no" title="statement not covered" > if (match) {</span>
|
|
11967
|
-
const [, key, value] = <span class="cstat-no" title="statement not covered" >match;</span>
|
|
11968
|
-
<span class="cstat-no" title="statement not covered" > rulesMap[key] = value;</span>
|
|
11969
|
-
}
|
|
11970
|
-
});
|
|
11971
|
-
}
|
|
11972
|
-
const { typeName } = <span class="cstat-no" title="statement not covered" >typeAnnotation || {};</span>
|
|
11973
|
-
const typeAnnotationErrorDetail: any = <span class="cstat-no" title="statement not covered" >{</span>
|
|
11974
|
-
severity: 'warning',
|
|
11975
|
-
errorPos: {},
|
|
11976
|
-
};
|
|
11977
|
-
const minVal = <span class="cstat-no" title="statement not covered" >rulesMap.min;</span>
|
|
11978
|
-
const maxVal = <span class="cstat-no" title="statement not covered" >rulesMap.max;</span>
|
|
11979
|
-
<span class="cstat-no" title="statement not covered" > if (['Long', 'Decimal'].includes(typeName) && !typeAnnotationErrorDetail.errorPos.min) {</span>
|
|
11980
|
-
<span class="cstat-no" title="statement not covered" > if (minVal && maxVal) {</span>
|
|
11981
|
-
<span class="cstat-no" title="statement not covered" > if (new Decimal(maxVal).lessThan(minVal)) {</span>
|
|
11982
|
-
const errorMsg = <span class="cstat-no" title="statement not covered" >'最小值不得大于最大值';</span>
|
|
11983
|
-
const diag: any = <span class="cstat-no" title="statement not covered" >{</span>
|
|
11984
|
-
node: node,
|
|
11985
|
-
severity: 'warning',
|
|
11986
|
-
message: errorMsg,
|
|
11987
|
-
};
|
|
11988
|
-
<span class="cstat-no" title="statement not covered" > diagnostics.push(diag);</span>
|
|
11989
|
-
<span class="cstat-no" title="statement not covered" > typeAnnotationErrorDetail.errorPos.min = errorMsg;</span>
|
|
11990
|
-
} else {
|
|
11991
|
-
<span class="cstat-no" title="statement not covered" > typeAnnotationErrorDetail.errorPos = {};</span>
|
|
11992
|
-
(<span class="cstat-no" title="statement not covered" >node as MetadataType).typeAnnotation.tsErrorDetail = null;</span>
|
|
11993
|
-
}
|
|
11994
|
-
}
|
|
11995
|
-
}
|
|
11996
|
-
<span class="cstat-no" title="statement not covered" > if (Object.keys(typeAnnotationErrorDetail.errorPos).length) {</span>
|
|
11997
|
-
<span class="cstat-no" title="statement not covered" > typeAnnotation.tsErrorDetail = typeAnnotationErrorDetail;</span>
|
|
11998
|
-
}
|
|
11999
|
-
})
|
|
12000
|
-
}
|
|
12001
|
-
|
|
12002
11799
|
<span class="cstat-no" title="statement not covered" > return diagnostics;</span>
|
|
12003
11800
|
}
|
|
12004
11801
|
|
|
12005
|
-
<span class="fstat-no" title="function not covered" > _treeMetadataType2CoreType(</span>type: TypeAnnotation, app: App) {
|
|
12006
|
-
<span class="cstat-no" title="statement not covered" > type.typeArguments?.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem: TypeAnnotation) => {</span>
|
|
12007
|
-
<span class="cstat-no" title="statement not covered" > if (item.typeNamespace?.endsWith('.metadataTypes')) {</span>
|
|
12008
|
-
let originType = <span class="cstat-no" title="statement not covered" >{} as TypeAnnotation</span>
|
|
12009
|
-
<span class="cstat-no" title="statement not covered" > if (item.typeNamespace === 'app.metadataTypes') {</span>
|
|
12010
|
-
<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>
|
|
12011
|
-
} else <span class="cstat-no" title="statement not covered" >if (item.typeNamespace?.startsWith('extensions.') && item.typeNamespace?.endsWith('.metadataTypes')) {</span>
|
|
12012
|
-
const dependencyName = <span class="cstat-no" title="statement not covered" >item.typeNamespace.replace('extensions.', '').replace('.metadataTypes', '')</span>
|
|
12013
|
-
<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>
|
|
12014
|
-
}
|
|
12015
|
-
<span class="cstat-no" title="statement not covered" > item.typeKind = 'primitive'</span>
|
|
12016
|
-
<span class="cstat-no" title="statement not covered" > item.typeNamespace = 'nasl.core'</span>
|
|
12017
|
-
<span class="cstat-no" title="statement not covered" > item.typeName = originType?.typeName</span>
|
|
12018
|
-
}
|
|
12019
|
-
<span class="cstat-no" title="statement not covered" > if (type.typeArguments?.length > 0) {</span>
|
|
12020
|
-
<span class="cstat-no" title="statement not covered" > type.typeArguments.forEach(<span class="fstat-no" title="function not covered" >(e</span>le) => {</span>
|
|
12021
|
-
<span class="cstat-no" title="statement not covered" > this._treeMetadataType2CoreType(ele, app)</span>
|
|
12022
|
-
})
|
|
12023
|
-
}
|
|
12024
|
-
})
|
|
12025
|
-
}
|
|
12026
|
-
|
|
12027
|
-
<span class="fstat-no" title="function not covered" > _isDuplicateCoreType(</span>type: TypeAnnotation) {
|
|
12028
|
-
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>
|
|
12029
|
-
const setList = <span class="cstat-no" title="statement not covered" >Array.from(new Set(argsStringList))</span>
|
|
12030
|
-
<span class="cstat-no" title="statement not covered" > if (argsStringList.length > setList.length) {</span>
|
|
12031
|
-
<span class="cstat-no" title="statement not covered" > return true</span>
|
|
12032
|
-
}
|
|
12033
|
-
let flag = <span class="cstat-no" title="statement not covered" >false</span>
|
|
12034
|
-
<span class="cstat-no" title="statement not covered" > if (type.typeArguments?.length > 0) {</span>
|
|
12035
|
-
<span class="cstat-no" title="statement not covered" > type.typeArguments.forEach(<span class="fstat-no" title="function not covered" >(e</span>le) => {</span>
|
|
12036
|
-
const subFlag = <span class="cstat-no" title="statement not covered" >this._isDuplicateCoreType(ele)</span>
|
|
12037
|
-
<span class="cstat-no" title="statement not covered" > if (subFlag) {</span>
|
|
12038
|
-
<span class="cstat-no" title="statement not covered" > flag = true</span>
|
|
12039
|
-
}
|
|
12040
|
-
})
|
|
12041
|
-
}
|
|
12042
|
-
<span class="cstat-no" title="statement not covered" > return flag</span>
|
|
12043
|
-
}
|
|
12044
11802
|
<span class="fstat-no" title="function not covered" > checkNodeError(</span>node: BaseNode, diagnostics: Diagnostic[]): any {
|
|
12045
11803
|
<span class="cstat-no" title="statement not covered" > if (!node) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
12046
11804
|
// 如果节点是match的看看节点里是不是有重复的
|
|
@@ -12293,10 +12051,9 @@ class NaslServer {
|
|
|
12293
12051
|
}
|
|
12294
12052
|
|
|
12295
12053
|
/* 接口导入查找 */
|
|
12296
|
-
|
|
12054
|
+
<span class="fstat-no" title="function not covered" > existStructureFix(</span>semanticDiagnostics: Diagnostic[], node: FileNode, that: any) {
|
|
12297
12055
|
let module: Module;
|
|
12298
|
-
|
|
12299
|
-
<span class="cstat-no" title="statement not covered" > yield* utils.wrapForEachToGenerator(semanticDiagnostics, <span class="fstat-no" title="function not covered" >(d</span>iag) => {</span>
|
|
12056
|
+
<span class="cstat-no" title="statement not covered" > semanticDiagnostics.map(<span class="fstat-no" title="function not covered" >(d</span>iag) => {</span>
|
|
12300
12057
|
const minRange = <span class="cstat-no" title="statement not covered" >this._findMinRange(diag as unknown as tsProtocol.DiagnosticWithFileName, node);</span>
|
|
12301
12058
|
<span class="cstat-no" title="statement not covered" > if (diag.text?.includes('has no exported member named')) {</span>
|
|
12302
12059
|
<span class="cstat-no" title="statement not covered" > if (minRange.node instanceof Logic) {</span>
|
|
@@ -12327,8 +12084,9 @@ class NaslServer {
|
|
|
12327
12084
|
}
|
|
12328
12085
|
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
12329
12086
|
}
|
|
12330
|
-
|
|
12087
|
+
<span class="cstat-no" title="statement not covered" > return diag;</span>
|
|
12331
12088
|
|
|
12089
|
+
});
|
|
12332
12090
|
<span class="cstat-no" title="statement not covered" > if (actionArr.length) {</span>
|
|
12333
12091
|
<span class="cstat-no" title="statement not covered" > if (timer) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
12334
12092
|
<span class="cstat-no" title="statement not covered" > timer = window.setTimeout(<span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
@@ -12355,54 +12113,50 @@ class NaslServer {
|
|
|
12355
12113
|
* @param fileNode 页面节点
|
|
12356
12114
|
* @returns 处理后的结果
|
|
12357
12115
|
*/
|
|
12358
|
-
|
|
12116
|
+
<span class="fstat-no" title="function not covered" > _resolveDiagnostic(</span>diagnostic: tsProtocol.DiagnosticWithFileName, fileNode: FileNode, record: DiagnosticRecord): Diagnostic {
|
|
12359
12117
|
// 拓展模块中的翻译先过滤掉,因为有错用户也不能修改
|
|
12360
12118
|
<span class="cstat-no" title="statement not covered" > if (((fileNode as any).module || (fileNode as any).connector) && !(fileNode instanceof ConfigProperty)) {</span>
|
|
12361
12119
|
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
12362
12120
|
}
|
|
12121
|
+
// 过滤掉java依赖库的报错
|
|
12122
|
+
// if ('compilerInfoMap' in fileNode && (fileNode as any).compilerInfoMap?.java) {
|
|
12123
|
+
// return;
|
|
12124
|
+
// }
|
|
12363
12125
|
<span class="cstat-no" title="statement not covered" > if (fileNode.concept === 'OverriddenLogic' && diagnostic.text === `'__LogicEmpty' is declared but its value is never read.`) {</span>
|
|
12364
12126
|
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
12365
12127
|
}
|
|
12366
|
-
const minRange = <span class="cstat-no" title="statement not covered" >
|
|
12128
|
+
const minRange = <span class="cstat-no" title="statement not covered" >this._findMinRange(diagnostic, fileNode);</span>
|
|
12367
12129
|
const tsErrorDetail = <span class="cstat-no" title="statement not covered" >{</span>
|
|
12368
12130
|
severity: diagnostic.category === 'error' ? 'error' : 'warning',
|
|
12369
12131
|
message: translateDiagnosticMessage(diagnostic.text),
|
|
12370
12132
|
// 保留原来的内容方便查询一些问题
|
|
12371
12133
|
originalDiagnostic: diagnostic,
|
|
12372
12134
|
};
|
|
12373
|
-
<span class="cstat-no" title="statement not covered" > yield;</span>
|
|
12374
12135
|
|
|
12375
12136
|
let result: Diagnostic;
|
|
12376
12137
|
<span class="cstat-no" title="statement not covered" > if (minRange) {</span>
|
|
12377
12138
|
// 节点的error要置为true
|
|
12378
12139
|
<span class="cstat-no" title="statement not covered" > result = naslNodeTranslateMessage(minRange, tsErrorDetail);</span>
|
|
12379
|
-
<span class="cstat-no" title="statement not covered" > yield;</span>
|
|
12380
12140
|
} else {
|
|
12381
12141
|
// 没找到节点, 先把问题暴露出来
|
|
12382
12142
|
<span class="cstat-no" title="statement not covered" > result = tsErrorDetail;</span>
|
|
12383
12143
|
}
|
|
12384
|
-
|
|
12385
|
-
<span class="cstat-no" title="statement not covered" > if (result) {</span>
|
|
12144
|
+
<span class="cstat-no" title="statement not covered" > if (result)</span>
|
|
12386
12145
|
<span class="cstat-no" title="statement not covered" > result.id = record.filePath + (result ? JSON.stringify({ start: result.originalDiagnostic.start, end: result.originalDiagnostic.end }) : '');</span>
|
|
12387
|
-
}
|
|
12388
|
-
|
|
12389
12146
|
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
12390
12147
|
}
|
|
12391
12148
|
|
|
12392
12149
|
/**
|
|
12393
|
-
*
|
|
12394
|
-
*
|
|
12395
|
-
* @
|
|
12150
|
+
* 通过节点诊断反过来查找节点
|
|
12151
|
+
* @param diagnostic 诊断信息
|
|
12152
|
+
* @param fileNode 文件级别节点
|
|
12153
|
+
* @returns 找到的节点
|
|
12396
12154
|
*/
|
|
12397
|
-
|
|
12398
|
-
diagnostic: tsProtocol.DiagnosticWithFileName | tsProtocol.ReferencesResponseItem,
|
|
12399
|
-
fileNode: FileNode
|
|
12400
|
-
): Generator<void, MinRange> {
|
|
12155
|
+
<span class="fstat-no" title="function not covered" > _findMinRange(</span>diagnostic: tsProtocol.DiagnosticWithFileName | tsProtocol.ReferencesResponseItem, fileNode: FileNode) {
|
|
12401
12156
|
let minRange: MinRange;
|
|
12402
|
-
const {
|
|
12157
|
+
const {sourceMap} = <span class="cstat-no" title="statement not covered" >fileNode;</span>
|
|
12403
12158
|
// 是否找到了行内准确的,是的话,就不走多行的
|
|
12404
12159
|
let haveLineNode = <span class="cstat-no" title="statement not covered" >false;</span>
|
|
12405
|
-
|
|
12406
12160
|
<span class="cstat-no" title="statement not covered" > for (const [node, item] of sourceMap.entries()) {</span>
|
|
12407
12161
|
/**
|
|
12408
12162
|
* 当前内容的开始行 <= 诊断开始的行 &&
|
|
@@ -12459,30 +12213,15 @@ class NaslServer {
|
|
|
12459
12213
|
}
|
|
12460
12214
|
}
|
|
12461
12215
|
}
|
|
12462
|
-
|
|
12463
|
-
<span class="cstat-no" title="statement not covered" > yield;</span>
|
|
12464
12216
|
}
|
|
12465
|
-
|
|
12466
12217
|
<span class="cstat-no" title="statement not covered" > if (!minRange) {</span>
|
|
12467
12218
|
<span class="cstat-no" title="statement not covered" > if (fileNode instanceof View) {</span>
|
|
12468
|
-
<span class="cstat-no" title="statement not covered" > return { node: fileNode, item: sourceMap.get(fileNode) }
|
|
12469
|
-
}
|
|
12470
|
-
<span class="cstat-no" title="statement not covered" > if (process.env.NODE_ENV === 'development') {</span>
|
|
12471
|
-
<span class="cstat-no" title="statement not covered" > console.log(minRange, '需要特殊看下,为什么没找到内容-------------');</span>
|
|
12219
|
+
<span class="cstat-no" title="statement not covered" > return { node: fileNode, item: sourceMap.get(fileNode) };</span>
|
|
12472
12220
|
}
|
|
12221
|
+
<span class="cstat-no" title="statement not covered" > console.log(minRange, '需要特殊看下,为什么没找到内容-------------');</span>
|
|
12473
12222
|
}
|
|
12474
|
-
|
|
12475
12223
|
<span class="cstat-no" title="statement not covered" > return minRange;</span>
|
|
12476
12224
|
}
|
|
12477
|
-
|
|
12478
|
-
/**
|
|
12479
|
-
* 查找节点
|
|
12480
|
-
*
|
|
12481
|
-
* @description 同步模式
|
|
12482
|
-
*/
|
|
12483
|
-
<span class="fstat-no" title="function not covered" > _findMinRange(</span>...args: Parameters<NaslServer['_findMinRangeWithGenerator']>) {
|
|
12484
|
-
<span class="cstat-no" title="statement not covered" > return utils.runGeneratorSync(this._findMinRangeWithGenerator(...args));</span>
|
|
12485
|
-
}
|
|
12486
12225
|
|
|
12487
12226
|
/**
|
|
12488
12227
|
* 查看当前节点是不是有引用
|
|
@@ -12627,7 +12366,6 @@ class NaslServer {
|
|
|
12627
12366
|
line: lsp2tspNumber(currentSource.start.line),
|
|
12628
12367
|
offset: lsp2tspNumber(currentSource.start.character),
|
|
12629
12368
|
});
|
|
12630
|
-
// console.log(parentRefs.refs)
|
|
12631
12369
|
<span class="cstat-no" title="statement not covered" > refsList = [...refsList, ...parentRefs.refs];</span>
|
|
12632
12370
|
}
|
|
12633
12371
|
|
|
@@ -12782,22 +12520,12 @@ class NaslServer {
|
|
|
12782
12520
|
<span class="cstat-no" title="statement not covered" > if (node instanceof Return && node.parentNode instanceof ProcessElement) {</span>
|
|
12783
12521
|
const { currentSource, fileNode } = <span class="cstat-no" title="statement not covered" >this.getCurrentSource(node.parentNode);</span>
|
|
12784
12522
|
<span class="cstat-no" title="statement not covered" > if (currentSource) {</span>
|
|
12785
|
-
// 流程任务出参查找引用需要查找到流程任务完成逻辑
|
|
12786
|
-
// const parentRefs = await this.references({
|
|
12787
|
-
// file: (fileNode as FileNode).getEmbeddedFilePath(),
|
|
12788
|
-
// line: lsp2tspNumber(currentSource.start.line),
|
|
12789
|
-
// offset: lsp2tspNumber(currentSource.start.character),
|
|
12790
|
-
// });
|
|
12791
|
-
// refsList = [...refsList, ...parentRefs.refs];
|
|
12792
|
-
// console.log(parentRefs.refs)
|
|
12793
|
-
|
|
12794
|
-
// 流程任务出参查找引用比较特殊,需要查找到 const process = {...} 的引用
|
|
12795
12523
|
const code = <span class="cstat-no" title="statement not covered" >this.getNodeCode(fileNode, currentSource);</span>
|
|
12796
12524
|
const prefix = <span class="cstat-no" title="statement not covered" >'__ProcessIdentification__';</span>
|
|
12797
12525
|
const positions = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
12798
12526
|
let pos = <span class="cstat-no" title="statement not covered" >code.indexOf(prefix);</span>
|
|
12799
12527
|
// 需要再次定位到processelement对象上,避免process上存在同名参数
|
|
12800
|
-
<span class="cstat-no" title="statement not covered" > pos =
|
|
12528
|
+
<span class="cstat-no" title="statement not covered" > pos = code.indexOf(node.parentNode.name, pos + prefix.length);</span>
|
|
12801
12529
|
<span class="cstat-no" title="statement not covered" > pos = pos === -1 ? pos : code.indexOf(node.name, pos + prefix.length);</span>
|
|
12802
12530
|
// pos === -1:两种情况:
|
|
12803
12531
|
// 1、找到最后一个节点了,继续找找不下去了。
|
|
@@ -13202,7 +12930,7 @@ class NaslServer {
|
|
|
13202
12930
|
// 如果跳转链接或者页面变量同一个param和TypeAnnotation 有两个过滤掉一个
|
|
13203
12931
|
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
13204
12932
|
(minRange.node instanceof Param || minRange.node instanceof Variable || minRange.node instanceof Return) &&
|
|
13205
|
-
(node instanceof Entity || node instanceof Enum || node instanceof Structure
|
|
12933
|
+
(node instanceof Entity || node instanceof Enum || node instanceof Structure)
|
|
13206
12934
|
) {
|
|
13207
12935
|
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
13208
12936
|
}
|
|
@@ -13527,7 +13255,7 @@ class NaslServer {
|
|
|
13527
13255
|
<span class="fstat-no" title="function not covered" > getCurrentSource(</span>node: BaseNode) {
|
|
13528
13256
|
<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>
|
|
13529
13257
|
let {sourceMap} = <span class="cstat-no" title="statement not covered" >node;</span>
|
|
13530
|
-
let fileNode = <span class="cstat-no" title="statement not covered" >node
|
|
13258
|
+
let fileNode = <span class="cstat-no" title="statement not covered" >node;</span>
|
|
13531
13259
|
// 如果没有sourceMap,就继续向上找 ,或者到module结束
|
|
13532
13260
|
// 如果 节点找到 app 或者module 停止 或者entity找到DataSource为止
|
|
13533
13261
|
// 如果当前节点是view就不要向上查找了
|
|
@@ -13543,7 +13271,7 @@ class NaslServer {
|
|
|
13543
13271
|
!(fileNode instanceof View) &&
|
|
13544
13272
|
!(fileNode instanceof ConfigProperty)
|
|
13545
13273
|
) {
|
|
13546
|
-
<span class="cstat-no" title="statement not covered" > fileNode = fileNode.parentNode
|
|
13274
|
+
<span class="cstat-no" title="statement not covered" > fileNode = fileNode.parentNode;</span>
|
|
13547
13275
|
<span class="cstat-no" title="statement not covered" > sourceMap = fileNode?.sourceMap;</span>
|
|
13548
13276
|
}
|
|
13549
13277
|
const currentSource = <span class="cstat-no" title="statement not covered" >sourceMap && sourceMap.get(node);</span>
|
|
@@ -13587,6 +13315,8 @@ class NaslServer {
|
|
|
13587
13315
|
getFieldKey: fieldKey,
|
|
13588
13316
|
});
|
|
13589
13317
|
}
|
|
13318
|
+
<span class="cstat-no" title="statement not covered" > console.log('没找到节点', currentSource, fileNode);</span>
|
|
13319
|
+
|
|
13590
13320
|
}
|
|
13591
13321
|
|
|
13592
13322
|
<span class="fstat-no" title="function not covered" > _getFieldKeySelectCompletion(</span>args: any) {
|
|
@@ -13696,161 +13426,163 @@ class NaslServer {
|
|
|
13696
13426
|
}
|
|
13697
13427
|
|
|
13698
13428
|
/**
|
|
13699
|
-
* 获取传入节点的
|
|
13700
|
-
*
|
|
13701
|
-
* @
|
|
13429
|
+
* 获取传入节点的TypeAnnotation
|
|
13430
|
+
* @param nodes {filePath: string, node: BaseNode, item: SourceMapItem}
|
|
13431
|
+
* @returns Map<BaseNode, TypeAnnotation | { typeAnnotation: TypeAnnotation, option: any }>
|
|
13432
|
+
* 普通的TypeAnnotation,额外的可能携带 option
|
|
13433
|
+
* 这里会处理callloigc callinterface 和 callfuntion 的 argment的参数一起携带回去,
|
|
13434
|
+
* 也就是说如果 只传入了这个也会一起返回argment的节点,所以返回map最好去get结果
|
|
13702
13435
|
*/
|
|
13703
|
-
|
|
13436
|
+
<span class="fstat-no" title="function not covered" > async </span>getQuickInfoNodesTypeMap(nodes: QuickInfoNodes, lotFlag?: boolean) {
|
|
13704
13437
|
interface argDetail {
|
|
13705
13438
|
file: string;
|
|
13706
13439
|
line: number;
|
|
13707
13440
|
offset: number;
|
|
13708
13441
|
}
|
|
13709
|
-
|
|
13710
|
-
const self = <span class="cstat-no" title="statement not covered" >this;</span>
|
|
13711
13442
|
const args: Array<argDetail> = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
13712
13443
|
// 要通过自己或者依赖关系拿的
|
|
13713
|
-
const getFromOthers:
|
|
13444
|
+
const getFromOthers: Map<BaseNode, TypeAnnotation | { typeAnnotation: TypeAnnotation; option: any }> = <span class="cstat-no" title="statement not covered" >new Map();</span>
|
|
13714
13445
|
// 总共要返回出去的
|
|
13715
|
-
const types:
|
|
13446
|
+
const types: Map<BaseNode, TypeAnnotation | { typeAnnotation: TypeAnnotation; option: any }> = <span class="cstat-no" title="statement not covered" >new Map();</span>
|
|
13716
13447
|
const newQuickInfoNodes: QuickInfoNodes = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
13717
13448
|
|
|
13718
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13719
|
-
|
|
13720
|
-
|
|
13721
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13722
|
-
|
|
13723
|
-
|
|
13724
|
-
const nodeTypeAnnotation = <span class="cstat-no" title="statement not covered" >self.getCurrentNodeKnownTypeAnnotation(node);</span>
|
|
13725
|
-
<span class="cstat-no" title="statement not covered" > yield;</span>
|
|
13449
|
+
<span class="cstat-no" title="statement not covered" > await utils.timeSlicing(</span>
|
|
13450
|
+
nodes,
|
|
13451
|
+
<span class="fstat-no" title="function not covered" > (i</span>temDetail) => {
|
|
13452
|
+
const { node, filePath, item } = <span class="cstat-no" title="statement not covered" >itemDetail;</span>
|
|
13453
|
+
// 先按照顺序占位
|
|
13454
|
+
<span class="cstat-no" title="statement not covered" > types.set(node, null);</span>
|
|
13726
13455
|
|
|
13727
|
-
|
|
13728
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13729
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13730
|
-
|
|
13731
|
-
|
|
13732
|
-
|
|
13733
|
-
|
|
13734
|
-
|
|
13735
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13736
|
-
|
|
13737
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13738
|
-
|
|
13739
|
-
|
|
13740
|
-
|
|
13741
|
-
|
|
13742
|
-
|
|
13743
|
-
|
|
13744
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13745
|
-
|
|
13746
|
-
|
|
13747
|
-
|
|
13748
|
-
|
|
13749
|
-
|
|
13750
|
-
|
|
13751
|
-
|
|
13752
|
-
|
|
13753
|
-
|
|
13754
|
-
|
|
13755
|
-
|
|
13756
|
-
|
|
13757
|
-
|
|
13758
|
-
|
|
13759
|
-
|
|
13760
|
-
|
|
13761
|
-
|
|
13762
|
-
|
|
13763
|
-
|
|
13764
|
-
|
|
13765
|
-
|
|
13766
|
-
|
|
13767
|
-
|
|
13768
|
-
|
|
13769
|
-
|
|
13770
|
-
<span class="cstat-no" title="statement not covered" > newQuickInfoNodes.push(itemDetail);</span>
|
|
13771
|
-
const fileDetail = <span class="cstat-no" title="statement not covered" >{</span>
|
|
13772
|
-
file: filePath,
|
|
13773
|
-
line: lsp2tspNumber(item.start.line),
|
|
13774
|
-
offset: lsp2tspNumber(item.start.character),
|
|
13775
|
-
};
|
|
13456
|
+
// 获取已知节点类型的类型
|
|
13457
|
+
const nodeTypeAnnotation = <span class="cstat-no" title="statement not covered" >this.getCurrentNodeKnownTypeAnnotation(node);</span>
|
|
13458
|
+
<span class="cstat-no" title="statement not covered" > if (nodeTypeAnnotation) {</span>
|
|
13459
|
+
<span class="cstat-no" title="statement not covered" > types.set(node, nodeTypeAnnotation);</span>
|
|
13460
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
13461
|
+
}
|
|
13462
|
+
// 要通过自己或者依赖关系拿的,二次遍历
|
|
13463
|
+
<span class="cstat-no" title="statement not covered" > if (['Argument', 'Assignment', 'MatchCase'].includes(node.concept)) {</span>
|
|
13464
|
+
<span class="cstat-no" title="statement not covered" > getFromOthers.set(node, null);</span>
|
|
13465
|
+
}
|
|
13466
|
+
<span class="cstat-no" title="statement not covered" > if (['Return', 'Variable'].includes(node.concept) && (node as Variable).typeAnnotation) {</span>
|
|
13467
|
+
<span class="cstat-no" title="statement not covered" > types.set(node, (node as Variable).typeAnnotation);</span>
|
|
13468
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
13469
|
+
}
|
|
13470
|
+
// 如果 入参不是虚拟节点的,就不去请求类型
|
|
13471
|
+
// 只有虚拟节点的入参,才没有类型
|
|
13472
|
+
<span class="cstat-no" title="statement not covered" > if (node.concept === 'Param' && (node.parentKey !== 'virtualParams' && node.parentKey !== 'item' && node.parentNode.concept !== 'AnonymousFunction')) {</span>
|
|
13473
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
13474
|
+
}
|
|
13475
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
13476
|
+
![
|
|
13477
|
+
'Identifier',
|
|
13478
|
+
'UnaryExpression',
|
|
13479
|
+
'BinaryExpression',
|
|
13480
|
+
'CallLogic',
|
|
13481
|
+
'CallFunction',
|
|
13482
|
+
'CallInterface',
|
|
13483
|
+
'MemberExpression',
|
|
13484
|
+
'Return',
|
|
13485
|
+
'Variable',
|
|
13486
|
+
'Match',
|
|
13487
|
+
'NewComposite',
|
|
13488
|
+
'NewList',
|
|
13489
|
+
'NewMap',
|
|
13490
|
+
'OqlQueryComponent',
|
|
13491
|
+
'QueryFieldExpression',
|
|
13492
|
+
'QueryGroupByExpression',
|
|
13493
|
+
'Param',
|
|
13494
|
+
'BackendVariable',
|
|
13495
|
+
'CallAuthInterface',
|
|
13496
|
+
].includes(node.concept)
|
|
13497
|
+
)
|
|
13498
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
13776
13499
|
|
|
13777
|
-
|
|
13778
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13779
|
-
|
|
13500
|
+
// 要去ls那边获取的
|
|
13501
|
+
<span class="cstat-no" title="statement not covered" > newQuickInfoNodes.push(itemDetail);</span>
|
|
13502
|
+
const fileDetail = <span class="cstat-no" title="statement not covered" >{</span>
|
|
13503
|
+
file: filePath,
|
|
13504
|
+
line: lsp2tspNumber(item.start.line),
|
|
13505
|
+
offset: lsp2tspNumber(item.start.character),
|
|
13506
|
+
};
|
|
13780
13507
|
|
|
13781
|
-
|
|
13782
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13783
|
-
|
|
13784
|
-
}
|
|
13508
|
+
const getCode = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(r</span>ange: SourceMapItem) => {</span>
|
|
13509
|
+
<span class="cstat-no" title="statement not covered" > return this.tsFiles.get(filePath)?.slice(range.start.offset, range.end.offset) ?? '';</span>
|
|
13510
|
+
};
|
|
13785
13511
|
|
|
13786
|
-
|
|
13512
|
+
// 位置计算偏移
|
|
13513
|
+
<span class="cstat-no" title="statement not covered" > if ('getQuickInfoOffset' in node) {</span>
|
|
13514
|
+
<span class="cstat-no" title="statement not covered" > Object.assign(fileDetail, (node as any).getQuickInfoOffset(fileDetail, getCode(item)));</span>
|
|
13515
|
+
}
|
|
13787
13516
|
|
|
13788
|
-
|
|
13789
|
-
|
|
13790
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13791
|
-
|
|
13792
|
-
|
|
13793
|
-
|
|
13794
|
-
|
|
13795
|
-
|
|
13796
|
-
|
|
13797
|
-
|
|
13798
|
-
|
|
13799
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13800
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13801
|
-
} else {
|
|
13802
|
-
// 如果有泛型先往前找一找
|
|
13803
|
-
<span class="cstat-no" title="statement not covered" > if (code.includes('<')) {</span>
|
|
13804
|
-
<span class="cstat-no" title="statement not covered" > indexOf = Math.min(code.indexOf('<'), code.indexOf('('));</span>
|
|
13517
|
+
// 位置计算偏移2
|
|
13518
|
+
// TODO: 之后考虑把这些偏移量计算全都挪到节点内部去
|
|
13519
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
13520
|
+
node.concept === 'BinaryExpression' ||
|
|
13521
|
+
node.concept === 'CallFunction' ||
|
|
13522
|
+
node.concept === 'CallInterface'
|
|
13523
|
+
) {
|
|
13524
|
+
const code = <span class="cstat-no" title="statement not covered" >getCode(item);</span>
|
|
13525
|
+
// 如果没有括号 ,括号就在外面,就 -1
|
|
13526
|
+
// 有括号就找到括号的位置 然后 -1
|
|
13527
|
+
let indexOf = <span class="cstat-no" title="statement not covered" >0;</span>
|
|
13528
|
+
<span class="cstat-no" title="statement not covered" > if (!code.includes('(')) {</span>
|
|
13529
|
+
<span class="cstat-no" title="statement not covered" > indexOf = -1;</span>
|
|
13805
13530
|
} else {
|
|
13806
|
-
|
|
13531
|
+
// 如果有泛型先往前找一找
|
|
13532
|
+
<span class="cstat-no" title="statement not covered" > if (code.includes('<')) {</span>
|
|
13533
|
+
<span class="cstat-no" title="statement not covered" > indexOf = Math.min(code.indexOf('<'), code.indexOf('('));</span>
|
|
13534
|
+
} else {
|
|
13535
|
+
<span class="cstat-no" title="statement not covered" > indexOf = code.indexOf('(');</span>
|
|
13536
|
+
}
|
|
13537
|
+
const subStr = <span class="cstat-no" title="statement not covered" >code.substring(0, indexOf);</span>
|
|
13538
|
+
const codeArr = <span class="cstat-no" title="statement not covered" >subStr?.split('.');</span>
|
|
13539
|
+
const lastLen = <span class="cstat-no" title="statement not covered" >codeArr?.[codeArr.length - 1]?.length;</span>
|
|
13540
|
+
<span class="cstat-no" title="statement not covered" > indexOf = subStr.length - lastLen;</span>
|
|
13807
13541
|
}
|
|
13808
|
-
|
|
13809
|
-
|
|
13810
|
-
|
|
13811
|
-
|
|
13812
|
-
|
|
13813
|
-
|
|
13814
|
-
|
|
13815
|
-
|
|
13816
|
-
|
|
13817
|
-
|
|
13818
|
-
|
|
13819
|
-
|
|
13820
|
-
|
|
13821
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13822
|
-
|
|
13823
|
-
|
|
13824
|
-
|
|
13825
|
-
|
|
13826
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13827
|
-
|
|
13828
|
-
|
|
13829
|
-
|
|
13830
|
-
|
|
13831
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13832
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13833
|
-
|
|
13542
|
+
<span class="cstat-no" title="statement not covered" > fileDetail.offset += indexOf;</span>
|
|
13543
|
+
} else <span class="cstat-no" title="statement not covered" >if (</span>
|
|
13544
|
+
node.concept === 'MemberExpression' ||
|
|
13545
|
+
node.concept === 'Identifier' ||
|
|
13546
|
+
node.concept === 'QueryFieldExpression' ||
|
|
13547
|
+
node.concept === 'QueryGroupByExpression'
|
|
13548
|
+
) {
|
|
13549
|
+
const code = <span class="cstat-no" title="statement not covered" >getCode(item);</span>
|
|
13550
|
+
<span class="cstat-no" title="statement not covered" > if (code.includes('.')) {</span>
|
|
13551
|
+
const codeArr = <span class="cstat-no" title="statement not covered" >code?.split('.');</span>
|
|
13552
|
+
const lastLen = <span class="cstat-no" title="statement not covered" >codeArr?.[codeArr.length - 1]?.length;</span>
|
|
13553
|
+
// MemberExpression取最后一位当做类型
|
|
13554
|
+
const indexOf = <span class="cstat-no" title="statement not covered" >code.length - lastLen;</span>
|
|
13555
|
+
<span class="cstat-no" title="statement not covered" > fileDetail.offset = fileDetail.offset + indexOf;</span>
|
|
13556
|
+
}
|
|
13557
|
+
} else <span class="cstat-no" title="statement not covered" >if (node.concept === 'Match') {</span>
|
|
13558
|
+
const code = <span class="cstat-no" title="statement not covered" >getCode(item);</span>
|
|
13559
|
+
// 去查return 后面的返回值,变成函数调用
|
|
13560
|
+
<span class="cstat-no" title="statement not covered" > if (code?.endsWith(';\n')) {</span>
|
|
13561
|
+
<span class="cstat-no" title="statement not covered" > fileDetail.line = item.end.line - 1;</span>
|
|
13562
|
+
} else {
|
|
13563
|
+
<span class="cstat-no" title="statement not covered" > fileDetail.line = item.end.line;</span>
|
|
13564
|
+
}
|
|
13565
|
+
const indexOf = <span class="cstat-no" title="statement not covered" >code.indexOf('return __MatchExpressionFuntion');</span>
|
|
13566
|
+
let newCode = <span class="cstat-no" title="statement not covered" >code.substring(0, indexOf);</span>
|
|
13567
|
+
<span class="cstat-no" title="statement not covered" > newCode = newCode.substring(newCode.lastIndexOf('\n'), indexOf);</span>
|
|
13568
|
+
<span class="cstat-no" title="statement not covered" > fileDetail.offset = newCode.length + 'return '.length;</span>
|
|
13569
|
+
} else <span class="cstat-no" title="statement not covered" >if (['NewComposite', 'NewList', 'NewMap'].includes(node.concept)) {</span>
|
|
13570
|
+
const code = <span class="cstat-no" title="statement not covered" >getCode(item);</span>
|
|
13834
13571
|
<span class="cstat-no" title="statement not covered" > fileDetail.line = item.end.line;</span>
|
|
13572
|
+
const indexOf = <span class="cstat-no" title="statement not covered" >code.indexOf('return __newComposite');</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 (['OqlQueryComponent'].includes(node.concept)) {</span>
|
|
13577
|
+
<span class="cstat-no" title="statement not covered" > fileDetail.offset += 10;</span>
|
|
13835
13578
|
}
|
|
13836
|
-
|
|
13837
|
-
|
|
13838
|
-
|
|
13839
|
-
|
|
13840
|
-
|
|
13841
|
-
|
|
13842
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13843
|
-
const indexOf = <span class="cstat-no" title="statement not covered" >code.indexOf('return __newComposite');</span>
|
|
13844
|
-
let newCode = <span class="cstat-no" title="statement not covered" >code.substring(0, indexOf);</span>
|
|
13845
|
-
<span class="cstat-no" title="statement not covered" > newCode = newCode.substring(newCode.lastIndexOf('\n'), indexOf);</span>
|
|
13846
|
-
<span class="cstat-no" title="statement not covered" > fileDetail.offset = newCode.length + 'return '.length;</span>
|
|
13847
|
-
} else <span class="cstat-no" title="statement not covered" >if (['OqlQueryComponent'].includes(node.concept)) {</span>
|
|
13848
|
-
<span class="cstat-no" title="statement not covered" > fileDetail.offset += 10;</span>
|
|
13849
|
-
}
|
|
13850
|
-
<span class="cstat-no" title="statement not covered" > args.push(fileDetail);</span>
|
|
13851
|
-
});
|
|
13852
|
-
const resultMap: any = <span class="cstat-no" title="statement not covered" >(yield this.getNaslNodeTypeFull(args))?.response;</span>
|
|
13853
|
-
<span class="cstat-no" title="statement not covered" > yield* utils.wrapForEachToGenerator(args, <span class="fstat-no" title="function not covered" >({</span> file, line, offset }, index) => {</span>
|
|
13579
|
+
<span class="cstat-no" title="statement not covered" > args.push(fileDetail);</span>
|
|
13580
|
+
},
|
|
13581
|
+
{ minimum: 1000 }
|
|
13582
|
+
);
|
|
13583
|
+
|
|
13584
|
+
const resultMap: any = <span class="cstat-no" title="statement not covered" >(await this.getNaslNodeTypeFull(args))?.response;</span>
|
|
13585
|
+
<span class="cstat-no" title="statement not covered" > await utils.timeSlicing(args, <span class="fstat-no" title="function not covered" >({</span> file, line, offset }, index) => {</span>
|
|
13854
13586
|
const item = (<span class="cstat-no" title="statement not covered" >resultMap as any)?.[file]?.[line]?.[offset];</span>
|
|
13855
13587
|
const itemType = <span class="cstat-no" title="statement not covered" >item?.[0]?.nodeType;</span>
|
|
13856
13588
|
const nodeTypeAnnotation = <span class="cstat-no" title="statement not covered" >type2TypeAnnotation(itemType);</span>
|
|
@@ -13859,20 +13591,22 @@ class NaslServer {
|
|
|
13859
13591
|
<span class="cstat-no" title="statement not covered" > types.set(node, Object.freeze(nodeTypeAnnotation) as TypeAnnotation);</span>
|
|
13860
13592
|
|
|
13861
13593
|
const type = <span class="cstat-no" title="statement not covered" >itemType ? (Object.isFrozen(itemType) ? itemType : Object.freeze(itemType)) : null;</span>
|
|
13594
|
+
|
|
13862
13595
|
<span class="cstat-no" title="statement not covered" > if (type) {</span>
|
|
13863
13596
|
(<span class="cstat-no" title="statement not covered" >node as any).__nodeType = type;</span>
|
|
13864
13597
|
} else {
|
|
13865
13598
|
<span class="cstat-no" title="statement not covered" > delete (node as any).__nodeType;</span>
|
|
13866
13599
|
}
|
|
13867
13600
|
});
|
|
13868
|
-
|
|
13601
|
+
|
|
13602
|
+
<span class="cstat-no" title="statement not covered" > await utils.timeSlicing(Array.from(getFromOthers.entries()), <span class="fstat-no" title="function not covered" >([</span>node]) => {</span>
|
|
13869
13603
|
<span class="cstat-no" title="statement not covered" > if (node instanceof Assignment) {</span>
|
|
13870
13604
|
<span class="cstat-no" title="statement not covered" > if (!types.get(node.left)) {</span>
|
|
13871
13605
|
<span class="cstat-no" title="statement not covered" > types.set(node.left, types.get(node.right));</span>
|
|
13872
13606
|
}
|
|
13873
13607
|
} else <span class="cstat-no" title="statement not covered" >if (node instanceof Argument) {</span>
|
|
13874
13608
|
// 如果Argument,但是没可以用的类型,就用原来logic的参数类型
|
|
13875
|
-
const argType = <span class="cstat-no" title="statement not covered" >
|
|
13609
|
+
const argType = <span class="cstat-no" title="statement not covered" >this.getArgumentTypeAnnotation(node, newQuickInfoNodes, types as any);</span>
|
|
13876
13610
|
<span class="cstat-no" title="statement not covered" > types.set(node, argType);</span>
|
|
13877
13611
|
} else <span class="cstat-no" title="statement not covered" >if (node instanceof MatchCase) {</span>
|
|
13878
13612
|
// matchCase的类型
|
|
@@ -13885,7 +13619,7 @@ class NaslServer {
|
|
|
13885
13619
|
}
|
|
13886
13620
|
}
|
|
13887
13621
|
});
|
|
13888
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13622
|
+
<span class="cstat-no" title="statement not covered" > await utils.timeSlicing(Array.from(types.entries()), <span class="fstat-no" title="function not covered" >([</span>node, value]) => {</span>
|
|
13889
13623
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
13890
13624
|
// 因为node可能是经过处理的TypeAnnotation
|
|
13891
13625
|
<span class="cstat-no" title="statement not covered" > node.__isCorrectTypeAnnotation = true;</span>
|
|
@@ -13920,13 +13654,6 @@ class NaslServer {
|
|
|
13920
13654
|
});
|
|
13921
13655
|
<span class="cstat-no" title="statement not covered" > return types;</span>
|
|
13922
13656
|
}
|
|
13923
|
-
|
|
13924
|
-
/**
|
|
13925
|
-
* 获取传入节点的 TypeAnnotation
|
|
13926
|
-
*/
|
|
13927
|
-
<span class="fstat-no" title="function not covered" > getQuickInfoNodesTypeMap(</span>nodes: QuickInfoNodes, flag?: boolean) {
|
|
13928
|
-
<span class="cstat-no" title="statement not covered" > return utils.runGeneratorAsync(this._getQuickInfoNodesTypeMapWithGenerator(nodes));</span>
|
|
13929
|
-
}
|
|
13930
13657
|
|
|
13931
13658
|
// 全量标注并且返回json
|
|
13932
13659
|
@withQueueExecute('annotation')
|
|
@@ -13937,7 +13664,7 @@ class NaslServer {
|
|
|
13937
13664
|
const nodes: QuickInfoNodes = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
13938
13665
|
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.forEach(<span class="fstat-no" title="function not covered" >(f</span>ileNode, filePath) => {</span>
|
|
13939
13666
|
// 先不排除view,传递给后端的时候,去除views下的标注
|
|
13940
|
-
<span class="cstat-no" title="statement not covered" > if (!['Structure', 'DataSource', 'Entity', 'Enum', 'Role'
|
|
13667
|
+
<span class="cstat-no" title="statement not covered" > if (!['Structure', 'DataSource', 'Entity', 'Enum', 'Role'].includes(fileNode.concept)) {</span>
|
|
13941
13668
|
<span class="cstat-no" title="statement not covered" > fileNode.sourceMap.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem, node) => {</span>
|
|
13942
13669
|
<span class="cstat-no" title="statement not covered" > nodes.push({</span>
|
|
13943
13670
|
filePath,
|
|
@@ -13962,35 +13689,28 @@ class NaslServer {
|
|
|
13962
13689
|
}
|
|
13963
13690
|
|
|
13964
13691
|
// 增量标注
|
|
13965
|
-
|
|
13692
|
+
@withQueueExecute('annotation')
|
|
13693
|
+
<span class="fstat-no" title="function not covered" > async </span>IncrementalAnnotationJSON(records: DiagnosticRecord[]) {
|
|
13966
13694
|
<span class="cstat-no" title="statement not covered" > console.time('增量标注');</span>
|
|
13967
13695
|
const nodes: QuickInfoNodes = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
13968
|
-
|
|
13969
|
-
|
|
13970
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13971
|
-
const fileNode = <span class="cstat-no" title="statement not covered" >self.file2NodeMap.get(record.filePath);</span>
|
|
13972
|
-
|
|
13973
|
-
<span class="cstat-no" title="statement not covered" > if (!fileNode) {</span>
|
|
13974
|
-
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
13975
|
-
}
|
|
13976
|
-
|
|
13696
|
+
<span class="cstat-no" title="statement not covered" > records.forEach(<span class="fstat-no" title="function not covered" >(r</span>ecord) => {</span>
|
|
13697
|
+
const fileNode = <span class="cstat-no" title="statement not covered" >this.file2NodeMap.get(record.filePath);</span>
|
|
13698
|
+
<span class="cstat-no" title="statement not covered" > if (!fileNode) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
13977
13699
|
<span class="cstat-no" title="statement not covered" > record.id = fileNode.id;</span>
|
|
13978
13700
|
<span class="cstat-no" title="statement not covered" > record.node = fileNode;</span>
|
|
13979
|
-
|
|
13980
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13981
|
-
<span class="
|
|
13701
|
+
<span class="cstat-no" title="statement not covered" > if (!['Structure', 'DataSource', 'Entity', 'Enum', 'Role'].includes(fileNode.concept)) {</span>
|
|
13702
|
+
<span class="cstat-no" title="statement not covered" > fileNode.sourceMap &&</span>
|
|
13703
|
+
fileNode.sourceMap.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem, nodeItem) => {
|
|
13704
|
+
<span class="cstat-no" title="statement not covered" > nodes.push({</span>
|
|
13705
|
+
filePath: record.filePath,
|
|
13706
|
+
node: nodeItem,
|
|
13707
|
+
item,
|
|
13708
|
+
});
|
|
13709
|
+
});
|
|
13982
13710
|
}
|
|
13983
|
-
|
|
13984
|
-
<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>
|
|
13985
|
-
<span class="cstat-no" title="statement not covered" > nodes.push({</span>
|
|
13986
|
-
filePath: record.filePath,
|
|
13987
|
-
node: nodeItem,
|
|
13988
|
-
item,
|
|
13989
|
-
});
|
|
13990
|
-
});
|
|
13991
13711
|
});
|
|
13992
13712
|
|
|
13993
|
-
<span class="cstat-no" title="statement not covered" >
|
|
13713
|
+
<span class="cstat-no" title="statement not covered" > await this.getQuickInfoNodesTypeMap(nodes);</span>
|
|
13994
13714
|
<span class="cstat-no" title="statement not covered" > console.timeEnd('增量标注');</span>
|
|
13995
13715
|
}
|
|
13996
13716
|
|
|
@@ -14012,12 +13732,7 @@ class NaslServer {
|
|
|
14012
13732
|
<span class="cstat-no" title="statement not covered" > if (value && (!(node as any).typeAnnotation || node instanceof Identifier || node instanceof MemberExpression)) {</span>
|
|
14013
13733
|
const jsonNode = <span class="cstat-no" title="statement not covered" >jsoner.queryNodeByPath(json, node.getNodePath(false));</span>
|
|
14014
13734
|
<span class="cstat-no" title="statement not covered" > if (jsonNode) {</span>
|
|
14015
|
-
<span class="cstat-no" title="statement not covered" > if (node instanceof Argument) {</span>
|
|
14016
|
-
<span class="cstat-no" title="statement not covered" > jsonNode.defaultValue = (value as any).option.defaultValue;</span>
|
|
14017
|
-
<span class="cstat-no" title="statement not covered" > jsonNode.typeAnnotation = (value as any)?.typeAnnotation?.toJSON();</span>
|
|
14018
|
-
} else {
|
|
14019
13735
|
<span class="cstat-no" title="statement not covered" > jsonNode.typeAnnotation = (value as TypeAnnotation)?.toJSON();</span>
|
|
14020
|
-
}
|
|
14021
13736
|
}
|
|
14022
13737
|
}
|
|
14023
13738
|
// 旧版本数据查询需要确认是匿名数据结构的 ListTotal 类型
|
|
@@ -14115,6 +13830,15 @@ class NaslServer {
|
|
|
14115
13830
|
}
|
|
14116
13831
|
}
|
|
14117
13832
|
}
|
|
13833
|
+
|
|
13834
|
+
// 服务端需要默认值节点有类型来判断父节点是否是日期类型
|
|
13835
|
+
<span class="cstat-no" title="statement not covered" > if (node instanceof DefaultValue && !value) {</span>
|
|
13836
|
+
const jsonNode = <span class="cstat-no" title="statement not covered" >jsoner.queryNodeByPath(json, node.getNodePath(false));</span>
|
|
13837
|
+
const parentNodeType = (<span class="cstat-no" title="statement not covered" >node.parentNode as any)?.typeAnnotation || (node.parentNode as any)?.__TypeAnnotation;</span>
|
|
13838
|
+
<span class="cstat-no" title="statement not covered" > if (parentNodeType) {</span>
|
|
13839
|
+
<span class="cstat-no" title="statement not covered" > jsonNode.typeAnnotation = (parentNodeType as TypeAnnotation)?.toJSON();</span>
|
|
13840
|
+
}
|
|
13841
|
+
}
|
|
14118
13842
|
});
|
|
14119
13843
|
}
|
|
14120
13844
|
|
|
@@ -14123,11 +13847,7 @@ class NaslServer {
|
|
|
14123
13847
|
* 如果内部表达式的,就用表达式的,如果没有就试试用默认值的
|
|
14124
13848
|
* 获取logic的默认值和原来Arg的类型和默认值对应
|
|
14125
13849
|
*/
|
|
14126
|
-
<span class="fstat-no" title="function not covered" >
|
|
14127
|
-
node: Argument,
|
|
14128
|
-
QuickInfoNodes: QuickInfoNodes,
|
|
14129
|
-
types: Map<BaseNode, TypeAnnotation>,
|
|
14130
|
-
): Generator<void, { typeAnnotation: TypeAnnotation; option: object }, void> {
|
|
13850
|
+
<span class="fstat-no" title="function not covered" > getArgumentTypeAnnotation(</span>node: Argument, QuickInfoNodes: QuickInfoNodes, types: Map<BaseNode, TypeAnnotation>) {
|
|
14131
13851
|
// 直接复用内部expression的type类型
|
|
14132
13852
|
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
14133
13853
|
node.parentNode instanceof CallLogic &&
|
|
@@ -14141,13 +13861,9 @@ class NaslServer {
|
|
|
14141
13861
|
const type = <span class="cstat-no" title="statement not covered" >nodeType.fnParams[index]?.typeInfo;</span>
|
|
14142
13862
|
const nodeTypeAnnotation = <span class="cstat-no" title="statement not covered" >type2TypeAnnotation(type);</span>
|
|
14143
13863
|
<span class="cstat-no" title="statement not covered" > if (nodeTypeAnnotation) {</span>
|
|
14144
|
-
<span class="cstat-no" title="statement not covered" > return
|
|
14145
|
-
typeAnnotation: nodeTypeAnnotation,
|
|
14146
|
-
option: {},
|
|
14147
|
-
};
|
|
13864
|
+
<span class="cstat-no" title="statement not covered" > return nodeTypeAnnotation</span>
|
|
14148
13865
|
}
|
|
14149
13866
|
}
|
|
14150
|
-
<span class="cstat-no" title="statement not covered" > yield;</span>
|
|
14151
13867
|
}
|
|
14152
13868
|
// 获取返回值结果里找到父级的callLogic || CallInterface的类型填充进去Argument
|
|
14153
13869
|
const App = <span class="cstat-no" title="statement not covered" >node.app;</span>
|
|
@@ -14155,24 +13871,16 @@ class NaslServer {
|
|
|
14155
13871
|
// 如果nasl包下的 ,很多声明都含有T啥的先用自己内部的
|
|
14156
13872
|
<span class="cstat-no" title="statement not covered" > if (!parent.calleeNamespace || parent.calleeNamespace?.startsWith('nasl')) {</span>
|
|
14157
13873
|
<span class="cstat-no" title="statement not covered" > if (types.get(node.expression)) {</span>
|
|
14158
|
-
<span class="cstat-no" title="statement not covered" > return
|
|
14159
|
-
typeAnnotation: types.get(node.expression),
|
|
14160
|
-
option: {},
|
|
14161
|
-
};
|
|
13874
|
+
<span class="cstat-no" title="statement not covered" > return types.get(node.expression)</span>
|
|
14162
13875
|
}
|
|
14163
13876
|
}
|
|
14164
13877
|
// 用户自己声明的用用户的
|
|
14165
|
-
const callObj = <span class="cstat-no" title="statement not covered" >App.findNodeByCompleteName(`${parent.calleeNamespace}.${parent.calleeName}`);</span>
|
|
14166
|
-
<span class="cstat-no" title="statement not covered" > yield;</span>
|
|
13878
|
+
const callObj = <span class="cstat-no" title="statement not covered" >App.findNodeByCompleteName(`${parent.calleeNamespace }.${ parent.calleeName}`);</span>
|
|
14167
13879
|
const index = <span class="cstat-no" title="statement not covered" >parent.arguments.indexOf(node);</span>
|
|
14168
13880
|
const param = <span class="cstat-no" title="statement not covered" >callObj?.params?.[index] || {};</span>
|
|
14169
13881
|
// 取出参数的类型
|
|
14170
13882
|
// 设置类型
|
|
14171
|
-
<span class="cstat-no" title="statement not covered" > return
|
|
14172
|
-
typeAnnotation: param.typeAnnotation,
|
|
14173
|
-
// 设置默认值
|
|
14174
|
-
option: { defaultValue: param.defaultValue },
|
|
14175
|
-
};
|
|
13883
|
+
<span class="cstat-no" title="statement not covered" > return param.typeAnnotation</span>
|
|
14176
13884
|
}
|
|
14177
13885
|
|
|
14178
13886
|
<span class="fstat-no" title="function not covered" > async </span>getCurrentTypeAnnotation(node: BaseNode, outTime: number = <span class="branch-0 cbranch-no" title="branch not covered" >600)</span> {
|
|
@@ -14255,7 +13963,7 @@ class NaslServer {
|
|
|
14255
13963
|
* @param targetNode 当前操作的节点
|
|
14256
13964
|
* @param result toTs生成的内容
|
|
14257
13965
|
*/
|
|
14258
|
-
<span class="fstat-no" title="function not covered" > async </span>handleDelete(fileNode: BaseNode, targetNode: BaseNode, result:
|
|
13966
|
+
<span class="fstat-no" title="function not covered" > async </span>handleDelete(fileNode: BaseNode, targetNode: BaseNode, result: ReturnType<Structure['toEmbeddedTSFile']>) {
|
|
14259
13967
|
const filePath = (<span class="cstat-no" title="statement not covered" >fileNode as FileNode).getEmbeddedFilePath();</span>
|
|
14260
13968
|
// 如果要删除,而且当前要删Logic就直接删除并且清除错误
|
|
14261
13969
|
/**
|
|
@@ -14295,7 +14003,7 @@ class NaslServer {
|
|
|
14295
14003
|
* @param targetNode 触发修改的节点
|
|
14296
14004
|
* @param result 生成代码的code 和位置信息
|
|
14297
14005
|
*/
|
|
14298
|
-
<span class="fstat-no" title="function not covered" > async </span>handleChange(fileNode: BaseNode, targetNode: BaseNode, result:
|
|
14006
|
+
<span class="fstat-no" title="function not covered" > async </span>handleChange(fileNode: BaseNode, targetNode: BaseNode, result: ReturnType<Structure['toEmbeddedTSFile']>, action: string) {
|
|
14299
14007
|
<span class="cstat-no" title="statement not covered" > this.file2NodeMap.set(result.filePath, fileNode);</span>
|
|
14300
14008
|
|
|
14301
14009
|
const outputFiles = <span class="cstat-no" title="statement not covered" >[{ file: result.filePath, fileContent: result.code }];</span>
|
|
@@ -14340,7 +14048,7 @@ class NaslServer {
|
|
|
14340
14048
|
* @param isRename 是不是修改名字
|
|
14341
14049
|
* @param oldFilePath 如果是改名,文件级别的才会有这个参数,用于文件新增替换
|
|
14342
14050
|
*/
|
|
14343
|
-
<span class="fstat-no" title="function not covered" > async </span>handleRename(fileNode: BaseNode, targetNode: BaseNode, result:
|
|
14051
|
+
<span class="fstat-no" title="function not covered" > async </span>handleRename(fileNode: BaseNode, targetNode: BaseNode, result: ReturnType<Structure['toEmbeddedTSFile']>, oldFilePath?: string) {
|
|
14344
14052
|
// rename 场景
|
|
14345
14053
|
const outputFiles = <span class="cstat-no" title="statement not covered" >[{ file: result.filePath, fileContent: result.code }];</span>
|
|
14346
14054
|
// 如果是要修改顶级文件名
|
|
@@ -14444,7 +14152,7 @@ class NaslServer {
|
|
|
14444
14152
|
const fileNodeChildren = <span class="cstat-no" title="statement not covered" >[...fileNode.views, ...fileNode.variables];</span>
|
|
14445
14153
|
<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>
|
|
14446
14154
|
const fileNodeItem = <span class="cstat-no" title="statement not covered" >fileNodeChildren[i];</span>
|
|
14447
|
-
const result = <span class="cstat-no" title="statement not covered" >
|
|
14155
|
+
const result = (<span class="cstat-no" title="statement not covered" >fileNodeItem as FileNode).toEmbeddedTSFile();</span>
|
|
14448
14156
|
<span class="cstat-no" title="statement not covered" > fileNodeItem.sourceMap = result.sourceMap;</span>
|
|
14449
14157
|
<span class="cstat-no" title="statement not covered" > if (action === 'create') {</span>
|
|
14450
14158
|
<span class="cstat-no" title="statement not covered" > await this.handleChange(fileNodeItem, fileNodeItem, result, action);</span>
|
|
@@ -14467,7 +14175,7 @@ class NaslServer {
|
|
|
14467
14175
|
const fileNodeChildren = <span class="cstat-no" title="statement not covered" >fileNode.children;</span>
|
|
14468
14176
|
<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>
|
|
14469
14177
|
const fileNodeItem = <span class="cstat-no" title="statement not covered" >fileNodeChildren[i];</span>
|
|
14470
|
-
const result = <span class="cstat-no" title="statement not covered" >
|
|
14178
|
+
const result = (<span class="cstat-no" title="statement not covered" >fileNodeItem as FileNode).toEmbeddedTSFile();</span>
|
|
14471
14179
|
<span class="cstat-no" title="statement not covered" > fileNodeItem.sourceMap = result.sourceMap;</span>
|
|
14472
14180
|
<span class="cstat-no" title="statement not covered" > if (action === 'create') {</span>
|
|
14473
14181
|
<span class="cstat-no" title="statement not covered" > await this.handleChange(fileNodeItem, fileNodeItem, result, action);</span>
|
|
@@ -14491,7 +14199,8 @@ class NaslServer {
|
|
|
14491
14199
|
<span class="cstat-no" title="statement not covered" > isChangeInterface = true;</span>
|
|
14492
14200
|
}
|
|
14493
14201
|
const module: Module = <span class="cstat-no" title="statement not covered" >targetNode as Module;</span>
|
|
14494
|
-
const results = <span class="cstat-no" title="statement not covered" >
|
|
14202
|
+
const results: Array<ReturnType<Structure['toEmbeddedTSFile']>> = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
14203
|
+
<span class="cstat-no" title="statement not covered" > this.contentToFile(module, results);</span>
|
|
14495
14204
|
<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>
|
|
14496
14205
|
const result = <span class="cstat-no" title="statement not covered" >results[i];</span>
|
|
14497
14206
|
const node = <span class="cstat-no" title="statement not covered" >this.file2NodeMap.get(result.filePath);</span>
|
|
@@ -14518,7 +14227,7 @@ class NaslServer {
|
|
|
14518
14227
|
<span class="cstat-no" title="statement not covered" > if (fileNode instanceof DataSource) {</span>
|
|
14519
14228
|
(<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>
|
|
14520
14229
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
14521
|
-
const result = <span class="cstat-no" title="statement not covered" >
|
|
14230
|
+
const result = <span class="cstat-no" title="statement not covered" >entity.toEmbeddedTSFile();</span>
|
|
14522
14231
|
const parentPath = <span class="cstat-no" title="statement not covered" >oldpath.replace('.ts', '/');</span>
|
|
14523
14232
|
const currentOldPath = <span class="cstat-no" title="statement not covered" >`${parentPath }/entities/${ entity.name }.ts`;</span>
|
|
14524
14233
|
// 因为重命名这里只有当前修改父级的 旧名称, 所以他的子集也要根据旧名称去查依赖 更新内容
|
|
@@ -14555,25 +14264,20 @@ class NaslServer {
|
|
|
14555
14264
|
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
14556
14265
|
}
|
|
14557
14266
|
|
|
14558
|
-
// debugger;
|
|
14559
14267
|
<span class="cstat-no" title="statement not covered" > if (process.env.NODE_ENV === 'development') {</span>
|
|
14560
14268
|
<span class="cstat-no" title="statement not covered" > console.time('重新生成 TS 文件');</span>
|
|
14561
14269
|
}
|
|
14562
|
-
|
|
14563
|
-
const fileTsPath = <span class="cstat-no" title="statement not covered" >fileNode.getEmbeddedFilePath();</span>
|
|
14564
|
-
const result = <span class="cstat-no" title="statement not covered" >await utils.timeSlicingWithGenerator(fileNode.toEmbeddedTSFile());</span>
|
|
14565
|
-
|
|
14270
|
+
const result = (<span class="cstat-no" title="statement not covered" >fileNode as FileNode).toEmbeddedTSFile();</span>
|
|
14566
14271
|
<span class="cstat-no" title="statement not covered" > if (process.env.NODE_ENV === 'development') {</span>
|
|
14567
14272
|
<span class="cstat-no" title="statement not covered" > console.timeEnd('重新生成 TS 文件');</span>
|
|
14568
|
-
<span class="cstat-no" title="statement not covered" > console.log('重新生成 TS 文件',
|
|
14273
|
+
<span class="cstat-no" title="statement not covered" > console.log('重新生成 TS 文件', (fileNode as FileNode).getEmbeddedFilePath());</span>
|
|
14569
14274
|
}
|
|
14570
14275
|
|
|
14571
14276
|
// 当前操作的节点
|
|
14572
14277
|
// 如果当前没有生成tsFile
|
|
14573
|
-
<span class="cstat-no" title="statement not covered" > if (!result
|
|
14278
|
+
<span class="cstat-no" title="statement not covered" > if (!result) {</span>
|
|
14574
14279
|
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
14575
14280
|
}
|
|
14576
|
-
|
|
14577
14281
|
// 修改触发修改文件
|
|
14578
14282
|
<span class="cstat-no" title="statement not covered" > this._debugInFileStorage(targetNode, [</span>
|
|
14579
14283
|
{
|
|
@@ -14583,7 +14287,6 @@ class NaslServer {
|
|
|
14583
14287
|
]);
|
|
14584
14288
|
|
|
14585
14289
|
<span class="cstat-no" title="statement not covered" > fileNode.sourceMap = result.sourceMap;</span>
|
|
14586
|
-
|
|
14587
14290
|
<span class="cstat-no" title="statement not covered" > if (action === 'update' || action === 'create') {</span>
|
|
14588
14291
|
<span class="cstat-no" title="statement not covered" > if ($event?.field !== 'name') {</span>
|
|
14589
14292
|
<span class="cstat-no" title="statement not covered" > await this.handleChange(fileNode, targetNode, result, action);</span>
|
|
@@ -14638,7 +14341,7 @@ export { NaslServer };
|
|
|
14638
14341
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
14639
14342
|
Code coverage generated by
|
|
14640
14343
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
14641
|
-
at 2023-
|
|
14344
|
+
at 2023-10-27T11:50:55.546Z
|
|
14642
14345
|
</div>
|
|
14643
14346
|
<script src="../../prettify.js"></script>
|
|
14644
14347
|
<script>
|