Source: constants.js

// utils
import {every, find, some} from './utils';

/**
 * @constant {Object} ARRAY_UNSCOPABLES
 */
export const ARRAY_UNSCOPABLES = {
  copyWithin: true,
  entries: true,
  fill: true,
  find: true,
  findIndex: true,
  findLastIndex: true,
  includes: true,
  keys: true,
  values: true
};

/**
 * @constant {Object} ARRAY_FALLBACK_PROTOTYPE_METHODS
 */
export const ARRAY_FALLBACK_PROTOTYPE_METHODS = {
  /**
   * @function every
   *
   * @description
   * does every instance in the array match
   *
   * @param {function} fn the function to test for matching
   * @returns {boolean} does every instance match
   */
  every(fn) {
    return every(this, fn);
  },

  /**
   * @function find
   *
   * @description
   * find an item in the array if it exists
   *
   * @param {function} fn function to test for finding the item
   * @returns {*} found item or undefined
   */
  find(fn) {
    return find(this, fn);
  },

  /**
   * @function findIndex
   *
   * @description
   * find the index of an item in the array if it exists
   *
   * @param {function} fn function to test for finding the item
   * @returns {number} index of match, or -1
   */
  findIndex(fn) {
    return find(this, fn, true);
  },

  /**
   * @function includes
   *
   * @description
   * does the array have the item passed
   *
   * @param {*} item item to test for existence
   * @returns {boolean} does the item exist in the array
   */
  includes(item) {
    return !!~this.indexOf(item);
  },

  /**
   * @function some
   *
   * @description
   * does any item in the array match the result from fn
   *
   * @param {function} fn the function to test for matching
   * @returns {boolean} does any item match
   */
  some(fn) {
    return some(this, fn);
  }
};

/**
 * @constant {Object} ARRAY_UNSCOPABLES
 */
export const OBJECT_UNSCOPABLES = {
  entries: true,
  fill: true,
  find: true,
  findKey: true,
  findLastKey: true,
  includes: true,
  keys: true,
  values: true
};

/**
 * @constant {Symbol|number}
 */
export const REACT_ELEMENT_TYPE =
  typeof Symbol === 'function' && Symbol.for
    ? Symbol.for('react.element')
    : 0xeac7;