/// import { Server } from 'node:net'; import { CompressionOptions } from 'compression'; import { Express, Request } from 'express'; import { Response as ExpressResponse } from "express"; import { FC, PropsWithChildren } from 'react'; import { createStaticHandler } from 'react-router'; import { ServeStaticOptions } from 'serve-static'; import { Logger } from 'vite'; import { TRouteObject } from "../interfaces/route-object.js"; import { IRenderOptions, TRender } from "./render.js"; import ServerApi from "../services/server-api.js"; import ServerConfig from "../services/server-config.js"; interface IInitServerRequestOut> { appProps?: T; hasEarlyHints?: boolean; shouldSkip?: boolean; shouldCancel?: boolean; } interface IEntrypointOptions> { onServerCreated?: (app: Express, serverApi: ServerApi) => Promise | void; onServerStarted?: (app: Express, serverApi: ServerApi, server: Server) => Promise | void; onRequest?: (req: Request, res: ExpressResponse) => Promise> | IInitServerRequestOut; onRouterReady?: IRenderOptions['onRouterReady']; onShellReady?: IRenderOptions['onShellReady']; onShellError?: IRenderOptions['onShellError']; onResponse?: IRenderOptions['onResponse']; onError?: IRenderOptions['onError']; getState?: IRenderOptions['getState']; } interface IPrepareRenderOut> { render: TRender; init: IEntryServerOptions['init']; routes: TRouteObject[]; abortDelay?: number; loggerProd?: Logger; loggerDev?: Logger; middlewares?: { compression?: CompressionOptions | false; expressStatic?: (ServeStaticOptions & { basename?: string; }) | false; }; } interface IAppServerProps> { server: T; } type TApp = FC & IAppServerProps>>; interface IEntryServerOptions> { abortDelay?: number; init?: (params: { config: ServerConfig; }) => IEntrypointOptions | Promise>; loggerProd?: IPrepareRenderOut['loggerProd']; loggerDev?: IPrepareRenderOut['loggerDev']; middlewares?: IPrepareRenderOut['middlewares']; routerOptions?: Parameters[1]; } /** * Render server side application */ declare function entry(App: TApp, routes: TRouteObject[], { init, routerOptions, ...rest }?: IEntryServerOptions): IPrepareRenderOut; export { entry as default, IInitServerRequestOut, IEntrypointOptions, IPrepareRenderOut, IAppServerProps, TApp, IEntryServerOptions };