Source: utils/every.js

'use strict';

Object.defineProperty(exports, "__esModule", {
    value: true
});
exports.every = every;
/**
 * This method calls the callback function once for every element in the Harray until it returns a falsy value.
 * @name Harray#every
 * @method
 * @param {Function} fn - A callback function which will be called with the element as the only argument.
 * It should return a falsy value in order to stop the loop.
 * @param {Number} [index] - A starting index. Default is 0.
 * @throws {TypeError} Will throw a TypeError if no callback function was provided.
 * @example
 * let harr = new Harray(0, 2);
 * let evensUntilTen = [];
 * harr.every(function(element) {
 *      if (element >= 10) {
 *          return false;
 *      } else {
 *          evensUntilTen.push(element);
 *          return true;
 *      }
 * });
 *
 * console.log(evensUntilTen) // -> [0, 2, 4, 6, 8]
 */
function every(fn, index) {
    index = typeof index === 'number' ? index : 0;

    if (typeof fn !== 'function') {
        throw new TypeError();
    }

    while (fn(this.get(index))) {
        index++;
    }
}