import type {EventSourceParser, ParsedEvent} from './types.js' import {createParser} from './parse.js' /** * A TransformStream that ingests a stream of strings and produces a stream of ParsedEvents. * * @example * ``` * const eventStream = * response.body * .pipeThrough(new TextDecoderStream()) * .pipeThrough(new EventSourceParserStream()) * ``` * @public */ export class EventSourceParserStream extends TransformStream { constructor() { let parser!: EventSourceParser super({ start(controller) { parser = createParser((event) => { if (event.type === 'event') { controller.enqueue(event) } }) }, transform(chunk) { parser.feed(chunk) }, }) } } export type {ParsedEvent} from './types.js'