aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorGravatar Sean Scally <scally@users.noreply.github.com> 2023-01-24 19:09:39 -0800
committerGravatar GitHub <noreply@github.com> 2023-01-24 19:09:39 -0800
commitac7aff1b47b0b271d2afb010f3ffd199b9b6685d (patch)
treec6bfdae5dcca1e87fc951d06325da838f59cee4d /examples
parentd714df48f9f47208584e6d8b91271afbcd230f70 (diff)
downloadbun-ac7aff1b47b0b271d2afb010f3ffd199b9b6685d.tar.gz
bun-ac7aff1b47b0b271d2afb010f3ffd199b9b6685d.tar.zst
bun-ac7aff1b47b0b271d2afb010f3ffd199b9b6685d.zip
Add FileSystemRouter + React example (#1894)
Diffstat (limited to 'examples')
-rwxr-xr-xexamples/react-file-system-router/bun.lockbbin0 -> 4963 bytes
-rw-r--r--examples/react-file-system-router/index.tsx24
-rw-r--r--examples/react-file-system-router/package.json14
-rw-r--r--examples/react-file-system-router/pages/index.tsx17
-rw-r--r--examples/react-file-system-router/pages/one.tsx12
-rw-r--r--examples/react-file-system-router/pages/two.tsx12
-rw-r--r--examples/react-file-system-router/tsconfig.json20
7 files changed, 99 insertions, 0 deletions
diff --git a/examples/react-file-system-router/bun.lockb b/examples/react-file-system-router/bun.lockb
new file mode 100755
index 000000000..ffe6b6c6a
--- /dev/null
+++ b/examples/react-file-system-router/bun.lockb
Binary files differ
diff --git a/examples/react-file-system-router/index.tsx b/examples/react-file-system-router/index.tsx
new file mode 100644
index 000000000..a784c393b
--- /dev/null
+++ b/examples/react-file-system-router/index.tsx
@@ -0,0 +1,24 @@
+// A simple way to connect FileSystemRouter to Bun#serve
+// run with `bun run index.tsx`
+
+import { renderToReadableStream } from 'react-dom/server'
+import { FileSystemRouter } from 'bun'
+
+export default {
+ port: 3000,
+ async fetch(request: Request) {
+ const router = new FileSystemRouter({
+ dir: process.cwd() + "/pages",
+ style: "nextjs"
+ })
+
+ const route = router.match(request)
+
+ const { default: Root } = await import(route.filePath)
+ return new Response(
+ await renderToReadableStream(
+ <Root {...route.params} />
+ )
+ )
+ }
+} \ No newline at end of file
diff --git a/examples/react-file-system-router/package.json b/examples/react-file-system-router/package.json
new file mode 100644
index 000000000..36e0349c0
--- /dev/null
+++ b/examples/react-file-system-router/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "react-routes",
+ "module": "index.tsx",
+ "type": "module",
+ "devDependencies": {
+ "@types/react": "^18.0.27",
+ "@types/react-dom": "^18.0.10",
+ "bun-types": "^0.4.0"
+ },
+ "dependencies": {
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0"
+ }
+} \ No newline at end of file
diff --git a/examples/react-file-system-router/pages/index.tsx b/examples/react-file-system-router/pages/index.tsx
new file mode 100644
index 000000000..b2d9e735e
--- /dev/null
+++ b/examples/react-file-system-router/pages/index.tsx
@@ -0,0 +1,17 @@
+// reachable from http://localhost:3000/
+
+export default () => (
+ <html>
+ <head>
+ <title>index</title>
+ </head>
+ <body>
+ <h1>
+ <a href="/one" >one</a>
+ </h1>
+ <h1>
+ <a href="/two" >two</a>
+ </h1>
+ </body>
+ </html>
+) \ No newline at end of file
diff --git a/examples/react-file-system-router/pages/one.tsx b/examples/react-file-system-router/pages/one.tsx
new file mode 100644
index 000000000..68c9fb4b9
--- /dev/null
+++ b/examples/react-file-system-router/pages/one.tsx
@@ -0,0 +1,12 @@
+// reachable from http://localhost:3000/one
+
+export default () => (
+ <html>
+ <head>
+ <title>one</title>
+ </head>
+ <body>
+ <p>one</p>
+ </body>
+ </html>
+) \ No newline at end of file
diff --git a/examples/react-file-system-router/pages/two.tsx b/examples/react-file-system-router/pages/two.tsx
new file mode 100644
index 000000000..09be9fa5c
--- /dev/null
+++ b/examples/react-file-system-router/pages/two.tsx
@@ -0,0 +1,12 @@
+// reachable from http://localhost:3000/two
+
+export default () => (
+ <html>
+ <head>
+ <title>two</title>
+ </head>
+ <body>
+ <p>two</p>
+ </body>
+ </html>
+) \ No newline at end of file
diff --git a/examples/react-file-system-router/tsconfig.json b/examples/react-file-system-router/tsconfig.json
new file mode 100644
index 000000000..c458f8fe8
--- /dev/null
+++ b/examples/react-file-system-router/tsconfig.json
@@ -0,0 +1,20 @@
+{
+ "compilerOptions": {
+ "lib": [
+ "ESNext"
+ ],
+ "module": "esnext",
+ "target": "esnext",
+ "moduleResolution": "nodenext",
+ "strict": false,
+ "downlevelIteration": true,
+ "skipLibCheck": true,
+ "jsx": "preserve",
+ "allowSyntheticDefaultImports": true,
+ "forceConsistentCasingInFileNames": true,
+ "allowJs": true,
+ "types": [
+ "bun-types" // add Bun global
+ ]
+ }
+} \ No newline at end of file