HTMS (HTM Script) compiler - A declarative language for building web UIs
npm install @progalaxyelabs/htms-compilerHTMS (HTM Script) compiler - A declarative language for building web UIs with compile-time safety.
``bash`
npm install @progalaxyelabs/htms-compiler
`javascript
import { compile } from '@progalaxyelabs/htms-compiler';
const source =
component Button(text: string, onClick: function) {
button [onClick: onClick] {
{{ text }}
}
}
page home "/" {
Button(text: "Click Me", onClick: handleClick)
};
const result = compile(source);
if (result.success) {
console.log('Compiled successfully!');
result.files.forEach(file => {
console.log(Generated: ${file.path});${diag.severity}: ${diag.message}
// file.content contains the TypeScript code
});
} else {
console.error('Compilation errors:');
result.diagnostics.forEach(diag => {
console.error();`
});
}
HTMS is a declarative UI language that compiles to TypeScript with pure DOM API calls. It provides:
- Compile-time Safety - Component references validated at compile time
- Type-Safe - Full TypeScript output with type annotations
- XSS-Safe - Pure DOM API, no innerHTML
- Zero Runtime - Compiles to vanilla TypeScript/JavaScript
The compiler generates three TypeScript files:
1. templates.ts - Component render functions using DOM API
2. router.ts - SPA routing with hash-based navigation
3. events.ts - Global event bus and state management
`htms`
component Card(title: string, children: slot) {
div [class: "card"] {
h2 { {{ title }} }
@slot
}
}
`htms`
@if ctx.isLoggedIn {
p { {{ "Welcome back!" }} }
} @else {
p { {{ "Please log in" }} }
}
`htms`
@each ctx.items as item, index {
div { {{ item.name }} }
}
`htms`
button [onClick: handleClick] {
{{ "Click Me" }}
}
`htms
page home "/" {
h1 { {{ "Home Page" }} }
}
page about "/about" {
h1 { {{ "About Us" }} }
}
`
For command-line usage, install the CLI:
`bash
npm install -g @progalaxyelabs/htms-cli
htms compile app.htms -o dist/
htms compile app.htms --watch
htms check app.htms
`
Get syntax highlighting and diagnostics:
- Search for "HTMS Language Support" in VSCode Extensions
- Or install from: VSCode Marketplace
Compiles HTMS source code to TypeScript.
Parameters:
- source - HTMS source code stringoptions
- - Optional compilation optionsgenerate_router
- - Generate router.ts (default: true)generate_events
- - Generate events.ts (default: true)
Returns:
- success - Boolean indicating compilation successfiles
- - Array of generated files with path and contentdiagnostics
- - Array of errors/warnings with severity, message, location`
HTMS follows a traditional compiler pipeline:
1. Lexer - Tokenization using Logos
2. Parser - Recursive descent parser generating AST
3. Analyzer - Semantic analysis with symbol table
4. Code Generator - TypeScript code generation
This package is written in Rust and compiled to WebAssembly for Node.js. This provides:
- Fast compilation - Native performance
- Memory safety - Rust's guarantees
- Cross-platform - Runs anywhere Node.js runs
- GitHub Repository
- Documentation
- Issue Tracker
- CLI Package
MIT © ProGalaxy Labs