amos-tool
Version:
amos ui tool
32 lines (30 loc) • 1.31 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"), _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")), isArray = Array.isArray, keyList = Object.keys, hasProp = Object.prototype.hasOwnProperty, isFn = function(e) {
return "function" == typeof e;
}, isObj = function(e) {
return "object" === (0, _typeof2.default)(e);
};
module.exports = function e(r, t) {
if (r === t) return !0;
if (r && t && isObj(r) && isObj(t)) {
var i, n, u, f = isArray(r), a = isArray(t);
if (f && a) {
if ((n = r.length) != t.length) return !1;
for (i = n; 0 !== i--; ) if (!e(r[i], t[i])) return !1;
return !0;
}
if (f != a) return !1;
var o = r instanceof Date, s = t instanceof Date;
if (o != s) return !1;
if (o && s) return r.getTime() == t.getTime();
var p = r instanceof RegExp, l = t instanceof RegExp;
if (p != l) return !1;
if (p && l) return r.toString() == t.toString();
var y = keyList(r);
if ((n = y.length) !== keyList(t).length) return !1;
for (i = n; 0 !== i--; ) if (!hasProp.call(t, y[i])) return !1;
for (i = n; 0 !== i--; ) if (!e(r[u = y[i]], t[u])) return !1;
return !0;
}
return r && t && isFn(r) && isFn(t) ? r.name === t.name : r != r && t != t;
};