UNPKG

stream-wormhole

Version:
57 lines 4.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sendToWormhole = void 0; const READABLE_STATE_KEY = '_readableState'; function sendToWormhole(stream, throwError = false) { return new Promise((resolve, reject) => { if (typeof stream.resume !== 'function') { return resolve(); } // unpipe it stream.unpipe && stream.unpipe(); // enable resume first stream.resume(); if (stream.listenerCount && stream.listenerCount('readable') > 0) { // https://npm.taobao.org/mirrors/node/latest/docs/api/stream.html#stream_readable_resume // node 10.0.0: The resume() has no effect if there is a 'readable' event listening. stream.removeAllListeners('readable'); // call resume again in nextTick process.nextTick(() => stream.resume()); } if (!stream.readable || stream.destroyed) { return resolve(); } if (stream.closed || stream.readableEnded) { return resolve(); } const readableState = Reflect.get(stream, READABLE_STATE_KEY); if (readableState?.ended) { return resolve(); } function cleanup() { stream.removeListener('end', onEnd); stream.removeListener('close', onEnd); stream.removeListener('error', onError); } function onEnd() { cleanup(); resolve(); } function onError(err) { cleanup(); // don't throw error by default if (throwError) { reject(err); } else { resolve(); } } stream.on('end', onEnd); stream.on('close', onEnd); stream.on('error', onError); }); } exports.sendToWormhole = sendToWormhole; exports.default = sendToWormhole; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsTUFBTSxrQkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUU1QyxTQUFnQixjQUFjLENBQUMsTUFBZ0IsRUFBRSxVQUFVLEdBQUcsS0FBSztJQUNqRSxPQUFPLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQzNDLElBQUksT0FBTyxNQUFNLENBQUMsTUFBTSxLQUFLLFVBQVUsRUFBRTtZQUN2QyxPQUFPLE9BQU8sRUFBRSxDQUFDO1NBQ2xCO1FBRUQsWUFBWTtRQUNaLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2pDLHNCQUFzQjtRQUN0QixNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFaEIsSUFBSSxNQUFNLENBQUMsYUFBYSxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2hFLHlGQUF5RjtZQUN6RixvRkFBb0Y7WUFDcEYsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RDLGdDQUFnQztZQUNoQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUN4QyxPQUFPLE9BQU8sRUFBRSxDQUFDO1NBQ2xCO1FBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUU7WUFDekMsT0FBTyxPQUFPLEVBQUUsQ0FBQztTQUNsQjtRQUVELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDOUQsSUFBSSxhQUFhLEVBQUUsS0FBSyxFQUFFO1lBQ3hCLE9BQU8sT0FBTyxFQUFFLENBQUM7U0FDbEI7UUFFRCxTQUFTLE9BQU87WUFDZCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNwQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsU0FBUyxLQUFLO1lBQ1osT0FBTyxFQUFFLENBQUM7WUFDVixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxTQUFTLE9BQU8sQ0FBQyxHQUFVO1lBQ3pCLE9BQU8sRUFBRSxDQUFDO1lBQ1YsK0JBQStCO1lBQy9CLElBQUksVUFBVSxFQUFFO2dCQUNkLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNiO2lCQUFNO2dCQUNMLE9BQU8sRUFBRSxDQUFDO2FBQ1g7UUFDSCxDQUFDO1FBRUQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBeERELHdDQXdEQztBQUVELGtCQUFlLGNBQWMsQ0FBQyJ9