"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var ArgumentOutOfRangeError_1 = require("../util/ArgumentOutOfRangeError"); var filter_1 = require("./filter"); var throwIfEmpty_1 = require("./throwIfEmpty"); var defaultIfEmpty_1 = require("./defaultIfEmpty"); var take_1 = require("./take"); function elementAt(index, defaultValue) { if (index < 0) { throw new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError(); } var hasDefaultValue = arguments.length >= 2; return function (source) { return source.pipe(filter_1.filter(function (v, i) { return i === index; }), take_1.take(1), hasDefaultValue ? defaultIfEmpty_1.defaultIfEmpty(defaultValue) : throwIfEmpty_1.throwIfEmpty(function () { return new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError(); })); }; } exports.elementAt = elementAt; //# sourceMappingURL=elementAt.js.map