"use strict"; const Promise = require("bluebird"); const propagateAbort = require("@promistream/propagate-abort"); const propagatePeek = require("@promistream/propagate-peek"); const { validateArguments } = require("@validatem/core"); const required = require("@validatem/required"); const isFunction = require("@validatem/is-function"); module.exports = function mapStream(_mapCallback) { let [ mapCallback ] = validateArguments(arguments, { mapCallback: [ required, isFunction ] }); return { _promistreamVersion: 0, description: `map stream`, abort: propagateAbort, peek: propagatePeek, read: function produceValue_mapStream(source) { return Promise.try(() => { return source.read(); }).then((value) => { return mapCallback(value); }); } }; };