moltres-utils
Version:
Utils for Moltres apps
79 lines (59 loc) • 2.55 kB
JavaScript
require("core-js/modules/es6.object.define-property");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.baseIterator = exports.default = void 0;
var _constants = require("../constants");
var _arrayLikeIterator = _interopRequireDefault(require("../lang/arrayLikeIterator"));
var _curry = _interopRequireDefault(require("./curry"));
var _isArrayLike = _interopRequireDefault(require("../lang/isArrayLike"));
var _isIterable = _interopRequireDefault(require("../lang/isIterable"));
var _isIterator = _interopRequireDefault(require("../lang/isIterator"));
var _isObjectLike = _interopRequireDefault(require("../lang/isObjectLike"));
var _iteratorResolver = _interopRequireDefault(require("./iteratorResolver"));
var _objectIterator = _interopRequireDefault(require("../lang/objectIterator"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var baseIterator = function baseIterator(value) {
var start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'START';
if ((0, _isIterator.default)(value)) {
return (0, _iteratorResolver.default)(value, start);
}
if ((0, _isArrayLike.default)(value)) {
return (0, _arrayLikeIterator.default)(value, start);
}
if ((0, _isIterable.default)(value)) {
return (0, _iteratorResolver.default)(value[_constants.SYMBOL_ITERATOR](), start);
}
if ((0, _isObjectLike.default)(value)) {
return (0, _objectIterator.default)(value, start);
}
throw new Error("iterator method expected to receive an iterable value. Instead the method was given ".concat(value, "."));
};
/**
* This method generates an iterator for the given value
*
* @function
* @since v0.0.11
* @category common
* @param {Function} fn The iteratee Function
* @param {*} collection The collection or iterator to iterate over
* @returns {*} The final value returned when the iteratee returns done or `undefined`
* @example
*
* iterator(['a', 'b', 'c'])
* //=> { next: () => { value: string, index: number, kdx: umber, done: boolean }}
*
* iterator('abc')
* //=> { next: () => { value: string, index: number, kdx: umber, done: boolean }}
*
* iterator({ a: 1, b: 2, c: 3 })
* //=> { next: () => { value: number, key: string, kdx: string, done: boolean }}
*/
exports.baseIterator = baseIterator;
var iterator = (0, _curry.default)(baseIterator);
iterator.END = 'END';
iterator.START = 'START';
var _default = iterator;
exports.default = _default;
//# sourceMappingURL=iterator.js.map
;