sequency
Version:
Functional sequences for processing iterable data in JavaScript
159 lines • 7.11 kB
JavaScript
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