Resolver Internals
The resolver is responsible for turning parsed templates into resolved HTML fragments.
Main file:
src/resolver/resolveComponents.js
Related files:
src/resolver/applyVariables.js
src/resolver/applyLoops.js
src/resolver/applyConditionals.js
Main page resolver
resolvePage(pageAst)
This function:
- creates an asset collection
- creates the page scope
- resolves the page template
- renders the layout if
@useis present - transforms built-ins
- returns resolved HTML, styles, scripts, and used built-ins
Scope creation
Page scope includes:
- global template scope
- page-local data
pagesite- loaded data from
@load collectionconvenience value when available
Resolution order
Template resolution happens in this order:
- raw code directives
- loops
- conditionals
- components
- variables
Components
Component resolution requires explicit imports.
The resolver builds an import map from:
@import Hero
@import sections/*
Then it scans for uppercase-starting component tags.
Layouts
Layouts are loaded from:
src/layouts/<Name>.csc
The declared layout name must match the expected name.
Built-ins
Built-in tags such as Icon are skipped during component import validation when enabled, then transformed later.
Data loading
resolveLoadDirectives() loads JSON data from src/data.
It supports:
- single JSON files
- JSON folders as arrays
- wildcard folder maps