module.exports = { equal: function (a, b) { if (a === b) return true; if (a == null && b == null) return true; if (a == null || b == null) return false; if (Object.keys(a).length != Object.keys(b).length) return false; for(var key in a) { // Only compare one level deep if (a[key] !== b[key]) return false; } return true; }, array: function (value) { return Array.isArray(value); }, number: function (value) { if (typeof value === 'number') return true; if (typeof value === 'object' && Object.prototype.toString.call(value) === '[object Number]') return true; return false; }, object: function (value) { if (!value) return false; return (typeof value === 'function' || typeof value === 'object'); }, string: function (value) { if (typeof value === 'string') return true; if (typeof value === 'object' && Object.prototype.toString.call(value) === '[object String]') return true; return false; } };