@blockml/framework 0.9.0 → 0.9.2
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/blocks/org/blockml/bml/framework/Library.bml +8 -1
- package/blocks/org/blockml/bml/framework/capability/EvaluateExpression.bml +50 -0
- package/blocks/org/blockml/bml/framework/capability/EvaluateInterpolatedText.bml +50 -0
- package/blocks/org/blockml/bml/framework/capability/EvaluateParseValue.bml +68 -0
- package/blocks/org/blockml/bml/framework/capability/FindLocalMember.bml +58 -0
- package/blocks/org/blockml/bml/framework/capability/ForkBom.bml +1 -1
- package/blocks/org/blockml/bml/framework/capability/ParseInterpolatedText.bml +54 -0
- package/blocks/org/blockml/bml/framework/capability/TypeRegistry.bml +10 -1
- package/blocks/org/blockml/bml/framework/capability/ValidateGenerics.bml +66 -0
- package/blocks/org/blockml/bml/framework/capability/ValidateTypes.bml +19 -1
- package/blocks/org/blockml/bml/framework/config/FrameworkDiagnosticCodes.bml +1 -1
- package/blocks/org/blockml/bml/framework/documentation/Diagnostics.bml +22 -3
- package/blocks/org/blockml/bml/framework/documentation/EffectiveMembers.bml +2 -0
- package/blocks/org/blockml/bml/framework/documentation/ExpressionParsing.bml +6 -3
- package/blocks/org/blockml/bml/framework/documentation/PublicApi.bml +7 -1
- package/blocks/org/blockml/bml/framework/documentation/TypeRegistryBootstrap.bml +8 -7
- package/blocks/org/blockml/bml/framework/expression/ExpressionNode.bml +1 -1
- package/blocks/org/blockml/bml/framework/expression/InterpolatedStringNode.bml +51 -0
- package/dist/expression/evaluate-expression.d.ts +9 -0
- package/dist/expression/evaluate-expression.d.ts.map +1 -0
- package/dist/expression/evaluate-expression.js +124 -0
- package/dist/expression/evaluate-expression.js.map +1 -0
- package/dist/expression/parse-interpolated-text.d.ts +3 -0
- package/dist/expression/parse-interpolated-text.d.ts.map +1 -0
- package/dist/expression/parse-interpolated-text.js +80 -0
- package/dist/expression/parse-interpolated-text.js.map +1 -0
- package/dist/expression/restricted.d.ts +5 -0
- package/dist/expression/restricted.d.ts.map +1 -0
- package/dist/expression/restricted.js +65 -0
- package/dist/expression/restricted.js.map +1 -0
- package/dist/expression/types.d.ts +5 -1
- package/dist/expression/types.d.ts.map +1 -1
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/registry/bootstrap.d.ts.map +1 -1
- package/dist/registry/bootstrap.js +12 -2
- package/dist/registry/bootstrap.js.map +1 -1
- package/dist/registry/library-bootstrap.d.ts.map +1 -1
- package/dist/registry/library-bootstrap.js +14 -3
- package/dist/registry/library-bootstrap.js.map +1 -1
- package/dist/registry/package-paths.d.ts +2 -0
- package/dist/registry/package-paths.d.ts.map +1 -1
- package/dist/registry/package-paths.js +7 -0
- package/dist/registry/package-paths.js.map +1 -1
- package/dist/registry/type-registry.d.ts +5 -0
- package/dist/registry/type-registry.d.ts.map +1 -1
- package/dist/registry/type-registry.js +25 -1
- package/dist/registry/type-registry.js.map +1 -1
- package/dist/resolve/resolve-generic-application.d.ts +18 -0
- package/dist/resolve/resolve-generic-application.d.ts.map +1 -0
- package/dist/resolve/resolve-generic-application.js +129 -0
- package/dist/resolve/resolve-generic-application.js.map +1 -0
- package/dist/resolve/satisfies-type-bound.d.ts +4 -0
- package/dist/resolve/satisfies-type-bound.d.ts.map +1 -0
- package/dist/resolve/satisfies-type-bound.js +20 -0
- package/dist/resolve/satisfies-type-bound.js.map +1 -0
- package/dist/validate/evaluate-parse-value.d.ts +13 -0
- package/dist/validate/evaluate-parse-value.d.ts.map +1 -0
- package/dist/validate/evaluate-parse-value.js +138 -0
- package/dist/validate/evaluate-parse-value.js.map +1 -0
- package/dist/validate/instance-ids.d.ts +10 -0
- package/dist/validate/instance-ids.d.ts.map +1 -0
- package/dist/validate/instance-ids.js +57 -0
- package/dist/validate/instance-ids.js.map +1 -0
- package/dist/validate/reference-kinds.d.ts +50 -0
- package/dist/validate/reference-kinds.d.ts.map +1 -0
- package/dist/validate/reference-kinds.js +111 -0
- package/dist/validate/reference-kinds.js.map +1 -0
- package/dist/validate/validate-generics.d.ts +4 -0
- package/dist/validate/validate-generics.d.ts.map +1 -0
- package/dist/validate/validate-generics.js +141 -0
- package/dist/validate/validate-generics.js.map +1 -0
- package/dist/validate/validate-instances.d.ts.map +1 -1
- package/dist/validate/validate-instances.js +1 -61
- package/dist/validate/validate-instances.js.map +1 -1
- package/dist/validate/validate-parse-values.d.ts +4 -0
- package/dist/validate/validate-parse-values.d.ts.map +1 -0
- package/dist/validate/validate-parse-values.js +181 -0
- package/dist/validate/validate-parse-values.js.map +1 -0
- package/dist/validate/validate-references.d.ts +5 -0
- package/dist/validate/validate-references.d.ts.map +1 -0
- package/dist/validate/validate-references.js +392 -0
- package/dist/validate/validate-references.js.map +1 -0
- package/dist/validate/validate-types.d.ts.map +1 -1
- package/dist/validate/validate-types.js +117 -129
- package/dist/validate/validate-types.js.map +1 -1
- package/package.json +4 -4
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
Membership is defined exclusively by this blocks list.
|
|
50
50
|
</documentation>
|
|
51
51
|
|
|
52
|
-
<version>0.9.
|
|
52
|
+
<version>0.9.2</version>
|
|
53
53
|
|
|
54
54
|
<language>
|
|
55
55
|
<English />
|
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
<fwexpression:PropertyExpressionNode />
|
|
88
88
|
<fwexpression:CallExpressionNode />
|
|
89
89
|
<fwexpression:BinaryExpressionNode />
|
|
90
|
+
<fwexpression:InterpolatedStringNode />
|
|
90
91
|
<fwexpression:ParseExpressionResult />
|
|
91
92
|
<fwexpression:ParseExpressionError />
|
|
92
93
|
<fwexpression:ParseExpressionOutcome />
|
|
@@ -106,7 +107,11 @@
|
|
|
106
107
|
<fwcap:ResolveEffectiveMembers />
|
|
107
108
|
<fwcap:CollectBaseTypeChain />
|
|
108
109
|
<fwcap:MemberIdentityKey />
|
|
110
|
+
<fwcap:FindLocalMember />
|
|
109
111
|
<fwcap:ParseExpression />
|
|
112
|
+
<fwcap:ParseInterpolatedText />
|
|
113
|
+
<fwcap:EvaluateExpression />
|
|
114
|
+
<fwcap:EvaluateInterpolatedText />
|
|
110
115
|
<fwcap:ValidateTypes />
|
|
111
116
|
<fwcap:ValidateConstraints />
|
|
112
117
|
<fwcap:ValidateVersions />
|
|
@@ -116,11 +121,13 @@
|
|
|
116
121
|
<fwcap:PeekLibraryTypeFqn />
|
|
117
122
|
<fwcap:ValidateEmbeddedBlocks />
|
|
118
123
|
<fwcap:ValidateInstances />
|
|
124
|
+
<fwcap:ValidateGenerics />
|
|
119
125
|
<fwcap:ValidatePresets />
|
|
120
126
|
<fwcap:ValidateVisibility />
|
|
121
127
|
<fwcap:ValidateReadOnly />
|
|
122
128
|
<fwcap:GetPropertyNumericValue />
|
|
123
129
|
<fwcap:IsLiteralValue />
|
|
130
|
+
<fwcap:EvaluateParseValue />
|
|
124
131
|
<fwdocumentation:Introduction />
|
|
125
132
|
<fwdocumentation:LayerSeparation />
|
|
126
133
|
<fwdocumentation:ArchitectureOverview />
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Framework Capability — EvaluateExpression
|
|
3
|
+
FQN: org.blockml.bml.framework.capability.EvaluateExpression
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bommember="org.blockml.bml.bom.member"
|
|
18
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
19
|
+
xmlns:bomvalue="org.blockml.bml.bom.value"
|
|
20
|
+
xmlns:core="org.blockml.bml.core"
|
|
21
|
+
xmlns:def="org.blockml.bml.definition"
|
|
22
|
+
xmlns:framework="org.blockml.bml.framework"
|
|
23
|
+
xmlns:fwcap="org.blockml.bml.framework.capability"
|
|
24
|
+
xmlns:fwconfig="org.blockml.bml.framework.config"
|
|
25
|
+
xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
|
|
26
|
+
xmlns:fwexpression="org.blockml.bml.framework.expression"
|
|
27
|
+
xmlns:fwregistry="org.blockml.bml.framework.registry"
|
|
28
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
29
|
+
xmlns:type="org.blockml.bml.type"
|
|
30
|
+
xmlns:bomdocumentation="org.blockml.bml.bom.documentation"
|
|
31
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
32
|
+
xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation">
|
|
33
|
+
|
|
34
|
+
<name>EvaluateExpression</name>
|
|
35
|
+
<type>fwcap:EvaluateExpression</type>
|
|
36
|
+
<baseType>core:Capability</baseType>
|
|
37
|
+
<is>Evaluate a restricted expression AST against the #this scope</is>
|
|
38
|
+
|
|
39
|
+
<documentation>#this is the outer Block property map. Same lookup as full expressions: size ≡ #this.size, this ≡ #this.this, this.x ≡ #this.this.x. Restricted profile only.</documentation>
|
|
40
|
+
|
|
41
|
+
<properties>
|
|
42
|
+
<node type="fwexpression:ExpressionNode">
|
|
43
|
+
<documentation>node. TS type: fwexpression:ExpressionNode. (required)</documentation>
|
|
44
|
+
</node>
|
|
45
|
+
<value type="type:Text">
|
|
46
|
+
<documentation>BML type gap: TS unknown evaluation result. (required)</documentation>
|
|
47
|
+
</value>
|
|
48
|
+
</properties>
|
|
49
|
+
|
|
50
|
+
</block>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Framework Capability — EvaluateInterpolatedText
|
|
3
|
+
FQN: org.blockml.bml.framework.capability.EvaluateInterpolatedText
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bommember="org.blockml.bml.bom.member"
|
|
18
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
19
|
+
xmlns:bomvalue="org.blockml.bml.bom.value"
|
|
20
|
+
xmlns:core="org.blockml.bml.core"
|
|
21
|
+
xmlns:def="org.blockml.bml.definition"
|
|
22
|
+
xmlns:framework="org.blockml.bml.framework"
|
|
23
|
+
xmlns:fwcap="org.blockml.bml.framework.capability"
|
|
24
|
+
xmlns:fwconfig="org.blockml.bml.framework.config"
|
|
25
|
+
xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
|
|
26
|
+
xmlns:fwexpression="org.blockml.bml.framework.expression"
|
|
27
|
+
xmlns:fwregistry="org.blockml.bml.framework.registry"
|
|
28
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
29
|
+
xmlns:type="org.blockml.bml.type"
|
|
30
|
+
xmlns:bomdocumentation="org.blockml.bml.bom.documentation"
|
|
31
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
32
|
+
xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation">
|
|
33
|
+
|
|
34
|
+
<name>EvaluateInterpolatedText</name>
|
|
35
|
+
<type>fwcap:EvaluateInterpolatedText</type>
|
|
36
|
+
<baseType>core:Capability</baseType>
|
|
37
|
+
<is>Evaluate interpolated text against the #this scope</is>
|
|
38
|
+
|
|
39
|
+
<documentation>Parses holes then evaluates them with the same #this lookup as full expressions. Result is concatenated Text.</documentation>
|
|
40
|
+
|
|
41
|
+
<properties>
|
|
42
|
+
<source type="type:Text">
|
|
43
|
+
<documentation>source. TS type: type:Text. (required)</documentation>
|
|
44
|
+
</source>
|
|
45
|
+
<value type="type:Text">
|
|
46
|
+
<documentation>value. TS type: type:Text. (required)</documentation>
|
|
47
|
+
</value>
|
|
48
|
+
</properties>
|
|
49
|
+
|
|
50
|
+
</block>
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Framework Capability — EvaluateParseValue
|
|
3
|
+
FQN: org.blockml.bml.framework.capability.EvaluateParseValue
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bommember="org.blockml.bml.bom.member"
|
|
18
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
19
|
+
xmlns:bomvalue="org.blockml.bml.bom.value"
|
|
20
|
+
xmlns:core="org.blockml.bml.core"
|
|
21
|
+
xmlns:def="org.blockml.bml.definition"
|
|
22
|
+
xmlns:framework="org.blockml.bml.framework"
|
|
23
|
+
xmlns:fwcap="org.blockml.bml.framework.capability"
|
|
24
|
+
xmlns:fwconfig="org.blockml.bml.framework.config"
|
|
25
|
+
xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
|
|
26
|
+
xmlns:fwexpression="org.blockml.bml.framework.expression"
|
|
27
|
+
xmlns:fwregistry="org.blockml.bml.framework.registry"
|
|
28
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
29
|
+
xmlns:type="org.blockml.bml.type"
|
|
30
|
+
xmlns:bomdocumentation="org.blockml.bml.bom.documentation"
|
|
31
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
32
|
+
xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation">
|
|
33
|
+
|
|
34
|
+
<name>EvaluateParseValue</name>
|
|
35
|
+
<type>fwcap:EvaluateParseValue</type>
|
|
36
|
+
<baseType>core:Capability</baseType>
|
|
37
|
+
<is>Evaluate PrimitiveType.parseValue on authored text</is>
|
|
38
|
+
|
|
39
|
+
<documentation>
|
|
40
|
+
Host-evaluable PrimitiveType.parseValue: Text → host value.
|
|
41
|
+
|
|
42
|
+
- Looks up `parseValue` on the named primitive (multiplicity and generics stripped)
|
|
43
|
+
- No member, abstract, non-TypeScript, or type missing from the registry → skipped
|
|
44
|
+
- A thrown Error → `BML_INVALID_VALUE`
|
|
45
|
+
- Lexical only — no `this.min` / `this.max`, no TypeRegistry existence
|
|
46
|
+
</documentation>
|
|
47
|
+
|
|
48
|
+
<references>
|
|
49
|
+
<see type="fwcap:ResolveEffectiveMembers" relation="SeeAlso" />
|
|
50
|
+
<see type="fwcap:ValidateTypes" relation="SeeAlso" />
|
|
51
|
+
</references>
|
|
52
|
+
|
|
53
|
+
<properties>
|
|
54
|
+
<typeFqn type="type:Text">
|
|
55
|
+
<documentation>Declared primitive FQN or type expression. (required)</documentation>
|
|
56
|
+
</typeFqn>
|
|
57
|
+
<raw type="type:Text">
|
|
58
|
+
<documentation>Authored XML text. (required)</documentation>
|
|
59
|
+
</raw>
|
|
60
|
+
<registry type="fwcap:TypeRegistry">
|
|
61
|
+
<documentation>registry. TS type: fwcap:TypeRegistry. (required)</documentation>
|
|
62
|
+
</registry>
|
|
63
|
+
<result type="type:Text">
|
|
64
|
+
<documentation>ok+value, ok+skipped, or ok:false+message. (required)</documentation>
|
|
65
|
+
</result>
|
|
66
|
+
</properties>
|
|
67
|
+
|
|
68
|
+
</block>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Framework Capability — FindLocalMember
|
|
3
|
+
FQN: org.blockml.bml.framework.capability.FindLocalMember
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bommember="org.blockml.bml.bom.member"
|
|
18
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
19
|
+
xmlns:bomvalue="org.blockml.bml.bom.value"
|
|
20
|
+
xmlns:core="org.blockml.bml.core"
|
|
21
|
+
xmlns:def="org.blockml.bml.definition"
|
|
22
|
+
xmlns:framework="org.blockml.bml.framework"
|
|
23
|
+
xmlns:fwcap="org.blockml.bml.framework.capability"
|
|
24
|
+
xmlns:fwconfig="org.blockml.bml.framework.config"
|
|
25
|
+
xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
|
|
26
|
+
xmlns:fwexpression="org.blockml.bml.framework.expression"
|
|
27
|
+
xmlns:fwregistry="org.blockml.bml.framework.registry"
|
|
28
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
29
|
+
xmlns:type="org.blockml.bml.type"
|
|
30
|
+
xmlns:bomdocumentation="org.blockml.bml.bom.documentation"
|
|
31
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
32
|
+
xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation">
|
|
33
|
+
|
|
34
|
+
<name>FindLocalMember</name>
|
|
35
|
+
<type>fwcap:FindLocalMember</type>
|
|
36
|
+
<baseType>core:Capability</baseType>
|
|
37
|
+
<is>Find a member declared on this block, not inherited</is>
|
|
38
|
+
|
|
39
|
+
<documentation>Looks up memberIdentityKey(member) in block.members only. Returns the local declaration, or undefined when the member is inherited or absent.</documentation>
|
|
40
|
+
|
|
41
|
+
<references>
|
|
42
|
+
<see type="fwcap:MemberIdentityKey" relation="SeeAlso" />
|
|
43
|
+
<see type="fwcap:ResolveEffectiveMembers" relation="SeeAlso" />
|
|
44
|
+
</references>
|
|
45
|
+
|
|
46
|
+
<properties>
|
|
47
|
+
<block type="bomblock:BlockDefinition">
|
|
48
|
+
<documentation>block. TS type: bomblock:BlockDefinition. (required)</documentation>
|
|
49
|
+
</block>
|
|
50
|
+
<member type="bommember:MemberDefinition">
|
|
51
|
+
<documentation>member. TS type: bommember:MemberDefinition. (required)</documentation>
|
|
52
|
+
</member>
|
|
53
|
+
<local type="bommember:MemberDefinition">
|
|
54
|
+
<documentation>Declared member on this block, or undefined. (optional)</documentation>
|
|
55
|
+
</local>
|
|
56
|
+
</properties>
|
|
57
|
+
|
|
58
|
+
</block>
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
<documentation>Deep-clone Urmodell for pragmatic / validation working copy</documentation>
|
|
40
40
|
|
|
41
41
|
<references>
|
|
42
|
-
<see type="bomdocumentation:
|
|
42
|
+
<see type="bomdocumentation:PublicApi" relation="SeeAlso" />
|
|
43
43
|
</references>
|
|
44
44
|
|
|
45
45
|
<properties>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Framework Capability — ParseInterpolatedText
|
|
3
|
+
FQN: org.blockml.bml.framework.capability.ParseInterpolatedText
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bommember="org.blockml.bml.bom.member"
|
|
18
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
19
|
+
xmlns:bomvalue="org.blockml.bml.bom.value"
|
|
20
|
+
xmlns:core="org.blockml.bml.core"
|
|
21
|
+
xmlns:def="org.blockml.bml.definition"
|
|
22
|
+
xmlns:framework="org.blockml.bml.framework"
|
|
23
|
+
xmlns:fwcap="org.blockml.bml.framework.capability"
|
|
24
|
+
xmlns:fwconfig="org.blockml.bml.framework.config"
|
|
25
|
+
xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
|
|
26
|
+
xmlns:fwexpression="org.blockml.bml.framework.expression"
|
|
27
|
+
xmlns:fwregistry="org.blockml.bml.framework.registry"
|
|
28
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
29
|
+
xmlns:type="org.blockml.bml.type"
|
|
30
|
+
xmlns:bomdocumentation="org.blockml.bml.bom.documentation"
|
|
31
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
32
|
+
xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation">
|
|
33
|
+
|
|
34
|
+
<name>ParseInterpolatedText</name>
|
|
35
|
+
<type>fwcap:ParseInterpolatedText</type>
|
|
36
|
+
<baseType>core:Capability</baseType>
|
|
37
|
+
<is>Parse interpolated text into an InterpolatedStringNode AST</is>
|
|
38
|
+
|
|
39
|
+
<documentation>Scan authored text for ${} holes. Restricted profile — same #this lookup as full expressions; no @model, @bean, or capability calls.</documentation>
|
|
40
|
+
|
|
41
|
+
<references>
|
|
42
|
+
<see type="fwdocumentation:ExpressionParsing" relation="SeeAlso" />
|
|
43
|
+
</references>
|
|
44
|
+
|
|
45
|
+
<properties>
|
|
46
|
+
<source type="type:Text">
|
|
47
|
+
<documentation>source. TS type: type:Text. (required)</documentation>
|
|
48
|
+
</source>
|
|
49
|
+
<outcome type="fwexpression:ParseExpressionOutcome">
|
|
50
|
+
<documentation>outcome. TS type: fwexpression:ParseExpressionOutcome. (required)</documentation>
|
|
51
|
+
</outcome>
|
|
52
|
+
</properties>
|
|
53
|
+
|
|
54
|
+
</block>
|
|
@@ -36,7 +36,16 @@
|
|
|
36
36
|
<baseType>core:Capability</baseType>
|
|
37
37
|
<is>In-memory index of BlockDefinition documents by type FQN</is>
|
|
38
38
|
|
|
39
|
-
<documentation>
|
|
39
|
+
<documentation>
|
|
40
|
+
# In-memory index of BlockDefinition documents by type FQN
|
|
41
|
+
|
|
42
|
+
Class exported from registry/type-registry.ts. Implements bomapi:TypeRegistryReader (get/has).
|
|
43
|
+
|
|
44
|
+
- register prefers a non-node_modules source over a node_modules source for the same type FQN
|
|
45
|
+
(workspace beats dependency). Same-origin last write wins.
|
|
46
|
+
- withOverlay(document) returns a copy with that document registered — open-buffer overlay;
|
|
47
|
+
does not mutate this registry.
|
|
48
|
+
</documentation>
|
|
40
49
|
|
|
41
50
|
<references>
|
|
42
51
|
<see type="bomapi:TypeRegistryReader" relation="SeeAlso" />
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Framework Capability — ValidateGenerics
|
|
3
|
+
FQN: org.blockml.bml.framework.capability.ValidateGenerics
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bommember="org.blockml.bml.bom.member"
|
|
18
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
19
|
+
xmlns:bomvalue="org.blockml.bml.bom.value"
|
|
20
|
+
xmlns:core="org.blockml.bml.core"
|
|
21
|
+
xmlns:def="org.blockml.bml.definition"
|
|
22
|
+
xmlns:framework="org.blockml.bml.framework"
|
|
23
|
+
xmlns:fwcap="org.blockml.bml.framework.capability"
|
|
24
|
+
xmlns:fwconfig="org.blockml.bml.framework.config"
|
|
25
|
+
xmlns:fwdocumentation="org.blockml.bml.framework.documentation"
|
|
26
|
+
xmlns:fwexpression="org.blockml.bml.framework.expression"
|
|
27
|
+
xmlns:fwregistry="org.blockml.bml.framework.registry"
|
|
28
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
29
|
+
xmlns:type="org.blockml.bml.type"
|
|
30
|
+
xmlns:bomdocumentation="org.blockml.bml.bom.documentation"
|
|
31
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
32
|
+
xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation">
|
|
33
|
+
|
|
34
|
+
<name>ValidateGenerics</name>
|
|
35
|
+
<type>fwcap:ValidateGenerics</type>
|
|
36
|
+
<baseType>core:Capability</baseType>
|
|
37
|
+
<is>Open generic instance and bml:generics placement checks</is>
|
|
38
|
+
|
|
39
|
+
<documentation>Open generic instance and bml:generics placement checks against
|
|
40
|
+
TypeRegistry. Emits BML_OPEN_GENERIC_INSTANCE, BML_GENERICS_DIRECTIVE_NOT_ALLOWED,
|
|
41
|
+
BML_GENERICS_ARGUMENT_MISMATCH, and reuses BML_GENERIC_CONSTRAINT_VIOLATION /
|
|
42
|
+
BML_MISSING_GENERIC_TYPE_ARGUMENT.
|
|
43
|
+
|
|
44
|
+
bml:generics is allowed whenever the instance type declares genericTypes.
|
|
45
|
+
Open parameters require a binding. Parameters with defaultType may omit it;
|
|
46
|
+
authored arguments override defaultType.
|
|
47
|
+
|
|
48
|
+
BML_OPEN_GENERIC_INSTANCE applies only to domain Block instances. Children of a
|
|
49
|
+
TypeReferenceEntity aggregation (Library blocks, contracts, …) are type
|
|
50
|
+
references — empty QName sugar or explicit TypeReferenceEntity — not instances
|
|
51
|
+
of the named type. They must not carry bml:generics; if present, emit
|
|
52
|
+
BML_GENERICS_DIRECTIVE_NOT_ALLOWED.</documentation>
|
|
53
|
+
|
|
54
|
+
<properties>
|
|
55
|
+
<document type="bomdoc:BomDocument">
|
|
56
|
+
<documentation>document. TS type: bomdoc:BomDocument. (required)</documentation>
|
|
57
|
+
</document>
|
|
58
|
+
<registry type="fwcap:TypeRegistry">
|
|
59
|
+
<documentation>registry. TS type: fwcap:TypeRegistry. (required)</documentation>
|
|
60
|
+
</registry>
|
|
61
|
+
<diagnostics type="bomcommon:Diagnostic[]">
|
|
62
|
+
<documentation>diagnostics. TS type: bomcommon:Diagnostic[]. (required)</documentation>
|
|
63
|
+
</diagnostics>
|
|
64
|
+
</properties>
|
|
65
|
+
|
|
66
|
+
</block>
|
|
@@ -36,11 +36,29 @@
|
|
|
36
36
|
<baseType>core:Capability</baseType>
|
|
37
37
|
<is>Semantic type checks on BomDocument using TypeRegistry</is>
|
|
38
38
|
|
|
39
|
-
<documentation>
|
|
39
|
+
<documentation>
|
|
40
|
+
Semantic type checks on BomDocument using TypeRegistry.
|
|
41
|
+
|
|
42
|
+
Existence is classified per declared ValueType — there is no shared MemberReference parent:
|
|
43
|
+
|
|
44
|
+
- TypeReference, PackageReference, InstanceReference, PropertyReference, AggregationReference,
|
|
45
|
+
AssociationReference, CapabilityReference, and the matching *ReferenceEntity wrappers
|
|
46
|
+
- Identifier types (`TypeIdentifier`, `MemberIdentifier`, …) are syntax-only and are not
|
|
47
|
+
existence-checked
|
|
48
|
+
|
|
49
|
+
After the reference walk, canonical BML literals with a declared PrimitiveType are
|
|
50
|
+
checked via fwcap:EvaluateParseValue (property.value / values[namespace=""]).
|
|
51
|
+
Prefixed / annotation-namespaced PropertyValueEntry values (scad:value and other
|
|
52
|
+
Annotation FQNs) are not validated today — they are target-language facets, not
|
|
53
|
+
BML lexical values. TODO: a matching prefixed type (for example scad:type for
|
|
54
|
+
scad:value) so each facet can be parseValue-checked in its own language.
|
|
55
|
+
Failure → BML_INVALID_VALUE. Existence stays on the reference walk.
|
|
56
|
+
</documentation>
|
|
40
57
|
|
|
41
58
|
<references>
|
|
42
59
|
<see type="fwcap:ResolveEffectiveMembers" relation="SeeAlso" />
|
|
43
60
|
<see type="fwcap:ParseExpression" relation="SeeAlso" />
|
|
61
|
+
<see type="fwcap:EvaluateParseValue" relation="SeeAlso" />
|
|
44
62
|
</references>
|
|
45
63
|
|
|
46
64
|
<properties>
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
|
|
41
41
|
<properties>
|
|
42
42
|
<codes type="type:Text[]">
|
|
43
|
-
<documentation>Ordered: BML_BOOTSTRAP_READ_ERROR, BML_CONSTRAINT_INFORMATION, BML_CONSTRAINT_TARGET_MISMATCH, BML_CONSTRAINT_UNKNOWN, BML_CONSTRAINT_VIOLATION, BML_CONSTRAINT_WARNING, BML_DUPLICATE_EMBEDDED_BLOCK, BML_DUPLICATE_MEMBER_VISIBILITY_VARIANT, BML_EMBEDDED_BLOCKS_ON_SUBBLOCK, BML_EXPRESSION_PARSE_ERROR, BML_LIBRARY_NESTING_VIOLATION, BML_LIBRARY_RESOLVE_ERROR, BML_MEMBER_COLLISION, BML_MISSING_ID, BML_MISSING_VERSION, BML_NESTED_EMBEDDED_BLOCKS, BML_OVERRIDE_REQUIRED, BML_OVERRIDE_WITHOUT_PARENT, BML_PRESET_CYCLE, BML_READONLY_MEMBER_WRITE, BML_SUBBLOCK_TYPE_MISMATCH, BML_TYPE_BOUND_NOT_SATISFIED, BML_UNRESOLVABLE_INSTANCE_REF, BML_UNKNOWN_BASE_TYPE, BML_UNKNOWN_CONTRACT, BML_UNKNOWN_TYPE, BML_UNKNOWN_PROPERTY, BML_UNKNOWN_VERSION, BML_VISIBILITY_PRIVATE_OVERRIDE (required)</documentation>
|
|
43
|
+
<documentation>Ordered: BML_BOOTSTRAP_READ_ERROR, BML_CONSTRAINT_INFORMATION, BML_CONSTRAINT_TARGET_MISMATCH, BML_CONSTRAINT_UNKNOWN, BML_CONSTRAINT_VIOLATION, BML_CONSTRAINT_WARNING, BML_DUPLICATE_EMBEDDED_BLOCK, BML_DUPLICATE_MEMBER_VISIBILITY_VARIANT, BML_EMBEDDED_BLOCKS_ON_SUBBLOCK, BML_EXPRESSION_PARSE_ERROR, BML_EXPR_NOT_ALLOWED_IN_INTERPOLATION, BML_EXPR_SYNTAX_ERROR, BML_EXPR_TYPE_MISMATCH, BML_GENERIC_CONSTRAINT_VIOLATION, BML_GENERICS_ARGUMENT_MISMATCH, BML_GENERICS_DIRECTIVE_NOT_ALLOWED, BML_INVALID_VALUE, BML_LIBRARY_NESTING_VIOLATION, BML_LIBRARY_RESOLVE_ERROR, BML_MEMBER_COLLISION, BML_MISSING_GENERIC_TYPE_ARGUMENT, BML_MISSING_ID, BML_MISSING_VERSION, BML_NESTED_EMBEDDED_BLOCKS, BML_OPEN_GENERIC_INSTANCE, BML_OVERRIDE_REQUIRED, BML_OVERRIDE_WITHOUT_PARENT, BML_PRESET_CYCLE, BML_READONLY_MEMBER_WRITE, BML_SUBBLOCK_TYPE_MISMATCH, BML_TYPE_BOUND_NOT_SATISFIED, BML_UNRESOLVABLE_INSTANCE_REF, BML_UNKNOWN_BASE_TYPE, BML_UNKNOWN_CONTRACT, BML_UNKNOWN_TYPE, BML_UNKNOWN_PROPERTY, BML_UNKNOWN_VERSION, BML_VISIBILITY_PRIVATE_OVERRIDE (required)</documentation>
|
|
44
44
|
</codes>
|
|
45
45
|
</properties>
|
|
46
46
|
|
|
@@ -39,20 +39,39 @@
|
|
|
39
39
|
|
|
40
40
|
<documentation>Diagnostic codes emitted by framework utilities (see fwconfig:FrameworkDiagnosticCodes):
|
|
41
41
|
|
|
42
|
-
validateTypes:
|
|
42
|
+
validateTypes (type-driven reference walk — declared ValueType, never the field name):
|
|
43
43
|
• BML_UNKNOWN_BASE_TYPE — baseType FQN not in TypeRegistry (at baseTypeSource)
|
|
44
44
|
• BML_UNKNOWN_CONTRACT — contracts[] FQN not in TypeRegistry
|
|
45
|
-
• BML_UNKNOWN_TYPE —
|
|
46
|
-
•
|
|
45
|
+
• BML_UNKNOWN_TYPE — TypeReference / TypeReferenceEntity value, PackageReference, see type=/relation=/language=, member types, groups, language — FQN or package not in TypeRegistry and not a well-known primitive
|
|
46
|
+
• BML_UNKNOWN_PROPERTY — PropertyReference / AggregationReference / AssociationReference / CapabilityReference path does not resolve (or BML_UNKNOWN_TYPE if the owning type cannot be resolved)
|
|
47
|
+
• BML_UNRESOLVABLE_INSTANCE_REF — InstanceReference / InstanceReferenceEntity value does not resolve to a document instance id
|
|
48
|
+
• BML_TYPE_BOUND_NOT_SATISFIED — TypeReference(B) / TypeReferenceEntity(B) value fails bound B (capability throws[] defaults to core:Exception)
|
|
49
|
+
TypeIdentifier / PackageIdentifier / InstanceIdentifier / MemberIdentifier (and *IdentifierEntity) values are not existence-checked. block.type is TypeIdentifier.
|
|
47
50
|
• BML_MEMBER_COLLISION — duplicate member identity in effective set
|
|
48
51
|
• BML_OVERRIDE_WITHOUT_PARENT — override without resolvable base member
|
|
49
52
|
• BML_OVERRIDE_REQUIRED — override on non-overridable member
|
|
50
53
|
• BML_EXPRESSION_PARSE_ERROR — parseExpression failed on ExpressionValue.raw
|
|
54
|
+
• BML_EXPR_SYNTAX_ERROR — unclosed ${} in interpolated text
|
|
55
|
+
• BML_EXPR_NOT_ALLOWED_IN_INTERPOLATION — hole uses @model, @bean, or a forbidden call
|
|
56
|
+
• BML_EXPR_TYPE_MISMATCH — interpolated text on a non-Text member
|
|
57
|
+
• BML_INVALID_VALUE — PrimitiveType.parseValue threw on a canonical BML literal
|
|
58
|
+
(property.value, values[namespace=""], instance memberValues, TypeReferenceEntity.value).
|
|
59
|
+
Prefixed values (scad:value and other Annotation FQNs) are not validated today.
|
|
60
|
+
TODO: a matching prefixed type (scad:type for scad:value) so each facet can be
|
|
61
|
+
checked in its target language. Message is the thrown Error text. Expressions,
|
|
62
|
+
interpolation, unions, StructType, and EnumType are skipped.
|
|
51
63
|
|
|
52
64
|
validateInstances:
|
|
53
65
|
• BML_UNKNOWN_TYPE — composition instance typeFqn not in TypeRegistry
|
|
54
66
|
• BML_UNKNOWN_PROPERTY — instance memberValues key not in effective members (error)
|
|
55
67
|
|
|
68
|
+
validateGenerics:
|
|
69
|
+
• BML_OPEN_GENERIC_INSTANCE — aggregated domain Block instance still has open genericTypes without bml:generics (not TypeReferenceEntity sugar)
|
|
70
|
+
• BML_GENERICS_DIRECTIVE_NOT_ALLOWED — bml:generics not on a Block instance (including TypeReferenceEntity QName sugar)
|
|
71
|
+
• BML_GENERICS_ARGUMENT_MISMATCH — bml:generics does not match declared genericTypes (including on a non-generic type)
|
|
72
|
+
• BML_MISSING_GENERIC_TYPE_ARGUMENT — directive present but a required argument has no defaultType
|
|
73
|
+
• BML_GENERIC_CONSTRAINT_VIOLATION — argument fails parameter baseType via satisfiesTypeBound
|
|
74
|
+
|
|
56
75
|
validateVersions:
|
|
57
76
|
• BML_MISSING_VERSION — standalone root block missing effective version (non-framework convention)
|
|
58
77
|
• BML_UNKNOWN_VERSION — bml:version pin does not match registered block version
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
resolveContracts resolves each contracts[] FQN via TypeRegistry; unknown contract →
|
|
49
49
|
BML_UNKNOWN_CONTRACT (validateTypes).
|
|
50
50
|
memberIdentityKey(member) = (namespace ?? "") + ":" + name — collision detection key.
|
|
51
|
+
findLocalMember(block, member) looks up that key in block.members only (not inherited).
|
|
51
52
|
|
|
52
53
|
Partial merge: later layer replaces only explicitly authored attributes on the member.
|
|
53
54
|
Used by validateTypes (member collision, override rules) and validateConstraints (effective
|
|
@@ -59,6 +60,7 @@
|
|
|
59
60
|
<see type="fwdocumentation:ExpressionParsing" relation="ReadNext" />
|
|
60
61
|
<see type="fwcap:ResolveEffectiveMembers" relation="Defines" />
|
|
61
62
|
<see type="fwcap:ResolveContracts" relation="SeeAlso" />
|
|
63
|
+
<see type="fwcap:FindLocalMember" relation="SeeAlso" />
|
|
62
64
|
</references>
|
|
63
65
|
|
|
64
66
|
</block>
|
|
@@ -38,12 +38,15 @@
|
|
|
38
38
|
<is>parseExpression AST — no Urmodell writeback (B4)</is>
|
|
39
39
|
|
|
40
40
|
<documentation>parseExpression(source) parses expression text into an ExpressionNode AST.
|
|
41
|
+
parseInterpolatedText(source) scans Text for ${} holes (restricted profile).
|
|
42
|
+
Lookup is the same as full expressions: size ≡ #this.size, this ≡ #this.this.
|
|
41
43
|
Returns ParseExpressionOutcome: { ok: true, result } | { ok: false, error }.
|
|
42
44
|
|
|
43
|
-
Parser stores ExpressionValue.raw only (B4).
|
|
44
|
-
at validation time and emits BML_EXPRESSION_PARSE_ERROR
|
|
45
|
+
Parser stores ExpressionValue.raw / InterpolatedTextValue.raw only (B4).
|
|
46
|
+
validateTypes re-parses at validation time and emits BML_EXPRESSION_PARSE_ERROR
|
|
47
|
+
or BML_EXPR_NOT_ALLOWED_IN_INTERPOLATION on failure.
|
|
45
48
|
|
|
46
|
-
AST node kinds: literal, array, object, property, call, binary.
|
|
49
|
+
AST node kinds: literal, array, object, property, call, binary, interpolated.
|
|
47
50
|
Optional resultTypeFqn on ParseExpressionResult for typed expression metadata.
|
|
48
51
|
|
|
49
52
|
Expression AST is a Stage-2 utility — never written back to Urmodell member values.</documentation>
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
|
|
40
40
|
<documentation><![CDATA[Public exports from @blockml/framework (packages/framework/src/index.ts):
|
|
41
41
|
|
|
42
|
-
TypeRegistry — class; register/get/has/keys/size on BomDocument index
|
|
42
|
+
TypeRegistry — class; register/get/has/keys/size/withOverlay on BomDocument index
|
|
43
43
|
bootstrapTypeRegistry(options?) → BootstrapResult
|
|
44
44
|
bootstrapFullProjectRegistry({ rootDir, srcDir?, libraries? }) → BootstrapResult
|
|
45
45
|
defaultBootstrapPaths(rootDir?) → string[]
|
|
@@ -58,9 +58,15 @@
|
|
|
58
58
|
resolveContracts(block, registry) → MemberDefinition[] (contract slice; used by resolveEffectiveMembers)
|
|
59
59
|
collectBaseTypeChain(block, registry) → BlockDefinition[]
|
|
60
60
|
memberIdentityKey(member) → string
|
|
61
|
+
findLocalMember(block, member) → MemberDefinition | undefined
|
|
61
62
|
parseExpression(source) → ParseExpressionOutcome
|
|
63
|
+
parseInterpolatedText(source) → ParseExpressionOutcome
|
|
64
|
+
evaluateExpression(node, scope) → value
|
|
65
|
+
evaluateInterpolatedText(source, scope) → Text
|
|
62
66
|
validateTypes(document, registry) → Diagnostic[]
|
|
63
67
|
validateVersions(document, registry) → Diagnostic[]
|
|
68
|
+
validateInstances(document, registry) → Diagnostic[]
|
|
69
|
+
validateGenerics(document, registry) → Diagnostic[]
|
|
64
70
|
validateConstraints(document, registry) → Diagnostic[]
|
|
65
71
|
getPropertyNumericValue(property) → number | undefined
|
|
66
72
|
isLiteralValue(value) → boolean
|
|
@@ -47,8 +47,9 @@
|
|
|
47
47
|
except trees already covered by options.paths (srcDir / corpus). Missing Library path →
|
|
48
48
|
BML_LIBRARY_RESOLVE_ERROR. Outer re-export of a block listed in a nested inner library's
|
|
49
49
|
blocks (via subLibraries, including transitive nested inners) →
|
|
50
|
-
BML_LIBRARY_NESTING_VIOLATION. Duplicate files of the same
|
|
51
|
-
|
|
50
|
+
BML_LIBRARY_NESTING_VIOLATION. Duplicate files of the same type FQN are resolved by
|
|
51
|
+
source priority: a path not under node_modules (workspace / project sources) wins over
|
|
52
|
+
an npm copy; same-origin last write wins. The losing file is not compared and is not kept.
|
|
52
53
|
|
|
53
54
|
defaultBootstrapPaths(rootDir?) returns BlockML srcDir roots for production
|
|
54
55
|
npm dependencies (package.json dependencies + optionalDependencies) of the nearest
|
|
@@ -61,17 +62,17 @@
|
|
|
61
62
|
extras (config.libraries / --libraries), deduped by realpath.
|
|
62
63
|
|
|
63
64
|
bootstrapFullProjectRegistry({ rootDir, srcDir?, libraries? }) is the shared
|
|
64
|
-
entry point for `blockml validate --all
|
|
65
|
+
entry point for `blockml validate --all`, `@blockml/search`, and `@blockml/graph`. It sets
|
|
65
66
|
corpus paths to projectSourceRoots (this package srcDir plus local packages/*
|
|
66
67
|
BlockML modules) and library seeds to resolveLibrarySeeds, then calls
|
|
67
68
|
bootstrapTypeRegistry. The resulting registry is the effective BML corpus:
|
|
68
69
|
local project files plus the library graph including npm BlockML packages.
|
|
69
70
|
|
|
70
71
|
bootstrapTypeRegistry also indexes Library.bml under all BlockML packages found in
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
workspace packages/ and node_modules along the directory walk (FQN search space).
|
|
73
|
+
Local srcDir and workspace packages are indexed before node_modules.
|
|
74
|
+
resolveDepCandidate / findLibraryFileForType pick workspace over npm when the same
|
|
75
|
+
Library type FQN exists in both (Core dogfooding against an installed copy).
|
|
75
76
|
|
|
76
77
|
BootstrapResult: { registry, diagnostics, exportsByLibrary?, trace? }
|
|
77
78
|
trace lists corpusPaths, seeds, searchRoots (index only), librariesVisited, and
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
<baseType>framework:FrameworkType</baseType>
|
|
37
37
|
<is>Abstract union of expression AST node variants</is>
|
|
38
38
|
|
|
39
|
-
<documentation>Discriminated by kind: literal | array | object | property | call | binary.</documentation>
|
|
39
|
+
<documentation>Discriminated by kind: literal | array | object | property | call | binary | interpolated.</documentation>
|
|
40
40
|
|
|
41
41
|
<references>
|
|
42
42
|
<see type="fwexpression:LiteralExpressionNode" relation="SeeAlso" />
|