| File | Responsibility |
|---|---|
| types.mbt | Shard config and output type definitions |
| html_builder.mbt | HTML generation utilities |
| serializer.mbt | JSON/HTML escape processing |
<div luna:id="counter"
luna:url="/static/counter.js"
luna:state='{"count":0}'
luna:client-trigger="load">
<!-- SSR content -->
</div>pub struct ShardConfig {
id : String // Component ID (luna:id)
script_url : String // Hydration script (luna:url)
trigger : TriggerType // Trigger (luna:client-trigger)
state : StateConfig // State config
ssr_content : String? // SSR HTML
include_loader : Bool // Embed loader
loader_url : String // Loader URL
}pub enum StateConfig {
Empty // No state
Inline(String) // Embed in luna:state attribute
ScriptRef(String) // Reference to <script id="...">
Url(String) // Fetch from external URL
}pub struct ShardConfig {
id : String
script_url : String
trigger : TriggerType
state : StateConfig
ssr_content : String?
include_loader : Bool
loader_url : String
}pub(all) enum StateConfig {
Empty
Inline(String)
ScriptRef(String)
Url(String)
}fn generate_lazy_shard(id : String, script_url : String, state_json : String, ssr_content : String) -> Stringfn generate_minimal_shard(id : String, script_url : String, state_json : String, ssr_content : String) -> Stringfn generate_standalone_shard(id : String, script_url : String, loader_url : String, state_json : String, ssr_content : String) -> Stringfn generate_state_script(id : String, json : String) -> Stringfn recommend_state_format(json_size : Int) -> String100KB: URL reference (needs server support)