@aegisai/opik
Version:
Opik TypeScript and JavaScript SDK
1 lines • 2.72 kB
JavaScript
import'./chunk-WOT6VMZA.js';var s=class t{constructor(e){this.readableStream=e,this.reader=this.readableStream.getReader(),this.events={data:[],end:[],error:[],readable:[],close:[],pause:[],resume:[]},this.paused=false,this.resumeCallback=null,this.encoding=null;}on(e,r){var a;(a=this.events[e])==null||a.push(r);}off(e,r){var a;this.events[e]=(a=this.events[e])==null?void 0:a.filter(i=>i!==r);}pipe(e){return this.on("data",async r=>{if(e instanceof t)e._write(r);else if(e instanceof WritableStream){let a=e.getWriter();a.write(r).then(()=>a.releaseLock());}else e.write(r);}),this.on("end",async()=>{e instanceof t?e._end():e instanceof WritableStream?e.getWriter().close():e.end();}),this.on("error",async r=>{e instanceof t?e._error(r):e instanceof WritableStream?e.getWriter().abort(r):e.destroy(r);}),this._startReading(),e}pipeTo(e){return this.pipe(e)}unpipe(e){this.off("data",async r=>{if(e instanceof t)e._write(r);else if(e instanceof WritableStream){let a=e.getWriter();a.write(r).then(()=>a.releaseLock());}else e.write(r);}),this.off("end",async()=>{e instanceof t?e._end():e instanceof WritableStream?e.getWriter().close():e.end();}),this.off("error",async r=>{e instanceof t?e._error(r):e instanceof WritableStream?e.getWriter().abort(r):e.destroy(r);});}destroy(e){this.reader.cancel(e).then(()=>{this._emit("close");}).catch(r=>{this._emit("error",r);});}pause(){this.paused=true,this._emit("pause");}resume(){this.paused&&(this.paused=false,this._emit("resume"),this.resumeCallback&&(this.resumeCallback(),this.resumeCallback=null));}get isPaused(){return this.paused}async read(){this.paused&&await new Promise(a=>{this.resumeCallback=a;});let{done:e,value:r}=await this.reader.read();if(!e)return r}setEncoding(e){this.encoding=e;}async text(){let e=[];for(;;){let{done:a,value:i}=await this.reader.read();if(a)break;i&&e.push(i);}return new TextDecoder(this.encoding||"utf-8").decode(await new Blob(e).arrayBuffer())}async json(){let e=await this.text();return JSON.parse(e)}_write(e){this._emit("data",e);}_end(){this._emit("end");}_error(e){this._emit("error",e);}_emit(e,r){if(this.events[e])for(let a of this.events[e]||[])a(r);}async _startReading(){try{for(this._emit("readable");;){this.paused&&await new Promise(a=>{this.resumeCallback=a;});let{done:e,value:r}=await this.reader.read();if(e){this._emit("end"),this._emit("close");break}r&&this._emit("data",r);}}catch(e){this._emit("error",e);}}[Symbol.asyncIterator](){return {next:async()=>{this.paused&&await new Promise(a=>{this.resumeCallback=a;});let{done:e,value:r}=await this.reader.read();return e?{done:true,value:void 0}:{done:false,value:r}},[Symbol.asyncIterator](){return this}}}};export{s as Node18UniversalStreamWrapper};