UNPKG

koconut

Version:

Provide interchainable array, set, map and etc supporting both normal and async callbacks as their action arguments.

1,307 lines (1,305 loc) 121 kB
'use strict'; var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault'); Object.defineProperty(exports, '__esModule', { value: true, }); exports.KoconutIterable = void 0; var _regenerator = _interopRequireDefault( require('@babel/runtime/regenerator'), ); var _asyncToGenerator2 = _interopRequireDefault( require('@babel/runtime/helpers/asyncToGenerator'), ); var _classCallCheck2 = _interopRequireDefault( require('@babel/runtime/helpers/classCallCheck'), ); var _createClass2 = _interopRequireDefault( require('@babel/runtime/helpers/createClass'), ); var _assertThisInitialized2 = _interopRequireDefault( require('@babel/runtime/helpers/assertThisInitialized'), ); var _inherits2 = _interopRequireDefault( require('@babel/runtime/helpers/inherits'), ); var _possibleConstructorReturn2 = _interopRequireDefault( require('@babel/runtime/helpers/possibleConstructorReturn'), ); var _getPrototypeOf2 = _interopRequireDefault( require('@babel/runtime/helpers/getPrototypeOf'), ); var _defineProperty2 = _interopRequireDefault( require('@babel/runtime/helpers/defineProperty'), ); var _module = require('../../module'); function _createForOfIteratorHelper(o, allowArrayLike) { var it = (typeof Symbol !== 'undefined' && o[Symbol.iterator]) || o['@@iterator']; if (!it) { if ( Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || (allowArrayLike && o && typeof o.length === 'number') ) { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F, }; } throw new TypeError( 'Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', ); } var normalCompletion = true; var didErr = false; var err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it['return'] != null) it['return'](); } finally { if (didErr) throw err; } }, }; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === 'string') return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === 'Object' && o.constructor) n = o.constructor.name; if (n === 'Map' || n === 'Set') return Array.from(o); if (n === 'Arguments' || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2['default'])(Derived); var result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2['default'])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2['default'])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === 'undefined' || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === 'function') return true; try { Boolean.prototype.valueOf.call( Reflect.construct(Boolean, [], function () {}), ); return true; } catch (e) { return false; } } var KoconutIterable = (function (_KoconutPrimitive) { (0, _inherits2['default'])(KoconutIterable, _KoconutPrimitive); var _super = _createSuper(KoconutIterable); function KoconutIterable() { var _this; (0, _classCallCheck2['default'])(this, KoconutIterable); for ( var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++ ) { args[_key] = arguments[_key]; } _this = _super.call.apply(_super, [this].concat(args)); (0, _defineProperty2['default'])( (0, _assertThisInitialized2['default'])(_this), 'combinedDataWrapper', void 0, ); (0, _defineProperty2['default'])( (0, _assertThisInitialized2['default'])(_this), 'mSize', 0, ); return _this; } (0, _createClass2['default'])(KoconutIterable, [ { key: 'count', value: function count() { var _this2 = this; var predicate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; if (predicate) predicate.bind(thisArg); var koconutToReturn = new _module.KoconutPrimitive(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee() { var count; var _iterator; var _step; var eachCombinedDatum; return _regenerator['default'].wrap( function _callee$(_context) { while (1) { switch ((_context.prev = _context.next)) { case 0: count = 0; _iterator = _createForOfIteratorHelper( _this2.combinedDataWrapper, ); _context.prev = 2; _iterator.s(); case 4: if ((_step = _iterator.n()).done) { _context.next = 16; break; } eachCombinedDatum = _step.value; if (predicate) { _context.next = 10; break; } count++; _context.next = 14; break; case 10: _context.next = 12; return predicate(eachCombinedDatum); case 12: if (!_context.sent) { _context.next = 14; break; } count++; case 14: _context.next = 4; break; case 16: _context.next = 21; break; case 18: _context.prev = 18; _context.t0 = _context['catch'](2); _iterator.e(_context.t0); case 21: _context.prev = 21; _iterator.f(); return _context.finish(21); case 24: return _context.abrupt('return', count); case 25: case 'end': return _context.stop(); } } }, _callee, null, [[2, 18, 21, 24]], ); }), ), ); return koconutToReturn; }, }, { key: 'maxBy', value: function maxBy(selector) { var _this3 = this; var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; _module.KoconutDeprecation.showDeprecationWarning( '1.2.0', this.maxByOrNull, ); selector = selector.bind(thisArg); var koconutToReturn = new _module.KoconutPrimitive(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee2() { var dataToReturn; var lastComparableDatum; var _iterator2; var _step2; var eachCombinedDatum; var eachComparableDatum; var shouldBeChanged; var eachCompareResult; var numberResult; return _regenerator['default'].wrap( function _callee2$(_context2) { while (1) { switch ((_context2.prev = _context2.next)) { case 0: dataToReturn = null; lastComparableDatum = null; _iterator2 = _createForOfIteratorHelper( _this3.combinedDataWrapper, ); _context2.prev = 3; _iterator2.s(); case 5: if ((_step2 = _iterator2.n()).done) { _context2.next = 29; break; } eachCombinedDatum = _step2.value; _context2.next = 9; return selector(eachCombinedDatum); case 9: eachComparableDatum = _context2.sent; shouldBeChanged = lastComparableDatum == null; if (shouldBeChanged) { _context2.next = 26; break; } if ( !_module.KoconutTypeChecker.checkIsComparable( eachComparableDatum, ) ) { _context2.next = 25; break; } eachCompareResult = eachComparableDatum.compareTo(lastComparableDatum); numberResult = 0; if ( !( eachCompareResult instanceof _module.KoconutPrimitive ) ) { _context2.next = 21; break; } _context2.next = 18; return eachCompareResult['yield'](); case 18: numberResult = _context2.sent; _context2.next = 22; break; case 21: numberResult = eachCompareResult; case 22: if (numberResult > 0) shouldBeChanged = true; _context2.next = 26; break; case 25: shouldBeChanged = lastComparableDatum < eachComparableDatum; case 26: if (shouldBeChanged) { dataToReturn = eachCombinedDatum; lastComparableDatum = eachComparableDatum; } case 27: _context2.next = 5; break; case 29: _context2.next = 34; break; case 31: _context2.prev = 31; _context2.t0 = _context2['catch'](3); _iterator2.e(_context2.t0); case 34: _context2.prev = 34; _iterator2.f(); return _context2.finish(34); case 37: if (!(dataToReturn == null)) { _context2.next = 39; break; } throw new _module.KoconutNoSuchElementException( 'Source data is empty', ); case 39: return _context2.abrupt('return', dataToReturn); case 40: case 'end': return _context2.stop(); } } }, _callee2, null, [[3, 31, 34, 37]], ); }), ), ); return koconutToReturn; }, }, { key: 'maxByOrNull', value: function maxByOrNull(selector) { var _this4 = this; var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; selector = selector.bind(thisArg); var koconutToReturn = new _module.KoconutPrimitive(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee3() { var dataToReturn; var lastComparableDatum; var _iterator3; var _step3; var eachCombinedDatum; var eachComparableDatum; var shouldBeChanged; var eachCompareResult; var numberResult; return _regenerator['default'].wrap( function _callee3$(_context3) { while (1) { switch ((_context3.prev = _context3.next)) { case 0: dataToReturn = null; lastComparableDatum = null; _iterator3 = _createForOfIteratorHelper( _this4.combinedDataWrapper, ); _context3.prev = 3; _iterator3.s(); case 5: if ((_step3 = _iterator3.n()).done) { _context3.next = 29; break; } eachCombinedDatum = _step3.value; _context3.next = 9; return selector(eachCombinedDatum); case 9: eachComparableDatum = _context3.sent; shouldBeChanged = lastComparableDatum == null; if (shouldBeChanged) { _context3.next = 26; break; } if ( !_module.KoconutTypeChecker.checkIsComparable( eachComparableDatum, ) ) { _context3.next = 25; break; } eachCompareResult = eachComparableDatum.compareTo(lastComparableDatum); numberResult = 0; if ( !( eachCompareResult instanceof _module.KoconutPrimitive ) ) { _context3.next = 21; break; } _context3.next = 18; return eachCompareResult['yield'](); case 18: numberResult = _context3.sent; _context3.next = 22; break; case 21: numberResult = eachCompareResult; case 22: if (numberResult > 0) shouldBeChanged = true; _context3.next = 26; break; case 25: shouldBeChanged = lastComparableDatum < eachComparableDatum; case 26: if (shouldBeChanged) { dataToReturn = eachCombinedDatum; lastComparableDatum = eachComparableDatum; } case 27: _context3.next = 5; break; case 29: _context3.next = 34; break; case 31: _context3.prev = 31; _context3.t0 = _context3['catch'](3); _iterator3.e(_context3.t0); case 34: _context3.prev = 34; _iterator3.f(); return _context3.finish(34); case 37: return _context3.abrupt('return', dataToReturn); case 38: case 'end': return _context3.stop(); } } }, _callee3, null, [[3, 31, 34, 37]], ); }), ), ); return koconutToReturn; }, }, { key: 'maxOf', value: function maxOf(selector) { var _this5 = this; var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; selector = selector.bind(thisArg); var koconutToReturn = new _module.KoconutPrimitive(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee4() { var lastComparableDatumToReturn; var _iterator4; var _step4; var eachCombinedDatum; var eachComparableDatum; var shouldBeChanged; var eachCompareResult; var numberResult; return _regenerator['default'].wrap( function _callee4$(_context4) { while (1) { switch ((_context4.prev = _context4.next)) { case 0: lastComparableDatumToReturn = null; _iterator4 = _createForOfIteratorHelper( _this5.combinedDataWrapper, ); _context4.prev = 2; _iterator4.s(); case 4: if ((_step4 = _iterator4.n()).done) { _context4.next = 28; break; } eachCombinedDatum = _step4.value; _context4.next = 8; return selector(eachCombinedDatum); case 8: eachComparableDatum = _context4.sent; shouldBeChanged = lastComparableDatumToReturn == null; if (shouldBeChanged) { _context4.next = 25; break; } if ( !_module.KoconutTypeChecker.checkIsComparable( eachComparableDatum, ) ) { _context4.next = 24; break; } eachCompareResult = eachComparableDatum.compareTo( lastComparableDatumToReturn, ); numberResult = 0; if ( !( eachCompareResult instanceof _module.KoconutPrimitive ) ) { _context4.next = 20; break; } _context4.next = 17; return eachCompareResult['yield'](); case 17: numberResult = _context4.sent; _context4.next = 21; break; case 20: numberResult = eachCompareResult; case 21: if (numberResult > 0) shouldBeChanged = true; _context4.next = 25; break; case 24: shouldBeChanged = lastComparableDatumToReturn < eachComparableDatum; case 25: if (shouldBeChanged) lastComparableDatumToReturn = eachComparableDatum; case 26: _context4.next = 4; break; case 28: _context4.next = 33; break; case 30: _context4.prev = 30; _context4.t0 = _context4['catch'](2); _iterator4.e(_context4.t0); case 33: _context4.prev = 33; _iterator4.f(); return _context4.finish(33); case 36: if (!(lastComparableDatumToReturn == null)) { _context4.next = 38; break; } throw new _module.KoconutNoSuchElementException( 'Source data is empty', ); case 38: return _context4.abrupt( 'return', lastComparableDatumToReturn, ); case 39: case 'end': return _context4.stop(); } } }, _callee4, null, [[2, 30, 33, 36]], ); }), ), ); return koconutToReturn; }, }, { key: 'maxOfOrNull', value: function maxOfOrNull(selector) { var _this6 = this; var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; selector = selector.bind(thisArg); var koconutToReturn = new _module.KoconutPrimitive(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee5() { var lastComparableDatumToReturn; var _iterator5; var _step5; var eachCombinedDatum; var eachComparableDatum; var shouldBeChanged; var eachCompareResult; var numberResult; return _regenerator['default'].wrap( function _callee5$(_context5) { while (1) { switch ((_context5.prev = _context5.next)) { case 0: lastComparableDatumToReturn = null; _iterator5 = _createForOfIteratorHelper( _this6.combinedDataWrapper, ); _context5.prev = 2; _iterator5.s(); case 4: if ((_step5 = _iterator5.n()).done) { _context5.next = 28; break; } eachCombinedDatum = _step5.value; _context5.next = 8; return selector(eachCombinedDatum); case 8: eachComparableDatum = _context5.sent; shouldBeChanged = lastComparableDatumToReturn == null; if (shouldBeChanged) { _context5.next = 25; break; } if ( !_module.KoconutTypeChecker.checkIsComparable( eachComparableDatum, ) ) { _context5.next = 24; break; } eachCompareResult = eachComparableDatum.compareTo( lastComparableDatumToReturn, ); numberResult = 0; if ( !( eachCompareResult instanceof _module.KoconutPrimitive ) ) { _context5.next = 20; break; } _context5.next = 17; return eachCompareResult['yield'](); case 17: numberResult = _context5.sent; _context5.next = 21; break; case 20: numberResult = eachCompareResult; case 21: if (numberResult > 0) shouldBeChanged = true; _context5.next = 25; break; case 24: shouldBeChanged = lastComparableDatumToReturn < eachComparableDatum; case 25: if (shouldBeChanged) lastComparableDatumToReturn = eachComparableDatum; case 26: _context5.next = 4; break; case 28: _context5.next = 33; break; case 30: _context5.prev = 30; _context5.t0 = _context5['catch'](2); _iterator5.e(_context5.t0); case 33: _context5.prev = 33; _iterator5.f(); return _context5.finish(33); case 36: return _context5.abrupt( 'return', lastComparableDatumToReturn, ); case 37: case 'end': return _context5.stop(); } } }, _callee5, null, [[2, 30, 33, 36]], ); }), ), ); return koconutToReturn; }, }, { key: 'maxOfWith', value: function maxOfWith(selector, comparator) { var _this7 = this; var selectorThisArg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; var comparatorThisArg = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; selector = selector.bind(selectorThisArg); comparator = comparator.bind(comparatorThisArg); var koconutToReturn = new _module.KoconutPrimitive(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee6() { var lastComparableDatumToReturn; var _iterator6; var _step6; var eachCombinedDatum; var eachComparableDatum; return _regenerator['default'].wrap( function _callee6$(_context6) { while (1) { switch ((_context6.prev = _context6.next)) { case 0: lastComparableDatumToReturn = null; _iterator6 = _createForOfIteratorHelper( _this7.combinedDataWrapper, ); _context6.prev = 2; _iterator6.s(); case 4: if ((_step6 = _iterator6.n()).done) { _context6.next = 19; break; } eachCombinedDatum = _step6.value; _context6.next = 8; return selector(eachCombinedDatum); case 8: eachComparableDatum = _context6.sent; _context6.t0 = lastComparableDatumToReturn == null; if (_context6.t0) { _context6.next = 15; break; } _context6.next = 13; return comparator( lastComparableDatumToReturn, eachComparableDatum, ); case 13: _context6.t1 = _context6.sent; _context6.t0 = _context6.t1 < 0; case 15: if (!_context6.t0) { _context6.next = 17; break; } lastComparableDatumToReturn = eachComparableDatum; case 17: _context6.next = 4; break; case 19: _context6.next = 24; break; case 21: _context6.prev = 21; _context6.t2 = _context6['catch'](2); _iterator6.e(_context6.t2); case 24: _context6.prev = 24; _iterator6.f(); return _context6.finish(24); case 27: if (!(lastComparableDatumToReturn == null)) { _context6.next = 29; break; } throw new _module.KoconutNoSuchElementException( 'Source data is empty', ); case 29: return _context6.abrupt( 'return', lastComparableDatumToReturn, ); case 30: case 'end': return _context6.stop(); } } }, _callee6, null, [[2, 21, 24, 27]], ); }), ), ); return koconutToReturn; }, }, { key: 'maxOfWithOrNull', value: function maxOfWithOrNull(selector, comparator) { var _this8 = this; var selectorThisArg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; var comparatorThisArg = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; selector = selector.bind(selectorThisArg); comparator = comparator.bind(comparatorThisArg); var koconutToReturn = new _module.KoconutPrimitive(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee7() { var lastComparableDatumToReturn; var _iterator7; var _step7; var eachCombinedDatum; var eachComparableDatum; return _regenerator['default'].wrap( function _callee7$(_context7) { while (1) { switch ((_context7.prev = _context7.next)) { case 0: lastComparableDatumToReturn = null; _iterator7 = _createForOfIteratorHelper( _this8.combinedDataWrapper, ); _context7.prev = 2; _iterator7.s(); case 4: if ((_step7 = _iterator7.n()).done) { _context7.next = 19; break; } eachCombinedDatum = _step7.value; _context7.next = 8; return selector(eachCombinedDatum); case 8: eachComparableDatum = _context7.sent; _context7.t0 = lastComparableDatumToReturn == null; if (_context7.t0) { _context7.next = 15; break; } _context7.next = 13; return comparator( lastComparableDatumToReturn, eachComparableDatum, ); case 13: _context7.t1 = _context7.sent; _context7.t0 = _context7.t1 < 0; case 15: if (!_context7.t0) { _context7.next = 17; break; } lastComparableDatumToReturn = eachComparableDatum; case 17: _context7.next = 4; break; case 19: _context7.next = 24; break; case 21: _context7.prev = 21; _context7.t2 = _context7['catch'](2); _iterator7.e(_context7.t2); case 24: _context7.prev = 24; _iterator7.f(); return _context7.finish(24); case 27: return _context7.abrupt( 'return', lastComparableDatumToReturn, ); case 28: case 'end': return _context7.stop(); } } }, _callee7, null, [[2, 21, 24, 27]], ); }), ), ); return koconutToReturn; }, }, { key: 'maxWith', value: function maxWith(comparator) { var _this9 = this; var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; comparator = comparator.bind(thisArg); var koconutToReturn = new _module.KoconutPrimitive(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee8() { var dataToReturn; var _iterator8; var _step8; var eachCombinedDatum; return _regenerator['default'].wrap( function _callee8$(_context8) { while (1) { switch ((_context8.prev = _context8.next)) { case 0: dataToReturn = null; _iterator8 = _createForOfIteratorHelper( _this9.combinedDataWrapper, ); _context8.prev = 2; _iterator8.s(); case 4: if ((_step8 = _iterator8.n()).done) { _context8.next = 16; break; } eachCombinedDatum = _step8.value; _context8.t0 = dataToReturn == null; if (_context8.t0) { _context8.next = 12; break; } _context8.next = 10; return comparator(dataToReturn, eachCombinedDatum); case 10: _context8.t1 = _context8.sent; _context8.t0 = _context8.t1 < 0; case 12: if (!_context8.t0) { _context8.next = 14; break; } dataToReturn = eachCombinedDatum; case 14: _context8.next = 4; break; case 16: _context8.next = 21; break; case 18: _context8.prev = 18; _context8.t2 = _context8['catch'](2); _iterator8.e(_context8.t2); case 21: _context8.prev = 21; _iterator8.f(); return _context8.finish(21); case 24: if (!(dataToReturn == null)) { _context8.next = 26; break; } throw new _module.KoconutNoSuchElementException( 'Source data is empty', ); case 26: return _context8.abrupt('return', dataToReturn); case 27: case 'end': return _context8.stop(); } } }, _callee8, null, [[2, 18, 21, 24]], ); }), ), ); return koconutToReturn; }, }, { key: 'maxWithOrNull', value: function maxWithOrNull(comparator) { var _this10 = this; var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; comparator = comparator.bind(thisArg); var koconutToReturn = new _module.KoconutPrimitive(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee9() { var dataToReturn; var _iterator9; var _step9; var eachCombinedDatum; return _regenerator['default'].wrap( function _callee9$(_context9) { while (1) { switch ((_context9.prev = _context9.next)) { case 0: dataToReturn = null; _iterator9 = _createForOfIteratorHelper( _this10.combinedDataWrapper, ); _context9.prev = 2; _iterator9.s(); case 4: if ((_step9 = _iterator9.n()).done) { _context9.next = 16; break; } eachCombinedDatum = _step9.value; _context9.t0 = dataToReturn == null; if (_context9.t0) { _context9.next = 12; break; } _context9.next = 10; return comparator(dataToReturn, eachCombinedDatum); case 10: _context9.t1 = _context9.sent; _context9.t0 = _context9.t1 < 0; case 12: if (!_context9.t0) { _context9.next = 14; break; } dataToReturn = eachCombinedDatum; case 14: _context9.next = 4; break; case 16: _context9.next = 21; break; case 18: _context9.prev = 18; _context9.t2 = _context9['catch'](2); _iterator9.e(_context9.t2); case 21: _context9.prev = 21; _iterator9.f(); return _context9.finish(21); case 24: return _context9.abrupt('return', dataToReturn); case 25: case 'end': return _context9.stop(); } } }, _callee9, null, [[2, 18, 21, 24]], ); }), ), ); return koconutToReturn; }, }, { key: 'minBy', value: function minBy(selector) { var _this11 = this; var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; _module.KoconutDeprecation.showDeprecationWarning( '1.2.0', this.minByOrNull, ); selector = selector.bind(thisArg); var koconutToReturn = new _module.KoconutPrimitive(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee10() { var dataToReturn; var lastComparableDatum; var _iterator10; var _step10; var eachCombinedDatum; var eachComparableDatum; var shouldBeChanged; var eachCompareResult; var numberResult; return _regenerator['default'].wrap( function _callee10$(_context10) { while (1) { switch ((_context10.prev = _context10.next)) { case 0: dataToReturn = null; lastComparableDatum = null; _iterator10 = _createForOfIteratorHelper( _this11.combinedDataWrapper, ); _context10.prev = 3; _iterator10.s(); case 5: if ((_step10 = _iterator10.n()).done) { _context10.next = 29; break; } eachCombinedDatum = _step10.value; _context10.next = 9; return selector(eachCombinedDatum); case 9: eachComparableDatum = _context10.sent; shouldBeChanged = lastComparableDatum == null; if (shouldBeChanged) { _context10.next = 26; break; } if ( !_module.KoconutTypeChecker.checkIsComparable( eachComparableDatum, ) ) { _context10.next = 25; break; } eachCompareResult = eachComparableDatum.compareTo(lastComparableDatum); numberResult = 0; if ( !( eachCompareResult instanceof _module.KoconutPrimitive ) ) { _context10.next = 21; break; } _context10.next = 18; return eachCompareResult['yield'](); case 18: numberResult = _context10.sent; _context10.next = 22; break; case 21: numberResult = eachCompareResult; case 22: if (numberResult < 0) shouldBeChanged = true; _context10.next = 26; break; case 25: shouldBeChanged = lastComparableDatum > eachComparableDatum; case 26: if (shouldBeChanged) { dataToReturn = eachCombinedDatum; lastComparableDatum = eachComparableDatum; } case 27: _context10.next = 5; break; case 29: _context10.next = 34; break; case 31: _context10.prev = 31; _context10.t0 = _context10['catch'](3); _iterator10.e(_context10.t0); case 34: _context10.prev = 34; _iterator10.f(); return _context10.finish(34); case 37: if (!(dataToReturn == null)) { _context10.next = 39; break; } throw new _module.KoconutNoSuchElementException( 'Source data is empty', ); case 39: return _context10.abrupt('return', dataToReturn); case 40: case 'end': return _context10.stop(); } } }, _callee10, null, [[3, 31, 34, 37]], ); }), ), ); return koconutToReturn; }, }, { key: 'minByOrNull', value: function minByOrNull(selector) { var _this12 = this; var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; selector = selector.bind(thisArg); var koconutToReturn = new _module.KoconutPrimitive(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee11() { var dataToReturn; var lastComparableDatum; var _iterator11; var _step11; var eachCombinedDatum; var eachComparableDatum; var shouldBeChanged; var eachCompareResult; var numberResult; return _regenerator['default'].wrap( function _callee11$(_context11) { while (1) { switch ((_context11.prev = _context11.next)) { case 0: dataToReturn = null; lastComparableDatum = null; _iterator11 = _createForOfIteratorHelper( _this12.combinedDataWrapper, ); _context11.prev = 3; _iterator11.s(); case 5: if ((_step11 = _iterator11.n()).done) { _context11.next = 29; break; } eachCombinedDatum = _step11.value; _context11.next = 9; return selector(eachCombinedDatum); case 9: eachComparableDatum = _context11.sent; shouldBeChanged = lastComparableDatum == null; if (shouldBeChanged) { _context11.next = 26; break; }