one
Version:
One is a new React Framework that makes Vite serve both native and web.
69 lines • 2.73 kB
TypeScript
/**
* 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