UNPKG

koconut

Version:

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

1,290 lines (1,289 loc) 258 kB
'use strict'; var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault'); Object.defineProperty(exports, '__esModule', { value: true, }); exports.KoconutCollection = void 0; var _regenerator = _interopRequireDefault( require('@babel/runtime/regenerator'), ); var _slicedToArray2 = _interopRequireDefault( require('@babel/runtime/helpers/slicedToArray'), ); 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 _get2 = _interopRequireDefault(require('@babel/runtime/helpers/get')); 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'); var _KoconutEntry = require('../base/KoconutEntry'); 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; } } ('use strict'); var KoconutCollection = (function (_KoconutIterable) { (0, _inherits2['default'])(KoconutCollection, _KoconutIterable); var _super = _createSuper(KoconutCollection); function KoconutCollection() { var _this; (0, _classCallCheck2['default'])(this, KoconutCollection); 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), 'mIndices', new Array(), ); return _this; } (0, _createClass2['default'])( KoconutCollection, [ { key: 'validate', value: (function () { var _validate = (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee(data) { var _this2 = this; var dataArray; return _regenerator['default'].wrap( function _callee$(_context) { while (1) { switch ((_context.prev = _context.next)) { case 0: if (data != null) { dataArray = Array.from(data); this.mSize = dataArray.length; Object.keys(dataArray) .map(function (eachString) { return parseInt(eachString); }) .forEach(function (eachIndex) { return _this2.mIndices.push(eachIndex); }); this.combinedDataWrapper = data; } case 1: case 'end': return _context.stop(); } } }, _callee, this, ); }), ); function validate(_x) { return _validate.apply(this, arguments); } return validate; })(), }, { key: 'size', value: function size() { var _this3 = this; var koconutToReturn = new _module.KoconutPrimitive(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee2() { return _regenerator['default'].wrap(function _callee2$( _context2, ) { while (1) { switch ((_context2.prev = _context2.next)) { case 0: return _context2.abrupt('return', _this3.mSize); case 1: case 'end': return _context2.stop(); } } }, _callee2); }), ), ); return koconutToReturn; }, }, { key: 'indices', value: function indices() { var _this4 = this; var koconutToReturn = new _module.KoconutArray(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee3() { return _regenerator['default'].wrap(function _callee3$( _context3, ) { while (1) { switch ((_context3.prev = _context3.next)) { case 0: return _context3.abrupt('return', _this4.mIndices); case 1: case 'end': return _context3.stop(); } } }, _callee3); }), ), ); return koconutToReturn; }, }, { key: 'fold', value: function fold(initial, operation) { var _this5 = this; var thisArg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; operation = operation.bind(thisArg); var koconutToReturn = new _module.KoconutPrimitive(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee4() { var dataToReturn; var _iterator; var _step; var eachDatum; return _regenerator['default'].wrap( function _callee4$(_context4) { while (1) { switch ((_context4.prev = _context4.next)) { case 0: dataToReturn = initial; _iterator = _createForOfIteratorHelper(_this5.data); _context4.prev = 2; _iterator.s(); case 4: if ((_step = _iterator.n()).done) { _context4.next = 11; break; } eachDatum = _step.value; _context4.next = 8; return operation(dataToReturn, eachDatum); case 8: dataToReturn = _context4.sent; case 9: _context4.next = 4; break; case 11: _context4.next = 16; break; case 13: _context4.prev = 13; _context4.t0 = _context4['catch'](2); _iterator.e(_context4.t0); case 16: _context4.prev = 16; _iterator.f(); return _context4.finish(16); case 19: return _context4.abrupt('return', dataToReturn); case 20: case 'end': return _context4.stop(); } } }, _callee4, null, [[2, 13, 16, 19]], ); }), ), ); return koconutToReturn; }, }, { key: 'foldIndexed', value: function foldIndexed(initial, operation) { var _this6 = this; var thisArg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; operation = operation.bind(thisArg); var koconutToReturn = new _module.KoconutPrimitive(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee5() { var dataToReturn; var _iterator2; var _step2; var _step2$value; var eachIndex; var eachDatum; return _regenerator['default'].wrap( function _callee5$(_context5) { while (1) { switch ((_context5.prev = _context5.next)) { case 0: dataToReturn = initial; _iterator2 = _createForOfIteratorHelper( Array.from(_this6.data).entries(), ); _context5.prev = 2; _iterator2.s(); case 4: if ((_step2 = _iterator2.n()).done) { _context5.next = 11; break; } (_step2$value = (0, _slicedToArray2['default'])( _step2.value, 2, )), (eachIndex = _step2$value[0]), (eachDatum = _step2$value[1]); _context5.next = 8; return operation(eachIndex, dataToReturn, eachDatum); case 8: dataToReturn = _context5.sent; case 9: _context5.next = 4; break; case 11: _context5.next = 16; break; case 13: _context5.prev = 13; _context5.t0 = _context5['catch'](2); _iterator2.e(_context5.t0); case 16: _context5.prev = 16; _iterator2.f(); return _context5.finish(16); case 19: return _context5.abrupt('return', dataToReturn); case 20: case 'end': return _context5.stop(); } } }, _callee5, null, [[2, 13, 16, 19]], ); }), ), ); return koconutToReturn; }, }, { key: 'contains', value: function contains(element) { var _this7 = this; var koconutToReturn = new _module.KoconutBoolean(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee6() { var _iterator3; var _step3; var eachDatum; var isContained; var equalityResult; return _regenerator['default'].wrap( function _callee6$(_context6) { while (1) { switch ((_context6.prev = _context6.next)) { case 0: _iterator3 = _createForOfIteratorHelper(_this7.data); _context6.prev = 1; _iterator3.s(); case 3: if ((_step3 = _iterator3.n()).done) { _context6.next = 22; break; } eachDatum = _step3.value; isContained = false; if ( !_module.KoconutTypeChecker.checkIsEquatable( eachDatum, ) ) { _context6.next = 17; break; } equalityResult = eachDatum.equalsTo(element); if ( !( equalityResult instanceof _module.KoconutPrimitive ) ) { _context6.next = 14; break; } _context6.next = 11; return equalityResult['yield'](); case 11: isContained = _context6.sent; _context6.next = 15; break; case 14: isContained = equalityResult; case 15: _context6.next = 18; break; case 17: isContained = eachDatum == element; case 18: if (!isContained) { _context6.next = 20; break; } return _context6.abrupt('return', true); case 20: _context6.next = 3; break; case 22: _context6.next = 27; break; case 24: _context6.prev = 24; _context6.t0 = _context6['catch'](1); _iterator3.e(_context6.t0); case 27: _context6.prev = 27; _iterator3.f(); return _context6.finish(27); case 30: return _context6.abrupt('return', false); case 31: case 'end': return _context6.stop(); } } }, _callee6, null, [[1, 24, 27, 30]], ); }), ), ); return koconutToReturn; }, }, { key: 'containsAll', value: function containsAll(elements) { var _this8 = this; var koconutToReturn = new _module.KoconutBoolean(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee7() { var dataArray; var _iterator4; var _step4; var eachElementToCheck; var isIncluded; var _iterator5; var _step5; var eachDatum; var equalityResult; return _regenerator['default'].wrap( function _callee7$(_context7) { while (1) { switch ((_context7.prev = _context7.next)) { case 0: dataArray = Array.from(_this8.data); _iterator4 = _createForOfIteratorHelper(elements); _context7.prev = 2; _iterator4.s(); case 4: if ((_step4 = _iterator4.n()).done) { _context7.next = 43; break; } eachElementToCheck = _step4.value; if ( !_module.KoconutTypeChecker.checkIsEquatable( eachElementToCheck, ) ) { _context7.next = 39; break; } isIncluded = false; _iterator5 = _createForOfIteratorHelper(dataArray); _context7.prev = 9; _iterator5.s(); case 11: if ((_step5 = _iterator5.n()).done) { _context7.next = 27; break; } eachDatum = _step5.value; equalityResult = eachElementToCheck.equalsTo(eachDatum); _context7.t1 = equalityResult instanceof _module.KoconutPrimitive; if (!_context7.t1) { _context7.next = 19; break; } _context7.next = 18; return equalityResult['yield'](); case 18: _context7.t1 = _context7.sent; case 19: _context7.t0 = _context7.t1; if (_context7.t0) { _context7.next = 22; break; } _context7.t0 = !( equalityResult instanceof _module.KoconutPrimitive ) && equalityResult; case 22: if (!_context7.t0) { _context7.next = 25; break; } isIncluded = true; return _context7.abrupt('break', 27); case 25: _context7.next = 11; break; case 27: _context7.next = 32; break; case 29: _context7.prev = 29; _context7.t2 = _context7['catch'](9); _iterator5.e(_context7.t2); case 32: _context7.prev = 32; _iterator5.f(); return _context7.finish(32); case 35: if (isIncluded) { _context7.next = 37; break; } return _context7.abrupt('return', false); case 37: _context7.next = 41; break; case 39: if (dataArray.includes(eachElementToCheck)) { _context7.next = 41; break; } return _context7.abrupt('return', false); case 41: _context7.next = 4; break; case 43: _context7.next = 48; break; case 45: _context7.prev = 45; _context7.t3 = _context7['catch'](2); _iterator4.e(_context7.t3); case 48: _context7.prev = 48; _iterator4.f(); return _context7.finish(48); case 51: return _context7.abrupt('return', true); case 52: case 'end': return _context7.stop(); } } }, _callee7, null, [ [2, 45, 48, 51], [9, 29, 32, 35], ], ); }), ), ); return koconutToReturn; }, }, { key: 'forEachIndexed', value: function forEachIndexed(action) { var _this9 = this; var thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; action = action.bind(thisArg); var koconutToReturn = new _module.KoconutPrimitive(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee8() { var eachIndex; var _iterator6; var _step6; var eachCombinedDatum; var signal; return _regenerator['default'].wrap( function _callee8$(_context8) { while (1) { switch ((_context8.prev = _context8.next)) { case 0: eachIndex = 0; _iterator6 = _createForOfIteratorHelper(_this9.data); _context8.prev = 2; _iterator6.s(); case 4: if ((_step6 = _iterator6.n()).done) { _context8.next = 13; break; } eachCombinedDatum = _step6.value; _context8.next = 8; return action(eachIndex++, eachCombinedDatum); case 8: signal = _context8.sent; if ( !( signal == false || signal == _module.KoconutLoopSignal.BREAK ) ) { _context8.next = 11; break; } return _context8.abrupt('break', 13); case 11: _context8.next = 4; break; case 13: _context8.next = 18; break; case 15: _context8.prev = 15; _context8.t0 = _context8['catch'](2); _iterator6.e(_context8.t0); case 18: _context8.prev = 18; _iterator6.f(); return _context8.finish(18); case 21: case 'end': return _context8.stop(); } } }, _callee8, null, [[2, 15, 18, 21]], ); }), ), ); return koconutToReturn; }, }, { key: 'onEach', value: function onEach(action, thisArg) { return KoconutCollection.fromIterable( (0, _get2['default'])( (0, _getPrototypeOf2['default'])(KoconutCollection.prototype), 'onEach', this, ).call(this, action, thisArg), ); }, }, { key: 'onEachIndexed', value: function onEachIndexed(action, thisArg) { var _this10 = this; action = action.bind(thisArg); var koconutToReturn = new KoconutCollection(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee9() { var eachIndex; var _iterator7; var _step7; var eachDatum; var signal; return _regenerator['default'].wrap( function _callee9$(_context9) { while (1) { switch ((_context9.prev = _context9.next)) { case 0: eachIndex = 0; _iterator7 = _createForOfIteratorHelper(_this10.data); _context9.prev = 2; _iterator7.s(); case 4: if ((_step7 = _iterator7.n()).done) { _context9.next = 13; break; } eachDatum = _step7.value; _context9.next = 8; return action(eachIndex++, eachDatum); case 8: signal = _context9.sent; if ( !( signal == false || signal == _module.KoconutLoopSignal.BREAK ) ) { _context9.next = 11; break; } return _context9.abrupt('break', 13); case 11: _context9.next = 4; break; case 13: _context9.next = 18; break; case 15: _context9.prev = 15; _context9.t0 = _context9['catch'](2); _iterator7.e(_context9.t0); case 18: _context9.prev = 18; _iterator7.f(); return _context9.finish(18); case 21: return _context9.abrupt('return', _this10.data); case 22: case 'end': return _context9.stop(); } } }, _callee9, null, [[2, 15, 18, 21]], ); }), ), ); return koconutToReturn; }, }, { key: 'distinct', value: function distinct() { var _this11 = this; var koconutToReturn = new KoconutCollection(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee10() { var processedArray; var _iterator8; var _step8; var eachDatum; var isConflict; var _iterator9; var _step9; var eachPrevEquatableDatum; var equalityResult; return _regenerator['default'].wrap( function _callee10$(_context10) { while (1) { switch ((_context10.prev = _context10.next)) { case 0: processedArray = new Array(); _iterator8 = _createForOfIteratorHelper(_this11.data); _context10.prev = 2; _iterator8.s(); case 4: if ((_step8 = _iterator8.n()).done) { _context10.next = 42; break; } eachDatum = _step8.value; if ( !_module.KoconutTypeChecker.checkIsEquatable( eachDatum, ) ) { _context10.next = 38; break; } isConflict = false; _iterator9 = _createForOfIteratorHelper(processedArray); _context10.prev = 9; _iterator9.s(); case 11: if ((_step9 = _iterator9.n()).done) { _context10.next = 27; break; } eachPrevEquatableDatum = _step9.value; equalityResult = eachDatum.equalsTo( eachPrevEquatableDatum, ); _context10.t1 = equalityResult instanceof _module.KoconutPrimitive; if (!_context10.t1) { _context10.next = 19; break; } _context10.next = 18; return equalityResult['yield'](); case 18: _context10.t1 = _context10.sent; case 19: _context10.t0 = _context10.t1; if (_context10.t0) { _context10.next = 22; break; } _context10.t0 = !( equalityResult instanceof _module.KoconutPrimitive ) && equalityResult; case 22: if (!_context10.t0) { _context10.next = 25; break; } isConflict = true; return _context10.abrupt('break', 27); case 25: _context10.next = 11; break; case 27: _context10.next = 32; break; case 29: _context10.prev = 29; _context10.t2 = _context10['catch'](9); _iterator9.e(_context10.t2); case 32: _context10.prev = 32; _iterator9.f(); return _context10.finish(32); case 35: if (!isConflict) processedArray.push(eachDatum); _context10.next = 40; break; case 38: processedArray = Array.from(new Set(_this11.data)); return _context10.abrupt('break', 42); case 40: _context10.next = 4; break; case 42: _context10.next = 47; break; case 44: _context10.prev = 44; _context10.t3 = _context10['catch'](2); _iterator8.e(_context10.t3); case 47: _context10.prev = 47; _iterator8.f(); return _context10.finish(47); case 50: if (!(_this11.data instanceof Array)) { _context10.next = 54; break; } return _context10.abrupt('return', processedArray); case 54: return _context10.abrupt( 'return', new Set(processedArray), ); case 55: case 'end': return _context10.stop(); } } }, _callee10, null, [ [2, 44, 47, 50], [9, 29, 32, 35], ], ); }), ), ); return koconutToReturn; }, }, { key: 'distinctBy', value: function distinctBy(selector, thisArg) { var _this12 = this; selector = selector.bind(thisArg); var koconutToReturn = new KoconutCollection(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee11() { var processedArray; var keyArray; var equatableKeyArray; var _iterator10; var _step10; var eachDatum; var eachKey; var isConflict; var _iterator11; var _step11; var eachPrevEquatableKey; var equalityResult; return _regenerator['default'].wrap( function _callee11$(_context11) { while (1) { switch ((_context11.prev = _context11.next)) { case 0: processedArray = new Array(); keyArray = new Array(); equatableKeyArray = new Array(); _iterator10 = _createForOfIteratorHelper( _this12.data, ); _context11.prev = 4; _iterator10.s(); case 6: if ((_step10 = _iterator10.n()).done) { _context11.next = 46; break; } eachDatum = _step10.value; _context11.next = 10; return selector(eachDatum); case 10: eachKey = _context11.sent; if ( !_module.KoconutTypeChecker.checkIsEquatable( eachKey, ) ) { _context11.next = 43; break; } isConflict = false; _iterator11 = _createForOfIteratorHelper(equatableKeyArray); _context11.prev = 14; _iterator11.s(); case 16: if ((_step11 = _iterator11.n()).done) { _context11.next = 32; break; } eachPrevEquatableKey = _step11.value; equalityResult = eachPrevEquatableKey.equalsTo(eachKey); _context11.t1 = equalityResult instanceof _module.KoconutPrimitive; if (!_context11.t1) { _context11.next = 24; break; } _context11.next = 23; return equalityResult['yield'](); case 23: _context11.t1 = _context11.sent; case 24: _context11.t0 = _context11.t1; if (_context11.t0) { _context11.next = 27; break; } _context11.t0 = !( equalityResult instanceof _module.KoconutPrimitive ) && equalityResult; case 27: if (!_context11.t0) { _context11.next = 30; break; } isConflict = true; return _context11.abrupt('break', 32); case 30: _context11.next = 16; break; case 32: _context11.next = 37; break; case 34: _context11.prev = 34; _context11.t2 = _context11['catch'](14); _iterator11.e(_context11.t2); case 37: _context11.prev = 37; _iterator11.f(); return _context11.finish(37); case 40: if (!isConflict) { equatableKeyArray.push(eachKey); processedArray.push(eachDatum); } _context11.next = 44; break; case 43: if (!keyArray.includes(eachKey)) { keyArray.push(eachKey); processedArray.push(eachDatum); } case 44: _context11.next = 6; break; case 46: _context11.next = 51; break; case 48: _context11.prev = 48; _context11.t3 = _context11['catch'](4); _iterator10.e(_context11.t3); case 51: _context11.prev = 51; _iterator10.f(); return _context11.finish(51); case 54: if (!(_this12.data instanceof Array)) { _context11.next = 58; break; } return _context11.abrupt('return', processedArray); case 58: return _context11.abrupt( 'return', new Set(processedArray), ); case 59: case 'end': return _context11.stop(); } } }, _callee11, null, [ [4, 48, 51, 54], [14, 34, 37, 40], ], ); }), ), ); return koconutToReturn; }, }, { key: 'drop', value: function drop(n) { var _this13 = this; var koconutToReturn = new KoconutCollection(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee12() { var processedArray; return _regenerator['default'].wrap(function _callee12$( _context12, ) { while (1) { switch ((_context12.prev = _context12.next)) { case 0: if (!(n < 0)) { _context12.next = 2; break; } throw new _module.KoconutInvalidArgumentException( 'Given argument '.concat( n, " is invalid, 'n' must be larger than 0.", ), ); case 2: processedArray = new Array(); processedArray = Array.from(_this13.data).slice(n); if (!(_this13.data instanceof Array)) { _context12.next = 8; break; } return _context12.abrupt('return', processedArray); case 8: return _context12.abrupt( 'return', new Set(processedArray), ); case 9: case 'end': return _context12.stop(); } } }, _callee12); }), ), ); return koconutToReturn; }, }, { key: 'dropLast', value: function dropLast(n) { var _this14 = this; var koconutToReturn = new KoconutCollection(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee13() { var processedArray; return _regenerator['default'].wrap(function _callee13$( _context13, ) { while (1) { switch ((_context13.prev = _context13.next)) { case 0: if (!(n < 0)) { _context13.next = 2; break; } throw new _module.KoconutInvalidArgumentException( 'Given argument '.concat( n, " is invalid, 'n' must be larger than 0.", ), ); case 2: processedArray = new Array(); processedArray = Array.from(_this14.data).slice(0, -n); if (!(_this14.data instanceof Array)) { _context13.next = 8; break; } return _context13.abrupt('return', processedArray); case 8: return _context13.abrupt( 'return', new Set(processedArray), ); case 9: case 'end': return _context13.stop(); } } }, _callee13); }), ), ); return koconutToReturn; }, }, { key: 'dropLastWhile', value: function dropLastWhile(predicate, thisArg) { var _this15 = this; predicate = predicate.bind(thisArg); var koconutToReturn = new KoconutCollection(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _asyncToGenerator2['default'])( _regenerator['default'].mark(function _callee14() { var processedArray; var dataArray; var indexNumber; var eachIndex; return _regenerator['default'].wrap(function _callee14$( _context14, ) { while (1) { switch ((_context14.prev = _context14.next)) { case 0: processedArray = new Array(); dataArray = Array.from(_this15.data); indexNumber = 0; eachIndex = dataArray.length - 1; case 4: if (!(eachIndex >= 0)) { _context14.next = 13; break; } _context14.next = 7; return predicate(dataArray[eachIndex]); case 7: if (_context14.sent) { _context14.next = 10; break; } indexNumber = eachIndex; return _context14.abrupt('break', 13); case 10: eachIndex--; _context14.next = 4; break; case 13: processedArray = dataArray.slice(0, indexNumber + 1); if (!(_this15.data instanceof Array)) { _context14.next = 18; break; } return _context14.abrupt('return', processedArray); case 18: return _context14.abrupt( 'return', new Set(processedArray), ); case 19: case 'end': return _context14.stop(); } } }, _callee14); }), ), ); return koconutToReturn; }, }, { key: 'dropWhile', value: function dropWhile(predicate, thisArg) { var _this16 = this; predicate = predicate.bind(thisArg); var koconutToReturn = new KoconutCollection(); koconutToReturn.setPrevYieldable(this).setProcessor( (0, _