extract-base-iterator
Version:
Base iterator for extract iterators like tar-iterator and zip-iterator
50 lines • 1.66 kB
JavaScript
/**
* 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; }