@runtime-edge/node-utils
Version:
A set of helpers for running edge-compliant code in Node.js environment
53 lines (43 loc) • 2.55 kB
TypeScript
import { IncomingMessage, ServerResponse, IncomingHttpHeaders } from 'http';
import * as _runtime_edge_primitives from '@runtime-edge/primitives';
import { Headers, ReadableStream as ReadableStream$1, Request, FetchEvent, Response } from '@runtime-edge/primitives';
import { OutgoingHttpHeaders, ServerResponse as ServerResponse$1, IncomingMessage as IncomingMessage$1 } from 'node:http';
import { Readable } from 'node:stream';
interface BuildDependencies {
Headers: typeof Headers;
ReadableStream: typeof ReadableStream$1;
Request: typeof Request;
Uint8Array: typeof Uint8Array;
FetchEvent: typeof FetchEvent;
}
interface RequestOptions {
defaultOrigin: string;
}
type NodeHandler = (req: IncomingMessage, res: ServerResponse) => Promise<void> | void;
type WebHandler = (req: Request, event: FetchEvent) => Promise<Response> | Response | null | undefined;
declare function buildToNodeHandler(dependencies: BuildDependencies, options: RequestOptions): (webHandler: WebHandler) => NodeHandler;
declare function toOutgoingHeaders(headers?: Headers): OutgoingHttpHeaders;
declare function mergeIntoServerResponse(headers: OutgoingHttpHeaders, serverResponse: ServerResponse$1): void;
interface FromWebOptions {
objectMode?: boolean;
highWaterMark?: number;
encoding?: BufferEncoding;
signal?: AbortSignal;
}
/**
* Code adapted from Node's stream.Readable.fromWeb(), because it has to run on Node@14
* @see https://github.com/nodejs/node/blob/bd462ad81bc30e547e52e699ee3b6fa3d7c882c9/lib/internal/webstreams/adapters.js#L458
*/
declare function toToReadable(webStream: ReadableStream, options?: FromWebOptions): Readable;
declare function buildToFetchEvent(dependencies: BuildDependencies): (request: Request) => _runtime_edge_primitives.FetchEvent;
interface Dependencies$1 {
Headers: typeof Headers;
}
declare function buildToHeaders({ Headers }: Dependencies$1): (nodeHeaders: IncomingHttpHeaders) => Headers;
declare function buildToRequest(dependencies: BuildDependencies): (request: IncomingMessage$1, options: RequestOptions) => Request;
interface Dependencies {
ReadableStream: typeof ReadableStream;
Uint8Array: typeof Uint8Array;
}
declare function buildToReadableStream(dependencies: Dependencies): (stream: Readable) => ReadableStream;
export { type BuildDependencies, type NodeHandler, type RequestOptions, type WebHandler, buildToFetchEvent, buildToHeaders, buildToNodeHandler, buildToReadableStream, buildToRequest, mergeIntoServerResponse, toOutgoingHeaders, toToReadable };