Closed kwhitley closed 3 months ago
I'm testing various scenarios of handler definition/usage, and ensuring that our current type system works as intended. This requires loosening the constraints on certain elements to allow custom-defined handlers to pass generic checks.
import { AutoRouter } from '../src/AutoRouter' import { IRequest, IRequestStrict, RequestHandler } from '../src/IttyRouter' import { ResponseHandler } from '../src/Router' type BenchmarkedRequest = { start: number } & IRequestStrict const withBenchmarking: RequestHandler<BenchmarkedRequest> = (request) => { request.start = Date.now() } const logger: ResponseHandler<Response, BenchmarkedRequest> = (response, request) => { console.log(response.status, request.url, 'served in', Date.now() - request.start, 'ms') } const router = AutoRouter({ port: 3001, before: [withBenchmarking, () => {}], finally: [logger, () => {}], }) router .get('/basic', () => new Response('Success!')) .get('/text', () => 'Success!') .get('/params/:foo', ({ foo }) => foo) .get('/json', () => ({ foo: 'bar' })) .get('/throw', (a) => a.b.c) export default router
What this is
I'm testing various scenarios of handler definition/usage, and ensuring that our current type system works as intended. This requires loosening the constraints on certain elements to allow custom-defined handlers to pass generic checks.
Scenario 1