@blockml/compiler 0.1.0
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/compiler/runtime/Library.bml +121 -0
- package/blocks/org/blockml/bml/compiler/runtime/README.bml +60 -0
- package/blocks/org/blockml/bml/compiler/runtime/RuntimeType.bml +36 -0
- package/blocks/org/blockml/bml/compiler/runtime/api/CompileBomOptions.bml +46 -0
- package/blocks/org/blockml/bml/compiler/runtime/api/CompileInput.bml +43 -0
- package/blocks/org/blockml/bml/compiler/runtime/api/CompileOptions.bml +44 -0
- package/blocks/org/blockml/bml/compiler/runtime/api/CompileRequest.bml +42 -0
- package/blocks/org/blockml/bml/compiler/runtime/api/CompileScope.bml +45 -0
- package/blocks/org/blockml/bml/compiler/runtime/api/CompileScopeKind.bml +44 -0
- package/blocks/org/blockml/bml/compiler/runtime/api/CompilerResult.bml +43 -0
- package/blocks/org/blockml/bml/compiler/runtime/api/RenderContext.bml +43 -0
- package/blocks/org/blockml/bml/compiler/runtime/api/RenderOutput.bml +43 -0
- package/blocks/org/blockml/bml/compiler/runtime/api/RenderOutputFile.bml +42 -0
- package/blocks/org/blockml/bml/compiler/runtime/api/RenderSession.bml +49 -0
- package/blocks/org/blockml/bml/compiler/runtime/api/RenderTarget.bml +44 -0
- package/blocks/org/blockml/bml/compiler/runtime/api/ResolvedScope.bml +44 -0
- package/blocks/org/blockml/bml/compiler/runtime/api/ScopeConfigHints.bml +43 -0
- package/blocks/org/blockml/bml/compiler/runtime/capability/BuildRenderSession.bml +49 -0
- package/blocks/org/blockml/bml/compiler/runtime/capability/ClearTargets.bml +41 -0
- package/blocks/org/blockml/bml/compiler/runtime/capability/CompileBmlToBom.bml +52 -0
- package/blocks/org/blockml/bml/compiler/runtime/capability/CompileBmlToOutput.bml +54 -0
- package/blocks/org/blockml/bml/compiler/runtime/capability/CompileBomToOutput.bml +60 -0
- package/blocks/org/blockml/bml/compiler/runtime/capability/CompileToOutput.bml +58 -0
- package/blocks/org/blockml/bml/compiler/runtime/capability/CreateRenderContext.bml +54 -0
- package/blocks/org/blockml/bml/compiler/runtime/capability/GetTarget.bml +48 -0
- package/blocks/org/blockml/bml/compiler/runtime/capability/RegisterTarget.bml +47 -0
- package/blocks/org/blockml/bml/compiler/runtime/capability/RegisteredTargetNames.bml +41 -0
- package/blocks/org/blockml/bml/compiler/runtime/capability/ResolveScope.bml +54 -0
- package/blocks/org/blockml/bml/compiler/runtime/capability/ScopeAccepts.bml +51 -0
- package/blocks/org/blockml/bml/compiler/runtime/capability/ValidateRegistryDocuments.bml +51 -0
- package/blocks/org/blockml/bml/compiler/runtime/config/RuntimeConstants.bml +43 -0
- package/blocks/org/blockml/bml/compiler/runtime/documentation/ArchitectureOverview.bml +49 -0
- package/blocks/org/blockml/bml/compiler/runtime/documentation/CompileIO.bml +44 -0
- package/blocks/org/blockml/bml/compiler/runtime/documentation/CompileScopeRules.bml +46 -0
- package/blocks/org/blockml/bml/compiler/runtime/documentation/DesignDecisions.bml +47 -0
- package/blocks/org/blockml/bml/compiler/runtime/documentation/Diagnostics.bml +47 -0
- package/blocks/org/blockml/bml/compiler/runtime/documentation/ExternalTargetContract.bml +63 -0
- package/blocks/org/blockml/bml/compiler/runtime/documentation/Introduction.bml +49 -0
- package/blocks/org/blockml/bml/compiler/runtime/documentation/LayerSeparation.bml +48 -0
- package/blocks/org/blockml/bml/compiler/runtime/documentation/PackageOwnership.bml +46 -0
- package/blocks/org/blockml/bml/compiler/runtime/documentation/PublicApi.bml +52 -0
- package/blocks/org/blockml/bml/compiler/runtime/documentation/RenderContextRules.bml +47 -0
- package/blocks/org/blockml/bml/compiler/runtime/documentation/ScopeExclusions.bml +43 -0
- package/blocks/org/blockml/bml/compiler/runtime/documentation/TargetRegistry.bml +48 -0
- package/blocks/org/blockml/bml/compiler/runtime/documentation/V1Scope.bml +50 -0
- package/dist/compile-bml-to-bom.d.ts +6 -0
- package/dist/compile-bml-to-bom.d.ts.map +1 -0
- package/dist/compile-bml-to-bom.js +51 -0
- package/dist/compile-bml-to-bom.js.map +1 -0
- package/dist/compile-to-output.d.ts +6 -0
- package/dist/compile-to-output.d.ts.map +1 -0
- package/dist/compile-to-output.js +198 -0
- package/dist/compile-to-output.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/render-context.d.ts +12 -0
- package/dist/render-context.d.ts.map +1 -0
- package/dist/render-context.js +33 -0
- package/dist/render-context.js.map +1 -0
- package/dist/scope.d.ts +8 -0
- package/dist/scope.d.ts.map +1 -0
- package/dist/scope.js +71 -0
- package/dist/scope.js.map +1 -0
- package/dist/target-registry.d.ts +6 -0
- package/dist/target-registry.d.ts.map +1 -0
- package/dist/target-registry.js +41 -0
- package/dist/target-registry.js.map +1 -0
- package/dist/types.d.ts +83 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Compiler Runtime Documentation — LayerSeparation
|
|
3
|
+
FQN: org.blockml.bml.compiler.runtime.documentation.LayerSeparation
|
|
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:bomcommon="org.blockml.bml.bom.common"
|
|
14
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
15
|
+
xmlns:cli="org.blockml.bml.cli"
|
|
16
|
+
xmlns:core="org.blockml.bml.core"
|
|
17
|
+
xmlns:def="org.blockml.bml.definition"
|
|
18
|
+
xmlns:framework="org.blockml.bml.framework"
|
|
19
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
20
|
+
xmlns:runtime="org.blockml.bml.compiler.runtime"
|
|
21
|
+
xmlns:runapi="org.blockml.bml.compiler.runtime.api"
|
|
22
|
+
xmlns:runcap="org.blockml.bml.compiler.runtime.capability"
|
|
23
|
+
xmlns:runconfig="org.blockml.bml.compiler.runtime.config"
|
|
24
|
+
xmlns:rundocumentation="org.blockml.bml.compiler.runtime.documentation"
|
|
25
|
+
xmlns:type="org.blockml.bml.type"
|
|
26
|
+
xmlns:validator="org.blockml.bml.compiler.validator"
|
|
27
|
+
xmlns:doc="org.blockml.bml.documentation">
|
|
28
|
+
|
|
29
|
+
<name>LayerSeparation</name>
|
|
30
|
+
<type>rundocumentation:LayerSeparation</type>
|
|
31
|
+
<baseType>core:Documentation</baseType>
|
|
32
|
+
<is>What this library owns versus neighbors</is>
|
|
33
|
+
|
|
34
|
+
<documentation>Layers:
|
|
35
|
+
• org.blockml.bml.compiler.runtime.* (this library) — facade, registry, scope, RenderContext
|
|
36
|
+
• org.blockml.bml.compiler.parser.* / validator.* — Stage 1–2 algorithms
|
|
37
|
+
• org.blockml.bml.framework.* — TypeRegistry bootstrap used by compileToOutput
|
|
38
|
+
• org.blockml.bml.cli.* — config bootstrap, write files, C5/C6, exit codes
|
|
39
|
+
• target libraries — RenderTarget.render and typed targetOptions
|
|
40
|
+
|
|
41
|
+
Do not double-maintain CLI command matrices or target particle rules here.</documentation>
|
|
42
|
+
<references>
|
|
43
|
+
<see type="rundocumentation:ArchitectureOverview" relation="ReadNext"></see>
|
|
44
|
+
<see type="cli:Library" relation="SeeAlso"></see>
|
|
45
|
+
<see type="framework:Library" relation="SeeAlso"></see>
|
|
46
|
+
</references>
|
|
47
|
+
|
|
48
|
+
</block>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Compiler Runtime Documentation — PackageOwnership
|
|
3
|
+
FQN: org.blockml.bml.compiler.runtime.documentation.PackageOwnership
|
|
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:bomcommon="org.blockml.bml.bom.common"
|
|
14
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
15
|
+
xmlns:cli="org.blockml.bml.cli"
|
|
16
|
+
xmlns:core="org.blockml.bml.core"
|
|
17
|
+
xmlns:def="org.blockml.bml.definition"
|
|
18
|
+
xmlns:framework="org.blockml.bml.framework"
|
|
19
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
20
|
+
xmlns:runtime="org.blockml.bml.compiler.runtime"
|
|
21
|
+
xmlns:runapi="org.blockml.bml.compiler.runtime.api"
|
|
22
|
+
xmlns:runcap="org.blockml.bml.compiler.runtime.capability"
|
|
23
|
+
xmlns:runconfig="org.blockml.bml.compiler.runtime.config"
|
|
24
|
+
xmlns:rundocumentation="org.blockml.bml.compiler.runtime.documentation"
|
|
25
|
+
xmlns:type="org.blockml.bml.type"
|
|
26
|
+
xmlns:validator="org.blockml.bml.compiler.validator"
|
|
27
|
+
xmlns:doc="org.blockml.bml.documentation">
|
|
28
|
+
|
|
29
|
+
<name>PackageOwnership</name>
|
|
30
|
+
<type>rundocumentation:PackageOwnership</type>
|
|
31
|
+
<baseType>core:Documentation</baseType>
|
|
32
|
+
<is>What belongs in @blockml/compiler vs neighbors</is>
|
|
33
|
+
|
|
34
|
+
<documentation>Owns: compileToOutput and sugar, Target Registry API, ResolveScope/ScopeAccepts,
|
|
35
|
+
RenderContext/Session, CompileRequest/Options, CompilerResult, C1–C7 contracts,
|
|
36
|
+
orchestration of parse/validate/bootstrap for Stage-3.
|
|
37
|
+
|
|
38
|
+
Does not own: CLI commands, file write, exit codes, C5/C6 (cli);
|
|
39
|
+
parser/serializer/validator algorithms; framework TypeRegistry internals;
|
|
40
|
+
target Options and emit; MachineBlocks SCAD NativeBlock.</documentation>
|
|
41
|
+
<references>
|
|
42
|
+
<see type="rundocumentation:ScopeExclusions" relation="ReadNext"></see>
|
|
43
|
+
<see type="cli:Library" relation="SeeAlso"></see>
|
|
44
|
+
</references>
|
|
45
|
+
|
|
46
|
+
</block>
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Compiler Runtime Documentation — PublicApi
|
|
3
|
+
FQN: org.blockml.bml.compiler.runtime.documentation.PublicApi
|
|
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:bomcommon="org.blockml.bml.bom.common"
|
|
14
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
15
|
+
xmlns:cli="org.blockml.bml.cli"
|
|
16
|
+
xmlns:core="org.blockml.bml.core"
|
|
17
|
+
xmlns:def="org.blockml.bml.definition"
|
|
18
|
+
xmlns:framework="org.blockml.bml.framework"
|
|
19
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
20
|
+
xmlns:runtime="org.blockml.bml.compiler.runtime"
|
|
21
|
+
xmlns:runapi="org.blockml.bml.compiler.runtime.api"
|
|
22
|
+
xmlns:runcap="org.blockml.bml.compiler.runtime.capability"
|
|
23
|
+
xmlns:runconfig="org.blockml.bml.compiler.runtime.config"
|
|
24
|
+
xmlns:rundocumentation="org.blockml.bml.compiler.runtime.documentation"
|
|
25
|
+
xmlns:type="org.blockml.bml.type"
|
|
26
|
+
xmlns:validator="org.blockml.bml.compiler.validator"
|
|
27
|
+
xmlns:doc="org.blockml.bml.documentation">
|
|
28
|
+
|
|
29
|
+
<name>PublicApi</name>
|
|
30
|
+
<type>rundocumentation:PublicApi</type>
|
|
31
|
+
<baseType>core:Documentation</baseType>
|
|
32
|
+
<is>Public TypeScript surface mirrored in this library</is>
|
|
33
|
+
|
|
34
|
+
<documentation>Exports (packages/compiler/src/index.ts):
|
|
35
|
+
Types: CompileScopeKind, CompileInput, CompileScope, CompileRequest, CompileOptions,
|
|
36
|
+
CompileBomOptions, CompilerResult, RenderOutput, RenderOutputFile, RenderSession,
|
|
37
|
+
RenderContext, RenderTarget, ScopeConfigHints, ResolvedScope.
|
|
38
|
+
Registry: registerTarget, getTarget, clearTargets, registeredTargetNames.
|
|
39
|
+
Scope: resolveScope, scopeAccepts.
|
|
40
|
+
Stage 1–2 helpers: compileBmlToBom, validateRegistryDocuments.
|
|
41
|
+
Facade: compileToOutput, compileBomToOutput, compileBmlToOutput.
|
|
42
|
+
Context: createRenderContext, buildRenderSession.
|
|
43
|
+
|
|
44
|
+
Modeled as api/*, config/RuntimeConstants, and capability/* on Library.blocks.</documentation>
|
|
45
|
+
<references>
|
|
46
|
+
<see type="rundocumentation:CompileIO" relation="ReadNext"></see>
|
|
47
|
+
<see type="runapi:CompileRequest" relation="SeeAlso"></see>
|
|
48
|
+
<see type="runcap:CompileToOutput" relation="SeeAlso"></see>
|
|
49
|
+
<see type="runapi:RenderTarget" relation="SeeAlso"></see>
|
|
50
|
+
</references>
|
|
51
|
+
|
|
52
|
+
</block>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Compiler Runtime Documentation — RenderContextRules
|
|
3
|
+
FQN: org.blockml.bml.compiler.runtime.documentation.RenderContextRules
|
|
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:bomcommon="org.blockml.bml.bom.common"
|
|
14
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
15
|
+
xmlns:cli="org.blockml.bml.cli"
|
|
16
|
+
xmlns:core="org.blockml.bml.core"
|
|
17
|
+
xmlns:def="org.blockml.bml.definition"
|
|
18
|
+
xmlns:framework="org.blockml.bml.framework"
|
|
19
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
20
|
+
xmlns:runtime="org.blockml.bml.compiler.runtime"
|
|
21
|
+
xmlns:runapi="org.blockml.bml.compiler.runtime.api"
|
|
22
|
+
xmlns:runcap="org.blockml.bml.compiler.runtime.capability"
|
|
23
|
+
xmlns:runconfig="org.blockml.bml.compiler.runtime.config"
|
|
24
|
+
xmlns:rundocumentation="org.blockml.bml.compiler.runtime.documentation"
|
|
25
|
+
xmlns:type="org.blockml.bml.type"
|
|
26
|
+
xmlns:validator="org.blockml.bml.compiler.validator"
|
|
27
|
+
xmlns:doc="org.blockml.bml.documentation">
|
|
28
|
+
|
|
29
|
+
<name>RenderContextRules</name>
|
|
30
|
+
<type>rundocumentation:RenderContextRules</type>
|
|
31
|
+
<baseType>core:Documentation</baseType>
|
|
32
|
+
<is>RenderSession and RenderContext (C1)</is>
|
|
33
|
+
|
|
34
|
+
<documentation>RenderSession is immutable per compile after BuildRenderSession.
|
|
35
|
+
Stable session fields for registry targets: typeRegistry, sourceFilePath, outputBasePath,
|
|
36
|
+
targetName, scopeKind, libraryPaths?, corpusRoots?.
|
|
37
|
+
RenderContext holds session + blockFqn + outputRelativePath; child(overrides) forks a new
|
|
38
|
+
context sharing the same session. Per-node fields are for composition/domain renderers;
|
|
39
|
+
registry targets may ignore them and rely on request.scope plus session.
|
|
40
|
+
CreateRenderContext defaults empty FQN and relative path for the root call into target.render.</documentation>
|
|
41
|
+
<references>
|
|
42
|
+
<see type="rundocumentation:ExternalTargetContract" relation="ReadNext"></see>
|
|
43
|
+
<see type="runcap:BuildRenderSession" relation="SeeAlso"></see>
|
|
44
|
+
<see type="runcap:CreateRenderContext" relation="SeeAlso"></see>
|
|
45
|
+
</references>
|
|
46
|
+
|
|
47
|
+
</block>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Compiler Runtime Documentation — ScopeExclusions
|
|
3
|
+
FQN: org.blockml.bml.compiler.runtime.documentation.ScopeExclusions
|
|
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:bomcommon="org.blockml.bml.bom.common"
|
|
14
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
15
|
+
xmlns:cli="org.blockml.bml.cli"
|
|
16
|
+
xmlns:core="org.blockml.bml.core"
|
|
17
|
+
xmlns:def="org.blockml.bml.definition"
|
|
18
|
+
xmlns:framework="org.blockml.bml.framework"
|
|
19
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
20
|
+
xmlns:runtime="org.blockml.bml.compiler.runtime"
|
|
21
|
+
xmlns:runapi="org.blockml.bml.compiler.runtime.api"
|
|
22
|
+
xmlns:runcap="org.blockml.bml.compiler.runtime.capability"
|
|
23
|
+
xmlns:runconfig="org.blockml.bml.compiler.runtime.config"
|
|
24
|
+
xmlns:rundocumentation="org.blockml.bml.compiler.runtime.documentation"
|
|
25
|
+
xmlns:type="org.blockml.bml.type"
|
|
26
|
+
xmlns:validator="org.blockml.bml.compiler.validator"
|
|
27
|
+
xmlns:doc="org.blockml.bml.documentation">
|
|
28
|
+
|
|
29
|
+
<name>ScopeExclusions</name>
|
|
30
|
+
<type>rundocumentation:ScopeExclusions</type>
|
|
31
|
+
<baseType>core:Documentation</baseType>
|
|
32
|
+
<is>Explicitly out of compiler runtime V1 library scope</is>
|
|
33
|
+
|
|
34
|
+
<documentation>Out of scope for this library / V1:
|
|
35
|
+
• CLI targets[] bootstrap order and dual CLI model
|
|
36
|
+
• Writing RenderOutput files to disk
|
|
37
|
+
• Incremental .bom-cache (C5) and thumbnails (C6)
|
|
38
|
+
• Target-specific targetOptions schemas and emit
|
|
39
|
+
• Parser/serializer/validator mapping and constraint algorithms
|
|
40
|
+
• SCAD NativeBlock / engine-maker processors
|
|
41
|
+
• Codegen from BML to TypeScript (structural SSOT only)</documentation>
|
|
42
|
+
|
|
43
|
+
</block>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Compiler Runtime Documentation — TargetRegistry
|
|
3
|
+
FQN: org.blockml.bml.compiler.runtime.documentation.TargetRegistry
|
|
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:bomcommon="org.blockml.bml.bom.common"
|
|
14
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
15
|
+
xmlns:cli="org.blockml.bml.cli"
|
|
16
|
+
xmlns:core="org.blockml.bml.core"
|
|
17
|
+
xmlns:def="org.blockml.bml.definition"
|
|
18
|
+
xmlns:framework="org.blockml.bml.framework"
|
|
19
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
20
|
+
xmlns:runtime="org.blockml.bml.compiler.runtime"
|
|
21
|
+
xmlns:runapi="org.blockml.bml.compiler.runtime.api"
|
|
22
|
+
xmlns:runcap="org.blockml.bml.compiler.runtime.capability"
|
|
23
|
+
xmlns:runconfig="org.blockml.bml.compiler.runtime.config"
|
|
24
|
+
xmlns:rundocumentation="org.blockml.bml.compiler.runtime.documentation"
|
|
25
|
+
xmlns:type="org.blockml.bml.type"
|
|
26
|
+
xmlns:validator="org.blockml.bml.compiler.validator"
|
|
27
|
+
xmlns:doc="org.blockml.bml.documentation">
|
|
28
|
+
|
|
29
|
+
<name>TargetRegistry</name>
|
|
30
|
+
<type>rundocumentation:TargetRegistry</type>
|
|
31
|
+
<baseType>core:Documentation</baseType>
|
|
32
|
+
<is>Target Registry contract (C3)</is>
|
|
33
|
+
|
|
34
|
+
<documentation>In-memory Map of name → RenderTarget. registerTarget overwrites; getTarget may miss;
|
|
35
|
+
clearTargets empties; registeredTargetNames lists keys.
|
|
36
|
+
No default targets ship in @blockml/compiler. Hosts (CLI bootstrapTargets, tests, browsers)
|
|
37
|
+
call registerTarget before compileToOutput.
|
|
38
|
+
registerTarget validates: non-empty name; non-empty accepts with only valid CompileScopeKind
|
|
39
|
+
values; render is a function; validateRequest if present is a function. Invalid hosts throw
|
|
40
|
+
(programming error — not a BML authoring diagnostic).
|
|
41
|
+
Config targets[] and package loading order are CLI-owned (SeeAlso RuntimeBootstrap).</documentation>
|
|
42
|
+
<references>
|
|
43
|
+
<see type="rundocumentation:RenderContextRules" relation="ReadNext"></see>
|
|
44
|
+
<see type="runcap:RegisterTarget" relation="SeeAlso"></see>
|
|
45
|
+
<see type="cli:Library" relation="SeeAlso"></see>
|
|
46
|
+
</references>
|
|
47
|
+
|
|
48
|
+
</block>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Compiler Runtime Documentation — V1Scope
|
|
3
|
+
FQN: org.blockml.bml.compiler.runtime.documentation.V1Scope
|
|
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:bomcommon="org.blockml.bml.bom.common"
|
|
14
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
15
|
+
xmlns:cli="org.blockml.bml.cli"
|
|
16
|
+
xmlns:core="org.blockml.bml.core"
|
|
17
|
+
xmlns:def="org.blockml.bml.definition"
|
|
18
|
+
xmlns:framework="org.blockml.bml.framework"
|
|
19
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
20
|
+
xmlns:runtime="org.blockml.bml.compiler.runtime"
|
|
21
|
+
xmlns:runapi="org.blockml.bml.compiler.runtime.api"
|
|
22
|
+
xmlns:runcap="org.blockml.bml.compiler.runtime.capability"
|
|
23
|
+
xmlns:runconfig="org.blockml.bml.compiler.runtime.config"
|
|
24
|
+
xmlns:rundocumentation="org.blockml.bml.compiler.runtime.documentation"
|
|
25
|
+
xmlns:type="org.blockml.bml.type"
|
|
26
|
+
xmlns:validator="org.blockml.bml.compiler.validator"
|
|
27
|
+
xmlns:doc="org.blockml.bml.documentation">
|
|
28
|
+
|
|
29
|
+
<name>V1Scope</name>
|
|
30
|
+
<type>rundocumentation:V1Scope</type>
|
|
31
|
+
<baseType>core:Documentation</baseType>
|
|
32
|
+
<is>What V1 delivers</is>
|
|
33
|
+
|
|
34
|
+
<documentation>V1 includes:
|
|
35
|
+
• compileToOutput / compileBmlToOutput; compileBomToOutput BOM-first with required TypeRegistry
|
|
36
|
+
• In-memory Target Registry with no built-in targets; registerTarget validates contract
|
|
37
|
+
• Scope kinds document | library | corpus | auto with ScopeConfigHints merge
|
|
38
|
+
• Domain-agnostic RenderSession / RenderContext with child fork
|
|
39
|
+
• Opaque RenderOutput.files; CompilerResult envelope
|
|
40
|
+
• Diagnostics BML_UNKNOWN_TARGET, BML_TARGET_SCOPE_MISMATCH, BML_COMPILE_SCOPE_EMPTY,
|
|
41
|
+
BML_MISSING_TYPE_REGISTRY
|
|
42
|
+
• Browser-safe package surface (no Node-only APIs in public contracts)
|
|
43
|
+
|
|
44
|
+
V1 does NOT include CLI targets[] bootstrap, file I/O, incremental cache (C5),
|
|
45
|
+
thumbnails (C6), or target-specific emit.</documentation>
|
|
46
|
+
<references>
|
|
47
|
+
<see type="rundocumentation:PublicApi" relation="ReadNext"></see>
|
|
48
|
+
</references>
|
|
49
|
+
|
|
50
|
+
</block>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { BomDocument, Diagnostic } from "@blockml/bom";
|
|
2
|
+
import type { TypeRegistry } from "@blockml/framework";
|
|
3
|
+
import type { CompileInput, CompileOptions, CompilerResult } from "./types.js";
|
|
4
|
+
export declare function compileBmlToBom(input: CompileInput, options?: CompileOptions): CompilerResult<BomDocument>;
|
|
5
|
+
export declare function validateRegistryDocuments(registry: TypeRegistry, filePaths?: string[]): Diagnostic[];
|
|
6
|
+
//# sourceMappingURL=compile-bml-to-bom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-bml-to-bom.d.ts","sourceRoot":"","sources":["../src/compile-bml-to-bom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/E,wBAAgB,eAAe,CAC7B,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE,cAAmB,GAC3B,cAAc,CAAC,WAAW,CAAC,CAyB7B;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,YAAY,EACtB,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,UAAU,EAAE,CA4Bd"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { parse } from "@blockml/parser";
|
|
2
|
+
import { validate } from "@blockml/validator";
|
|
3
|
+
export function compileBmlToBom(input, options = {}) {
|
|
4
|
+
const parseResult = parse(input.source, { filePath: input.filePath });
|
|
5
|
+
const diagnostics = [...parseResult.diagnostics];
|
|
6
|
+
if (!parseResult.document) {
|
|
7
|
+
return {
|
|
8
|
+
output: null,
|
|
9
|
+
diagnostics,
|
|
10
|
+
success: diagnostics.some((d) => d.severity === "error") ? false : !parseResult.success,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
const validateOptions = { continueOnError: true };
|
|
14
|
+
if (options.typeRegistry) {
|
|
15
|
+
validateOptions.typeRegistry = options.typeRegistry;
|
|
16
|
+
}
|
|
17
|
+
const validateResult = validate(parseResult.document, validateOptions);
|
|
18
|
+
diagnostics.push(...validateResult.diagnostics);
|
|
19
|
+
const success = !diagnostics.some((d) => d.severity === "error");
|
|
20
|
+
return {
|
|
21
|
+
output: parseResult.document,
|
|
22
|
+
diagnostics,
|
|
23
|
+
success,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function validateRegistryDocuments(registry, filePaths) {
|
|
27
|
+
const seen = new Set();
|
|
28
|
+
const diagnostics = [];
|
|
29
|
+
const pathFilter = filePaths && filePaths.length > 0 ? new Set(filePaths) : undefined;
|
|
30
|
+
for (const fqn of registry.keys()) {
|
|
31
|
+
const doc = registry.get(fqn);
|
|
32
|
+
if (!doc) {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const filePath = doc.source?.filePath ?? fqn;
|
|
36
|
+
if (pathFilter && !pathFilter.has(filePath)) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (seen.has(filePath)) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
seen.add(filePath);
|
|
43
|
+
const result = validate(doc, {
|
|
44
|
+
typeRegistry: registry,
|
|
45
|
+
continueOnError: true,
|
|
46
|
+
});
|
|
47
|
+
diagnostics.push(...result.diagnostics);
|
|
48
|
+
}
|
|
49
|
+
return diagnostics;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=compile-bml-to-bom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-bml-to-bom.js","sourceRoot":"","sources":["../src/compile-bml-to-bom.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAI9C,MAAM,UAAU,eAAe,CAC7B,KAAmB,EACnB,UAA0B,EAAE;IAE5B,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtE,MAAM,WAAW,GAAiB,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAE/D,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC1B,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,WAAW;YACX,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO;SACxF,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAmC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IAClF,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,eAAe,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IACtD,CAAC;IACD,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACvE,WAAW,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAEhD,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IACjE,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,QAAQ;QAC5B,WAAW;QACX,OAAO;KACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,QAAsB,EACtB,SAAoB;IAEpB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,MAAM,UAAU,GACd,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAErE,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,IAAI,GAAG,CAAC;QAC7C,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEnB,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE;YAC3B,YAAY,EAAE,QAAQ;YACtB,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;QACH,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { BomDocument } from "@blockml/bom";
|
|
2
|
+
import type { CompileBomOptions, CompileInput, CompileOptions, CompileRequest, CompilerResult, RenderOutput, ScopeConfigHints } from "./types.js";
|
|
3
|
+
export declare function compileBomToOutput(document: BomDocument, targetName: string, options: CompileBomOptions): CompilerResult<RenderOutput>;
|
|
4
|
+
export declare function compileBmlToOutput(input: CompileInput, targetName: string, options?: CompileOptions): CompilerResult<RenderOutput>;
|
|
5
|
+
export declare function compileToOutput(request: CompileRequest, targetName: string, options?: CompileOptions, configHints?: ScopeConfigHints): CompilerResult<RenderOutput>;
|
|
6
|
+
//# sourceMappingURL=compile-to-output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-to-output.d.ts","sourceRoot":"","sources":["../src/compile-to-output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,cAAc,CAAC;AAU5D,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EAGZ,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAmIpB,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,WAAW,EACrB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,iBAAiB,GACzB,cAAc,CAAC,YAAY,CAAC,CAqE9B;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,cAAmB,GAC3B,cAAc,CAAC,YAAY,CAAC,CAM9B;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,cAAmB,EAC5B,WAAW,GAAE,gBAAqB,GACjC,cAAc,CAAC,YAAY,CAAC,CAwE9B"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { bootstrapTypeRegistry, defaultBootstrapPaths, TypeRegistry, } from "@blockml/framework";
|
|
2
|
+
import { compileBmlToBom, validateRegistryDocuments } from "./compile-bml-to-bom.js";
|
|
3
|
+
import { buildRenderSession, createRenderContext } from "./render-context.js";
|
|
4
|
+
import { resolveScope, scopeAccepts } from "./scope.js";
|
|
5
|
+
import { getTarget } from "./target-registry.js";
|
|
6
|
+
function bootstrapForScope(resolved, options) {
|
|
7
|
+
const rootDir = options.rootDir ?? process.cwd();
|
|
8
|
+
if (options.typeRegistry &&
|
|
9
|
+
(resolved.kind === "library" || resolved.kind === "corpus")) {
|
|
10
|
+
return { registry: options.typeRegistry, diagnostics: [] };
|
|
11
|
+
}
|
|
12
|
+
if (resolved.kind === "document" && resolved.document) {
|
|
13
|
+
const registry = options.typeRegistry ?? new TypeRegistry();
|
|
14
|
+
const bomResult = compileBmlToBom(resolved.document, {
|
|
15
|
+
...options,
|
|
16
|
+
typeRegistry: registry,
|
|
17
|
+
});
|
|
18
|
+
if (bomResult.output?.block.type) {
|
|
19
|
+
registry.register(bomResult.output);
|
|
20
|
+
}
|
|
21
|
+
return { registry, diagnostics: bomResult.diagnostics };
|
|
22
|
+
}
|
|
23
|
+
if (resolved.kind === "library" && resolved.libraries) {
|
|
24
|
+
const bootstrap = bootstrapTypeRegistry({
|
|
25
|
+
libraryPaths: resolved.libraries,
|
|
26
|
+
paths: defaultBootstrapPaths(rootDir),
|
|
27
|
+
rootDir,
|
|
28
|
+
});
|
|
29
|
+
if (options.typeRegistry) {
|
|
30
|
+
for (const fqn of bootstrap.registry.keys()) {
|
|
31
|
+
const doc = bootstrap.registry.get(fqn);
|
|
32
|
+
if (doc) {
|
|
33
|
+
options.typeRegistry.register(doc);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
registry: options.typeRegistry,
|
|
38
|
+
diagnostics: bootstrap.diagnostics,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return bootstrap;
|
|
42
|
+
}
|
|
43
|
+
const roots = resolved.kind === "corpus" && resolved.roots?.length
|
|
44
|
+
? resolved.roots
|
|
45
|
+
: defaultBootstrapPaths(rootDir);
|
|
46
|
+
const bootstrap = bootstrapTypeRegistry({
|
|
47
|
+
paths: roots,
|
|
48
|
+
rootDir,
|
|
49
|
+
});
|
|
50
|
+
if (options.typeRegistry) {
|
|
51
|
+
for (const fqn of bootstrap.registry.keys()) {
|
|
52
|
+
const doc = bootstrap.registry.get(fqn);
|
|
53
|
+
if (doc) {
|
|
54
|
+
options.typeRegistry.register(doc);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
registry: options.typeRegistry,
|
|
59
|
+
diagnostics: bootstrap.diagnostics,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return bootstrap;
|
|
63
|
+
}
|
|
64
|
+
function diagnostic(code, message, file) {
|
|
65
|
+
return {
|
|
66
|
+
severity: "error",
|
|
67
|
+
code,
|
|
68
|
+
message,
|
|
69
|
+
source: { file, line: 1, column: 1 },
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function renderWithTarget(target, request, sessionOptions, priorDiagnostics) {
|
|
73
|
+
const diagnostics = [...priorDiagnostics];
|
|
74
|
+
if (target.validateRequest) {
|
|
75
|
+
diagnostics.push(...target.validateRequest(request));
|
|
76
|
+
}
|
|
77
|
+
const session = buildRenderSession(sessionOptions);
|
|
78
|
+
const ctx = createRenderContext(session);
|
|
79
|
+
const output = target.render(request, ctx);
|
|
80
|
+
const success = !diagnostics.some((d) => d.severity === "error");
|
|
81
|
+
return { output, diagnostics, success };
|
|
82
|
+
}
|
|
83
|
+
function sessionOptionsFromResolved(resolved, registry, targetName, options) {
|
|
84
|
+
const sessionOptions = {
|
|
85
|
+
typeRegistry: registry,
|
|
86
|
+
targetName,
|
|
87
|
+
scopeKind: resolved.kind,
|
|
88
|
+
};
|
|
89
|
+
if (options.outputBasePath !== undefined) {
|
|
90
|
+
sessionOptions.outputBasePath = options.outputBasePath;
|
|
91
|
+
}
|
|
92
|
+
if (resolved.document?.filePath !== undefined) {
|
|
93
|
+
sessionOptions.sourceFilePath = resolved.document.filePath;
|
|
94
|
+
}
|
|
95
|
+
if (resolved.libraries !== undefined) {
|
|
96
|
+
sessionOptions.libraryPaths = resolved.libraries;
|
|
97
|
+
}
|
|
98
|
+
if (resolved.roots !== undefined) {
|
|
99
|
+
sessionOptions.corpusRoots = resolved.roots;
|
|
100
|
+
}
|
|
101
|
+
return sessionOptions;
|
|
102
|
+
}
|
|
103
|
+
export function compileBomToOutput(document, targetName, options) {
|
|
104
|
+
const fileHint = document.source?.filePath ?? options.rootDir ?? "<memory>";
|
|
105
|
+
if (!options.typeRegistry) {
|
|
106
|
+
return {
|
|
107
|
+
output: null,
|
|
108
|
+
diagnostics: [
|
|
109
|
+
diagnostic("BML_MISSING_TYPE_REGISTRY", "compileBomToOutput requires options.typeRegistry", fileHint),
|
|
110
|
+
],
|
|
111
|
+
success: false,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
const target = getTarget(targetName);
|
|
115
|
+
if (!target) {
|
|
116
|
+
return {
|
|
117
|
+
output: null,
|
|
118
|
+
diagnostics: [
|
|
119
|
+
diagnostic("BML_UNKNOWN_TARGET", `Unknown render target: ${targetName}`, fileHint),
|
|
120
|
+
],
|
|
121
|
+
success: false,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
if (!scopeAccepts("document", target.accepts)) {
|
|
125
|
+
return {
|
|
126
|
+
output: null,
|
|
127
|
+
diagnostics: [
|
|
128
|
+
diagnostic("BML_TARGET_SCOPE_MISMATCH", `Target "${targetName}" does not accept scope kind "document"`, fileHint),
|
|
129
|
+
],
|
|
130
|
+
success: false,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
const registry = options.typeRegistry;
|
|
134
|
+
const sourceFilePath = document.source?.filePath ?? "<memory>";
|
|
135
|
+
const diagnostics = [
|
|
136
|
+
...validateRegistryDocuments(registry, [sourceFilePath]),
|
|
137
|
+
];
|
|
138
|
+
const request = { scope: { kind: "document" } };
|
|
139
|
+
if (options.targetOptions !== undefined) {
|
|
140
|
+
request.targetOptions = options.targetOptions;
|
|
141
|
+
}
|
|
142
|
+
const sessionOptions = {
|
|
143
|
+
typeRegistry: registry,
|
|
144
|
+
targetName,
|
|
145
|
+
scopeKind: "document",
|
|
146
|
+
sourceFilePath,
|
|
147
|
+
};
|
|
148
|
+
if (options.outputBasePath !== undefined) {
|
|
149
|
+
sessionOptions.outputBasePath = options.outputBasePath;
|
|
150
|
+
}
|
|
151
|
+
return renderWithTarget(target, request, sessionOptions, diagnostics);
|
|
152
|
+
}
|
|
153
|
+
export function compileBmlToOutput(input, targetName, options = {}) {
|
|
154
|
+
return compileToOutput({ scope: { kind: "document", document: input } }, targetName, options);
|
|
155
|
+
}
|
|
156
|
+
export function compileToOutput(request, targetName, options = {}, configHints = {}) {
|
|
157
|
+
const diagnostics = [];
|
|
158
|
+
const target = getTarget(targetName);
|
|
159
|
+
const configFile = configHints.rootDir ?? "<config>";
|
|
160
|
+
if (!target) {
|
|
161
|
+
return {
|
|
162
|
+
output: null,
|
|
163
|
+
diagnostics: [
|
|
164
|
+
diagnostic("BML_UNKNOWN_TARGET", `Unknown render target: ${targetName}`, configFile),
|
|
165
|
+
],
|
|
166
|
+
success: false,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
const scopeHints = {};
|
|
170
|
+
const hintRoot = options.rootDir ?? configHints.rootDir;
|
|
171
|
+
if (hintRoot !== undefined) {
|
|
172
|
+
scopeHints.rootDir = hintRoot;
|
|
173
|
+
}
|
|
174
|
+
if (configHints.libraries !== undefined) {
|
|
175
|
+
scopeHints.libraries = configHints.libraries;
|
|
176
|
+
}
|
|
177
|
+
if (configHints.roots !== undefined) {
|
|
178
|
+
scopeHints.roots = configHints.roots;
|
|
179
|
+
}
|
|
180
|
+
const { resolved, diagnostics: scopeDiagnostics } = resolveScope(request.scope, scopeHints);
|
|
181
|
+
diagnostics.push(...scopeDiagnostics);
|
|
182
|
+
if (!resolved) {
|
|
183
|
+
return { output: null, diagnostics, success: false };
|
|
184
|
+
}
|
|
185
|
+
if (!scopeAccepts(resolved.kind, target.accepts)) {
|
|
186
|
+
diagnostics.push(diagnostic("BML_TARGET_SCOPE_MISMATCH", `Target "${targetName}" does not accept scope kind "${resolved.kind}"`, scopeHints.rootDir ?? "<config>"));
|
|
187
|
+
return { output: null, diagnostics, success: false };
|
|
188
|
+
}
|
|
189
|
+
const { registry, diagnostics: bootstrapDiagnostics } = bootstrapForScope(resolved, options);
|
|
190
|
+
diagnostics.push(...bootstrapDiagnostics);
|
|
191
|
+
// Stage-2 validation is reported via blockml validate; BlockDoc control gate renders
|
|
192
|
+
// the corpus for structural review without failing on semantic validation gaps.
|
|
193
|
+
if (resolved.kind === "document" && resolved.document) {
|
|
194
|
+
diagnostics.push(...validateRegistryDocuments(registry, [resolved.document.filePath]));
|
|
195
|
+
}
|
|
196
|
+
return renderWithTarget(target, request, sessionOptionsFromResolved(resolved, registry, targetName, options), diagnostics);
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=compile-to-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-to-output.js","sourceRoot":"","sources":["../src/compile-to-output.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { CompileScopeKind, CompileInput, CompileScope, CompileRequest, CompileOptions, CompileBomOptions, CompilerResult, RenderOutput, RenderOutputFile, RenderSession, RenderContext, RenderTarget, ScopeConfigHints, ResolvedScope, } from "./types.js";
|
|
2
|
+
export { registerTarget, getTarget, clearTargets, registeredTargetNames } from "./target-registry.js";
|
|
3
|
+
export { resolveScope, scopeAccepts } from "./scope.js";
|
|
4
|
+
export { compileBmlToBom, validateRegistryDocuments } from "./compile-bml-to-bom.js";
|
|
5
|
+
export { compileToOutput, compileBomToOutput, compileBmlToOutput, } from "./compile-to-output.js";
|
|
6
|
+
export { createRenderContext, buildRenderSession } from "./render-context.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACtG,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
|