UNPKG

1.91 kBTypeScriptView Raw
1/// <reference types="node" />
2/// <reference types="node" />
3/// <reference types="node" />
4import { MessageEvent } from '@nestjs/common/interfaces';
5import { IncomingMessage, OutgoingHttpHeaders } from 'http';
6import { Transform } from 'stream';
7export declare type AdditionalHeaders = Record<string, string[] | string | number | undefined>;
8interface ReadHeaders {
9 getHeaders?(): AdditionalHeaders;
10}
11interface WriteHeaders {
12 writableEnded?: boolean;
13 writeHead?(statusCode: number, reasonPhrase?: string, headers?: OutgoingHttpHeaders): void;
14 writeHead?(statusCode: number, headers?: OutgoingHttpHeaders): void;
15 flushHeaders?(): void;
16}
17export declare type WritableHeaderStream = NodeJS.WritableStream & WriteHeaders;
18export declare type HeaderStream = WritableHeaderStream & ReadHeaders;
19/**
20 * Adapted from https://raw.githubusercontent.com/EventSource/node-ssestream
21 * Transforms "messages" to W3C event stream content.
22 * See https://html.spec.whatwg.org/multipage/server-sent-events.html
23 * A message is an object with one or more of the following properties:
24 * - data (String or object, which gets turned into JSON)
25 * - type
26 * - id
27 * - retry
28 *
29 * If constructed with a HTTP Request, it will optimise the socket for streaming.
30 * If this stream is piped to an HTTP Response, it will set appropriate headers.
31 */
32export declare class SseStream extends Transform {
33 private lastEventId;
34 constructor(req?: IncomingMessage);
35 pipe<T extends WritableHeaderStream>(destination: T, options?: {
36 additionalHeaders?: AdditionalHeaders;
37 end?: boolean;
38 }): T;
39 _transform(message: MessageEvent, encoding: string, callback: (error?: Error | null, data?: any) => void): void;
40 /**
41 * Calls `.write` but handles the drain if needed
42 */
43 writeMessage(message: MessageEvent, cb: (error: Error | null | undefined) => void): void;
44}
45export {};