@atomiqlabs/sdk-lib
Version:
Basic SDK functionality library for atomiq
29 lines (23 loc) • 851 B
text/typescript
import {ParamEncoder} from "../ParamEncoder";
import {Buffer} from "buffer";
export class StreamParamEncoder extends ParamEncoder {
private readonly stream: TransformStream<Buffer>;
private closed: boolean = false;
constructor() {
let stream = new TransformStream<Buffer>();
let writeStream = stream.writable.getWriter();
writeStream.closed.then(() => this.closed = true);
super(writeStream.write.bind(writeStream), () => {
if(this.closed) return Promise.resolve();
this.closed = true;
return writeStream.close();
});
this.stream = stream;
}
/**
* Returns the readable stream to be passed to the fetch API
*/
getReadableStream(): ReadableStream<Buffer> {
return this.stream.readable;
}
}