MIRROR: javascript for ๐Ÿœ's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

update server example

+43 -47
+43 -47
examples/server/server.js
··· 6 6 7 7 const router = createRouter(); 8 8 9 - addRoute(router, 'GET', '/', c => c.res.body(`Welcome to Ant ${Ant.version}!`)); 10 - 11 - addRoute(router, 'GET', '/meow', async c => { 12 - const userAgent = c.req.header('User-Agent'); 13 - c.res.header('X-Ant', 'meow'); 14 - return c.res.body(`${meow}\n\n${userAgent}`); 9 + addRoute(router, 'GET', '/', () => { 10 + return new Response(`Welcome to Ant ${Ant.version}!`); 15 11 }); 16 12 17 - addRoute(router, 'GET', '/echo', c => { 18 - c.res.header('X-Ant', 'meow'); 19 - fetch('http://localhost:8000/meow') 20 - .then(res => res.text()) 21 - .then(c.res.body); 13 + addRoute(router, 'GET', '/meow', req => { 14 + const userAgent = req.headers.get('User-Agent'); 15 + return new Response(`${meow}\n\n${userAgent}`, { 16 + headers: { 'X-Ant': 'meow' } 17 + }); 22 18 }); 23 19 24 - addRoute(router, 'GET', '/get/:id', c => { 25 - c.res.body(decodeURIComponent(c.get(c.params.id))); 20 + addRoute(router, 'GET', '/echo', async () => { 21 + const res = await fetch('http://localhost:8000/meow'); 22 + return new Response(await res.text(), { 23 + headers: { 'X-Ant': 'meow' } 24 + }); 26 25 }); 27 26 28 - addRoute(router, 'GET', '/set/:id/**:val', c => { 29 - c.set(c.params.id, c.params.val); 30 - c.res.body(`${c.params.id} = ${c.params.val}`); 31 - }); 32 - 33 - addRoute(router, 'GET', '/fs/meow', async c => { 27 + addRoute(router, 'GET', '/fs/meow', async () => { 34 28 const file = await readFile(join(import.meta.dirname, 'meow.txt')); 35 - return c.res.body(file || 'none'); 29 + return new Response(file || 'none'); 36 30 }); 37 31 38 - addRoute(router, 'GET', '/hello', async c => { 39 - return c.res.body('Hello, World!'); 32 + addRoute(router, 'GET', '/hello', () => { 33 + return new Response('Hello, World!'); 40 34 }); 41 35 42 - addRoute(router, 'GET', '/status', async c => { 36 + addRoute(router, 'GET', '/status', async () => { 43 37 await new Promise(resolve => setTimeout(resolve, 1000)); 44 38 const result = await Promise.resolve('Hello'); 45 - return c.res.body(`server is responding with ${result}`); 39 + return new Response(`server is responding with ${result}`); 46 40 }); 47 41 48 - addRoute(router, 'POST', '/users/:id', async c => { 49 - return c.res.body(`User ID: ${c.params.id}`); 42 + addRoute(router, 'POST', '/users/:id', (_req, params) => { 43 + return new Response(`User ID: ${params.id}`); 50 44 }); 51 45 52 - addRoute(router, 'GET', '/users/:id/posts', async c => { 53 - return c.res.body(`Posts for user: ${c.params.id}`); 46 + addRoute(router, 'GET', '/users/:id/posts', (_req, params) => { 47 + return new Response(`Posts for user: ${params.id}`); 54 48 }); 55 49 56 - addRoute(router, 'GET', '/api/v1/users', async c => { 57 - return c.res.json({ users: [] }); 50 + addRoute(router, 'GET', '/api/v1/users', () => { 51 + return Response.json({ users: [] }); 58 52 }); 59 53 60 - addRoute(router, 'GET', '/zen', async c => { 54 + addRoute(router, 'GET', '/zen', async () => { 61 55 const response = await fetch('https://api.github.com/zen'); 62 - return c.res.body(await response.text()); 56 + return new Response(await response.text()); 63 57 }); 64 58 65 - addRoute(router, 'GET', '/api/v2/demo', async c => { 59 + addRoute(router, 'GET', '/api/v2/demo', async () => { 66 60 const data = await fetch('https://themackabu.dev/test.json'); 67 - return c.res.json(await data.json()); 61 + return Response.json(await data.json()); 68 62 }); 69 63 70 - addRoute(router, 'GET', '/files/**:path', async c => { 71 - return c.res.html(html`<div>${c.params.path}</div>`); 64 + addRoute(router, 'GET', '/files/**:path', (_req, params) => { 65 + return new Response(html`<div>${params.path}</div>`, { 66 + headers: { 'Content-Type': 'text/html' } 67 + }); 72 68 }); 73 69 74 - async function handleRequest(c) { 75 - console.log('request:', c.req.method, c.req.uri); 76 - const result = findRoute(router, c.req.method, c.req.uri); 70 + console.log('started on http://localhost:8000'); 77 71 78 - if (result?.data) { 79 - c.params = result.params; 80 - return await result.data(c); 81 - } 72 + export default { 73 + port: 8000, 74 + fetch(req) { 75 + const url = new URL(req.url); 82 76 83 - c.res.body('not found: ' + c.req.uri, 404); 84 - } 77 + console.log('request:', req.method, url.pathname); 78 + const result = findRoute(router, req.method, url.pathname); 85 79 86 - console.log('started on http://localhost:8000'); 87 - Ant.serve(8000, handleRequest); 80 + if (result?.data) return result.data(req, result.params); 81 + return new Response('not found: ' + url.pathname, { status: 404 }); 82 + } 83 + };