@blockml/validator 0.9.9 → 0.9.10

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.
Files changed (32) hide show
  1. package/blocks/org/blockml/bml/compiler/validator/Library.bml +6 -12
  2. package/blocks/org/blockml/bml/compiler/validator/README.bml +0 -10
  3. package/blocks/org/blockml/bml/compiler/validator/ValidatorType.bml +1 -12
  4. package/blocks/org/blockml/bml/compiler/validator/capability/Validate.bml +0 -8
  5. package/blocks/org/blockml/bml/compiler/validator/capability/ValidateStyle.bml +3 -8
  6. package/blocks/org/blockml/bml/compiler/validator/documentation/DesignDecisions.bml +2 -14
  7. package/blocks/org/blockml/bml/compiler/validator/documentation/Diagnostics.bml +1 -14
  8. package/blocks/org/blockml/bml/compiler/validator/documentation/Introduction.bml +0 -13
  9. package/blocks/org/blockml/bml/compiler/validator/documentation/LayerSeparation.bml +1 -13
  10. package/blocks/org/blockml/bml/compiler/validator/documentation/PackageOwnership.bml +0 -13
  11. package/blocks/org/blockml/bml/compiler/validator/documentation/PublicApi.bml +1 -12
  12. package/blocks/org/blockml/bml/compiler/validator/documentation/ScopeExclusions.bml +1 -14
  13. package/blocks/org/blockml/bml/compiler/validator/documentation/ValidationPipeline.bml +1 -13
  14. package/blocks/org/blockml/bml/compiler/validator/documentation/ValidityContract.bml +4 -15
  15. package/blocks/org/blockml/bml/compiler/validator/style/OmitUnusedNamespace.bml +40 -0
  16. package/blocks/org/blockml/bml/compiler/validator/style/PreferCDataWhenNeedsEscape.bml +0 -5
  17. package/blocks/org/blockml/bml/compiler/validator/style/PreferEmptyElementSelfClosing.bml +0 -5
  18. package/blocks/org/blockml/bml/compiler/validator/style/PreferMarkdownStructure.bml +0 -5
  19. package/blocks/org/blockml/bml/compiler/validator/style/PreferOmitRedundantName.bml +15 -13
  20. package/blocks/org/blockml/bml/compiler/validator/style/PreferOmitRedundantType.bml +15 -13
  21. package/blocks/org/blockml/bml/compiler/validator/style/PreferOmitUnusedNamespace.bml +27 -0
  22. package/blocks/org/blockml/bml/compiler/validator/style/PreferTypeAsTag.bml +15 -13
  23. package/blocks/org/blockml/bml/compiler/validator/style/StyleCheck.bml +0 -4
  24. package/blocks/org/blockml/bml/compiler/validator/style/StyleRule.bml +1 -6
  25. package/blocks/org/blockml/bml/compiler/validator/style/rule/CDataWhenEscaping.bml +0 -7
  26. package/blocks/org/blockml/bml/compiler/validator/style/rule/EmptyElementSelfClosing.bml +0 -7
  27. package/blocks/org/blockml/bml/compiler/validator/style/rule/MarkdownStructure.bml +0 -7
  28. package/blocks/org/blockml/bml/compiler/validator/style/rule/OmitUnusedNamespace.bml +38 -0
  29. package/dist/validate-style.d.ts.map +1 -1
  30. package/dist/validate-style.js +280 -0
  31. package/dist/validate-style.js.map +1 -1
  32. package/package.json +3 -3
@@ -3,20 +3,12 @@
3
3
  <validator:Library xmlns="http://blockml.org/bml"
4
4
  xmlns:blockml="org.blockml.bml"
5
5
  xmlns:bom="org.blockml.bml.bom"
6
- xmlns:bomapi="org.blockml.bml.bom.api"
7
- xmlns:bomcommon="org.blockml.bml.bom.common"
8
- xmlns:bomdoc="org.blockml.bml.bom.document"
9
- xmlns:core="org.blockml.bml.core"
10
- xmlns:def="org.blockml.bml.definition"
11
- xmlns:framework="org.blockml.bml.framework"
12
- xmlns:fwcap="org.blockml.bml.framework.capability"
13
- xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
14
- xmlns:type="org.blockml.bml.type"
15
6
  xmlns:validator="org.blockml.bml.compiler.validator"
16
7
  xmlns:valcap="org.blockml.bml.compiler.validator.capability"
17
8
  xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
18
9
  xmlns:valstyle="org.blockml.bml.compiler.validator.style"
19
- xmlns:bomdocumentation="org.blockml.bml.bom.documentation">
10
+ xmlns:core="org.blockml.bml.core"
11
+ xmlns:framework="org.blockml.bml.framework">
20
12
 
21
13
  <baseType>
22
14
  core:BlockLibrary
@@ -25,7 +17,7 @@
25
17
  The BlockML Validator compiler package library catalog
26
18
  </is>
27
19
  <version>
28
- 0.9.9
20
+ 0.9.10
29
21
  </version>
30
22
  <documentation>
31
23
  # The BlockML Validator compiler package library catalog
@@ -70,12 +62,14 @@
70
62
  <valstyle:PreferTypeAsTag />
71
63
  <valstyle:PreferOmitRedundantType />
72
64
  <valstyle:PreferOmitRedundantName />
65
+ <valstyle:PreferOmitUnusedNamespace />
73
66
  <valstyle:CDataWhenEscaping />
74
67
  <valstyle:MarkdownStructure />
75
68
  <valstyle:EmptyElementSelfClosing />
76
69
  <valstyle:TypeAsTag />
77
70
  <valstyle:OmitRedundantType />
78
71
  <valstyle:OmitRedundantName />
72
+ <valstyle:OmitUnusedNamespace />
79
73
  <valdocumentation:Introduction />
80
74
  <valdocumentation:ValidityContract />
81
75
  <valdocumentation:LayerSeparation />
@@ -88,4 +82,4 @@
88
82
  </composition>
89
83
  </blocks>
90
84
  </aggregations>
91
- </validator:Library>
85
+ </validator:Library>
@@ -1,19 +1,9 @@
1
1
  <!--BlockML Validator — README
2
2
  FQN: org.blockml.bml.compiler.validator.README-->
3
3
  <validator:README xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:bom="org.blockml.bml.bom"
6
- xmlns:bomapi="org.blockml.bml.bom.api"
7
- xmlns:bomcommon="org.blockml.bml.bom.common"
8
- xmlns:bomdoc="org.blockml.bml.bom.document"
9
4
  xmlns:core="org.blockml.bml.core"
