"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var async_1 = require("../scheduler/async"); var scan_1 = require("./scan"); var defer_1 = require("../observable/defer"); var map_1 = require("./map"); function timeInterval(scheduler) { if (scheduler === void 0) { scheduler = async_1.async; } return function (source) { return defer_1.defer(function () { return source.pipe(scan_1.scan(function (_a, value) { var current = _a.current; return ({ value: value, current: scheduler.now(), last: current }); }, { current: scheduler.now(), value: undefined, last: undefined }), map_1.map(function (_a) { var current = _a.current, last = _a.last, value = _a.value; return new TimeInterval(value, current - last); })); }); }; } exports.timeInterval = timeInterval; var TimeInterval = (function () { function TimeInterval(value, interval) { this.value = value; this.interval = interval; } return TimeInterval; }()); exports.TimeInterval = TimeInterval; //# sourceMappingURL=timeInterval.js.map