// classes import CrioArray from './CrioArray'; import CrioObject from './CrioObject'; // constants import {REACT_ELEMENT_TYPE} from './constants'; /** * @function isArray * * @description * is the object passed an array * * @param {*} object the object to test * @returns {boolean} is the object an array */ export const isArray = Array.isArray; /** * @function isCrio * * @description * is the object passed a CrioArray or CrioObject * * @param {*} object the object to test * @returns {boolean} is the object a Crio* */ export const isCrio = (object) => { return object instanceof CrioArray || object instanceof CrioObject; }; /** * @function isEqual * * @description * are the crio objects equal * * @param {CrioArray|CrioObject} crio crio object to test against * @param {*} object object to test equality with crio object for * @returns {boolean} are the objects equal */ export const isEqual = (crio, object) => { return isCrio(object) && crio.hashCode === object.hashCode; }; /** * @function isFunction * * @description * is the object passed a function * * @param {*} object the object to test * @returns {boolean} is the object a function */ export const isFunction = (object) => { return typeof object === 'function'; }; /** * @function isNumber * * @description * is the object passed a number * * @param {*} object the object to test * @returns {boolean} is the object a number */ export const isNumber = (object) => { return typeof object === 'number'; }; /** * @function isReactElement * * @description * is the object passed a react element * * @param {*} object the object to test * @returns {boolean} is the object a react element */ export const isReactElement = (object) => { return !!object && object.$$typeof === REACT_ELEMENT_TYPE; }; /** * @function isObject * * @description * is the object passed a plain object * * @param {*} object the object to test * @returns {boolean} is the object a plain object */ export const isObject = (object) => { return !!object && object.constructor === Object && !isReactElement(object); }; /** * @function isString * * @description * is the object passed a string * * @param {*} object the object to test * @returns {boolean} is the object a string */ export const isString = (object) => { return typeof object === 'string'; }; /** * @function isUndefined * * @description * is the object passed undefined * * @param {*} object the object to test * @returns {boolean} is the object undefined */ export const isUndefined = (object) => { return object === void 0; };