Skip to content
← Public packages

@kentcdodds/invisible-software

Invisible software: a phone-only step-through demo plus a chart of AI agent benchmark progress.

FollowForkOpen app

scripts/serve.mjs

19 lines · 906 B · JavaScript
Raw
// Local preview: serves the package app the way Kody mounts it, under
// /packages/invisible-software/ with the mount stripped (/, /demo, /graph).
import { createServer } from 'node:http'
import router from '../app/router.ts'

const port = Number(process.env.PORT ?? 4310)
const mount = '/packages/invisible-software'

createServer(async (req, res) => {
	if (req.url === '/' || req.url === mount) {
		res.writeHead(302, { location: mount + '/' })
		return res.end()
	}
	const url = new URL(req.url, `http://localhost:${port}`)
	if (url.pathname.startsWith(mount)) url.pathname = url.pathname.slice(mount.length) || '/'
	const response = await router.fetch(new Request(url, { method: req.method }))
	res.writeHead(response.status, Object.fromEntries(response.headers))
	res.end(Buffer.from(await response.arrayBuffer()))
}).listen(port, () => console.log(`Slideshow at http://localhost:${port}${mount}/`))