10
- xmlns:def="org.blockml.bml.definition"
11
- xmlns:framework="org.blockml.bml.framework"
12
- xmlns:fwcap="org.blockml.bml.framework.capability"
13
5
  xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
14
- xmlns:type="org.blockml.bml.type"
15
6
  xmlns:validator="org.blockml.bml.compiler.validator"
16
- xmlns:valcap="org.blockml.bml.compiler.validator.capability"
17
7
  xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
18
8
  xmlns:bomdocumentation="org.blockml.bml.bom.documentation">
19
9
 
@@ -1,20 +1,9 @@
1
1
  <!--Validator — ValidatorType
2
2
  FQN: org.blockml.bml.compiler.validator.ValidatorType-->
3
3
  <validator:ValidatorType xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
4
  xmlns:bom="org.blockml.bml.bom"
6
- xmlns:bomapi="org.blockml.bml.bom.api"
7
- xmlns:bomcommon="org.blockml.bml.bom.common"
8
- xmlns:bomdoc="org.blockml.bml.bom.document"
9
5
  xmlns:core="org.blockml.bml.core"
10
- xmlns:def="org.blockml.bml.definition"
11
- xmlns:framework="org.blockml.bml.framework"
12
- xmlns:fwcap="org.blockml.bml.framework.capability"
13
- xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
14
- xmlns:type="org.blockml.bml.type"
15
- xmlns:validator="org.blockml.bml.compiler.validator"
16
- xmlns:valcap="org.blockml.bml.compiler.validator.capability"
17
- xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation">
6
+ xmlns:validator="org.blockml.bml.compiler.validator">
18
7
 
19
8
  <baseType>
20
9
  core:Block
@@ -1,18 +1,10 @@
1
1
  <!--Validator Capability — Validate
2
2
  FQN: org.blockml.bml.compiler.validator.capability.Validate-->
3
3
  <valcap:Validate xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:bom="org.blockml.bml.bom"
6
4
  xmlns:bomapi="org.blockml.bml.bom.api"
7
- xmlns:bomcommon="org.blockml.bml.bom.common"
8
5
  xmlns:bomdoc="org.blockml.bml.bom.document"
9
6
  xmlns:core="org.blockml.bml.core"
10
- xmlns:def="org.blockml.bml.definition"
11
- xmlns:framework="org.blockml.bml.framework"
12
7
  xmlns:fwcap="org.blockml.bml.framework.capability"
13
- xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
14
- xmlns:type="org.blockml.bml.type"
15
- xmlns:validator="org.blockml.bml.compiler.validator"
16
8
  xmlns:valcap="org.blockml.bml.compiler.validator.capability"
17
9
  xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation">
18
10
 
@@ -1,17 +1,10 @@
1
1
  <!--Validator Capability — ValidateStyle
2
2
  FQN: org.blockml.bml.compiler.validator.capability.ValidateStyle-->
3
3
  <valcap:ValidateStyle xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:bom="org.blockml.bml.bom"
6
- xmlns:bomapi="org.blockml.bml.bom.api"
7
4
  xmlns:bomcommon="org.blockml.bml.bom.common"
8
5
  xmlns:bomdoc="org.blockml.bml.bom.document"
9
6
  xmlns:core="org.blockml.bml.core"
10
- xmlns:def="org.blockml.bml.definition"
11
- xmlns:type="org.blockml.bml.type"
12
- xmlns:validator="org.blockml.bml.compiler.validator"
13
7
  xmlns:valcap="org.blockml.bml.compiler.validator.capability"
14
- xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
15
8
  xmlns:valstyle="org.blockml.bml.compiler.validator.style">
16
9
 
17
10
  <baseType>
@@ -23,7 +16,9 @@
23
16
  <documentation>
24
17
  Loads StyleRule documents from this package blocks/style/rule/, dispatches each
25
18
  check type to a TypeScript interpreter, and returns diagnostics. Does not affect
26
- success (warnings and recommendations only). Unknown check types emit
19
+ success (warnings and recommendations only). Unused root xmlns prefixes emit
20
+ BML_STYLE_UNUSED_NAMESPACE. Implicit documentation language and see relation=
21
+ local names do not count as prefix use. Unknown check types emit
27
22
  BML_STYLE_UNKNOWN_CHECK as info.
28
23
  </documentation>
29
24
  <references>
@@ -1,21 +1,8 @@
1
1
  <!--Validator Documentation — DesignDecisions
2
2
  FQN: org.blockml.bml.compiler.validator.documentation.DesignDecisions-->
3
3
  <valdocumentation:DesignDecisions xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:bom="org.blockml.bml.bom"
6
- xmlns:bomapi="org.blockml.bml.bom.api"
7
- xmlns:bomcommon="org.blockml.bml.bom.common"
8
- xmlns:bomdoc="org.blockml.bml.bom.document"
9
4
  xmlns:core="org.blockml.bml.core"
10
- xmlns:def="org.blockml.bml.definition"
11
- xmlns:framework="org.blockml.bml.framework"
12
- xmlns:fwcap="org.blockml.bml.framework.capability"
13
- xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
14
- xmlns:type="org.blockml.bml.type"
15
- xmlns:validator="org.blockml.bml.compiler.validator"
16
- xmlns:valcap="org.blockml.bml.compiler.validator.capability"
17
- xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
18
- xmlns:doc="org.blockml.bml.documentation">
5
+ xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation">
19
6
 
20
7
  <baseType>
21
8
  core:Documentation
@@ -38,6 +25,7 @@
38
25
 
39
26
  Style catalog (validateStyle): BML StyleRule documents under style/rule/ are the SSOT.
40
27
  Interpreters bind to StyleCheck type FQNs. Unknown checks emit BML_STYLE_UNKNOWN_CHECK.
28
+ Unused root xmlns prefixes emit BML_STYLE_UNUSED_NAMESPACE (warning).
41
29
 
42
30
  Bootstrap modes: bootstrapPaths (corpus flat scan) or libraryPaths (Library.bml graph).
43
31
  validateVersions runs after validateTypes and before validateConstraints.
@@ -1,21 +1,8 @@
1
1
  <!--Validator Documentation — Diagnostics
2
2
  FQN: org.blockml.bml.compiler.validator.documentation.Diagnostics-->
3
3
  <valdocumentation:Diagnostics xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:bom="org.blockml.bml.bom"
