diff --git a/packages/core/src/event-stream/decoder.test.ts b/packages/core/src/event-stream/decoder.test.ts index 89a5362..46dc92b 100644 --- a/packages/core/src/event-stream/decoder.test.ts +++ b/packages/core/src/event-stream/decoder.test.ts @@ -325,6 +325,21 @@ describe('eventStreamDecoderStream', () => { ]) }) + it('imports without TransformStream in the global scope', async ({ onTestFinished }) => { + vi.stubGlobal('TransformStream', undefined) + vi.resetModules() + + onTestFinished(() => { + vi.unstubAllGlobals() + vi.resetModules() + }) + + const module = await import('./decoder') + + expect(module.EventStreamDecoderStream).toBeDefined() + expect(module.decodeEventStreamMessage('data: hello\n\n')).toEqual({ data: 'hello' }) + }) + it('on incomplete message', async () => { const stream = new ReadableStream({ start(controller) { diff --git a/packages/core/src/event-stream/decoder.ts b/packages/core/src/event-stream/decoder.ts index 2c985fc..0104f86 100644 --- a/packages/core/src/event-stream/decoder.ts +++ b/packages/core/src/event-stream/decoder.ts @@ -143,11 +143,14 @@ export class EventStreamDecoder { } } -export class EventStreamDecoderStream extends TransformStream { +export class EventStreamDecoderStream implements ReadableWritablePair { + readonly readable: ReadableStream + readonly writable: WritableStream + constructor() { let decoder!: EventStreamDecoder - super({ + const transform = new TransformStream({ start(controller) { decoder = new EventStreamDecoder((event) => { controller.enqueue(event) @@ -160,5 +163,8 @@ export class EventStreamDecoderStream extends TransformStream