import type { BaseStreamInfo, ByteStreamInfo, TextStreamInfo } from '../../types'; class BaseStreamWriter { protected writableStream: WritableStream; protected defaultWriter: WritableStreamDefaultWriter; protected onClose?: () => void; readonly info: InfoType; constructor(writableStream: WritableStream, info: InfoType, onClose?: () => void) { this.writableStream = writableStream; this.defaultWriter = writableStream.getWriter(); this.onClose = onClose; this.info = info; } write(chunk: T): Promise { return this.defaultWriter.write(chunk); } async close() { await this.defaultWriter.close(); this.defaultWriter.releaseLock(); this.onClose?.(); } } export class TextStreamWriter extends BaseStreamWriter {} export class ByteStreamWriter extends BaseStreamWriter {}