6
- xmlns:bomapi="org.blockml.bml.bom.api"
7
- xmlns:bomcommon="org.blockml.bml.bom.common"
8
- xmlns:bomdoc="org.blockml.bml.bom.document"
9
4
  xmlns:core="org.blockml.bml.core"
10
- xmlns:def="org.blockml.bml.definition"
11
- xmlns:framework="org.blockml.bml.framework"
12
- xmlns:fwcap="org.blockml.bml.framework.capability"
13
- xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
14
- xmlns:type="org.blockml.bml.type"
15
- xmlns:validator="org.blockml.bml.compiler.validator"
16
- xmlns:valcap="org.blockml.bml.compiler.validator.capability"
17
5
  xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
18
- xmlns:doc="org.blockml.bml.documentation"
19
6
  xmlns:fwconfig="org.blockml.bml.framework.config">
20
7
 
21
8
  <baseType>
@@ -32,7 +19,7 @@
32
19
  Style codes: BML_STYLE_PREFER_CDATA, BML_STYLE_PREFER_MARKDOWN,
33
20
  BML_STYLE_EMPTY_ELEMENT_SELF_CLOSE, BML_STYLE_LEGACY_BLOCK_WRAPPER,
34
21
  BML_STYLE_REDUNDANT_TYPE, BML_STYLE_REDUNDANT_NAME,
35
- BML_STYLE_UNKNOWN_CHECK.
22
+ BML_STYLE_UNKNOWN_CHECK, BML_STYLE_UNUSED_NAMESPACE.
36
23
 
37
24
  Host policy: CLI, IDE, and other orchestrators decide whether error diagnostics
38
25
  block serialize, compile, or other downstream steps. The validator package does
@@ -1,21 +1,8 @@
1
1
  <!--Validator Documentation — Introduction
2
2
  FQN: org.blockml.bml.compiler.validator.documentation.Introduction-->
3
3
  <valdocumentation:Introduction xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:bom="org.blockml.bml.bom"
6
- xmlns:bomapi="org.blockml.bml.bom.api"
7
- xmlns:bomcommon="org.blockml.bml.bom.common"
8
- xmlns:bomdoc="org.blockml.bml.bom.document"
9
4
  xmlns:core="org.blockml.bml.core"
10
- xmlns:def="org.blockml.bml.definition"
11
- xmlns:framework="org.blockml.bml.framework"
12
- xmlns:fwcap="org.blockml.bml.framework.capability"
13
- xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
14
- xmlns:type="org.blockml.bml.type"
15
- xmlns:validator="org.blockml.bml.compiler.validator"
16
- xmlns:valcap="org.blockml.bml.compiler.validator.capability"
17
5
  xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
18
- xmlns:doc="org.blockml.bml.documentation"
19
6
  xmlns:bomdocumentation="org.blockml.bml.bom.documentation">
20
7
 
21
8
  <baseType>
@@ -1,21 +1,9 @@
1
1
  <!--Validator Documentation — LayerSeparation
2
2
  FQN: org.blockml.bml.compiler.validator.documentation.LayerSeparation-->
3
3
  <valdocumentation:LayerSeparation xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:bom="org.blockml.bml.bom"
6
- xmlns:bomapi="org.blockml.bml.bom.api"
7
- xmlns:bomcommon="org.blockml.bml.bom.common"
8
- xmlns:bomdoc="org.blockml.bml.bom.document"
9
4
  xmlns:core="org.blockml.bml.core"
10
- xmlns:def="org.blockml.bml.definition"
11
- xmlns:framework="org.blockml.bml.framework"
12
- xmlns:fwcap="org.blockml.bml.framework.capability"
13
5
  xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
14
- xmlns:type="org.blockml.bml.type"
15
- xmlns:validator="org.blockml.bml.compiler.validator"
16
- xmlns:valcap="org.blockml.bml.compiler.validator.capability"
17
- xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
18
- xmlns:doc="org.blockml.bml.documentation">
6
+ xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation">
19
7
 
20
8
  <baseType>
21
9
  core:Documentation
@@ -1,21 +1,8 @@
1
1
  <!--Validator Documentation — PackageOwnership
2
2
  FQN: org.blockml.bml.compiler.validator.documentation.PackageOwnership-->
3
3
  <valdocumentation:PackageOwnership xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:bom="org.blockml.bml.bom"
6
- xmlns:bomapi="org.blockml.bml.bom.api"
7
- xmlns:bomcommon="org.blockml.bml.bom.common"
8
- xmlns:bomdoc="org.blockml.bml.bom.document"
9
4
  xmlns:core="org.blockml.bml.core"
10
- xmlns:def="org.blockml.bml.definition"
11
- xmlns:framework="org.blockml.bml.framework"
12
- xmlns:fwcap="org.blockml.bml.framework.capability"
13
- xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
14
- xmlns:type="org.blockml.bml.type"
15
- xmlns:validator="org.blockml.bml.compiler.validator"
16
- xmlns:valcap="org.blockml.bml.compiler.validator.capability"
17
5
  xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
18
- xmlns:doc="org.blockml.bml.documentation"
19
6
  xmlns:bomdocumentation="org.blockml.bml.bom.documentation">
20
7
 
21
8
  <baseType>
@@ -1,21 +1,10 @@
1
1
  <!--Validator Documentation — PublicApi
2
2
  FQN: org.blockml.bml.compiler.validator.documentation.PublicApi-->
3
3
  <valdocumentation:PublicApi xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:bom="org.blockml.bml.bom"
6
4
  xmlns:bomapi="org.blockml.bml.bom.api"
7
- xmlns:bomcommon="org.blockml.bml.bom.common"
8
- xmlns:bomdoc="org.blockml.bml.bom.document"
9
5
  xmlns:core="org.blockml.bml.core"
10
- xmlns:def="org.blockml.bml.definition"
11
- xmlns:framework="org.blockml.bml.framework"
12
- xmlns:fwcap="org.blockml.bml.framework.capability"
13
- xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
14
- xmlns:type="org.blockml.bml.type"
15
- xmlns:validator="org.blockml.bml.compiler.validator"
16
6
  xmlns:valcap="org.blockml.bml.compiler.validator.capability"
17
- xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
18
- xmlns:doc="org.blockml.bml.documentation">
7
+ xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation">
19
8
 
20
9
  <baseType>
21
10
  core:Documentation
@@ -1,21 +1,8 @@
1
1
  <!--Validator Documentation — ScopeExclusions
2
2
  FQN: org.blockml.bml.compiler.validator.documentation.ScopeExclusions-->
