API reference: Runtime adapters The runtime adapters wrap the same app.fetch(Request) dispatch for each platform. They are available only as subpaths (never from the root barrel), so runtime-specific code such as node:http never leaks into an edge or Worker bundle. For guide-level setup per platform, see the adapters overview ; for the module map, see the API reference overview .
One app, every runtimeweb-standard core app.fetch(request) Request → Response
servers serve(app) /node · /bun · /deno
edge & serverless toFetchHandler(app) /cloudflare · /vercel · /fastly
aws toLambdaHandler(app) /lambda (APIGW v1 + v2)
same behavior Response identical headers, errors, and docs everywhere
Adapters translate each platform's entrypoint into the same web-standard dispatch, so behavior stays identical across runtimes. @daloyjs/core/nodeserve (app: App, opts ?: NodeServerOptions): NodeServerHandle;
interface NodeServerOptions {
port ?: number ; // default: 3000
hostname ?: string ; // default: "0.0.0.0"
connectionTimeoutMs ?: number ; // default: 30_000
shutdownTimeoutMs ?: number ; // default: 10_000
handleSignals ?: boolean ; // default: true (SIGINT/SIGTERM)
maxHeaderBytes ?: number ; // default: 16 KiB
trustProxy ?: boolean ; // honor x-forwarded-proto/host (only behind a trusted LB)
maxConnections ?: number ; // cap concurrent sockets (admission control); default: unset (unbounded)
bufferedBodyMaxBytes ?: number ; // default: 256 KiB (pre-buffer threshold for POST hot path)
}
interface NodeServerHandle { server : Server ; port : number ; close () : Promise < void > } @daloyjs/core/bunserve (app: App, opts ?: BunServeOptions): BunServerHandle;
interface BunServeOptions {
port ?: number ;
hostname ?: string ;
maxRequestBodySize ?: number ; // default: 16 MiB
idleTimeout ?: number ;
development ?: boolean ;
unix ?: string ;
tls ?: BunTLSOptions ;
}
interface BunServerHandle { port : number ; url : URL | undefined ; stop () : Promise < void > } @daloyjs/core/denoserve (app: App, opts ?: DenoServeOptions): DenoServerHandle;
interface DenoServeOptions {
port ?: number ; hostname ?: string ;
signal ?: AbortSignal ;
cert ?: string ; key ?: string ; // HTTPS pair
onListen ?: ( info : { hostname : string ; port : number }) => void ;
onError ?: ( err : unknown ) => Response | Promise < Response >;
handleSignals ?: boolean ; // default: true
shutdownTimeoutMs ?: number ; // default: 10_000
}
interface DenoServerHandle { shutdown () : Promise < void > } @daloyjs/core/cloudflaretoFetchHandler< Env = unknown >( app : App ) : ExportedFetchHandler < Env >;
// export default toFetchHandler(app);
interface ExportedFetchHandler < Env = unknown > {
fetch : ( request : Request , env ?: Env , ctx ?: { waitUntil ? ; passThroughOnException ? }) => Promise < Response >;
} @daloyjs/core/verceltype WebHandler = ( req : Request ) => Promise < Response >;
interface FetchHandler { fetch : WebHandler }
type RouteHandlers = Record < "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "OPTIONS" | "HEAD" , WebHandler >;
toWebHandler (app: App): WebHandler; // bare function (middleware, deprecated Edge runtime)
toFetchHandler (app: App): FetchHandler; // default export for Node Functions
toRouteHandlers (app: App): RouteHandlers; // Next.js App Router route.ts @daloyjs/core/fastlytoFastlyHandler (app: App) : ( req : Request ) => Promise < Response > ;
installFastlyListener (app: App): void ; // wires addEventListener("fetch", ...) @daloyjs/core/lambdatoLambdaHandler (app: App): LambdaHandler;
type LambdaHandler = ( event : LambdaEvent ) => Promise < LambdaResponse >;
type LambdaEvent = LambdaEventV1 | LambdaEventV2 ; // API Gateway REST + HTTP/Function URLs
type LambdaResponse = LambdaResponseV1 | LambdaResponseV2 ; Test-only / internal helpers These are exported for internal tests and tooling. They are public-typed but underscore-prefixed; they may change without a semver bump. Most application code will never need them.
_resetCrashHandlersForTests ();
_resetInsecureDefaultsLogForTests ();
_resetCompressionRuntimeProbeForTests ();
_resetSharedRateLimitStoresForTests ();