Mount
WinterTC is a standard for building HTTP Server behind Cloudflare, Deno, Vercel, and others.
It allows web servers to run interoperably across runtimes by using Request, and Response.
Elysia is WinterTC compliant. Optimized to run on Bun, but also support other runtimes if possible.
This allows any framework or code that is WinterCG compliant to be run together, allowing frameworks like Elysia, Hono, Remix, Itty Router to run together in a simple function.
Mount
To use .mount, simply pass a fetch
function:
import { Elysia } from 'elysia'
import { Hono } from 'hono'
const hono = new Hono()
.get('/', (c) => c.text('Hello from Hono!'))
const app = new Elysia()
.get('/', () => 'Hello from Elysia')
.mount('/hono', hono.fetch)
Any framework that use Request
, and Response
can be interoperable with Elysia like
And these can be use on multiple runtimes like:
- Bun
- Deno
- Vercel Edge Runtime
- Cloudflare Worker
- Netlify Edge Function
If the framework supports a .mount function, you can also mount Elysia inside another framework:
import { Elysia } from 'elysia'
import { Hono } from 'hono'
const elysia = new Elysia()
.get('/', () => 'Hello from Elysia inside Hono inside Elysia')
const hono = new Hono()
.get('/', (c) => c.text('Hello from Hono!'))
.mount('/elysia', elysia.fetch)
const main = new Elysia()
.get('/', () => 'Hello from Elysia')
.mount('/hono', hono.fetch)
.listen(3000)
Reusing Elysia
Moreover, you can re-use multiple existing Elysia projects on your server.
import { Elysia } from 'elysia'
import A from 'project-a/elysia'
import B from 'project-b/elysia'
import C from 'project-c/elysia'
new Elysia()
.mount(A)
.mount(B)
.mount(C)
If an instance passed to mount
is an Elysia instance, it will be resolved with use
automatically, providing type-safety and support for Eden by default.
This makes the possibility of an interoperable framework and runtime a reality.