| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 | 
							- "use strict";
 
- var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
 
- var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
 
- var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
 
- var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
 
- var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
 
- var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
 
- var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
 
- 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.commitServerChanges = commitServerChanges;
 
- exports.defaultState = defaultState;
 
- exports.estimateAttribute = estimateAttribute;
 
- exports.estimateAttributes = estimateAttributes;
 
- exports.mergeFirstPendingState = mergeFirstPendingState;
 
- exports.popPendingState = popPendingState;
 
- exports.pushPendingState = pushPendingState;
 
- exports.setPendingOp = setPendingOp;
 
- exports.setServerData = setServerData;
 
- var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/typeof"));
 
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
 
- var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
 
- var _stringify = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/json/stringify"));
 
- var _encode = _interopRequireDefault(require("./encode"));
 
- var _ParseFile = _interopRequireDefault(require("./ParseFile"));
 
- var _ParseObject = _interopRequireDefault(require("./ParseObject"));
 
- var _ParseRelation = _interopRequireDefault(require("./ParseRelation"));
 
- var _TaskQueue = _interopRequireDefault(require("./TaskQueue"));
 
- var _ParseOp = require("./ParseOp");
 
- function ownKeys(object, enumerableOnly) {
 
-   var keys = _Object$keys(object);
 
-   if (_Object$getOwnPropertySymbols) {
 
-     var symbols = _Object$getOwnPropertySymbols(object);
 
-     enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) {
 
-       return _Object$getOwnPropertyDescriptor(object, sym).enumerable;
 
-     })), keys.push.apply(keys, symbols);
 
-   }
 
-   return keys;
 
- }
 
- function _objectSpread(target) {
 
-   for (var i = 1; i < arguments.length; i++) {
 
-     var _context, _context2;
 
-     var source = null != arguments[i] ? arguments[i] : {};
 
-     i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) {
 
-       (0, _defineProperty2.default)(target, key, source[key]);
 
-     }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) {
 
-       _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key));
 
-     });
 
-   }
 
-   return target;
 
- } /**
 
-    * @flow
 
-    */
 
- /*:: import type { Op } from './ParseOp';*/
 
- /*:: export type AttributeMap = { [attr: string]: any };*/
 
- /*:: export type OpsMap = { [attr: string]: Op };*/
 
- /*:: export type ObjectCache = { [attr: string]: string };*/
 
- /*:: export type State = {
 
-   serverData: AttributeMap,
 
-   pendingOps: Array<OpsMap>,
 
-   objectCache: ObjectCache,
 
-   tasks: TaskQueue,
 
-   existed: boolean,
 
- };*/
 
- function defaultState() /*: State*/{
 
-   return {
 
-     serverData: {},
 
-     pendingOps: [{}],
 
-     objectCache: {},
 
-     tasks: new _TaskQueue.default(),
 
-     existed: false
 
-   };
 
- }
 
- function setServerData(serverData /*: AttributeMap*/, attributes /*: AttributeMap*/) {
 
-   for (var _attr in attributes) {
 
-     if (typeof attributes[_attr] !== 'undefined') {
 
-       serverData[_attr] = attributes[_attr];
 
-     } else {
 
-       delete serverData[_attr];
 
-     }
 
-   }
 
- }
 
- function setPendingOp(pendingOps /*: Array<OpsMap>*/, attr /*: string*/, op /*: ?Op*/) {
 
-   var last = pendingOps.length - 1;
 
-   if (op) {
 
-     pendingOps[last][attr] = op;
 
-   } else {
 
-     delete pendingOps[last][attr];
 
-   }
 
- }
 
- function pushPendingState(pendingOps /*: Array<OpsMap>*/) {
 
-   pendingOps.push({});
 
- }
 
- function popPendingState(pendingOps /*: Array<OpsMap>*/) /*: OpsMap*/{
 
-   var first = pendingOps.shift();
 
-   if (!pendingOps.length) {
 
-     pendingOps[0] = {};
 
-   }
 
-   return first;
 
- }
 