3
3
  <valdocumentation:ScopeExclusions xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:bom="org.blockml.bml.bom"
6
- xmlns:bomapi="org.blockml.bml.bom.api"
7
- xmlns:bomcommon="org.blockml.bml.bom.common"
8
- xmlns:bomdoc="org.blockml.bml.bom.document"
9
4
  xmlns:core="org.blockml.bml.core"
10
- xmlns:def="org.blockml.bml.definition"
11
- xmlns:framework="org.blockml.bml.framework"
12
- xmlns:fwcap="org.blockml.bml.framework.capability"
13
- xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
14
- xmlns:type="org.blockml.bml.type"
15
- xmlns:validator="org.blockml.bml.compiler.validator"
16
- xmlns:valcap="org.blockml.bml.compiler.validator.capability"
17
- xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
18
- xmlns:doc="org.blockml.bml.documentation">
5
+ xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation">
19
6
 
20
7
  <baseType>
21
8
  core:Documentation
@@ -1,21 +1,9 @@
1
1
  <!--Validator Documentation — ValidationPipeline
2
2
  FQN: org.blockml.bml.compiler.validator.documentation.ValidationPipeline-->
3
3
  <valdocumentation:ValidationPipeline xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:bom="org.blockml.bml.bom"
6
- xmlns:bomapi="org.blockml.bml.bom.api"
7
- xmlns:bomcommon="org.blockml.bml.bom.common"
8
- xmlns:bomdoc="org.blockml.bml.bom.document"
9
4
  xmlns:core="org.blockml.bml.core"
10
- xmlns:def="org.blockml.bml.definition"
11
- xmlns:framework="org.blockml.bml.framework"
12
- xmlns:fwcap="org.blockml.bml.framework.capability"
13
- xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
14
- xmlns:type="org.blockml.bml.type"
15
- xmlns:validator="org.blockml.bml.compiler.validator"
16
5
  xmlns:valcap="org.blockml.bml.compiler.validator.capability"
17
- xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
18
- xmlns:doc="org.blockml.bml.documentation">
6
+ xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation">
19
7
 
20
8
  <baseType>
21
9
  core:Documentation
@@ -1,22 +1,9 @@
1
1
  <!--Validator Documentation — ValidityContract
2
2
  FQN: org.blockml.bml.compiler.validator.documentation.ValidityContract-->
3
3
  <valdocumentation:ValidityContract xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:bom="org.blockml.bml.bom"
6
- xmlns:bomapi="org.blockml.bml.bom.api"
7
- xmlns:bomcommon="org.blockml.bml.bom.common"
8
- xmlns:bomdoc="org.blockml.bml.bom.document"
9
4
  xmlns:core="org.blockml.bml.core"
10
- xmlns:def="org.blockml.bml.definition"
11
- xmlns:framework="org.blockml.bml.framework"
12
- xmlns:fwcap="org.blockml.bml.framework.capability"
13
- xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
14
- xmlns:type="org.blockml.bml.type"
15
- xmlns:validator="org.blockml.bml.compiler.validator"
16
- xmlns:valcap="org.blockml.bml.compiler.validator.capability"
17
5
  xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation"
18
- xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
19
- xmlns:doc="org.blockml.bml.documentation">
6
+ xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation">
20
7
 
21
8
  <baseType>
22
9
  core:Documentation
@@ -36,7 +23,9 @@
36
23
 
37
24
  Semantic checks (this package / framework): every type FQN must resolve in the
38
25
  TypeRegistry or be a well-known primitive; instance typeFqn and memberValues keys
39
- must match effective members. Unresolved references are errors. A missing library
26
+ must match effective members. Composition children of a domain-Block aggregation
27
+ must satisfy the effective payload type (BML_TYPE_BOUND_NOT_SATISFIED).
28
+ Unresolved references are errors. A missing library
40
29
  is BML_LIBRARY_RESOLVE_ERROR — analogous to a Java class without its Maven artifact.
41
30
 
42
31
  Structural/semantic errors are node-local: they set success=false but keep the BOM
@@ -0,0 +1,40 @@
1
+ <!--Validator Style Rule — OmitUnusedNamespace
2
+ FQN: org.blockml.bml.compiler.validator.style.OmitUnusedNamespace-->
3
+ <valstyle:OmitUnusedNamespace xmlns="http://blockml.org/bml"
4
+ xmlns:valstyle="org.blockml.bml.compiler.validator.style">
5
+
6
+ <baseType>
7
+ valstyle:StyleRule
8
+ </baseType>
9
+ <is>
10
+ Warn on unused root xmlns prefixes
11
+ </is>
12
+ <documentation>
13
+ <![CDATA[
14
+ Root xmlns:<prefix> declarations that do not address any type or annotation
15
+ used in the document should be omitted. Default xmlns is exempt. Emitted as
16
+ BML_STYLE_UNUSED_NAMESPACE (warning).
17
+ ]]>
18
+ </documentation>
19
+ <properties>
20
+ <code override="true">
21
+ <value>BML_STYLE_UNUSED_NAMESPACE</value>
22
+ </code>
23
+ <severity override="true">
24
+ <value>warning</value>
25
+ </severity>
26
+ <appliesTo override="true">
27
+ <value>document root xmlns prefix</value>
28
+ </appliesTo>
29
+ <message override="true">
30
+ <value>Remove unused xmlns prefix declarations from the document root.</value>
31
+ </message>
32
+ </properties>
33
+ <aggregations>
34
+ <check override="true">
35
+ <composition>
36
+ <valstyle:PreferOmitUnusedNamespace />
37
+ </composition>
38
+ </check>
39
+ </aggregations>
40
+ </valstyle:OmitUnusedNamespace>
@@ -1,11 +1,6 @@
1
1
  <!--Validator Style Check — PreferCDataWhenNeedsEscape
2
2
  FQN: org.blockml.bml.compiler.validator.style.PreferCDataWhenNeedsEscape-->
3
3
  <valstyle:PreferCDataWhenNeedsEscape xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:core="org.blockml.bml.core"
6
- xmlns:def="org.blockml.bml.definition"
7
- xmlns:type="org.blockml.bml.type"
8
- xmlns:validator="org.blockml.bml.compiler.validator"
9
4
  xmlns:valstyle="org.blockml.bml.compiler.validator.style">
10
5
 
11
6
  <baseType>
@@ -1,11 +1,6 @@
1
1
  <!--Validator Style Check — PreferEmptyElementSelfClosing
