parse
Version:
Parse JavaScript SDK
61 lines (60 loc) • 2.1 kB
JavaScript
;
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports.default = equals;
var _isArray = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/is-array"));
var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
var _CoreManager = _interopRequireDefault(require("./CoreManager"));
var _ParseACL = _interopRequireDefault(require("./ParseACL"));
var _ParseFile = _interopRequireDefault(require("./ParseFile"));
var _ParseGeoPoint = _interopRequireDefault(require("./ParseGeoPoint"));
function equals(a, b) {
const toString = Object.prototype.toString;
if (toString.call(a) === '[object Date]' || toString.call(b) === '[object Date]') {
const dateA = new Date(a);
const dateB = new Date(b);
return +dateA === +dateB;
}
if (typeof a !== typeof b) {
return false;
}
if (!a || typeof a !== 'object') {
// a is a primitive
return a === b;
}
if ((0, _isArray.default)(a) || (0, _isArray.default)(b)) {
if (!(0, _isArray.default)(a) || !(0, _isArray.default)(b)) {
return false;
}
if (a.length !== b.length) {
return false;
}
for (let i = 0; i < a.length; i += 1) {
if (!equals(a[i], b[i])) {
return false;
}
}
return true;
}
const ParseObject = _CoreManager.default.getParseObject();
if (a instanceof _ParseACL.default || a instanceof _ParseFile.default || a instanceof _ParseGeoPoint.default || a instanceof ParseObject) {
return a.equals(b);
}
if (b instanceof ParseObject) {
if (a.__type === 'Object' || a.__type === 'Pointer') {
return a.objectId === b.id && a.className === b.className;
}
}
if ((0, _keys.default)(a).length !== (0, _keys.default)(b).length) {
return false;
}
for (const k in a) {
if (!equals(a[k], b[k])) {
return false;
}
}
return true;
}