Stream Runtime
Use StreamRuntimeAdapter when the host already exposes fetch events as an async iterator.
When to Use It
This adapter is a good fit for environments such as:
- service workers
- custom worker hosts
- stream-based fetch event bridges
It does not open a socket listener itself. Instead, it consumes events and
dispatches them through Server.
Example
import { Server } from "@hornjs/fest";
import { StreamRuntimeAdapter } from "@hornjs/fest/stream";
async function* events() {
while (true) {
yield await getNextFetchEvent();
}
}
const server = new Server({
adapter: new StreamRuntimeAdapter({
stream: events(),
url: "/worker",
}),
fetch(request) {
return new Response(`Hello from ${new URL(request.url).pathname}`);
},
});
await server.serve();
Runtime Capabilities
The stream adapter intentionally exposes a minimal capability set:
resolve()returnsnullopen()returnsnullcreateGzip()usesCompressionStreamwhen available- Brotli compression is not provided
That means helpers such as serveStatic() are only useful in stream hosts if
you replace or extend the runtime capability implementation.