2
2
  FQN: org.blockml.bml.compiler.validator.style.PreferEmptyElementSelfClosing-->
3
3
  <valstyle:PreferEmptyElementSelfClosing xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:core="org.blockml.bml.core"
6
- xmlns:def="org.blockml.bml.definition"
7
- xmlns:type="org.blockml.bml.type"
8
- xmlns:validator="org.blockml.bml.compiler.validator"
9
4
  xmlns:valstyle="org.blockml.bml.compiler.validator.style">
10
5
 
11
6
  <baseType>
@@ -1,11 +1,6 @@
1
1
  <!--Validator Style Check — PreferMarkdownStructure
2
2
  FQN: org.blockml.bml.compiler.validator.style.PreferMarkdownStructure-->
3
3
  <valstyle:PreferMarkdownStructure xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:core="org.blockml.bml.core"
6
- xmlns:def="org.blockml.bml.definition"
7
- xmlns:type="org.blockml.bml.type"
8
- xmlns:validator="org.blockml.bml.compiler.validator"
9
4
  xmlns:valstyle="org.blockml.bml.compiler.validator.style">
10
5
 
11
6
  <baseType>
@@ -1,15 +1,17 @@
1
- <!--
2
- Validator Style Check — PreferOmitRedundantName
3
- FQN: org.blockml.bml.compiler.validator.style.PreferOmitRedundantName
4
- -->
5
- <style:PreferOmitRedundantName
6
- xmlns="http://blockml.org/bml"
7
- xmlns:style="org.blockml.bml.compiler.validator.style">
1
+ <!--Validator Style Check — PreferOmitRedundantName
2
+ FQN: org.blockml.bml.compiler.validator.style.PreferOmitRedundantName-->
3
+ <valstyle:PreferOmitRedundantName xmlns="http://blockml.org/bml"
4
+ xmlns:valstyle="org.blockml.bml.compiler.validator.style">
8
5
 
9
- <is>Warn when a preferred-form Block still declares a name child</is>
10
-
11
- <documentation>Matches any preferred-form definition (root, Sub-Block, or embed)
6
+ <baseType>
7
+ valstyle:StyleCheck
8
+ </baseType>
9
+ <is>
10
+ Warn when a preferred-form Block still declares a name child
11
+ </is>
12
+ <documentation>
13
+ Matches any preferred-form definition (root, Sub-Block, or embed)
12
14
  that still authors a child name element. The tag already supplies the
13
- name (doc:DocumentFormat).</documentation>
14
-
15
- </style:PreferOmitRedundantName>
15
+ name (doc:DocumentFormat).
16
+ </documentation>
17
+ </valstyle:PreferOmitRedundantName>
@@ -1,15 +1,17 @@
1
- <!--
2
- Validator Style Check — PreferOmitRedundantType
3
- FQN: org.blockml.bml.compiler.validator.style.PreferOmitRedundantType
4
- -->
5
- <style:PreferOmitRedundantType
6
- xmlns="http://blockml.org/bml"
7
- xmlns:style="org.blockml.bml.compiler.validator.style">
1
+ <!--Validator Style Check — PreferOmitRedundantType
2
+ FQN: org.blockml.bml.compiler.validator.style.PreferOmitRedundantType-->
3
+ <valstyle:PreferOmitRedundantType xmlns="http://blockml.org/bml"
4
+ xmlns:valstyle="org.blockml.bml.compiler.validator.style">
8
5
 
9
- <is>Warn when a preferred-form Block still declares a type child</is>
10
-
11
- <documentation>Matches any preferred-form definition (root, Sub-Block, or embed)
6
+ <baseType>
7
+ valstyle:StyleCheck
8
+ </baseType>
9
+ <is>
10
+ Warn when a preferred-form Block still declares a type child
11
+ </is>
12
+ <documentation>
13
+ Matches any preferred-form definition (root, Sub-Block, or embed)
12
14
  that still authors a child type element. The tag already supplies the
13
- type, or the Sub-Block type is derived (doc:DocumentFormat).</documentation>
14
-
15
- </style:PreferOmitRedundantType>
15
+ type, or the Sub-Block type is derived (doc:DocumentFormat).
16
+ </documentation>
17
+ </valstyle:PreferOmitRedundantType>
@@ -0,0 +1,27 @@
1
+ <!--Validator Style Check — PreferOmitUnusedNamespace
2
+ FQN: org.blockml.bml.compiler.validator.style.PreferOmitUnusedNamespace-->
3
+ <valstyle:PreferOmitUnusedNamespace xmlns="http://blockml.org/bml"
4
+ xmlns:valstyle="org.blockml.bml.compiler.validator.style">
5
+
6
+ <baseType>
7
+ valstyle:StyleCheck
8
+ </baseType>
9
+ <is>
10
+ Warn when a root xmlns prefix is never used
11
+ </is>
12
+ <documentation>
13
+ <![CDATA[
14
+ Matches a document-root xmlns:<prefix> binding whose prefix is never used as a
15
+ type QName, annotation namespace, or xsi schemaLocation host.
16
+
17
+ The default xmlns is never unused. Implicit documentation language (default
18
+ English) and see relation= local names (SeeAlso, ReadNext, …) do not count —
19
+ they resolve to org.blockml.bml.language / org.blockml.bml.relation without an
20
+ authored QName. An ancestor package prefix such as blockml (org.blockml.bml)
21
+ is used only when a type or language element is actually written with that
22
+ prefix.
23
+
24
+ Style warning only — does not fail ValidateResult.success.
25
+ ]]>
26
+ </documentation>
27
+ </valstyle:PreferOmitUnusedNamespace>
@@ -1,15 +1,17 @@
1
- <!--
2
- Validator Style Check — PreferTypeAsTag
3
- FQN: org.blockml.bml.compiler.validator.style.PreferTypeAsTag
4
- -->
5
- <style:PreferTypeAsTag
6
- xmlns="http://blockml.org/bml"
7
- xmlns:style="org.blockml.bml.compiler.validator.style">
1
+ <!--Validator Style Check — PreferTypeAsTag
2
+ FQN: org.blockml.bml.compiler.validator.style.PreferTypeAsTag-->
3
+ <valstyle:PreferTypeAsTag xmlns="http://blockml.org/bml"
4
+ xmlns:valstyle="org.blockml.bml.compiler.validator.style">
8
5
 
