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
JavaScript
'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;
}