import { createServer as createHttpServer, type ServerOptions as HttpServerOptions } from 'node:http'; import { createServer as createHttpsServer, type ServerOptions as HttpsServerOptions } from 'node:https'; import { type Dispatcher, type HttpApplicationAdapter } from '@fluojs/http'; import type { MultipartOptions } from '@fluojs/runtime'; import { compressNodeResponse, createNodeResponseCompression } from './internal-node-compression.js'; import { cloneHeaderValue, cloneRequestHeaders, createDeferredFrameworkRequestShell, createMemoizedAsyncValue, createMemoizedValue, createRequestSignal, normalizePrimaryContentType, parseCookieHeader, parseQueryParamsFromSearch, readPrimaryHeaderValue, resolveAbsoluteRequestUrl, resolveRequestIdFromHeaders, snapshotSimpleQueryRecord, splitRawRequestUrl } from './internal-node-request.js'; import { createNodeShutdownSignalRegistration, defaultNodeShutdownSignals, registerShutdownSignals } from './internal-node-shutdown.js'; /** * Settings for `NodeHttpApplicationAdapter.create`, including transport and body parsing. */ export interface NodeHttpAdapterOptions { compression?: boolean; host?: string; http?: HttpServerOptions; https?: HttpsServerOptions; maxBodySize?: number; multipart?: MultipartOptions; port?: number; rawBody?: boolean; retryDelayMs?: number; retryLimit?: number; shutdownTimeoutMs?: number; } interface NodeListenTarget { bindTarget: string; url: string; } type NodeServer = ReturnType | ReturnType; /** * Represents the node http application adapter. */ export declare class NodeHttpApplicationAdapter implements HttpApplicationAdapter { private readonly port; private readonly host; private readonly retryDelayMs; private readonly retryLimit; private readonly httpsOptions; private readonly shutdownTimeoutMs; private readonly httpOptions?; /** * Create an unstarted Node HTTP or HTTPS adapter from one options object. * * @param options Transport, compression, multipart, body limit, and shutdown settings. * @returns The concrete adapter instance; the caller owns listen and close. * @throws If port, body limit, lifecycle bounds, or HTTP/HTTPS options are invalid. * @remarks Defaults to port 3000, a 1 MiB body cap, and no compression. * Multipart total size defaults to the body cap unless explicitly overridden. */ static create(options?: NodeHttpAdapterOptions): NodeHttpApplicationAdapter; private readonly server; private readonly listenLifecycle; private dispatcher?; private readonly requestResponseFactory; private readonly sockets; constructor(port: number, host: string | undefined, retryDelayMs: number | undefined, retryLimit: number | undefined, compression: boolean | undefined, httpsOptions: HttpsServerOptions | undefined, multipartOptions?: MultipartOptions, maxBodySize?: number, preserveRawBody?: boolean, shutdownTimeoutMs?: number, httpOptions?: HttpServerOptions | undefined); getServer(): NodeServer; getRealtimeCapability(): import("@fluojs/http").ServerBackedHttpAdapterRealtimeCapability; getListenTarget(): NodeListenTarget; listen(dispatcher: Dispatcher): Promise; close(): Promise; private handleRequest; } export { cloneHeaderValue, cloneRequestHeaders, compressNodeResponse, createDeferredFrameworkRequestShell, createMemoizedAsyncValue, createMemoizedValue, createNodeResponseCompression, createNodeShutdownSignalRegistration, createRequestSignal, defaultNodeShutdownSignals, normalizePrimaryContentType, parseCookieHeader, parseQueryParamsFromSearch, readPrimaryHeaderValue, registerShutdownSignals, resolveAbsoluteRequestUrl, resolveRequestIdFromHeaders, snapshotSimpleQueryRecord, splitRawRequestUrl, }; //# sourceMappingURL=internal-node.d.ts.map