9
- <is>Warn when a definition still uses the legacy block wrapper</is>
10
-
11
- <documentation>Matches a BlockDefinition whose wrapperForm is block — the legacy
6
+ <baseType>
7
+ valstyle:StyleCheck
8
+ </baseType>
9
+ <is>
10
+ Warn when a definition still uses the legacy block wrapper
11
+ </is>
12
+ <documentation>
13
+ Matches a BlockDefinition whose wrapperForm is block — the legacy
12
14
  definition wrapper. Preferred form uses the type (root / embed) or name
13
- (Sub-Block) as the element tag (doc:DocumentFormat).</documentation>
14
-
15
- </style:PreferTypeAsTag>
15
+ (Sub-Block) as the element tag (doc:DocumentFormat).
16
+ </documentation>
17
+ </valstyle:PreferTypeAsTag>
@@ -1,10 +1,6 @@
1
1
  <!--Validator Style — StyleCheck
2
2
  FQN: org.blockml.bml.compiler.validator.style.StyleCheck-->
3
3
  <valstyle:StyleCheck xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:core="org.blockml.bml.core"
6
- xmlns:def="org.blockml.bml.definition"
7
- xmlns:type="org.blockml.bml.type"
8
4
  xmlns:validator="org.blockml.bml.compiler.validator"
9
5
  xmlns:valstyle="org.blockml.bml.compiler.validator.style">
10
6
 
@@ -1,15 +1,10 @@
1
1
  <!--Validator Style — StyleRule
2
2
  FQN: org.blockml.bml.compiler.validator.style.StyleRule-->
3
3
  <valstyle:StyleRule xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:bom="org.blockml.bml.bom"
6
4
  xmlns:bomcommon="org.blockml.bml.bom.common"
7
- xmlns:core="org.blockml.bml.core"
8
- xmlns:def="org.blockml.bml.definition"
9
5
  xmlns:type="org.blockml.bml.type"
10
6
  xmlns:validator="org.blockml.bml.compiler.validator"
11
- xmlns:valstyle="org.blockml.bml.compiler.validator.style"
12
- xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation">
7
+ xmlns:valstyle="org.blockml.bml.compiler.validator.style">
13
8
 
14
9
  <baseType>
15
10
  validator:ValidatorType
@@ -1,13 +1,6 @@
1
1
  <!--Validator Style Rule — CDataWhenEscaping
2
2
  FQN: org.blockml.bml.compiler.validator.style.CDataWhenEscaping-->
3
3
  <valstyle:CDataWhenEscaping xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:bom="org.blockml.bml.bom"
6
- xmlns:bomcommon="org.blockml.bml.bom.common"
7
- xmlns:core="org.blockml.bml.core"
8
- xmlns:def="org.blockml.bml.definition"
9
- xmlns:type="org.blockml.bml.type"
10
- xmlns:validator="org.blockml.bml.compiler.validator"
11
4
  xmlns:valstyle="org.blockml.bml.compiler.validator.style">
12
5
 
13
6
  <baseType>
@@ -1,13 +1,6 @@
1
1
  <!--Validator Style Rule — EmptyElementSelfClosing
2
2
  FQN: org.blockml.bml.compiler.validator.style.EmptyElementSelfClosing-->
3
3
  <valstyle:EmptyElementSelfClosing xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:bom="org.blockml.bml.bom"
6
- xmlns:bomcommon="org.blockml.bml.bom.common"
7
- xmlns:core="org.blockml.bml.core"
8
- xmlns:def="org.blockml.bml.definition"
9
- xmlns:type="org.blockml.bml.type"
10
- xmlns:validator="org.blockml.bml.compiler.validator"
11
4
  xmlns:valstyle="org.blockml.bml.compiler.validator.style">
12
5
 
13
6
  <baseType>
@@ -1,13 +1,6 @@
1
1
  <!--Validator Style Rule — MarkdownStructure
2
2
  FQN: org.blockml.bml.compiler.validator.style.MarkdownStructure-->
3
3
  <valstyle:MarkdownStructure xmlns="http://blockml.org/bml"
4
- xmlns:blockml="org.blockml.bml"
5
- xmlns:bom="org.blockml.bml.bom"
6
- xmlns:bomcommon="org.blockml.bml.bom.common"
7
- xmlns:core="org.blockml.bml.core"
8
- xmlns:def="org.blockml.bml.definition"
9
- xmlns:type="org.blockml.bml.type"
10
- xmlns:validator="org.blockml.bml.compiler.validator"
11
4
  xmlns:valstyle="org.blockml.bml.compiler.validator.style">
12
5
 
13
6
  <baseType>
