Skip to content

NodeHttpIncomingMessage

Adapter base for exposing Node http.IncomingMessage values as Effect HTTP incoming messages.

Server requests and Node client responses both arrive as Node readable streams with raw header objects, socket metadata, and one-shot body consumption. This module's NodeHttpIncomingMessage class keeps the original Node message available while presenting Effect's HttpIncomingMessage shape: typed headers, remote address lookup, stream access, and text, JSON, URL-encoded, and array-buffer body readers.

1 exports Added in v4.0.0 Source

Constructors

Adapts a Node IncomingMessage to Effect HTTP incoming messages.

When to use

Use to implement Node HTTP request or response adapters that expose the Effect HTTP incoming-message interface.

Details

The adapter exposes headers, remote address, stream access, and cached body decoders. Subclasses provide the error mapping for unknown Node errors.

Signature

declare class NodeHttpIncomingMessage<E> extends Class implements HttpIncomingMessage<E> {
  constructor<E>(source: IncomingMessage, onError: (error: unknown) => E, remoteAddressOverride?: Option<string>);
  readonly "~effect/http/HttpIncomingMessage": "~effect/http/HttpIncomingMessage";
  readonly onError: (error: unknown) => E;
  readonly remoteAddressOverride?: Option<string>;
  readonly source: IncomingMessage;
  arrayBuffer: Effect<ArrayBuffer, E>;
  headers: Headers;
  json: Effect<Json, E>;
  jsonUnsafe: Json;
  remoteAddress: None<any> | Some<any>;
  stream: Stream<Uint8Array<ArrayBufferLike>, E>;
  text: Effect<string, E>;
  textUnsafe: string;
  urlParamsBody: Effect<UrlParams, E>;
}