UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

69 lines 2.73 kB
/** * one/headless-server — run One's server-side request handling in any environment. * * pure Request → Response handler with no Hono, no Node.js http server, * no filesystem dependency. works in browser Web Workers, Cloudflare Workers, * service workers, Deno, Bun, etc. * * handles: * - API routes (app/api/*) * - server loaders (export function loader()) * - SSR page rendering (if serverEntry provided) * - middleware * - redirects * * usage: * * import { createServer } from 'one/headless-server' * * const server = await createServer({ * oneOptions: { web: { defaultRenderMode: 'spa' } }, * routes: { * api: { '/api/hello': () => import('./api/hello') }, * pages: { '/index': () => import('./index') }, * middlewares: {}, * serverEntry: () => import('./entry-server'), * }, * manifest: { pageRoutes: [...], apiRoutes: [...] }, * }) * * const response = await server.fetch(request) * server.updateRoutes(newManifest, newRoutes) */ export { createWorkerHandler, type LazyRoutes } from './server/workerHandler'; export { compileManifest } from './createHandleRequest'; export type { RequestHandlers } from './createHandleRequest'; export { getFetchStaticHtml, setFetchStaticHtml } from './server/staticHtmlFetcher'; export type { One } from './vite/types'; import { type LazyRoutes } from './server/workerHandler'; import type { One } from './vite/types'; export type HeadlessServerOptions = { /** One plugin options (at minimum: web.defaultRenderMode) */ oneOptions: One.PluginOptions; /** * build info — route manifest, route map, preloads, etc. * for dev/browser use, only `manifest` and `oneOptions` are required. * for production, provide the full buildInfo from the build step. */ buildInfo?: Partial<One.BuildInfo>; /** lazy route import functions */ routes: LazyRoutes; /** * route manifest — if not provided, extracted from buildInfo. * for dev/browser, pass the manifest directly to avoid needing full buildInfo. */ manifest?: One.BuildInfo['manifest']; }; /** * create a headless One server — pure Request → Response handler. * * no Hono, no Node.js http server, no filesystem. * works in browser Web Workers, edge runtimes, etc. */ export declare function createServer(options: HeadlessServerOptions): Promise<{ /** handle an incoming request — returns Response or null (unmatched) */ fetch: (request: Request) => Promise<Response | null>; /** hot-swap the route table without recreating the server */ updateRoutes(newManifest: One.BuildInfo["manifest"], newRoutes?: LazyRoutes): void; }>; //# sourceMappingURL=headless-server.d.ts.map