@graffy/stream
Version:
Utility for creating AsyncIterables (streams) from any callback-based
31 lines (25 loc) • 771 B
JavaScript
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = mapStream;
var _makeStream = _interopRequireDefault(require("./makeStream"));
function mapStream(stream, fn) {
return (0, _makeStream.default)(function (push, end) {
var next = function next() {
stream.next().then(function (_ref) {
var value = _ref.value,
done = _ref.done;
if (done) return end();
push(fn(value));
next();
}).catch(function (error) {
return end(error);
});
};
next();
return function (error, value) {
error ? stream.throw(error) : stream.return(value);
};
});
}
module.exports = exports.default;
;