UNPKG

extract-base-iterator

Version:

Base iterator for extract iterators like tar-iterator and zip-iterator

50 lines 1.66 kB
/** * Read entire stream content as string * * Handles both flowing streams and streams that have already * buffered data (using readable stream semantics). * * Node 0.8+ compatible. */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return streamToString; } }); var _onone = /*#__PURE__*/ _interop_require_default(require("on-one")); var _compatts = require("./compat.js"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function streamToString(stream, callback) { var chunks = []; // Handle data from the stream stream.on('data', function(chunk) { if (typeof chunk === 'string') { chunks.push((0, _compatts.bufferFrom)(chunk, 'utf8')); } else { chunks.push(chunk); } }); // Handle stream end events using on-one for Node 0.8 compatibility (0, _onone.default)(stream, [ 'error', 'end', 'close' ], function(err) { if (err) return callback(err); var content = Buffer.concat(chunks).toString('utf8'); callback(undefined, content); }); // Ensure stream is flowing (in case it's paused) if (typeof stream.resume === 'function') { stream.resume(); } } /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }