UNPKG

78.6 kBJavaScriptView Raw
1(function webpackUniversalModuleDefinition(root, factory) {
2 if(typeof exports === 'object' && typeof module === 'object')
3 module.exports = factory();
4 else if(typeof define === 'function' && define.amd)
5 define("Sequency", [], factory);
6 else if(typeof exports === 'object')
7 exports["Sequency"] = factory();
8 else
9 root["Sequency"] = factory();
10})(window, function() {
11return /******/ (function(modules) { // webpackBootstrap
12/******/ // The module cache
13/******/ var installedModules = {};
14/******/
15/******/ // The require function
16/******/ function __webpack_require__(moduleId) {
17/******/
18/******/ // Check if module is in cache
19/******/ if(installedModules[moduleId]) {
20/******/ return installedModules[moduleId].exports;
21/******/ }
22/******/ // Create a new module (and put it into the cache)
23/******/ var module = installedModules[moduleId] = {
24/******/ i: moduleId,
25/******/ l: false,
26/******/ exports: {}
27/******/ };
28/******/
29/******/ // Execute the module function
30/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31/******/
32/******/ // Flag the module as loaded
33/******/ module.l = true;
34/******/
35/******/ // Return the exports of the module
36/******/ return module.exports;
37/******/ }
38/******/
39/******/
40/******/ // expose the modules object (__webpack_modules__)
41/******/ __webpack_require__.m = modules;
42/******/
43/******/ // expose the module cache
44/******/ __webpack_require__.c = installedModules;
45/******/
46/******/ // define getter function for harmony exports
47/******/ __webpack_require__.d = function(exports, name, getter) {
48/******/ if(!__webpack_require__.o(exports, name)) {
49/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
50/******/ }
51/******/ };
52/******/
53/******/ // define __esModule on exports
54/******/ __webpack_require__.r = function(exports) {
55/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
56/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
57/******/ }
58/******/ Object.defineProperty(exports, '__esModule', { value: true });
59/******/ };
60/******/
61/******/ // create a fake namespace object
62/******/ // mode & 1: value is a module id, require it
63/******/ // mode & 2: merge all properties of value into the ns
64/******/ // mode & 4: return value when already ns object
65/******/ // mode & 8|1: behave like require
66/******/ __webpack_require__.t = function(value, mode) {
67/******/ if(mode & 1) value = __webpack_require__(value);
68/******/ if(mode & 8) return value;
69/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
70/******/ var ns = Object.create(null);
71/******/ __webpack_require__.r(ns);
72/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
73/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
74/******/ return ns;
75/******/ };
76/******/
77/******/ // getDefaultExport function for compatibility with non-harmony modules
78/******/ __webpack_require__.n = function(module) {
79/******/ var getter = module && module.__esModule ?
80/******/ function getDefault() { return module['default']; } :
81/******/ function getModuleExports() { return module; };
82/******/ __webpack_require__.d(getter, 'a', getter);
83/******/ return getter;
84/******/ };
85/******/
86/******/ // Object.prototype.hasOwnProperty.call
87/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
88/******/
89/******/ // __webpack_public_path__
90/******/ __webpack_require__.p = "";
91/******/
92/******/
93/******/ // Load entry module and return exports
94/******/ return __webpack_require__(__webpack_require__.s = 0);
95/******/ })
96/************************************************************************/
97/******/ ([
98/* 0 */
99/***/ (function(module, exports, __webpack_require__) {
100
101Object.defineProperty(exports, "__esModule", { value: true });
102var all_1 = __webpack_require__(1);
103var any_1 = __webpack_require__(2);
104var asIterable_1 = __webpack_require__(3);
105var associate_1 = __webpack_require__(4);
106var associateBy_1 = __webpack_require__(5);
107var average_1 = __webpack_require__(6);
108var chunk_1 = __webpack_require__(7);
109var contains_1 = __webpack_require__(8);
110var count_1 = __webpack_require__(9);
111var distinct_1 = __webpack_require__(10);
112var distinctBy_1 = __webpack_require__(11);
113var drop_1 = __webpack_require__(12);
114var dropWhile_1 = __webpack_require__(13);
115var elementAt_1 = __webpack_require__(14);
116var elementAtOrElse_1 = __webpack_require__(15);
117var elementAtOrNull_1 = __webpack_require__(16);
118var filter_1 = __webpack_require__(17);
119var filterIndexed_1 = __webpack_require__(18);
120var filterNot_1 = __webpack_require__(19);
121var filterNotNull_1 = __webpack_require__(20);
122var first_1 = __webpack_require__(21);
123var firstOrNull_1 = __webpack_require__(22);
124var flatMap_1 = __webpack_require__(23);
125var flatten_1 = __webpack_require__(24);
126var fold_1 = __webpack_require__(25);
127var foldIndexed_1 = __webpack_require__(26);
128var forEach_1 = __webpack_require__(27);
129var forEachIndexed_1 = __webpack_require__(28);
130var groupBy_1 = __webpack_require__(29);
131var indexOf_1 = __webpack_require__(30);
132var indexOfFirst_1 = __webpack_require__(31);
133var indexOfLast_1 = __webpack_require__(32);
134var joinToString_1 = __webpack_require__(33);
135var last_1 = __webpack_require__(34);
136var lastOrNull_1 = __webpack_require__(35);
137var map_1 = __webpack_require__(36);
138var mapIndexed_1 = __webpack_require__(37);
139var mapNotNull_1 = __webpack_require__(38);
140var max_1 = __webpack_require__(39);
141var maxBy_1 = __webpack_require__(40);
142var maxWith_1 = __webpack_require__(41);
143var merge_1 = __webpack_require__(42);
144var min_1 = __webpack_require__(43);
145var minBy_1 = __webpack_require__(44);
146var minus_1 = __webpack_require__(45);
147var minWith_1 = __webpack_require__(46);
148var none_1 = __webpack_require__(47);
149var onEach_1 = __webpack_require__(48);
150var partition_1 = __webpack_require__(49);
151var plus_1 = __webpack_require__(50);
152var reduce_1 = __webpack_require__(51);
153var reduceIndexed_1 = __webpack_require__(52);
154var reverse_1 = __webpack_require__(53);
155var single_1 = __webpack_require__(54);
156var singleOrNull_1 = __webpack_require__(55);
157var sorted_1 = __webpack_require__(56);
158var sortedBy_1 = __webpack_require__(58);
159var sortedByDescending_1 = __webpack_require__(59);
160var sortedDescending_1 = __webpack_require__(60);
161var sortedWith_1 = __webpack_require__(61);
162var sum_1 = __webpack_require__(62);
163var sumBy_1 = __webpack_require__(63);
164var take_1 = __webpack_require__(64);
165var takeWhile_1 = __webpack_require__(65);
166var toArray_1 = __webpack_require__(66);
167var toMap_1 = __webpack_require__(67);
168var toSet_1 = __webpack_require__(68);
169var unzip_1 = __webpack_require__(69);
170var withIndex_1 = __webpack_require__(70);
171var zip_1 = __webpack_require__(71);
172var GeneratorIterator_1 = __webpack_require__(72);
173var GeneratorSeedIterator_1 = __webpack_require__(73);
174var SequenceImpl = /** @class */ (function () {
175 function SequenceImpl(iterator) {
176 this.iterator = iterator;
177 }
178 return SequenceImpl;
179}());
180applyMixins(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,
181 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,
182 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,
183 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,
184 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]);
185function applyMixins(derivedCtor, baseCtors) {
186 baseCtors.forEach(function (baseCtor) {
187 Object.getOwnPropertyNames(baseCtor.prototype).forEach(function (name) {
188 derivedCtor.prototype[name] = baseCtor.prototype[name];
189 });
190 });
191}
192function sequenceOf() {
193 var args = [];
194 for (var _i = 0; _i < arguments.length; _i++) {
195 args[_i] = arguments[_i];
196 }
197 return asSequence(args);
198}
199exports.sequenceOf = sequenceOf;
200function emptySequence() {
201 return asSequence([]);
202}
203exports.emptySequence = emptySequence;
204function asSequence(iterable) {
205 if (iterable === null) {
206 throw new Error("Cannot create sequence for input: null");
207 }
208 if (iterable === undefined) {
209 throw new Error("Cannot create sequence for input: undefined");
210 }
211 if (iterable[Symbol.iterator] == null) {
212 throw new Error("Cannot create sequence for non-iterable input: " + iterable);
213 }
214 var iterator = iterable[Symbol.iterator]();
215 return createSequence(iterator);
216}
217exports.asSequence = asSequence;
218function createSequence(iterator) {
219 return new SequenceImpl(iterator);
220}
221exports.createSequence = createSequence;
222function isSequence(object) {
223 return object instanceof SequenceImpl;
224}
225exports.isSequence = isSequence;
226function extendSequence(mixin) {
227 applyMixins(SequenceImpl, [mixin]);
228}
229exports.extendSequence = extendSequence;
230function generateSequence(a, b) {
231 if (typeof a === "function" && b == null) {
232 return createSequence(new GeneratorIterator_1.default(a));
233 }
234 var seed = typeof a === "function" ? a() : a;
235 return seed != null
236 ? createSequence(new GeneratorSeedIterator_1.default(seed, b))
237 : emptySequence();
238}
239exports.generateSequence = generateSequence;
240function range(start, endInclusive, step) {
241 if (step === void 0) { step = 1; }
242 if (start > endInclusive) {
243 throw new Error("start [" + start + "] must be lower then endInclusive [" + endInclusive + "]");
244 }
245 if (start === endInclusive) {
246 return emptySequence();
247 }
248 var current = start;
249 return generateSequence(function () {
250 try {
251 return current <= endInclusive
252 ? current
253 : undefined;
254 }
255 finally {
256 current += step;
257 }
258 });
259}
260exports.range = range;
261
262
263/***/ }),
264/* 1 */
265/***/ (function(module, exports) {
266
267Object.defineProperty(exports, "__esModule", { value: true });
268var All = /** @class */ (function () {
269 function All() {
270 }
271 /**
272 * Returns `true` if all elements match the given `predicate`.
273 *
274 * @param {(T) => boolean} predicate
275 * @returns {boolean}
276 */
277 All.prototype.all = function (predicate) {
278 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
279 if (!predicate(item.value)) {
280 return false;
281 }
282 }
283 return true;
284 };
285 return All;
286}());
287exports.All = All;
288
289
290/***/ }),
291/* 2 */
292/***/ (function(module, exports) {
293
294Object.defineProperty(exports, "__esModule", { value: true });
295var Any = /** @class */ (function () {
296 function Any() {
297 }
298 /**
299 * Returns `true` if at least one element match the given `predicate`.
300 *
301 * @param {(T) => boolean} predicate
302 * @returns {boolean}
303 */
304 Any.prototype.any = function (predicate) {
305 if (predicate == null) {
306 return !this.iterator.next().done;
307 }
308 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
309 if (predicate(item.value)) {
310 return true;
311 }
312 }
313 return false;
314 };
315 return Any;
316}());
317exports.Any = Any;
318
319
320/***/ }),
321/* 3 */
322/***/ (function(module, exports) {
323
324Object.defineProperty(exports, "__esModule", { value: true });
325var AsIterable = /** @class */ (function () {
326 function AsIterable() {
327 }
328 /**
329 * Returns an iterable representation of the sequence.
330 *
331 * @returns {Iterable<T>}
332 */
333 AsIterable.prototype.asIterable = function () {
334 var _a;
335 var iterator = this.iterator;
336 return _a = {},
337 _a[Symbol.iterator] = function () {
338 return iterator;
339 },
340 _a;
341 };
342 return AsIterable;
343}());
344exports.AsIterable = AsIterable;
345
346
347/***/ }),
348/* 4 */
349/***/ (function(module, exports) {
350
351Object.defineProperty(exports, "__esModule", { value: true });
352var Associate = /** @class */ (function () {
353 function Associate() {
354 }
355 /**
356 * Transforms each element into a key-value pair and returns the results as map. In case of
357 * duplicate keys the last key-value pair overrides the other.
358 *
359 * @param {(value: T) => [K , V]} transform
360 * @returns {Map<K, V>}
361 */
362 Associate.prototype.associate = function (transform) {
363 var result = new Map();
364 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
365 var pair = transform(item.value);
366 result.set(pair[0], pair[1]);
367 }
368 return result;
369 };
370 return Associate;
371}());
372exports.Associate = Associate;
373
374
375/***/ }),
376/* 5 */
377/***/ (function(module, exports) {
378
379Object.defineProperty(exports, "__esModule", { value: true });
380var AssociateBy = /** @class */ (function () {
381 function AssociateBy() {
382 }
383 AssociateBy.prototype.associateBy = function (keyOrSelector, valueTransform) {
384 var selector = typeof keyOrSelector === "function"
385 ? keyOrSelector
386 : function (value) { return value[keyOrSelector]; };
387 var result = new Map();
388 var transform = valueTransform != null
389 ? valueTransform
390 : function (value) { return value; };
391 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
392 var key = selector(item.value);
393 var value = transform(item.value);
394 result.set(key, value);
395 }
396 return result;
397 };
398 return AssociateBy;
399}());
400exports.AssociateBy = AssociateBy;
401
402
403/***/ }),
404/* 6 */
405/***/ (function(module, exports) {
406
407Object.defineProperty(exports, "__esModule", { value: true });
408var Average = /** @class */ (function () {
409 function Average() {
410 }
411 /**
412 * Returns the average of all numbers of the sequence or `NaN` if the sequence is empty.
413 *
414 * @returns {number}
415 */
416 Average.prototype.average = function () {
417 var sum = 0;
418 var count = 0;
419 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
420 sum += item.value;
421 count++;
422 }
423 return count === 0
424 ? Number.NaN
425 : sum / count;
426 };
427 return Average;
428}());
429exports.Average = Average;
430
431
432/***/ }),
433/* 7 */
434/***/ (function(module, exports) {
435
436Object.defineProperty(exports, "__esModule", { value: true });
437var Chunk = /** @class */ (function () {
438 function Chunk() {
439 }
440 /**
441 * Splits the elements of the sequence into arrays which length is determined by
442 * the given `chunkSize` and returns all chunks as array.
443 *
444 * @param {number} chunkSize
445 * @returns {Array<Array<T>>}
446 */
447 Chunk.prototype.chunk = function (chunkSize) {
448 if (chunkSize < 1) {
449 throw new Error("chunkSize must be > 0 but is " + chunkSize);
450 }
451 var result = [];
452 var index = 0;
453 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
454 var chunkIndex = Math.floor(index / chunkSize);
455 if (result[chunkIndex] == null) {
456 result[chunkIndex] = [item.value];
457 }
458 else {
459 result[chunkIndex].push(item.value);
460 }
461 index++;
462 }
463 return result;
464 };
465 return Chunk;
466}());
467exports.Chunk = Chunk;
468
469
470/***/ }),
471/* 8 */
472/***/ (function(module, exports) {
473
474Object.defineProperty(exports, "__esModule", { value: true });
475var Contains = /** @class */ (function () {
476 function Contains() {
477 }
478 /**
479 * Returns `true` if the sequence contains the given `element`.
480 *
481 * @param {T} element
482 * @returns {boolean}
483 */
484 Contains.prototype.contains = function (element) {
485 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
486 if (element === item.value) {
487 return true;
488 }
489 }
490 return false;
491 };
492 return Contains;
493}());
494exports.Contains = Contains;
495
496
497/***/ }),
498/* 9 */
499/***/ (function(module, exports) {
500
501Object.defineProperty(exports, "__esModule", { value: true });
502var Count = /** @class */ (function () {
503 function Count() {
504 }
505 /**
506 * Returns the number of elements of this sequence. If `predicate` is present, returns
507 * the number of elements matching the given `predicate`.
508 *
509 * @param {(T) => boolean} predicate
510 * @returns {number}
511 */
512 Count.prototype.count = function (predicate) {
513 var num = 0;
514 if (predicate == null) {
515 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
516 num++;
517 }
518 }
519 else {
520 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
521 if (predicate(item.value)) {
522 num++;
523 }
524 }
525 }
526 return num;
527 };
528 return Count;
529}());
530exports.Count = Count;
531
532
533/***/ }),
534/* 10 */
535/***/ (function(module, exports, __webpack_require__) {
536
537Object.defineProperty(exports, "__esModule", { value: true });
538var Sequence_1 = __webpack_require__(0);
539var DistinctIterator = /** @class */ (function () {
540 function DistinctIterator(iterator) {
541 this.iterator = iterator;
542 this.items = [];
543 }
544 DistinctIterator.prototype.next = function (value) {
545 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
546 if (this.items.indexOf(item.value) < 0) {
547 this.items.push(item.value);
548 return { done: false, value: item.value };
549 }
550 }
551 return { done: true, value: undefined };
552 };
553 return DistinctIterator;
554}());
555var Distinct = /** @class */ (function () {
556 function Distinct() {
557 }
558 /**
559 * Returns a new sequence which discards all duplicate elements.
560 *
561 * @returns {Sequence<T>}
562 */
563 Distinct.prototype.distinct = function () {
564 return Sequence_1.createSequence(new DistinctIterator(this.iterator));
565 };
566 return Distinct;
567}());
568exports.Distinct = Distinct;
569
570
571/***/ }),
572/* 11 */
573/***/ (function(module, exports, __webpack_require__) {
574
575Object.defineProperty(exports, "__esModule", { value: true });
576var Sequence_1 = __webpack_require__(0);
577var DistinctByIterator = /** @class */ (function () {
578 function DistinctByIterator(iterator, selector) {
579 this.iterator = iterator;
580 this.selector = selector;
581 this.keys = [];
582 }
583 DistinctByIterator.prototype.next = function (value) {
584 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
585 var key = this.selector(item.value);
586 if (this.keys.indexOf(key) < 0) {
587 this.keys.push(key);
588 return { done: false, value: item.value };
589 }
590 }
591 return { done: true, value: undefined };
592 };
593 return DistinctByIterator;
594}());
595var DistinctBy = /** @class */ (function () {
596 function DistinctBy() {
597 }
598 /**
599 * Returns a new sequence which discards all elements with duplicate items determined
600 * by the given `selector`.
601 *
602 * @param {(item: T) => K} selector
603 * @returns {Sequence<T>}
604 */
605 DistinctBy.prototype.distinctBy = function (selector) {
606 return Sequence_1.createSequence(new DistinctByIterator(this.iterator, selector));
607 };
608 return DistinctBy;
609}());
610exports.DistinctBy = DistinctBy;
611
612
613/***/ }),
614/* 12 */
615/***/ (function(module, exports) {
616
617Object.defineProperty(exports, "__esModule", { value: true });
618var Drop = /** @class */ (function () {
619 function Drop() {
620 }
621 /**
622 * Returns a new sequence which discards the first `n` elements;
623 *
624 * @param {number} n
625 * @returns {Sequence<T>}
626 */
627 Drop.prototype.drop = function (n) {
628 return this.withIndex()
629 .dropWhile(function (it) { return it.index < n; })
630 .map(function (it) { return it.value; });
631 };
632 return Drop;
633}());
634exports.Drop = Drop;
635
636
637/***/ }),
638/* 13 */
639/***/ (function(module, exports, __webpack_require__) {
640
641Object.defineProperty(exports, "__esModule", { value: true });
642var Sequence_1 = __webpack_require__(0);
643var DropWhileIterator = /** @class */ (function () {
644 function DropWhileIterator(iterator, predicate) {
645 this.iterator = iterator;
646 this.predicate = predicate;
647 this.dropping = true;
648 }
649 DropWhileIterator.prototype.next = function (value) {
650 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
651 if (!this.dropping) {
652 return { done: false, value: item.value };
653 }
654 var result = this.predicate(item.value);
655 if (!result) {
656 this.dropping = false;
657 return { done: false, value: item.value };
658 }
659 }
660 return { done: true, value: undefined };
661 };
662 return DropWhileIterator;
663}());
664var DropWhile = /** @class */ (function () {
665 function DropWhile() {
666 }
667 /**
668 * Drops all elements of the sequence as long as the given `predicate` evaluates to true.
669 *
670 * @param {(item: T) => boolean} predicate
671 * @returns {Sequence<T>}
672 */
673 DropWhile.prototype.dropWhile = function (predicate) {
674 return Sequence_1.createSequence(new DropWhileIterator(this.iterator, predicate));
675 };
676 return DropWhile;
677}());
678exports.DropWhile = DropWhile;
679
680
681/***/ }),
682/* 14 */
683/***/ (function(module, exports) {
684
685Object.defineProperty(exports, "__esModule", { value: true });
686var ElementAt = /** @class */ (function () {
687 function ElementAt() {
688 }
689 /**
690 * Returns the element at position `index` (zero-based) or throws an error if `index`
691 * is out of bounds.
692 *
693 * @param {number} index
694 * @returns {T}
695 */
696 ElementAt.prototype.elementAt = function (index) {
697 var i = 0;
698 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
699 if (i === index) {
700 return item.value;
701 }
702 i++;
703 }
704 throw new Error("Index out of bounds: " + index);
705 };
706 return ElementAt;
707}());
708exports.ElementAt = ElementAt;
709
710
711/***/ }),
712/* 15 */
713/***/ (function(module, exports) {
714
715Object.defineProperty(exports, "__esModule", { value: true });
716var ElementAtOrElse = /** @class */ (function () {
717 function ElementAtOrElse() {
718 }
719 /**
720 * Returns the element at position `index` (zero-based). If `index` is out of bounds returns
721 * the result of the given `defaultValue` function.
722 *
723 * @param {number} index
724 * @param defaultValue
725 * @returns {T}
726 */
727 ElementAtOrElse.prototype.elementAtOrElse = function (index, defaultValue) {
728 var i = 0;
729 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
730 if (i === index) {
731 return item.value;
732 }
733 i++;
734 }
735 return defaultValue(index);
736 };
737 return ElementAtOrElse;
738}());
739exports.ElementAtOrElse = ElementAtOrElse;
740
741
742/***/ }),
743/* 16 */
744/***/ (function(module, exports) {
745
746Object.defineProperty(exports, "__esModule", { value: true });
747var ElementAtOrNull = /** @class */ (function () {
748 function ElementAtOrNull() {
749 }
750 /**
751 * Returns the element at position `index` (zero-based) or `null` if `index`
752 * is out of bounds.
753 *
754 * @param {number} index
755 * @returns {T}
756 */
757 ElementAtOrNull.prototype.elementAtOrNull = function (index) {
758 var i = 0;
759 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
760 if (i === index) {
761 return item.value;
762 }
763 i++;
764 }
765 return null;
766 };
767 return ElementAtOrNull;
768}());
769exports.ElementAtOrNull = ElementAtOrNull;
770
771
772/***/ }),
773/* 17 */
774/***/ (function(module, exports, __webpack_require__) {
775
776Object.defineProperty(exports, "__esModule", { value: true });
777var Sequence_1 = __webpack_require__(0);
778var FilterIterator = /** @class */ (function () {
779 function FilterIterator(predicate, iterator) {
780 this.predicate = predicate;
781 this.iterator = iterator;
782 }
783 FilterIterator.prototype.next = function (value) {
784 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
785 if (this.predicate(item.value)) {
786 return { done: false, value: item.value };
787 }
788 }
789 return { done: true, value: undefined };
790 };
791 return FilterIterator;
792}());
793var Filter = /** @class */ (function () {
794 function Filter() {
795 }
796 /**
797 * Returns a new sequence consisting of all elements that match the given `predicate`.
798 *
799 * @param {(T) => boolean} predicate
800 * @returns {Sequence<T>}
801 */
802 Filter.prototype.filter = function (predicate) {
803 return Sequence_1.createSequence(new FilterIterator(predicate, this.iterator));
804 };
805 return Filter;
806}());
807exports.Filter = Filter;
808
809
810/***/ }),
811/* 18 */
812/***/ (function(module, exports) {
813
814Object.defineProperty(exports, "__esModule", { value: true });
815var FilterIndexed = /** @class */ (function () {
816 function FilterIndexed() {
817 }
818 /**
819 * Returns a new sequence consisting of all elements that match the given `predicate`.
820 *
821 * @param {(index: number, value: T) => boolean} predicate
822 * @returns {Sequence<T>}
823 */
824 FilterIndexed.prototype.filterIndexed = function (predicate) {
825 return this.withIndex()
826 .filter(function (it) { return predicate(it.index, it.value); })
827 .map(function (it) { return it.value; });
828 };
829 return FilterIndexed;
830}());
831exports.FilterIndexed = FilterIndexed;
832
833
834/***/ }),
835/* 19 */
836/***/ (function(module, exports) {
837
838Object.defineProperty(exports, "__esModule", { value: true });
839var FilterNot = /** @class */ (function () {
840 function FilterNot() {
841 }
842 /**
843 * Returns a new sequence consisting of all elements that don't match the given `predicate`.
844 *
845 * @param {(value: T) => boolean} predicate
846 * @returns {Sequence<T>}
847 */
848 FilterNot.prototype.filterNot = function (predicate) {
849 return this.filter(function (value) { return !predicate(value); });
850 };
851 return FilterNot;
852}());
853exports.FilterNot = FilterNot;
854
855
856/***/ }),
857/* 20 */
858/***/ (function(module, exports) {
859
860Object.defineProperty(exports, "__esModule", { value: true });
861var FilterNotNull = /** @class */ (function () {
862 function FilterNotNull() {
863 }
864 /**
865 * Returns a new sequence consisting of all non-null elements.
866 *
867 * @returns {Sequence<T>}
868 */
869 FilterNotNull.prototype.filterNotNull = function () {
870 return this.filter(function (it) { return it !== null; });
871 };
872 return FilterNotNull;
873}());
874exports.FilterNotNull = FilterNotNull;
875
876
877/***/ }),
878/* 21 */
879/***/ (function(module, exports) {
880
881Object.defineProperty(exports, "__esModule", { value: true });
882var First = /** @class */ (function () {
883 function First() {
884 }
885 /**
886 * Returns the first element of the sequence or the first element matching `predicate` if present, otherwise throws
887 * an error.
888 *
889 * @param {(T) => boolean} predicate
890 * @returns {T}
891 */
892 First.prototype.first = function (predicate) {
893 if (predicate != null) {
894 return this.filter(predicate).first();
895 }
896 var item = this.iterator.next();
897 if (item.done) {
898 throw new Error("No such element");
899 }
900 return item.value;
901 };
902 return First;
903}());
904exports.First = First;
905
906
907/***/ }),
908/* 22 */
909/***/ (function(module, exports) {
910
911Object.defineProperty(exports, "__esModule", { value: true });
912var FirstOrNull = /** @class */ (function () {
913 function FirstOrNull() {
914 }
915 /**
916 * Returns the first element of the sequence or the first element matching `predicate` if present, otherwise returns `null`.
917 *
918 * @param {(T) => boolean} predicate
919 * @returns {T}
920 */
921 FirstOrNull.prototype.firstOrNull = function (predicate) {
922 if (predicate != null) {
923 return this.filter(predicate).firstOrNull();
924 }
925 var item = this.iterator.next();
926 return item.done
927 ? null
928 : item.value;
929 };
930 /**
931 * Returns the first element of the sequence or the first element matching `predicate` if present, otherwise returns `null`.
932 *
933 * @param {(T) => boolean} predicate
934 * @returns {T}
935 */
936 FirstOrNull.prototype.find = function (predicate) {
937 return this.firstOrNull(predicate);
938 };
939 return FirstOrNull;
940}());
941exports.FirstOrNull = FirstOrNull;
942
943
944/***/ }),
945/* 23 */
946/***/ (function(module, exports, __webpack_require__) {
947
948Object.defineProperty(exports, "__esModule", { value: true });
949var Sequence_1 = __webpack_require__(0);
950var FlatMapIterator = /** @class */ (function () {
951 function FlatMapIterator(transform, iterator) {
952 this.transform = transform;
953 this.iterator = iterator;
954 }
955 FlatMapIterator.prototype.next = function (value) {
956 if (this.current != null) {
957 var item = this.current.next();
958 if (!item.done) {
959 return item;
960 }
961 }
962 var next = this.iterator.next();
963 if (!next.done) {
964 var sequence = this.transform(next.value);
965 this.current = sequence.iterator;
966 return this.next();
967 }
968 return { done: true, value: undefined };
969 };
970 return FlatMapIterator;
971}());
972var FlatMap = /** @class */ (function () {
973 function FlatMap() {
974 }
975 /**
976 * Transforms each element into a sequence of items and returns a flat single sequence of all those items.
977 *
978 * @param {(value: S) => Sequence<T>} transform
979 * @returns {Sequence<T>}
980 */
981 FlatMap.prototype.flatMap = function (transform) {
982 return Sequence_1.createSequence(new FlatMapIterator(transform, this.iterator));
983 };
984 return FlatMap;
985}());
986exports.FlatMap = FlatMap;
987
988
989/***/ }),
990/* 24 */
991/***/ (function(module, exports, __webpack_require__) {
992
993Object.defineProperty(exports, "__esModule", { value: true });
994var Sequence_1 = __webpack_require__(0);
995var Flatten = /** @class */ (function () {
996 function Flatten() {
997 }
998 /**
999 * Returns a single flat sequence of all the items from all sequences or iterables.
1000 *
1001 * @returns {Sequence<T>}
1002 */
1003 Flatten.prototype.flatten = function () {
1004 return this.flatMap(function (it) {
1005 if (Sequence_1.isSequence(it)) {
1006 return it;
1007 }
1008 else {
1009 return Sequence_1.asSequence(it);
1010 }
1011 });
1012 };
1013 return Flatten;
1014}());
1015exports.Flatten = Flatten;
1016
1017
1018/***/ }),
1019/* 25 */
1020/***/ (function(module, exports) {
1021
1022Object.defineProperty(exports, "__esModule", { value: true });
1023var Fold = /** @class */ (function () {
1024 function Fold() {
1025 }
1026 /**
1027 * Accumulates all elements of the sequence into a single result by applying the given `operation` starting with
1028 * the `initial` value. The result of the last operation will be passed as accumulated value to the getNext invocation
1029 * of the operation until all elements of the sequence are processed.
1030 *
1031 * @param {R} initial
1032 * @param {(acc: R, element: T) => R} operation
1033 * @returns {R}
1034 */
1035 Fold.prototype.fold = function (initial, operation) {
1036 var result = initial;
1037 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1038 result = operation(result, item.value);
1039 }
1040 return result;
1041 };
1042 return Fold;
1043}());
1044exports.Fold = Fold;
1045
1046
1047/***/ }),
1048/* 26 */
1049/***/ (function(module, exports) {
1050
1051Object.defineProperty(exports, "__esModule", { value: true });
1052var FoldIndexed = /** @class */ (function () {
1053 function FoldIndexed() {
1054 }
1055 /**
1056 * Accumulates all elements of the sequence into a single result by applying the given `operation` starting with
1057 * the `initial` value. The result of the last operation will be passed as accumulated value to the getNext invocation
1058 * of the operation as well as the `index` of the current element (zero-based) until all elements of the sequence
1059 * are processed.
1060 *
1061 * @param {R} initial
1062 * @param {(index: number, acc: R, element: T) => R} operation
1063 * @returns {R}
1064 */
1065 FoldIndexed.prototype.foldIndexed = function (initial, operation) {
1066 var result = initial;
1067 var index = 0;
1068 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1069 result = operation(index, result, item.value);
1070 index++;
1071 }
1072 return result;
1073 };
1074 return FoldIndexed;
1075}());
1076exports.FoldIndexed = FoldIndexed;
1077
1078
1079/***/ }),
1080/* 27 */
1081/***/ (function(module, exports) {
1082
1083Object.defineProperty(exports, "__esModule", { value: true });
1084var ForEach = /** @class */ (function () {
1085 function ForEach() {
1086 }
1087 /**
1088 * Performs the given `action` (side-effect) for each element of the sequence.
1089 *
1090 * @param {(T) => void} action
1091 */
1092 ForEach.prototype.forEach = function (action) {
1093 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1094 action(item.value);
1095 }
1096 };
1097 return ForEach;
1098}());
1099exports.ForEach = ForEach;
1100
1101
1102/***/ }),
1103/* 28 */
1104/***/ (function(module, exports) {
1105
1106Object.defineProperty(exports, "__esModule", { value: true });
1107var ForEachIndexed = /** @class */ (function () {
1108 function ForEachIndexed() {
1109 }
1110 /**
1111 * Performs the given `action` (side-effect) for each element of the sequence and passes the `index` of the current
1112 * element (zero-based).
1113 *
1114 * @param {(index: number, value: T) => void} action
1115 */
1116 ForEachIndexed.prototype.forEachIndexed = function (action) {
1117 this.withIndex()
1118 .forEach(function (it) { return action(it.index, it.value); });
1119 };
1120 return ForEachIndexed;
1121}());
1122exports.ForEachIndexed = ForEachIndexed;
1123
1124
1125/***/ }),
1126/* 29 */
1127/***/ (function(module, exports) {
1128
1129Object.defineProperty(exports, "__esModule", { value: true });
1130var GroupBy = /** @class */ (function () {
1131 function GroupBy() {
1132 }
1133 /**
1134 * Groups all elements of the sequence into a map. Keys are determined by the given `keySelector` function.
1135 *
1136 * @param {(value: T) => K} keySelector
1137 * @returns {Map<K, Array<T>>}
1138 */
1139 GroupBy.prototype.groupBy = function (keySelector) {
1140 var result = new Map();
1141 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1142 var key = keySelector(item.value);
1143 var array = result.get(key);
1144 if (array == null) {
1145 result.set(key, [item.value]);
1146 }
1147 else {
1148 array.push(item.value);
1149 }
1150 }
1151 return result;
1152 };
1153 return GroupBy;
1154}());
1155exports.GroupBy = GroupBy;
1156
1157
1158/***/ }),
1159/* 30 */
1160/***/ (function(module, exports) {
1161
1162Object.defineProperty(exports, "__esModule", { value: true });
1163var IndexOf = /** @class */ (function () {
1164 function IndexOf() {
1165 }
1166 /**
1167 * Returns the zero-based index of the given `element` or -1 if the sequence does not contain the element.
1168 *
1169 * @param {T} element
1170 * @returns {number}
1171 */
1172 IndexOf.prototype.indexOf = function (element) {
1173 var index = 0;
1174 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1175 if (element === item.value) {
1176 return index;
1177 }
1178 index++;
1179 }
1180 return -1;
1181 };
1182 return IndexOf;
1183}());
1184exports.IndexOf = IndexOf;
1185
1186
1187/***/ }),
1188/* 31 */
1189/***/ (function(module, exports) {
1190
1191Object.defineProperty(exports, "__esModule", { value: true });
1192var IndexOfFirst = /** @class */ (function () {
1193 function IndexOfFirst() {
1194 }
1195 /**
1196 * Returns the zero-based index of the first element matching the given `predicate` or -1 if no element matches
1197 * the predicate.
1198 *
1199 * @param {(value: T) => boolean} predicate
1200 * @returns {number}
1201 */
1202 IndexOfFirst.prototype.indexOfFirst = function (predicate) {
1203 var index = 0;
1204 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1205 if (predicate(item.value)) {
1206 return index;
1207 }
1208 index++;
1209 }
1210 return -1;
1211 };
1212 return IndexOfFirst;
1213}());
1214exports.IndexOfFirst = IndexOfFirst;
1215
1216
1217/***/ }),
1218/* 32 */
1219/***/ (function(module, exports) {
1220
1221Object.defineProperty(exports, "__esModule", { value: true });
1222var IndexOfLast = /** @class */ (function () {
1223 function IndexOfLast() {
1224 }
1225 /**
1226 * Returns the zero-based index of the last element matching the given `predicate` or -1 if no element matches
1227 * the predicate.
1228 *
1229 * @param {(value: T) => boolean} predicate
1230 * @returns {number}
1231 */
1232 IndexOfLast.prototype.indexOfLast = function (predicate) {
1233 var index = 0;
1234 var result = -1;
1235 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1236 if (predicate(item.value)) {
1237 result = index;
1238 }
1239 index++;
1240 }
1241 return result;
1242 };
1243 return IndexOfLast;
1244}());
1245exports.IndexOfLast = IndexOfLast;
1246
1247
1248/***/ }),
1249/* 33 */
1250/***/ (function(module, exports) {
1251
1252Object.defineProperty(exports, "__esModule", { value: true });
1253var defaults = {
1254 value: "",
1255 separator: ", ",
1256 prefix: "",
1257 postfix: "",
1258 limit: -1,
1259 truncated: "...",
1260 transform: undefined
1261};
1262var JoinToString = /** @class */ (function () {
1263 function JoinToString() {
1264 }
1265 /**
1266 * Joins all elements of the sequence into a string with the given configuration.
1267 *
1268 * @param {JoinConfig<T>} config
1269 * @returns {string}
1270 */
1271 JoinToString.prototype.joinToString = function (config) {
1272 if (config === void 0) { config = defaults; }
1273 var _a = config.value, value = _a === void 0 ? defaults.value : _a, _b = config.separator, separator = _b === void 0 ? defaults.separator : _b, _c = config.prefix, prefix = _c === void 0 ? defaults.prefix : _c, _d = config.postfix, postfix = _d === void 0 ? defaults.postfix : _d, _e = config.limit, limit = _e === void 0 ? defaults.limit : _e, _f = config.truncated, truncated = _f === void 0 ? defaults.truncated : _f, _g = config.transform, transform = _g === void 0 ? defaults.transform : _g;
1274 var result = "" + value + prefix;
1275 var count = 0;
1276 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1277 count++;
1278 if (count > 1) {
1279 result += separator;
1280 }
1281 if (limit < 0 || count <= limit) {
1282 result += transform != null
1283 ? transform(item.value)
1284 : String(item.value);
1285 }
1286 else {
1287 break;
1288 }
1289 }
1290 if (limit >= 0 && count > limit) {
1291 result += truncated;
1292 }
1293 result += postfix;
1294 return result;
1295 };
1296 /**
1297 * Joins all elements of the sequence into a string with the given configuration.
1298 *
1299 * @param {JoinConfig<T>} config
1300 * @returns {string}
1301 */
1302 JoinToString.prototype.joinTo = function (config) {
1303 if (config === void 0) { config = defaults; }
1304 return this.joinToString(config);
1305 };
1306 return JoinToString;
1307}());
1308exports.JoinToString = JoinToString;
1309
1310
1311/***/ }),
1312/* 34 */
1313/***/ (function(module, exports) {
1314
1315Object.defineProperty(exports, "__esModule", { value: true });
1316var Last = /** @class */ (function () {
1317 function Last() {
1318 }
1319 /**
1320 * Returns the last element of the sequence or the last element matching `predicate` if present, otherwise throws
1321 * an error.
1322 *
1323 * @param {(value: T) => boolean} predicate
1324 * @returns {T}
1325 */
1326 Last.prototype.last = function (predicate) {
1327 if (predicate != null) {
1328 return this.filter(predicate).last();
1329 }
1330 var result;
1331 var empty = true;
1332 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1333 result = item.value;
1334 empty = false;
1335 }
1336 if (empty) {
1337 throw new Error("No such element");
1338 }
1339 return result;
1340 };
1341 return Last;
1342}());
1343exports.Last = Last;
1344
1345
1346/***/ }),
1347/* 35 */
1348/***/ (function(module, exports) {
1349
1350Object.defineProperty(exports, "__esModule", { value: true });
1351var LastOrNull = /** @class */ (function () {
1352 function LastOrNull() {
1353 }
1354 /**
1355 * Returns the last element of the sequence or the last element matching `predicate` if present, otherwise returns `null`.
1356 *
1357 * @param {(value: T) => boolean} predicate
1358 * @returns {T}
1359 */
1360 LastOrNull.prototype.lastOrNull = function (predicate) {
1361 if (predicate != null) {
1362 return this.filter(predicate).lastOrNull();
1363 }
1364 var result = null;
1365 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1366 result = item.value;
1367 }
1368 return result;
1369 };
1370 /**
1371 * Returns the last element of the sequence or the last element matching `predicate` if present, otherwise returns `null`.
1372 *
1373 * @param {(value: T) => boolean} predicate
1374 * @returns {T}
1375 */
1376 LastOrNull.prototype.findLast = function (predicate) {
1377 return this.lastOrNull(predicate);
1378 };
1379 return LastOrNull;
1380}());
1381exports.LastOrNull = LastOrNull;
1382
1383
1384/***/ }),
1385/* 36 */
1386/***/ (function(module, exports, __webpack_require__) {
1387
1388Object.defineProperty(exports, "__esModule", { value: true });
1389var Sequence_1 = __webpack_require__(0);
1390var MapIterator = /** @class */ (function () {
1391 function MapIterator(transform, iterator) {
1392 this.transform = transform;
1393 this.iterator = iterator;
1394 }
1395 MapIterator.prototype.next = function (value) {
1396 var item = this.iterator.next();
1397 return item.done
1398 ? { done: true, value: undefined }
1399 : { done: false, value: this.transform(item.value) };
1400 };
1401 return MapIterator;
1402}());
1403var Map = /** @class */ (function () {
1404 function Map() {
1405 }
1406 /**
1407 * Transforms each element into another value by applying the given `transform` function and returns a new sequence.
1408 *
1409 * @param {(T) => S} transform
1410 * @returns {Sequence<S>}
1411 */
1412 Map.prototype.map = function (transform) {
1413 return Sequence_1.createSequence(new MapIterator(transform, this.iterator));
1414 };
1415 return Map;
1416}());
1417exports.Map = Map;
1418
1419
1420/***/ }),
1421/* 37 */
1422/***/ (function(module, exports) {
1423
1424Object.defineProperty(exports, "__esModule", { value: true });
1425var MapIndexed = /** @class */ (function () {
1426 function MapIndexed() {
1427 }
1428 /**
1429 * Transforms each element into another value by applying the given `transform` function and returns a new sequence.
1430 *
1431 * @param {(index: number, value: T) => R} transform
1432 * @returns {Sequence<R>}
1433 */
1434 MapIndexed.prototype.mapIndexed = function (transform) {
1435 return this.withIndex()
1436 .map(function (it) { return transform(it.index, it.value); });
1437 };
1438 return MapIndexed;
1439}());
1440exports.MapIndexed = MapIndexed;
1441
1442
1443/***/ }),
1444/* 38 */
1445/***/ (function(module, exports, __webpack_require__) {
1446
1447Object.defineProperty(exports, "__esModule", { value: true });
1448var Sequence_1 = __webpack_require__(0);
1449var MapNotNull = /** @class */ (function () {
1450 function MapNotNull() {
1451 }
1452 /**
1453 * Transforms each element into another value by applying the given `transform` function and returns a new sequence.
1454 * Transformations into `null` values are discarded.
1455 *
1456 * @param {(value: T) => R} transform
1457 * @returns {Sequence<R>}
1458 */
1459 MapNotNull.prototype.mapNotNull = function (transform) {
1460 return this.flatMap(function (value) {
1461 var item = transform(value);
1462 return item !== null
1463 ? Sequence_1.sequenceOf(item)
1464 : Sequence_1.emptySequence();
1465 });
1466 };
1467 return MapNotNull;
1468}());
1469exports.MapNotNull = MapNotNull;
1470
1471
1472/***/ }),
1473/* 39 */
1474/***/ (function(module, exports) {
1475
1476Object.defineProperty(exports, "__esModule", { value: true });
1477var Max = /** @class */ (function () {
1478 function Max() {
1479 }
1480 /**
1481 * Returns the maximum element of the sequence or `null` if sequence is empty.
1482 *
1483 * @returns {T}
1484 */
1485 Max.prototype.max = function () {
1486 var result = null;
1487 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1488 if (result == null || item.value > result) {
1489 result = item.value;
1490 }
1491 }
1492 return result;
1493 };
1494 return Max;
1495}());
1496exports.Max = Max;
1497
1498
1499/***/ }),
1500/* 40 */
1501/***/ (function(module, exports) {
1502
1503Object.defineProperty(exports, "__esModule", { value: true });
1504var MaxBy = /** @class */ (function () {
1505 function MaxBy() {
1506 }
1507 /**
1508 * Returns the maximum element by comparing the results of the given `selector` function
1509 * for each element of the sequence or `null` if the sequence is empty.
1510 *
1511 * @param {(value: T) => R} selector
1512 * @returns {T}
1513 */
1514 MaxBy.prototype.maxBy = function (selector) {
1515 var max = null;
1516 var maxSelected = null;
1517 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1518 var value = selector(item.value);
1519 if (maxSelected == null || value > maxSelected) {
1520 maxSelected = value;
1521 max = item.value;
1522 }
1523 }
1524 return max;
1525 };
1526 return MaxBy;
1527}());
1528exports.MaxBy = MaxBy;
1529
1530
1531/***/ }),
1532/* 41 */
1533/***/ (function(module, exports) {
1534
1535Object.defineProperty(exports, "__esModule", { value: true });
1536var MaxWith = /** @class */ (function () {
1537 function MaxWith() {
1538 }
1539 /**
1540 * Returns the maximum element of the sequence by evaluating the given `compare`
1541 * function or `null` if sequence is empty.
1542 *
1543 * @returns {T}
1544 */
1545 MaxWith.prototype.maxWith = function (compare) {
1546 var max = null;
1547 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1548 if (max == null || compare(item.value, max) > 0) {
1549 max = item.value;
1550 }
1551 }
1552 return max;
1553 };
1554 return MaxWith;
1555}());
1556exports.MaxWith = MaxWith;
1557
1558
1559/***/ }),
1560/* 42 */
1561/***/ (function(module, exports, __webpack_require__) {
1562
1563Object.defineProperty(exports, "__esModule", { value: true });
1564var Sequence_1 = __webpack_require__(0);
1565var Merge = /** @class */ (function () {
1566 function Merge() {
1567 }
1568 /**
1569 * Merges the elements of both sequences into a new sequence. Each element of this sequence is eventually replaced with
1570 * an element of the other sequence by comparing results of the given `selector` function. If no value is found in the other
1571 * sequence the element is retained. New elements of the other sequence are appended to the end of the new sequence or
1572 * prepended to the start of the new sequence, if `prependNewValues` is set to `true`. This operation is not lazy evaluated.
1573 *
1574 * @param {Sequence<T>} other
1575 * @param {(value: T) => S} selector
1576 * @param prependNewValues
1577 * @returns {Sequence<T>}
1578 */
1579 Merge.prototype.merge = function (other, selector, prependNewValues) {
1580 if (prependNewValues === void 0) { prependNewValues = false; }
1581 var mergeValues = Sequence_1.isSequence(other)
1582 ? other.toArray()
1583 : Sequence_1.asSequence(other).toArray();
1584 var leftValues = this.toArray();
1585 var result = leftValues.map(function (left) {
1586 var selected = selector(left);
1587 var right = Sequence_1.asSequence(mergeValues)
1588 .find(function (it) { return selector(it) === selected; });
1589 if (right != null) {
1590 mergeValues = mergeValues.filter(function (it) { return it !== right; });
1591 return right;
1592 }
1593 else {
1594 return left;
1595 }
1596 });
1597 if (prependNewValues) {
1598 return Sequence_1.asSequence(mergeValues.concat(result));
1599 }
1600 else {
1601 return Sequence_1.asSequence(result.concat(mergeValues));
1602 }
1603 };
1604 return Merge;
1605}());
1606exports.Merge = Merge;
1607
1608
1609/***/ }),
1610/* 43 */
1611/***/ (function(module, exports) {
1612
1613Object.defineProperty(exports, "__esModule", { value: true });
1614var Min = /** @class */ (function () {
1615 function Min() {
1616 }
1617 /**
1618 * Returns the minimum element of the sequence or `null` if sequence is empty.
1619 *
1620 * @returns {T}
1621 */
1622 Min.prototype.min = function () {
1623 var result = null;
1624 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1625 if (result == null || item.value < result) {
1626 result = item.value;
1627 }
1628 }
1629 return result;
1630 };
1631 return Min;
1632}());
1633exports.Min = Min;
1634
1635
1636/***/ }),
1637/* 44 */
1638/***/ (function(module, exports) {
1639
1640Object.defineProperty(exports, "__esModule", { value: true });
1641var MinBy = /** @class */ (function () {
1642 function MinBy() {
1643 }
1644 /**
1645 * Returns the minimum element by comparing the results of the given `selector` function
1646 * for each element of the sequence or `null` if the sequence is empty.
1647 *
1648 * @param {(value: T) => R} selector
1649 * @returns {T}
1650 */
1651 MinBy.prototype.minBy = function (selector) {
1652 var min = null;
1653 var minSelected = null;
1654 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1655 var value = selector(item.value);
1656 if (minSelected == null || value < minSelected) {
1657 minSelected = value;
1658 min = item.value;
1659 }
1660 }
1661 return min;
1662 };
1663 return MinBy;
1664}());
1665exports.MinBy = MinBy;
1666
1667
1668/***/ }),
1669/* 45 */
1670/***/ (function(module, exports, __webpack_require__) {
1671
1672Object.defineProperty(exports, "__esModule", { value: true });
1673var Sequence_1 = __webpack_require__(0);
1674var Minus = /** @class */ (function () {
1675 function Minus() {
1676 }
1677 /**
1678 * Removes the given `data` and returns a new sequence. Data can either be a single element, an array of elements
1679 * or a sequence of elements.
1680 *
1681 * @param {Sequence<T> | Array<T> | T} data
1682 * @returns {Sequence<T>}
1683 */
1684 Minus.prototype.minus = function (data) {
1685 if (Sequence_1.isSequence(data)) {
1686 var array_1 = data.toArray();
1687 return this.filter(function (it) { return array_1.indexOf(it) < 0; });
1688 }
1689 else if (data instanceof Array) {
1690 return this.filter(function (it) { return data.indexOf(it) < 0; });
1691 }
1692 else {
1693 return this.filter(function (it) { return it !== data; });
1694 }
1695 };
1696 return Minus;
1697}());
1698exports.Minus = Minus;
1699
1700
1701/***/ }),
1702/* 46 */
1703/***/ (function(module, exports) {
1704
1705Object.defineProperty(exports, "__esModule", { value: true });
1706var MinWith = /** @class */ (function () {
1707 function MinWith() {
1708 }
1709 /**
1710 * Returns the minimum element of the sequence by evaluating the given `compare`
1711 * function or `null` if sequence is empty.
1712 *
1713 * @returns {T}
1714 */
1715 MinWith.prototype.minWith = function (compare) {
1716 var min = null;
1717 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1718 if (min == null || compare(item.value, min) < 0) {
1719 min = item.value;
1720 }
1721 }
1722 return min;
1723 };
1724 return MinWith;
1725}());
1726exports.MinWith = MinWith;
1727
1728
1729/***/ }),
1730/* 47 */
1731/***/ (function(module, exports) {
1732
1733Object.defineProperty(exports, "__esModule", { value: true });
1734var None = /** @class */ (function () {
1735 function None() {
1736 }
1737 /**
1738 * Returns `true` if no element match the given `predicate` or if the sequence is empty
1739 * if no predicate is present.
1740 *
1741 * @param {(value: T) => boolean} predicate
1742 * @returns {boolean}
1743 */
1744 None.prototype.none = function (predicate) {
1745 if (predicate == null) {
1746 return this.iterator.next().done;
1747 }
1748 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1749 if (predicate(item.value)) {
1750 return false;
1751 }
1752 }
1753 return true;
1754 };
1755 return None;
1756}());
1757exports.None = None;
1758
1759
1760/***/ }),
1761/* 48 */
1762/***/ (function(module, exports) {
1763
1764Object.defineProperty(exports, "__esModule", { value: true });
1765var OnEach = /** @class */ (function () {
1766 function OnEach() {
1767 }
1768 /**
1769 * Performs the given `action` for each element and returns the sequence.
1770 *
1771 * @param {(value: T) => void} action
1772 * @returns {Sequence<T>}
1773 */
1774 OnEach.prototype.onEach = function (action) {
1775 return this.map(function (it) {
1776 action(it);
1777 return it;
1778 });
1779 };
1780 return OnEach;
1781}());
1782exports.OnEach = OnEach;
1783
1784
1785/***/ }),
1786/* 49 */
1787/***/ (function(module, exports) {
1788
1789Object.defineProperty(exports, "__esModule", { value: true });
1790var Partition = /** @class */ (function () {
1791 function Partition() {
1792 }
1793 /**
1794 * Evaluates the given `predicate` for each element of the sequence and assorts each element into one of two lists
1795 * according to the result of the predicate. Returns both lists as an object.
1796 *
1797 * @param {(value: T) => boolean} predicate
1798 * @returns {{true: Array<T>; false: Array<T>}}
1799 */
1800 Partition.prototype.partition = function (predicate) {
1801 var arrayTrue = [];
1802 var arrayFalse = [];
1803 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1804 if (predicate(item.value)) {
1805 arrayTrue.push(item.value);
1806 }
1807 else {
1808 arrayFalse.push(item.value);
1809 }
1810 }
1811 return { "true": arrayTrue, "false": arrayFalse };
1812 };
1813 return Partition;
1814}());
1815exports.Partition = Partition;
1816
1817
1818/***/ }),
1819/* 50 */
1820/***/ (function(module, exports, __webpack_require__) {
1821
1822Object.defineProperty(exports, "__esModule", { value: true });
1823var Sequence_1 = __webpack_require__(0);
1824var AppendIterator = /** @class */ (function () {
1825 function AppendIterator(first, second) {
1826 this.first = first;
1827 this.second = second;
1828 }
1829 AppendIterator.prototype.next = function (value) {
1830 var item1 = this.first.next();
1831 if (!item1.done) {
1832 return { done: false, value: item1.value };
1833 }
1834 var item2 = this.second.next();
1835 if (!item2.done) {
1836 return { done: false, value: item2.value };
1837 }
1838 return { done: true, value: undefined };
1839 };
1840 return AppendIterator;
1841}());
1842var Plus = /** @class */ (function () {
1843 function Plus() {
1844 }
1845 Plus.prototype.plus = function (data) {
1846 if (Sequence_1.isSequence(data)) {
1847 return Sequence_1.createSequence(new AppendIterator(this.iterator, data.iterator));
1848 }
1849 else if (data instanceof Array) {
1850 var iterator = data[Symbol.iterator]();
1851 return Sequence_1.createSequence(new AppendIterator(this.iterator, iterator));
1852 }
1853 else {
1854 var iterator = [data][Symbol.iterator]();
1855 return Sequence_1.createSequence(new AppendIterator(this.iterator, iterator));
1856 }
1857 };
1858 return Plus;
1859}());
1860exports.Plus = Plus;
1861
1862
1863/***/ }),
1864/* 51 */
1865/***/ (function(module, exports) {
1866
1867Object.defineProperty(exports, "__esModule", { value: true });
1868var Reduce = /** @class */ (function () {
1869 function Reduce() {
1870 }
1871 /**
1872 * Reduces the whole sequence to a single value by invoking `operation` with each element
1873 * from left to right. For every invocation of the operation `acc` is the result of the last
1874 * invocation. For the first invocation of the operation `acc` is the first element of the
1875 * sequence.
1876 *
1877 * @param {(acc: S, value: T) => S} operation
1878 * @returns {S}
1879 */
1880 Reduce.prototype.reduce = function (operation) {
1881 var first = this.iterator.next();
1882 if (first.done) {
1883 throw new Error("Cannot reduce empty sequence");
1884 }
1885 var result = first.value;
1886 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1887 result = operation(result, item.value);
1888 }
1889 return result;
1890 };
1891 return Reduce;
1892}());
1893exports.Reduce = Reduce;
1894
1895
1896/***/ }),
1897/* 52 */
1898/***/ (function(module, exports) {
1899
1900Object.defineProperty(exports, "__esModule", { value: true });
1901var ReduceIndexed = /** @class */ (function () {
1902 function ReduceIndexed() {
1903 }
1904 /**
1905 * Reduces the whole sequence to a single value by invoking `operation` with each element
1906 * from left to right. For every invocation of the operation `acc` is the result of the last
1907 * invocation. For the first invocation of the operation `acc` is the first element of the
1908 * sequence. In addition the `index` of the current element is also passed to the operation.
1909 *
1910 * @param {(index: number, acc: S, element: T) => S} operation
1911 * @returns {S}
1912 */
1913 ReduceIndexed.prototype.reduceIndexed = function (operation) {
1914 var first = this.iterator.next();
1915 if (first.done) {
1916 throw new Error("Cannot reduce empty sequence");
1917 }
1918 var index = 1;
1919 var result = first.value;
1920 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
1921 result = operation(index, result, item.value);
1922 index++;
1923 }
1924 return result;
1925 };
1926 return ReduceIndexed;
1927}());
1928exports.ReduceIndexed = ReduceIndexed;
1929
1930
1931/***/ }),
1932/* 53 */
1933/***/ (function(module, exports) {
1934
1935Object.defineProperty(exports, "__esModule", { value: true });
1936var Reverse = /** @class */ (function () {
1937 function Reverse() {
1938 }
1939 /**
1940 * Returns a new sequence with all elements of the sequence in reverse order.
1941 *
1942 * @returns {Sequence<T>}
1943 */
1944 Reverse.prototype.reverse = function () {
1945 return this.withIndex()
1946 .sortedByDescending(function (it) { return it.index; })
1947 .map(function (it) { return it.value; });
1948 };
1949 return Reverse;
1950}());
1951exports.Reverse = Reverse;
1952
1953
1954/***/ }),
1955/* 54 */
1956/***/ (function(module, exports) {
1957
1958Object.defineProperty(exports, "__esModule", { value: true });
1959var Single = /** @class */ (function () {
1960 function Single() {
1961 }
1962 /**
1963 * Returns the single element of the sequence or throws error if the sequence has more than
1964 * one element or none at all. If a `predicate` is passed returns the single element matching
1965 * the predicate or throws an error if more or less than one element match the predicate.
1966 *
1967 * @param {(value: T) => boolean} predicate
1968 * @returns {T}
1969 */
1970 Single.prototype.single = function (predicate) {
1971 if (predicate != null) {
1972 return this.filter(predicate).single();
1973 }
1974 var first = this.iterator.next();
1975 if (first.done) {
1976 throw new Error("No such element");
1977 }
1978 if (!this.iterator.next().done) {
1979 throw new Error("Expect single element");
1980 }
1981 return first.value;
1982 };
1983 return Single;
1984}());
1985exports.Single = Single;
1986
1987
1988/***/ }),
1989/* 55 */
1990/***/ (function(module, exports) {
1991
1992Object.defineProperty(exports, "__esModule", { value: true });
1993var SingleOrNull = /** @class */ (function () {
1994 function SingleOrNull() {
1995 }
1996 /**
1997 * Returns the single element of the sequence or `null` if the sequence has more than
1998 * one element or none at all. If a `predicate` is passed returns the single element matching
1999 * the predicate or `null` if more or less than one element match the predicate.
2000 *
2001 * @param {(value: T) => boolean} predicate
2002 * @returns {T}
2003 */
2004 SingleOrNull.prototype.singleOrNull = function (predicate) {
2005 if (predicate != null) {
2006 return this.filter(predicate).singleOrNull();
2007 }
2008 var first = this.iterator.next();
2009 if (first.done) {
2010 return null;
2011 }
2012 if (!this.iterator.next().done) {
2013 return null;
2014 }
2015 return first.value;
2016 };
2017 return SingleOrNull;
2018}());
2019exports.SingleOrNull = SingleOrNull;
2020
2021
2022/***/ }),
2023/* 56 */
2024/***/ (function(module, exports, __webpack_require__) {
2025
2026Object.defineProperty(exports, "__esModule", { value: true });
2027var Sequence_1 = __webpack_require__(0);
2028var createComparatorFactory_1 = __webpack_require__(57);
2029var Sorted = /** @class */ (function () {
2030 function Sorted() {
2031 }
2032 /**
2033 * Returns a new sequence with all elements sorted by the comparator specified by the given `composeComparator` function
2034 * or in natural order if no arguments are given.
2035 *
2036 * @returns {Sequence<T>}
2037 */
2038 Sorted.prototype.sorted = function (composeComparator) {
2039 var result = [];
2040 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
2041 result.push(item.value);
2042 }
2043 if (composeComparator == null) {
2044 result.sort();
2045 }
2046 else {
2047 var factory = createComparatorFactory_1.default();
2048 var comparator = composeComparator(factory);
2049 result.sort(comparator);
2050 }
2051 var iterator = result[Symbol.iterator]();
2052 return Sequence_1.createSequence(iterator);
2053 };
2054 return Sorted;
2055}());
2056exports.Sorted = Sorted;
2057
2058
2059/***/ }),
2060/* 57 */
2061/***/ (function(module, exports) {
2062
2063Object.defineProperty(exports, "__esModule", { value: true });
2064function compare(comparison) {
2065 return Object.assign(comparison, {
2066 reversed: function () {
2067 return compare(function (a, b) { return comparison(a, b) * -1; });
2068 },
2069 then: function (nextComparison) {
2070 return compare(function (a, b) {
2071 var result = comparison(a, b);
2072 return result !== 0
2073 ? result
2074 : nextComparison(a, b);
2075 });
2076 },
2077 thenDescending: function (nextComparison) {
2078 return this.then(compare(nextComparison)
2079 .reversed());
2080 },
2081 thenBy: function (keyOrSelector) {
2082 var selector = asSelector(keyOrSelector);
2083 return this.then(function (a, b) { return naturalCompare(selector(a), selector(b)); });
2084 },
2085 thenByDescending: function (keyOrSelector) {
2086 var selector = asSelector(keyOrSelector);
2087 return this.then(compare(function (a, b) { return naturalCompare(selector(a), selector(b)); }).reversed());
2088 }
2089 });
2090}
2091function compareBy(keyOrSelector) {
2092 var selector = asSelector(keyOrSelector);
2093 return compare(function (a, b) { return naturalCompare(selector(a), selector(b)); });
2094}
2095function compareByDescending(keyOrSelector) {
2096 var selector = asSelector(keyOrSelector);
2097 return compare(function (a, b) { return naturalCompare(selector(b), selector(a)); });
2098}
2099function asSelector(keyOrSelector) {
2100 return typeof keyOrSelector === "function"
2101 ? keyOrSelector
2102 : function (item) { return item[keyOrSelector]; };
2103}
2104function naturalCompare(a, b) {
2105 return a < b ? -1 : a > b ? 1 : 0;
2106}
2107function naturalOrder() {
2108 return compare(naturalCompare);
2109}
2110function reverseOrder() {
2111 return compare(naturalCompare).reversed();
2112}
2113function nullsLast() {
2114 return compare(function (a, b) { return a === null ? 1 : b === null ? -1 : 0; });
2115}
2116function nullsFirst() {
2117 return compare(function (a, b) { return a === null ? -1 : b === null ? 1 : 0; });
2118}
2119function createComparatorFactory() {
2120 return {
2121 compare: compare,
2122 compareBy: compareBy,
2123 compareByDescending: compareByDescending,
2124 naturalOrder: naturalOrder,
2125 reverseOrder: reverseOrder,
2126 nullsFirst: nullsFirst,
2127 nullsLast: nullsLast
2128 };
2129}
2130exports.default = createComparatorFactory;
2131
2132
2133/***/ }),
2134/* 58 */
2135/***/ (function(module, exports) {
2136
2137Object.defineProperty(exports, "__esModule", { value: true });
2138var SortedBy = /** @class */ (function () {
2139 function SortedBy() {
2140 }
2141 /**
2142 * Returns a new sequence with all elements sorted ascending by the value specified
2143 * by the given `selector` function.
2144 *
2145 * @param {(value: T) => R} selector
2146 * @returns {Sequence<T>}
2147 */
2148 SortedBy.prototype.sortedBy = function (selector) {
2149 return this.sorted(function (it) { return it.compareBy(selector); });
2150 };
2151 return SortedBy;
2152}());
2153exports.SortedBy = SortedBy;
2154
2155
2156/***/ }),
2157/* 59 */
2158/***/ (function(module, exports) {
2159
2160Object.defineProperty(exports, "__esModule", { value: true });
2161var SortedByDescending = /** @class */ (function () {
2162 function SortedByDescending() {
2163 }
2164 /**
2165 * Returns a new sequence with all elements sorted descending by the value specified
2166 * by the given `selector` function.
2167 *
2168 * @param {(value: T) => R} selector
2169 * @returns {Sequence<T>}
2170 */
2171 SortedByDescending.prototype.sortedByDescending = function (selector) {
2172 return this.sorted(function (it) { return it.compareByDescending(selector); });
2173 };
2174 return SortedByDescending;
2175}());
2176exports.SortedByDescending = SortedByDescending;
2177
2178
2179/***/ }),
2180/* 60 */
2181/***/ (function(module, exports) {
2182
2183Object.defineProperty(exports, "__esModule", { value: true });
2184var SortedDescending = /** @class */ (function () {
2185 function SortedDescending() {
2186 }
2187 /**
2188 * Returns a new sequence with all elements sorted in reverse (descending) natural order.
2189 *
2190 * @returns {Sequence<T>}
2191 */
2192 SortedDescending.prototype.sortedDescending = function () {
2193 return this.sorted(function (it) { return it.reverseOrder(); });
2194 };
2195 return SortedDescending;
2196}());
2197exports.SortedDescending = SortedDescending;
2198
2199
2200/***/ }),
2201/* 61 */
2202/***/ (function(module, exports) {
2203
2204Object.defineProperty(exports, "__esModule", { value: true });
2205var SortedWith = /** @class */ (function () {
2206 function SortedWith() {
2207 }
2208 /**
2209 * Returns a new sequence with all elements sorted be the given `compare` function.
2210 *
2211 * @param {(a: T, b: T) => number} comparison
2212 * @returns {Sequence<T>}
2213 */
2214 SortedWith.prototype.sortedWith = function (comparison) {
2215 return this.sorted(function (it) { return it.compare(comparison); });
2216 };
2217 return SortedWith;
2218}());
2219exports.SortedWith = SortedWith;
2220
2221
2222/***/ }),
2223/* 62 */
2224/***/ (function(module, exports) {
2225
2226Object.defineProperty(exports, "__esModule", { value: true });
2227var Sum = /** @class */ (function () {
2228 function Sum() {
2229 }
2230 /**
2231 * Returns the sum of all numbers.
2232 *
2233 * @returns {number}
2234 */
2235 Sum.prototype.sum = function () {
2236 var result = 0;
2237 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
2238 result += item.value;
2239 }
2240 return result;
2241 };
2242 return Sum;
2243}());
2244exports.Sum = Sum;
2245
2246
2247/***/ }),
2248/* 63 */
2249/***/ (function(module, exports) {
2250
2251Object.defineProperty(exports, "__esModule", { value: true });
2252var SumBy = /** @class */ (function () {
2253 function SumBy() {
2254 }
2255 /**
2256 * Returns the sum of all numbers specified by the given `selector` function.
2257 *
2258 * @param {(value: T) => number} selector
2259 * @returns {number}
2260 */
2261 SumBy.prototype.sumBy = function (selector) {
2262 var result = 0;
2263 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
2264 result += selector(item.value);
2265 }
2266 return result;
2267 };
2268 return SumBy;
2269}());
2270exports.SumBy = SumBy;
2271
2272
2273/***/ }),
2274/* 64 */
2275/***/ (function(module, exports) {
2276
2277Object.defineProperty(exports, "__esModule", { value: true });
2278var Take = /** @class */ (function () {
2279 function Take() {
2280 }
2281 /**
2282 * Returns a new sequence consisting of the first `n` elements. All other elements
2283 * are discarded.
2284 *
2285 * @param {number} n
2286 * @returns {Sequence<T>}
2287 */
2288 Take.prototype.take = function (n) {
2289 return this.withIndex()
2290 .takeWhile(function (it) { return it.index < n; })
2291 .map(function (it) { return it.value; });
2292 };
2293 return Take;
2294}());
2295exports.Take = Take;
2296
2297
2298/***/ }),
2299/* 65 */
2300/***/ (function(module, exports, __webpack_require__) {
2301
2302Object.defineProperty(exports, "__esModule", { value: true });
2303var Sequence_1 = __webpack_require__(0);
2304var TakeWhileIterator = /** @class */ (function () {
2305 function TakeWhileIterator(iterator, predicate) {
2306 this.iterator = iterator;
2307 this.predicate = predicate;
2308 }
2309 TakeWhileIterator.prototype.next = function (value) {
2310 var item = this.iterator.next();
2311 if (!item.done) {
2312 var result = this.predicate(item.value);
2313 if (result) {
2314 return { done: false, value: item.value };
2315 }
2316 }
2317 return { done: true, value: undefined };
2318 };
2319 return TakeWhileIterator;
2320}());
2321var TakeWhile = /** @class */ (function () {
2322 function TakeWhile() {
2323 }
2324 /**
2325 * Takes all elements of the sequence as long as the given `predicate` evaluates to true.
2326 *
2327 * @param {(item: T) => boolean} predicate
2328 * @returns {Sequence<T>}
2329 */
2330 TakeWhile.prototype.takeWhile = function (predicate) {
2331 return Sequence_1.createSequence(new TakeWhileIterator(this.iterator, predicate));
2332 };
2333 return TakeWhile;
2334}());
2335exports.TakeWhile = TakeWhile;
2336
2337
2338/***/ }),
2339/* 66 */
2340/***/ (function(module, exports) {
2341
2342Object.defineProperty(exports, "__esModule", { value: true });
2343var ToArray = /** @class */ (function () {
2344 function ToArray() {
2345 }
2346 /**
2347 * Returns all elements of the sequence as array. If an `array` is passed
2348 * the elements are appended to the end of the array.
2349 *
2350 * @param {Array<T>} array
2351 * @returns {Array<T>}
2352 */
2353 ToArray.prototype.toArray = function (array) {
2354 var result = array || [];
2355 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
2356 result.push(item.value);
2357 }
2358 return result;
2359 };
2360 /**
2361 * Returns all elements of the sequence as array. If an `array` is passed
2362 * the elements are appended to the end of the array.
2363 *
2364 * @param {Array<T>} array
2365 * @returns {Array<T>}
2366 */
2367 ToArray.prototype.toList = function (array) {
2368 return this.toArray(array);
2369 };
2370 return ToArray;
2371}());
2372exports.ToArray = ToArray;
2373
2374
2375/***/ }),
2376/* 67 */
2377/***/ (function(module, exports) {
2378
2379Object.defineProperty(exports, "__esModule", { value: true });
2380var ToMap = /** @class */ (function () {
2381 function ToMap() {
2382 }
2383 /**
2384 * Returns a map consisting of each key-value pair. If a `map` is passed
2385 * the pairs are set on this map. Duplicate keys override each other.
2386 *
2387 * @param {Map<K, V>} map
2388 * @returns {Map<K, V>}
2389 */
2390 ToMap.prototype.toMap = function (map) {
2391 var result = map || new Map();
2392 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
2393 var pair = item.value;
2394 var key = pair[0];
2395 var value = pair[1];
2396 result.set(key, value);
2397 }
2398 return result;
2399 };
2400 return ToMap;
2401}());
2402exports.ToMap = ToMap;
2403
2404
2405/***/ }),
2406/* 68 */
2407/***/ (function(module, exports) {
2408
2409Object.defineProperty(exports, "__esModule", { value: true });
2410var ToSet = /** @class */ (function () {
2411 function ToSet() {
2412 }
2413 /**
2414 * Returns all elements of the sequence as set. If a `set` is passed
2415 * the elements are added to this set.
2416 *
2417 * @param {Set<T>} set
2418 * @returns {Set<T>}
2419 */
2420 ToSet.prototype.toSet = function (set) {
2421 var result = set || new Set();
2422 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
2423 result.add(item.value);
2424 }
2425 return result;
2426 };
2427 return ToSet;
2428}());
2429exports.ToSet = ToSet;
2430
2431
2432/***/ }),
2433/* 69 */
2434/***/ (function(module, exports) {
2435
2436Object.defineProperty(exports, "__esModule", { value: true });
2437var Unzip = /** @class */ (function () {
2438 function Unzip() {
2439 }
2440 /**
2441 * Returns a pair of arrays where the first array contains all first values
2442 * and the second array all second values from each input pair of the sequence.
2443 *
2444 * @returns {[Array<T> , Array<S>]}
2445 */
2446 Unzip.prototype.unzip = function () {
2447 var array1 = [];
2448 var array2 = [];
2449 for (var item = this.iterator.next(); !item.done; item = this.iterator.next()) {
2450 var _a = item.value, first = _a[0], second = _a[1];
2451 array1.push(first);
2452 array2.push(second);
2453 }
2454 return [array1, array2];
2455 };
2456 return Unzip;
2457}());
2458exports.Unzip = Unzip;
2459
2460
2461/***/ }),
2462/* 70 */
2463/***/ (function(module, exports, __webpack_require__) {
2464
2465Object.defineProperty(exports, "__esModule", { value: true });
2466var Sequence_1 = __webpack_require__(0);
2467var IndexIterator = /** @class */ (function () {
2468 function IndexIterator(iterator) {
2469 this.iterator = iterator;
2470 this.index = -1;
2471 }
2472 IndexIterator.prototype.next = function (value) {
2473 var item = this.iterator.next();
2474 if (item.done) {
2475 return { done: true, value: undefined };
2476 }
2477 this.index++;
2478 return {
2479 done: false,
2480 value: {
2481 index: this.index,
2482 value: item.value
2483 }
2484 };
2485 };
2486 return IndexIterator;
2487}());
2488var WithIndex = /** @class */ (function () {
2489 function WithIndex() {
2490 }
2491 /**
2492 * Returns a new sequence consisting of indexed values for all original elements.
2493 *
2494 * @returns {Sequence<IndexedValue<T>>}
2495 */
2496 WithIndex.prototype.withIndex = function () {
2497 return Sequence_1.createSequence(new IndexIterator(this.iterator));
2498 };
2499 return WithIndex;
2500}());
2501exports.WithIndex = WithIndex;
2502
2503
2504/***/ }),
2505/* 71 */
2506/***/ (function(module, exports, __webpack_require__) {
2507
2508Object.defineProperty(exports, "__esModule", { value: true });
2509var Sequence_1 = __webpack_require__(0);
2510var ZipIterator = /** @class */ (function () {
2511 function ZipIterator(iterator1, iterator2) {
2512 this.iterator1 = iterator1;
2513 this.iterator2 = iterator2;
2514 }
2515 ZipIterator.prototype.next = function (value) {
2516 var item1 = this.iterator1.next();
2517 var item2 = this.iterator2.next();
2518 if (item1.done || item2.done) {
2519 return { done: true, value: undefined };
2520 }
2521 else {
2522 return { done: false, value: [item1.value, item2.value] };
2523 }
2524 };
2525 return ZipIterator;
2526}());
2527var Zip = /** @class */ (function () {
2528 function Zip() {
2529 }
2530 /**
2531 * Returns a new sequence consisting of pairs built the elements of both sequences
2532 * with the same index. The resulting sequence has the length of the shortest input
2533 * sequence. All other elements are discarded.
2534 *
2535 * @param {Sequence<S>} other
2536 * @returns {Sequence<[T , S]>}
2537 */
2538 Zip.prototype.zip = function (other) {
2539 return Sequence_1.createSequence(new ZipIterator(this.iterator, other.iterator));
2540 };
2541 return Zip;
2542}());
2543exports.Zip = Zip;
2544
2545
2546/***/ }),
2547/* 72 */
2548/***/ (function(module, exports) {
2549
2550Object.defineProperty(exports, "__esModule", { value: true });
2551var GeneratorIterator = /** @class */ (function () {
2552 function GeneratorIterator(nextFunction) {
2553 this.nextFunction = nextFunction;
2554 }
2555 GeneratorIterator.prototype.next = function (value) {
2556 var nextItem = this.nextFunction();
2557 return {
2558 done: nextItem == null,
2559 value: nextItem
2560 };
2561 };
2562 return GeneratorIterator;
2563}());
2564exports.default = GeneratorIterator;
2565
2566
2567/***/ }),
2568/* 73 */
2569/***/ (function(module, exports) {
2570
2571Object.defineProperty(exports, "__esModule", { value: true });
2572var GeneratorSeedIterator = /** @class */ (function () {
2573 function GeneratorSeedIterator(seed, nextFunction) {
2574 this.seed = seed;
2575 this.nextFunction = nextFunction;
2576 }
2577 GeneratorSeedIterator.prototype.next = function (value) {
2578 if (this.prevItem == null) {
2579 this.prevItem = this.seed;
2580 return { done: false, value: this.seed };
2581 }
2582 var nextItem = this.nextFunction(this.prevItem);
2583 if (nextItem == null) {
2584 return { done: true, value: undefined };
2585 }
2586 this.prevItem = nextItem;
2587 return {
2588 done: false,
2589 value: nextItem
2590 };
2591 };
2592 return GeneratorSeedIterator;
2593}());
2594exports.default = GeneratorSeedIterator;
2595
2596
2597/***/ })
2598/******/ ]);
2599});
2600//# sourceMappingURL=sequency.js.map
\No newline at end of file