import type { Config } from '../../config.js'; import type { EntriesDev, EntriesPrd, HandlerReq, HandlerRes } from '../types.js'; export type ClonableModuleNode = { url: string; file: string; }; export type HandlerContext = { readonly req: HandlerReq; readonly res: HandlerRes; /** @deprecated use `data` */ readonly context: Record; readonly data: Record; unstable_devServer?: { rootDir: string; resolveClientEntry: (id: string) => string; loadServerModuleRsc: (idOrFileURL: string) => Promise>; loadEntriesDev: (config: { srcDir: string; }) => Promise; loadServerModuleMain: (idOrFileURL: string) => Promise>; transformIndexHtml: (pathname: string) => Promise>; }; unstable_modules?: { rsdwServer: unknown; rdServer: unknown; rsdwClient: unknown; wakuMinimalClient: unknown; }; }; export type Handler = (ctx: HandlerContext, next: () => Promise) => Promise; export type ErrorCallback = (err: unknown, ctx: HandlerContext, origin: 'handler' | 'rsc' | 'html') => void; export type MiddlewareOptions = { env: Record; unstable_onError: Set; } & ({ cmd: 'dev'; config: Config; } | { cmd: 'start'; loadEntries: () => Promise; }); export type Middleware = (options: MiddlewareOptions) => Handler;