@@ -0,0 +1,38 @@
1
+ <!--
2
+ Validator Style Rule — OmitUnusedNamespace
3
+ FQN: org.blockml.bml.compiler.validator.style.OmitUnusedNamespace
4
+ -->
5
+ <style:OmitUnusedNamespace
6
+ xmlns="http://blockml.org/bml"
7
+ xmlns:style="org.blockml.bml.compiler.validator.style">
8
+
9
+ <baseType>style:StyleRule</baseType>
10
+ <is>Warn on unused root xmlns prefixes</is>
11
+
12
+ <documentation>Root xmlns prefix declarations that do not address any type or
13
+ annotation used in the document should be omitted.</documentation>
14
+
15
+ <properties>
16
+ <code override="true">
17
+ <value>BML_STYLE_UNUSED_NAMESPACE</value>
18
+ </code>
19
+ <severity override="true">
20
+ <value>warning</value>
21
+ </severity>
22
+ <appliesTo override="true">
23
+ <value>document root xmlns prefix</value>
24
+ </appliesTo>
25
+ <message override="true">
26
+ <value>Remove unused xmlns prefix declarations from the document root.</value>
27
+ </message>
28
+ </properties>
29
+
30
+ <aggregations>
31
+ <check override="true">
32
+ <composition>
33
+ <style:PreferOmitUnusedNamespace />
34
+ </composition>
35
+ </check>
36
+ </aggregations>
37
+
38
+ </style:OmitUnusedNamespace>
@@ -1 +1 @@
1
- {"version":3,"file":"validate-style.d.ts","sourceRoot":"","sources":["../src/validate-style.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,WAAW,EACX,UAAU,EACV,kBAAkB,EAGnB,MAAM,cAAc,CAAC;AAItB,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAiPD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,WAAW,GAAG,UAAU,EAAE,CAmBjE"}
1
+ {"version":3,"file":"validate-style.d.ts","sourceRoot":"","sources":["../src/validate-style.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,WAAW,EAGX,UAAU,EACV,kBAAkB,EAOnB,MAAM,cAAc,CAAC;AAItB,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAwiBD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,WAAW,GAAG,UAAU,EAAE,CAuBjE"}
@@ -45,6 +45,13 @@ const FALLBACK_RULES = [
45
45
  message: "Omit child name when the element tag already supplies the name.",
46
46
  check: "PreferOmitRedundantName",
47
47
  },
48
+ {
49
+ name: "OmitUnusedNamespace",
50
+ code: "BML_STYLE_UNUSED_NAMESPACE",
51
+ severity: "warning",
52
+ message: "Remove unused xmlns prefix declarations from the document root.",
53
+ check: "PreferOmitUnusedNamespace",
54
+ },
48
55
  ];
49
56
  function styleRuleDir() {
50
57
  const here = dirname(fileURLToPath(import.meta.url));
@@ -121,6 +128,264 @@ function collectReferences(block) {
121
128
  }
122
129
  return refs;
123
130
  }
131
+ const BML_ANNOTATION = "org.blockml.bml.annotation.BmlAnnotation";
132
+ const XSI_NS = "http://www.w3.org/2001/XMLSchema-instance";
133
+ function addId(used, value) {
134
+ const trimmed = value?.trim();
135
+ if (trimmed) {
136
+ used.add(trimmed);
137
+ }
138
+ }
139
+ function addEntity(used, entity) {
140
+ addId(used, entity?.value);
141
+ addId(used, entity?.typeFqn);
142
+ }
143
+ function addExpr(used, expr) {
144
+ if (!expr) {
145
+ return;
146
+ }
147
+ switch (expr.kind) {
148
+ case "named":
149
+ addId(used, expr.fqn);
150
+ for (const arg of expr.typeArguments ?? []) {
151
+ addExpr(used, arg);
152
+ }
153
+ break;
154
+ case "union":
155
+ for (const alt of expr.alternatives) {
156
+ addExpr(used, alt);
157
+ }
158
+ break;
159
+ case "grouped":
160
+ addExpr(used, expr.expression);
161
+ break;
162
+ case "anonymousStruct":
163
+ for (const field of expr.fields) {
164
+ addExpr(used, field.type);
165
+ }
166
+ break;
167
+ default:
168
+ break;
169
+ }
170
+ }
171
+ function addUnknown(used, prefixes, nodes) {
172
+ for (const node of nodes ?? []) {
173
+ if (node.prefix) {
174
+ prefixes.add(node.prefix);
175
+ }
176
+ for (const name of Object.keys(node.attributes)) {
177
+ const idx = name.indexOf(":");
178
+ if (idx > 0 && name.slice(0, idx) !== "xmlns") {
179
+ prefixes.add(name.slice(0, idx));
180
+ }
181
+ }
182
+ }
183
+ }
184
+ function addBmlAnnotation(used) {
185
+ used.add(BML_ANNOTATION);
186
+ }
187
+ function addInstance(used, prefixes, instance) {
188
+ addId(used, instance.typeFqn);
189
+ if (instance.id !== undefined ||
190
+ instance.version !== undefined ||
191
+ instance.bean !== undefined ||
192
+ instance.scope !== undefined ||
193
+ instance.generics !== undefined) {
194
+ addBmlAnnotation(used);
195
+ }
196
+ for (const name of Object.keys(instance.unknownAttributes ?? {})) {
197
+ const idx = name.indexOf(":");
198
+ if (idx > 0) {
199
+ prefixes.add(name.slice(0, idx));
200
+ }
201
+ }
202
+ for (const nested of instance.aggregationCompositions ?? []) {
203
+ addComposition(used, prefixes, nested.composition);
204
+ }
205
+ }
206
+ function addComposition(used, prefixes, composition) {
207
+ if (!composition) {
208
+ return;
209
+ }
210
+ if (composition.directives?.length || composition.generics) {
211
+ addBmlAnnotation(used);
212
+ }
213
+ for (const child of composition.children) {
214
+ addCompositionNode(used, prefixes, child);
215
+ }
216
+ }
217
+ function addCompositionNode(used, prefixes, node) {
218
+ if (node.kind === "blockInstance") {
219
+ if (node.directives?.length) {
220
+ addBmlAnnotation(used);
221
+ }
222
+ addInstance(used, prefixes, node.instance);
223
+ return;
224
+ }
225
+ if (node.directives?.length || node.generics) {
226
+ addBmlAnnotation(used);
227
+ }
228
+ for (const child of node.children) {
229
+ addCompositionNode(used, prefixes, child);
230
+ }
231
+ }
232
+ function addMember(used, prefixes, member) {
233
+ addId(used, member.namespace);
234
+ if (member.generics || member.xmlRendering) {
235
+ addBmlAnnotation(used);
236
+ }
237
+ for (const ref of member.references ?? []) {
238
+ addId(used, ref.type);
239
+ addId(used, ref.languageFqn);
240
+ }
241
+ for (const keyword of member.keywords ?? []) {
242
+ addId(used, keyword.typeFqn);
243
+ addId(used, keyword.languageFqn);
244
+ }
245
+ for (const prose of member.documentations ?? []) {
246
+ addId(used, prose.namespace);
247
+ }
248
+ addUnknown(used, prefixes, member.unknownElements);
249
+ for (const name of Object.keys(member.unknownAttributes ?? {})) {
250
+ const idx = name.indexOf(":");
251
+ if (idx > 0) {
252
+ prefixes.add(name.slice(0, idx));
253
+ }
254
+ }
255
+ switch (member.kind) {
256
+ case "property":
257
+ addId(used, member.typeFqn);
258
+ addExpr(used, member.type);
259
+ for (const entry of member.values ?? []) {
260
+ addId(used, entry.namespace);
261
+ }
262
+ for (const group of member.groups ?? []) {
263
+ addEntity(used, group);
264
+ }
265
+ for (const suggestion of member.suggestions ?? []) {
266
+ addInstance(used, prefixes, suggestion);
267
+ }
268
+ break;
269
+ case "aggregation":
270
+ addExpr(used, member.type);
271
+ addComposition(used, prefixes, member.composition);
272
+ for (const group of member.groups ?? []) {
273
+ addEntity(used, group);
274
+ }
275
+ break;
276
+ case "association":
277
+ addExpr(used, member.type);
278
+ break;
279
+ case "capability":
280
+ addId(used, member.typeFqn);
281
+ addExpr(used, member.inputType);
282
+ addExpr(used, member.outputType);
283
+ addId(used, member.implementation?.languageFqn);
284
+ for (const thrown of member.throws ?? []) {
285
+ addEntity(used, thrown);
286
+ }
287
+ break;
288
+ }
289
+ for (const constraint of member.constraints ?? []) {
290
+ addInstance(used, prefixes, constraint);
291
+ }
292
+ }
293
+ function collectUsedNamespaceTargets(block, prefixes, used) {
294
+ addId(used, block.type);
295
+ addId(used, block.baseType);
296
+ addExpr(used, block.baseTypeExpression);
297
+ addEntity(used, block.language);
298
+ addId(used, block.languageFqn);
299
+ addId(used, block.definitionFqn);
300
+ if (block.generics || block.xmlRendering) {
301
+ addBmlAnnotation(used);
302
+ }
303
+ for (const contract of block.contracts ?? []) {
304
+ addEntity(used, contract);
305
+ }
306
+ for (const generic of block.genericTypes ?? []) {
307
+ addId(used, generic.baseType);
308
+ addId(used, generic.defaultType);
309
+ }
310
+ for (const alias of block.aliases ?? []) {
311
+ addId(used, alias.typeFqn);
312
+ addId(used, alias.languageFqn);
313
+ }
314
+ for (const keyword of block.keywords ?? []) {
315
+ addId(used, keyword.typeFqn);
316
+ addId(used, keyword.languageFqn);
317
+ }
318
+ for (const prose of block.documentations ?? []) {
319
+ addId(used, prose.namespace);
320
+ }
321
+ for (const example of block.examples ?? []) {
322
+ addId(used, example.namespace);
323
+ addId(used, example.contentLanguageFqn);
324
+ }
325
+ for (const ref of block.references ?? []) {
326
+ addId(used, ref.type);
327
+ addId(used, ref.languageFqn);
328
+ }
329
+ addUnknown(used, prefixes, block.unknownElements);
330
+ for (const name of Object.keys(block.unknownAttributes ?? {})) {
331
+ const idx = name.indexOf(":");
332
+ if (idx > 0) {
333
+ prefixes.add(name.slice(0, idx));
334
+ }
335
+ }
336
+ for (const member of block.members) {
337
+ addMember(used, prefixes, member);
338
+ }
339
+ for (const composition of block.compositions) {
340
+ addComposition(used, prefixes, composition);
341
+ }
342
+ for (const constraint of block.constraints ?? []) {
343
+ addInstance(used, prefixes, constraint);
344
+ }
345
+ for (const sub of block.subBlocks) {
346
+ collectUsedNamespaceTargets(sub, prefixes, used);
347
+ }
348
+ for (const embedded of block.embeddedBlocks) {
349
+ collectUsedNamespaceTargets(embedded, prefixes, used);
350
+ }
351
+ }
352
+ function prefixesUsedByTargets(bindings, usedIds) {
353
+ const used = new Set();
354
+ for (const id of usedIds) {
355
+ let best;
356
+ let bestLen = -1;
357
+ for (const [prefix, binding] of Object.entries(bindings)) {
358
+ if (!prefix) {
359
+ continue;
360
+ }
361
+ if (id === binding || id.startsWith(`${binding}.`)) {
362
+ if (binding.length > bestLen) {
363
+ bestLen = binding.length;
364
+ best = prefix;
365
+ }
366
+ }
367
+ }
368
+ if (best) {
369
+ used.add(best);
370
+ }
371
+ }
372
+ return used;
373
+ }
374
+ function unusedRootPrefixes(document) {
375
+ const bindings = document.source.namespaceBindings ?? {};
376
+ const usedPrefixes = new Set();
377
+ const usedIds = new Set();
378
+ collectUsedNamespaceTargets(document.block, usedPrefixes, usedIds);
379
+ if (document.source.schemaLocation || document.source.noNamespaceSchemaLocation) {
380
+ usedIds.add(XSI_NS);
381
+ }
382
+ for (const prefix of prefixesUsedByTargets(bindings, usedIds)) {
383
+ usedPrefixes.add(prefix);
384
+ }
385
+ return Object.keys(bindings)
386
+ .filter((prefix) => prefix !== "" && !usedPrefixes.has(prefix))
387
+ .sort();
388
+ }
124
389
  function runPreferTypeAsTag(rule, block, _role, file, out) {
125
390
  if (block.wrapperForm === "block") {
126
391
  out.push(styleDiag(rule, file, block.source));
@@ -157,6 +422,17 @@ function runPreferSelfClosing(rule, block, _role, file, out) {
157
422
  }
158
423
  }
159
424
  }
425
+ function runPreferOmitUnusedNamespace(rule, document, out) {
426
+ const file = document.source.filePath;
427
+ for (const prefix of unusedRootPrefixes(document)) {
428
+ out.push({
429
+ severity: rule.severity,
430
+ code: rule.code,
431
+ message: `Unused xmlns prefix '${prefix}'.`,
432
+ source: loc(file, document.block.source),
433
+ });
434
+ }
435
+ }
160
436
  const INTERPRETERS = {
161
437
  PreferCDataWhenNeedsEscape: runPreferCData,
162
438
  PreferMarkdownStructure: runPreferMarkdown,
@@ -169,6 +445,10 @@ export function validateStyle(document) {
169
445
  const file = document.source.filePath;
170
446
  const diagnostics = [];
171
447
  for (const rule of loadStyleCatalog()) {
448
+ if (rule.check === "PreferOmitUnusedNamespace") {
449
+ runPreferOmitUnusedNamespace(rule, document, diagnostics);
450
+ continue;
451
+ }
172
452
  const run = INTERPRETERS[rule.check];
173
453
  if (!run) {
174
454
  diagnostics.push({
@@ -1 +1 @@
1
- {"version":3,"file":"validate-style.js","sourceRoot":"","sources":["../src/validate-style.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-style.js","sourceRoot":"","sources":["../src/validate-style.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blockml/validator",
3
- "version": "0.9.9",
3
+ "version": "0.9.10",
4
4
  "description": "BlockML validator — semantic validation of BOM documents",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -32,9 +32,9 @@
32
32
  "test": "vitest run packages/validator/test"
33
33
  },
34
34
  "dependencies": {
35
- "@blockml/bom": "^0.9.9",
35
+ "@blockml/bom": "^0.9.10",
36
36
  "@blockml/core": "^1.4.0",
37
- "@blockml/framework": "^0.9.9"
37
+ "@blockml/framework": "^0.9.10"
38
38
  },
39
39
  "engines": {
40
40
  "node": ">=20"