aboutsummaryrefslogtreecommitdiff
path: root/examples/nexty/server.development.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'examples/nexty/server.development.tsx')
-rw-r--r--examples/nexty/server.development.tsx46
1 files changed, 46 insertions, 0 deletions
diff --git a/examples/nexty/server.development.tsx b/examples/nexty/server.development.tsx
new file mode 100644
index 000000000..0e28dac65
--- /dev/null
+++ b/examples/nexty/server.development.tsx
@@ -0,0 +1,46 @@
+import ReactDOMServer from "react-dom/server.browser";
+
+addEventListener("fetch", async (event: FetchEvent) => {
+ var route = Wundle.match(event);
+
+ console.log("Main:", Wundle.main);
+ console.log("cwd:", Wundle.cwd);
+ console.log("Origin:", Wundle.origin);
+
+ const { default: PageComponent } = await import(route.filePath);
+ // This returns all .css files that were imported in the line above.
+ // It's recursive, so any file that imports a CSS file will be included.
+ const stylesheets = Wundle.getImportedStyles() as string[];
+
+ const response = new Response(`
+ <!DOCTYPE html>
+<html>
+ <head>
+ ${stylesheets
+ .map((style) => `<link rel="stylesheet" href="${style}">`)
+ .join("\n")}
+
+ <link
+ rel="stylesheet"
+ crossorigin="anonymous"
+ href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;700&family=Space+Mono:wght@400;700"
+ />
+ </head>
+ <body>
+
+ <div id="reactroot">${ReactDOMServer.renderToString(
+ <PageComponent />
+ )}</div>
+
+ <script src="${route.scriptSrc}" async type="module"></script>
+ </body>
+</html>
+ `);
+
+ event.respondWith(response);
+});
+
+// typescript isolated modules
+export {};
+
+declare var Wundle: any;