- function mergeFirstPendingState(pendingOps /*: Array<OpsMap>*/) {
 
-   var first = popPendingState(pendingOps);
 
-   var next = pendingOps[0];
 
-   for (var _attr2 in first) {
 
-     if (next[_attr2] && first[_attr2]) {
 
-       var merged = next[_attr2].mergeWith(first[_attr2]);
 
-       if (merged) {
 
-         next[_attr2] = merged;
 
-       }
 
-     } else {
 
-       next[_attr2] = first[_attr2];
 
-     }
 
-   }
 
- }
 
- function estimateAttribute(serverData /*: AttributeMap*/, pendingOps /*: Array<OpsMap>*/, className /*: string*/, id /*: ?string*/, attr /*: string*/) /*: mixed*/{
 
-   var value = serverData[attr];
 
-   for (var i = 0; i < pendingOps.length; i++) {
 
-     if (pendingOps[i][attr]) {
 
-       if (pendingOps[i][attr] instanceof _ParseOp.RelationOp) {
 
-         if (id) {
 
-           value = pendingOps[i][attr].applyTo(value, {
 
-             className: className,
 
-             id: id
 
-           }, attr);
 
-         }
 
-       } else {
 
-         value = pendingOps[i][attr].applyTo(value);
 
-       }
 
-     }
 
-   }
 
-   return value;
 
- }
 
- function estimateAttributes(serverData /*: AttributeMap*/, pendingOps /*: Array<OpsMap>*/, className /*: string*/, id /*: ?string*/) /*: AttributeMap*/{
 
-   var data = {};
 
-   for (var attr in serverData) {
 
-     data[attr] = serverData[attr];
 
-   }
 
-   for (var i = 0; i < pendingOps.length; i++) {
 
-     for (attr in pendingOps[i]) {
 
-       if (pendingOps[i][attr] instanceof _ParseOp.RelationOp) {
 
-         if (id) {
 
-           data[attr] = pendingOps[i][attr].applyTo(data[attr], {
 
-             className: className,
 
-             id: id
 
-           }, attr);
 
-         }
 
-       } else {
 
-         if ((0, _includes.default)(attr).call(attr, '.')) {
 
-           // convert a.b.c into { a: { b: { c: value } } }
 
-           var fields = attr.split('.');
 
-           var first = fields[0];
 
-           var last = fields[fields.length - 1];
 
-           data[first] = _objectSpread({}, serverData[first]);
 
-           var object = _objectSpread({}, data);
 
-           for (var _i = 0; _i < fields.length - 1; _i++) {
 
-             var key = fields[_i];
 
-             if (!(key in object)) {
 
-               object[key] = {};
 
-             }
 
-             object = object[key];
 
-           }
 
-           object[last] = pendingOps[i][attr].applyTo(object[last]);
 
-         } else {
 
-           data[attr] = pendingOps[i][attr].applyTo(data[attr]);
 
-         }
 
-       }
 
-     }
 
-   }
 
-   return data;
 
- }
 
- function nestedSet(obj, key, value) {
 
-   var path = key.split('.');
 
-   for (var i = 0; i < path.length - 1; i++) {
 
-     if (!(path[i] in obj)) obj[path[i]] = {};
 
-     obj = obj[path[i]];
 
-   }
 
-   if (typeof value === 'undefined') {
 
-     delete obj[path[path.length - 1]];
 
-   } else {
 
-     obj[path[path.length - 1]] = value;
 
-   }
 
- }
 
- function commitServerChanges(serverData /*: AttributeMap*/, objectCache /*: ObjectCache*/, changes /*: AttributeMap*/) {
 
-   for (var _attr3 in changes) {
 
-     var val = changes[_attr3];
 
-     nestedSet(serverData, _attr3, val);
 
-     if (val && (0, _typeof2.default)(val) === 'object' && !(val instanceof _ParseObject.default) && !(val instanceof _ParseFile.default) && !(val instanceof _ParseRelation.default)) {
 
-       var json = (0, _encode.default)(val, false, true);
 
-       objectCache[_attr3] = (0, _stringify.default)(json);
 
-     }
 
-   }
 
- }
 
 
  |