Milo DSL - Create EOS Webteases with TypeScript
Posted: Thu Apr 16, 2026 12:38 am
Milo DSL
MiloDSL is a TypeScript DSL that allows developers to write Milovana EOS Webteases with TypeScript instead of using the EOS Editor.
Features:
- Typed command builders. Invalid combos like say("hi", { mode: "instant", duration: ... }) do not compile.
- Typed page references. goto(someOtherPage) is checked at compile time, misspellings fail before upload.
- Embedded JS via the js`...` template.
- Exports to EOS Editor JSON which can easily be imported via the EOS Editor Backup feature.
- Assets by content hash. gallery(...).image(hash) resolves against a EOS export, so the IDs are instantly correct.
- Multi package manager support. Installable with npm, bun, or pnpm. Ships a CLI that runs under both Node and Bun.
Install from GitHub (not on npm yet):
Code: Select all
npm install github:YaquilunaDev/milo-dsl
# or: bun add github:YaquilunaDev/milo-dsl && bun pm trust milo-dsl
Code: Select all
import {
build, defineStory, end, goto, html, ifCmd,
js, page, prompt, say, variable,
} from "milo-dsl";
const name = variable<string>("name");
const bye = page("bye", [say(html.p("Goodbye, ", html.evalVar(name))), end()]);
const start = page("start", [
prompt(name),
say(html.p("Hello, ", html.evalVar(name), "!")),
ifCmd(js`${name} == "stop"`, [goto(bye)], [say("Welcome back.")]),
]);
export default defineStory({ variables: [name], pages: [start, bye] });
- Repository: github.com/YaquilunaDev/milo-dsl
- Issues: github.com/YaquilunaDev/milo-dsl/issues
- Docs: github.com/YaquilunaDev/milo-dsl/docs (CLI, commands, variables, assets).