node-web-stream-adapters
Version:
Node adapters for web streams
43 lines • 1.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.webStreamToReadable = void 0;
const stream_1 = require("stream");
/**
* See https://github.com/comunica/readable-from-web.js/blob/main/lib/ReadableFromWeb.ts
* MIT License
*/
class ReadableFromWeb extends stream_1.Readable {
reader;
readerClosed;
constructor(stream, options) {
super(options);
this.reader = stream.getReader();
this.readerClosed = false;
this.reader.closed.then(() => {
this.readerClosed = true;
}).catch((error) => {
this.readerClosed = true;
this.destroy(error);
});
}
_destroy(error, callback) {
if (!this.readerClosed) {
this.reader.cancel(error).then().finally(() => {
this.readerClosed = true;
this.reader.releaseLock();
});
}
callback && callback(error);
}
_read() {
this.reader;
this.reader.read()
.then(chunk => this.push(chunk.done ? null : chunk.value))
.catch((error) => this.destroy(error));
}
}
function webStreamToReadable(stream, options) {
return new ReadableFromWeb(stream, options);
}
exports.webStreamToReadable = webStreamToReadable;
//# sourceMappingURL=webStreamToReadable.js.map