'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = Map; var _Pipe = require('../sink/Pipe'); var _Pipe2 = _interopRequireDefault(_Pipe); var _Filter = require('./Filter'); var _Filter2 = _interopRequireDefault(_Filter); var _FilterMap = require('./FilterMap'); var _FilterMap2 = _interopRequireDefault(_FilterMap); var _prelude = require('@most/prelude'); var base = _interopRequireWildcard(_prelude); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** @license MIT License (c) copyright 2010-2016 original author or authors */ /** @author Brian Cavalier */ /** @author John Hann */ function Map(f, source) { this.f = f; this.source = source; } /** * Create a mapped source, fusing adjacent map.map, filter.map, * and filter.map.map if possible * @param {function(*):*} f mapping function * @param {{run:function}} source source to map * @returns {Map|FilterMap} mapped source, possibly fused */ Map.create = function createMap(f, source) { if (source instanceof Map) { return new Map(base.compose(f, source.f), source.source); } if (source instanceof _Filter2.default) { return new _FilterMap2.default(source.p, f, source.source); } return new Map(f, source); }; Map.prototype.run = function (sink, scheduler) { // eslint-disable-line no-extend-native return this.source.run(new MapSink(this.f, sink), scheduler); }; function MapSink(f, sink) { this.f = f; this.sink = sink; } MapSink.prototype.end = _Pipe2.default.prototype.end; MapSink.prototype.error = _Pipe2.default.prototype.error; MapSink.prototype.event = function (t, x) { var f = this.f; this.sink.event(t, f(x)); };