import { IncomingMessage, ServerResponse } from "node:http" export type HttpRequest = IncomingMessage export type HttpResponse = ServerResponse export interface Closable { // only initiates closing, does not wait for it close(): void } export type Locatable = { url: URL } export type Listener = (request: HttpRequest, response: HttpResponse) => Promise | void export type Listenable = { listener: Listener } export type ListeningServer = Closable & Locatable export type CORSPolicy = { /** list of Origins that should be allowed, e.g. respond with `Access-Control-Allow-Origin: {origin}` */ allowOrigins: string[] }