diff --git a/packages/core/templates/presentation.eta b/packages/core/templates/presentation.eta index 25fae5b..b020392 100644 --- a/packages/core/templates/presentation.eta +++ b/packages/core/templates/presentation.eta @@ -5,7 +5,7 @@ <%~ include("./partials/slide-styles") %> - + <%~ it.body %> diff --git a/packages/server/dev.ts b/packages/server/dev.ts index a456ef8..dcdec64 100644 --- a/packages/server/dev.ts +++ b/packages/server/dev.ts @@ -22,8 +22,9 @@ function openChannel() { return new BroadcastChannel("live-reload"); } +const ROOT_ROUTE = new URLPattern({ pathname: "/" }); const LIVE_RELOAD_ROUTE = new URLPattern({ pathname: "/live-reload" }); -const STATIC_ROUTE = new URLPattern({ pathname: "/static/*" }); +const STATIC_ROUTE = new URLPattern({ pathname: "/static/bundle.js" }); function makeHandler(path: string) { const channel = openChannel(); @@ -33,6 +34,7 @@ function makeHandler(path: string) { const staticMatch = STATIC_ROUTE.exec(req.url); if (liveReloadMatch) { + // Serve Websocket route const upgrade = req.headers.get("upgrade") ?? ""; if (upgrade.toLowerCase() !== "websocket") { return new Response("no upgrade specified"); @@ -46,6 +48,7 @@ function makeHandler(path: string) { return response; } else if (staticMatch) { + // Bundle and serve runtime const { outputFiles } = await esbuild.build({ stdin: { contents: `import "@morkdeck/wc"`, @@ -62,6 +65,13 @@ function makeHandler(path: string) { "Cache-Control": "no-store", }, }); + } else if (!ROOT_ROUTE.exec(req.url)) { + // Redirect to root and log 404 + console.info(`Redirecting ${req.url} to origin`); + + const url = new URL(req.url); + + return Response.redirect(url.origin, 301); } const html = await renderPresentationHtml(path, { devMode: true });