// classes import CrioArray from './CrioArray'; import CrioObject from './CrioObject'; // is import {isArray, isCrio, isObject} from './is'; /** * @module crio */ /** * @function crio * * @description * build a new crio object based on the object passed * * @param {*} [object={}] object to convert to crio * * @returns {CrioArray|CrioObject} object that has been crioed */ const crio = (object = {}) => { if (isCrio(object)) { return object; } if (isArray(object)) { return new CrioArray(object); } if (isObject(object)) { return new CrioObject(object); } throw new TypeError('Object passed must be either an array or a plain object.'); }; /** * @function crio.array * * @description * convenience method for making crio arrays * * @param {Array<*>} array array to crio * @returns {CrioArray} crio array */ crio.array = (array = []) => { if (!isArray(array)) { throw new TypeError('Object passed must be an array.'); } return crio(array); }; /** * @function crio.isArray * * @description * check if object is a crio array * * @param {*} object object to test * @returns {boolean} is the object a crio array */ crio.isArray = (object) => { return isCrio(object) && object.isArray(); }; crio.isCrio = isCrio; /** * @function crio.isObject * * @description * check if object is a crio object * * @param {*} object object to test * @returns {boolean} is the object a crio object */ crio.isObject = (object) => { return isCrio(object) && object.isObject(); }; /** * @function crio.object * * @description * convenience method for making crio objects * * @param {Object} object object to crio * @returns {CrioObject} crio object */ crio.object = (object = {}) => { if (!isObject(object)) { throw new TypeError('Object passed must be a plain object.'); } return crio(object); }; export default crio;