Stone.jsDocs
Paradigm

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

terminalbash
npm i @stone-js/fetch-adapter
app/Application.tsdeclarativeimperative
import { 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

RuntimeTypeDescription
Cloudflare WorkersedgeDeploy the fetch handler as a Worker.
Deno / Deno Deployedge / serverRuns on Deno’s Web-standard runtime.
BunserverBun’s fetch server.
Vercelserverless / edgeEdge or serverless functions.
Netlifyserverless / edgeEdge 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.

app/entrypoints.tsts
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 helperTypeDescription
serveCloudflare(App)=> Worker exportA Cloudflare Workers module export.
serveDeno(App)=> fetch handlerA handler for Deno.serve / Deno Deploy.
serveBun(App)=> fetch handlerA handler for Bun.serve.
serveVercel(App)=> handlerA Vercel edge/serverless function.
serveNetlify(App)=> handlerA Netlify edge/serverless function.
serveFetch(App)=> (Request) => ResponseThe raw Web-standard handler, for any other host.
terminalbash
npm run build
# then, per platform, e.g.:
wrangler deploy            # Cloudflare
vercel deploy              # Vercel
netlify deploy             # Netlify

Stone.js

Your app exists in every runtime. Until you run it.

An open-source project by Stone Foundation
Created by Mr. Stone (Evens Pierre)