Adapters
Fetch (edge & serverless)
@stone-js/fetch-adapter is built on the Web platform's Request and Response (WinterCG), so one adapter serves every fetch-based runtime. Instead of a package per platform, you ship the same build to all of them.
#Install & enable
npm i @stone-js/fetch-adapterimport { StoneApp } from '@stone-js/core'
import { Routing } from '@stone-js/router'
import { Fetch } from '@stone-js/fetch-adapter'
@Fetch() // any Web-standard fetch runtime
@Routing()
@StoneApp({ name: 'tasks' })
export class Application {}import { defineStoneApp } from '@stone-js/core'
import { routerBlueprint } from '@stone-js/router'
import { fetchAdapterBlueprint } from '@stone-js/fetch-adapter'
export const App = defineStoneApp(
{ name: 'tasks' },
[routerBlueprint, fetchAdapterBlueprint]
)The runtimes standardised on Request and Response. One adapter speaks it; every one of them is a deploy target.
#Targets
| Runtime | Type | Description |
|---|---|---|
| Cloudflare Workers | edge | Deploy the fetch handler as a Worker. |
| Deno / Deno Deploy | edge / server | Runs on Deno’s Web-standard runtime. |
| Bun | server | Bun’s fetch server. |
| Vercel | serverless / edge | Edge or serverless functions. |
| Netlify | serverless / edge | Edge or serverless functions. |
#Deploy: platform entrypoints
Each fetch runtime expects a slightly different entry shape (a Worker export, a Deno serve, a Bun server). @stone-js/edge-adapter provides one serve* helper per platform that wraps your fetch handler in exactly that shape, so the only per-platform code is a one-line entry file.
import { App } from './Application'
import {
serveCloudflare, serveDeno, serveBun, serveVercel, serveNetlify
} from '@stone-js/edge-adapter'
// Pick the entry for your target; each wraps the same fetch handler.
export default serveCloudflare(App) // Cloudflare Worker default export
// export default serveVercel(App) // Vercel edge/serverless
// Deno.serve(serveDeno(App)) // Deno
// Bun.serve({ fetch: serveBun(App) })// Bun| Entry helper | Type | Description |
|---|---|---|
| serveCloudflare(App) | => Worker export | A Cloudflare Workers module export. |
| serveDeno(App) | => fetch handler | A handler for Deno.serve / Deno Deploy. |
| serveBun(App) | => fetch handler | A handler for Bun.serve. |
| serveVercel(App) | => handler | A Vercel edge/serverless function. |
| serveNetlify(App) | => handler | A Netlify edge/serverless function. |
| serveFetch(App) | => (Request) => Response | The raw Web-standard handler, for any other host. |
npm run build
# then, per platform, e.g.:
wrangler deploy # Cloudflare
vercel deploy # Vercel
netlify deploy # Netlify