Something went wrong. Try again.
MIRROR: javascript for ๐'s, a tiny runtime with big ambitions ant.themackabu.dev
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384import meow from './meow.txt';import { join } from 'ant:path';import { html } from './html';import { readFile } from 'ant:fs';import { createRouter, addRoute, findRoute } from '../rou3';
const router = createRouter();
addRoute(router, 'GET', '/', () => { return new Response(`Welcome to Ant ${Ant.version}!`);});
addRoute(router, 'GET', '/meow', req => { const userAgent = req.headers.get('User-Agent'); return new Response(`${meow}\n\n${userAgent}`, { headers: { 'X-Ant': 'meow' } });});
addRoute(router, 'GET', '/echo', async () => { const res = await fetch('http://localhost:8000/meow'); return new Response(await res.text(), { headers: { 'X-Ant': 'meow' } });});
addRoute(router, 'GET', '/fs/meow', async () => { const file = await readFile(join(import.meta.dirname, 'meow.txt')); return new Response(file || 'none');});
addRoute(router, 'GET', '/hello', () => { return new Response('Hello, World!');});
addRoute(router, 'GET', '/status', async () => { await new Promise(resolve => setTimeout(resolve, 1000)); const result = await Promise.resolve('Hello'); return new Response(`server is responding with ${result}`);});
addRoute(router, 'POST', '/users/:id', (_req, params) => { return new Response(`User ID: ${params.id}`);});
addRoute(router, 'GET', '/users/:id/posts', (_req, params) => { return new Response(`Posts for user: ${params.id}`);});
addRoute(router, 'GET', '/api/v1/users', () => { return Response.json({ users: [] });});
addRoute(router, 'GET', '/zen', async () => { const response = await fetch('https://api.github.com/zen'); return new Response(await response.text());});
addRoute(router, 'GET', '/api/v2/demo', async () => { const data = await fetch('https://themackabu.dev/test.json'); return Response.json(await data.json());});
addRoute(router, 'GET', '/files/**:path', (_req, params) => { return new Response(html`<div>${params.path}</div>`, { headers: { 'Content-Type': 'text/html' } });});
console.log('started on http://localhost:8000');
export default { port: 8000, fetch(req) { const url = new URL(req.url);
console.log('request:', req.method, url.pathname); const result = findRoute(router, req.method, url.pathname);
if (result?.data) return result.data(req, result.params); return new Response('not found: ' + url.pathname, { status: 404 }); }};