Object.defineProperty(exports, "__esModule", { value: true }); exports.range = exports.generateSequence = exports.extendSequence = exports.isSequence = exports.createSequence = exports.asSequence = exports.emptySequence = exports.sequenceOf = void 0; var all_1 = require("./all"); var any_1 = require("./any"); var asIterable_1 = require("./asIterable"); var associate_1 = require("./associate"); var associateBy_1 = require("./associateBy"); var average_1 = require("./average"); var chunk_1 = require("./chunk"); var contains_1 = require("./contains"); var count_1 = require("./count"); var distinct_1 = require("./distinct"); var distinctBy_1 = require("./distinctBy"); var drop_1 = require("./drop"); var dropWhile_1 = require("./dropWhile"); var elementAt_1 = require("./elementAt"); var elementAtOrElse_1 = require("./elementAtOrElse"); var elementAtOrNull_1 = require("./elementAtOrNull"); var filter_1 = require("./filter"); var filterIndexed_1 = require("./filterIndexed"); var filterNot_1 = require("./filterNot"); var filterNotNull_1 = require("./filterNotNull"); var first_1 = require("./first"); var firstOrNull_1 = require("./firstOrNull"); var flatMap_1 = require("./flatMap"); var flatten_1 = require("./flatten"); var fold_1 = require("./fold"); var foldIndexed_1 = require("./foldIndexed"); var forEach_1 = require("./forEach"); var forEachIndexed_1 = require("./forEachIndexed"); var groupBy_1 = require("./groupBy"); var indexOf_1 = require("./indexOf"); var indexOfFirst_1 = require("./indexOfFirst"); var indexOfLast_1 = require("./indexOfLast"); var joinToString_1 = require("./joinToString"); var last_1 = require("./last"); var lastOrNull_1 = require("./lastOrNull"); var map_1 = require("./map"); var mapIndexed_1 = require("./mapIndexed"); var mapNotNull_1 = require("./mapNotNull"); var max_1 = require("./max"); var maxBy_1 = require("./maxBy"); var maxWith_1 = require("./maxWith"); var merge_1 = require("./merge"); var min_1 = require("./min"); var minBy_1 = require("./minBy"); var minus_1 = require("./minus"); var minWith_1 = require("./minWith"); var none_1 = require("./none"); var onEach_1 = require("./onEach"); var partition_1 = require("./partition"); var plus_1 = require("./plus"); var reduce_1 = require("./reduce"); var reduceIndexed_1 = require("./reduceIndexed"); var reverse_1 = require("./reverse"); var single_1 = require("./single"); var singleOrNull_1 = require("./singleOrNull"); var sorted_1 = require("./sorted"); var sortedBy_1 = require("./sortedBy"); var sortedByDescending_1 = require("./sortedByDescending"); var sortedDescending_1 = require("./sortedDescending"); var sortedWith_1 = require("./sortedWith"); var sum_1 = require("./sum"); var sumBy_1 = require("./sumBy"); var take_1 = require("./take"); var takeWhile_1 = require("./takeWhile"); var toArray_1 = require("./toArray"); var toMap_1 = require("./toMap"); var toSet_1 = require("./toSet"); var unzip_1 = require("./unzip"); var withIndex_1 = require("./withIndex"); var zip_1 = require("./zip"); var GeneratorIterator_1 = require("./GeneratorIterator"); var GeneratorSeedIterator_1 = require("./GeneratorSeedIterator"); var SequenceImpl = /** @class */ (function () { function SequenceImpl(iterator) { this.iterator = iterator; } return SequenceImpl; }()); applyMixins(SequenceImpl, [all_1.All, any_1.Any, asIterable_1.AsIterable, associate_1.Associate, associateBy_1.AssociateBy, average_1.Average, chunk_1.Chunk, contains_1.Contains, count_1.Count, distinct_1.Distinct, distinctBy_1.DistinctBy, drop_1.Drop, dropWhile_1.DropWhile, elementAt_1.ElementAt, elementAtOrElse_1.ElementAtOrElse, elementAtOrNull_1.ElementAtOrNull, filter_1.Filter, filterIndexed_1.FilterIndexed, filterNot_1.FilterNot, filterNotNull_1.FilterNotNull, first_1.First, firstOrNull_1.FirstOrNull, flatMap_1.FlatMap, flatten_1.Flatten, fold_1.Fold, foldIndexed_1.FoldIndexed, forEach_1.ForEach, forEachIndexed_1.ForEachIndexed, groupBy_1.GroupBy, indexOf_1.IndexOf, indexOfFirst_1.IndexOfFirst, indexOfLast_1.IndexOfLast, joinToString_1.JoinToString, last_1.Last, lastOrNull_1.LastOrNull, map_1.Map, mapIndexed_1.MapIndexed, mapNotNull_1.MapNotNull, max_1.Max, maxBy_1.MaxBy, maxWith_1.MaxWith, merge_1.Merge, min_1.Min, minBy_1.MinBy, minus_1.Minus, minWith_1.MinWith, none_1.None, onEach_1.OnEach, partition_1.Partition, plus_1.Plus, reduce_1.Reduce, reduceIndexed_1.ReduceIndexed, reverse_1.Reverse, single_1.Single, singleOrNull_1.SingleOrNull, sorted_1.Sorted, sortedBy_1.SortedBy, sortedByDescending_1.SortedByDescending, sortedDescending_1.SortedDescending, sortedWith_1.SortedWith, sum_1.Sum, sumBy_1.SumBy, take_1.Take, takeWhile_1.TakeWhile, toArray_1.ToArray, toMap_1.ToMap, toSet_1.ToSet, unzip_1.Unzip, withIndex_1.WithIndex, zip_1.Zip]); function applyMixins(derivedCtor, baseCtors) { baseCtors.forEach(function (baseCtor) { Object.getOwnPropertyNames(baseCtor.prototype).forEach(function (name) { derivedCtor.prototype[name] = baseCtor.prototype[name]; }); }); } function sequenceOf() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return asSequence(args); } exports.sequenceOf = sequenceOf; function emptySequence() { return asSequence([]); } exports.emptySequence = emptySequence; function asSequence(iterable) { if (iterable === null) { throw new Error("Cannot create sequence for input: null"); } if (iterable === undefined) { throw new Error("Cannot create sequence for input: undefined"); } if (iterable[Symbol.iterator] == null) { throw new Error("Cannot create sequence for non-iterable input: " + iterable); } var iterator = iterable[Symbol.iterator](); return createSequence(iterator); } exports.asSequence = asSequence; function createSequence(iterator) { return new SequenceImpl(iterator); } exports.createSequence = createSequence; function isSequence(object) { return object instanceof SequenceImpl; } exports.isSequence = isSequence; function extendSequence(mixin) { applyMixins(SequenceImpl, [mixin]); } exports.extendSequence = extendSequence; function generateSequence(a, b) { if (typeof a === "function" && b == null) { return createSequence(new GeneratorIterator_1.default(a)); } var seed = typeof a === "function" ? a() : a; return seed != null ? createSequence(new GeneratorSeedIterator_1.default(seed, b)) : emptySequence(); } exports.generateSequence = generateSequence; function range(start, endInclusive, step) { if (step === void 0) { step = 1; } if (start > endInclusive) { throw new Error("start [".concat(start, "] must be lower then endInclusive [").concat(endInclusive, "]")); } var current = start; return generateSequence(function () { try { return current <= endInclusive ? current : undefined; } finally { current += step; } }); } exports.range = range; //# sourceMappingURL=Sequence.js.map