| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | "use strict";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 = unsavedChildren;var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));var _indexOf = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/index-of"));var _isArray = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/is-array"));var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/typeof"));var _ParseFile = _interopRequireDefault(require("./ParseFile"));var _ParseObject = _interopRequireDefault(require("./ParseObject"));var _ParseRelation = _interopRequireDefault(require("./ParseRelation"));/** * @flow *//*:: type EncounterMap = {  objects: { [identifier: string]: ParseObject | boolean },  files: Array<ParseFile>,};*//** * Return an array of unsaved children, which are either Parse Objects or Files. * If it encounters any dirty Objects without Ids, it will throw an exception. * * @param {Parse.Object} obj * @param {boolean} allowDeepUnsaved * @returns {Array} */function unsavedChildren(obj /*: ParseObject*/, allowDeepUnsaved /*:: ?: boolean*/) /*: Array<ParseFile | ParseObject>*/{  var encountered = {    objects: {},    files: []  };  var identifier = obj.className + ':' + obj._getId();  encountered.objects[identifier] = obj.dirty() ? obj : true;  var attributes = obj.attributes;  for (var attr in attributes) {    if ((0, _typeof2.default)(attributes[attr]) === 'object') {      traverse(attributes[attr], encountered, false, !!allowDeepUnsaved);    }  }  var unsaved = [];  for (var id in encountered.objects) {    if (id !== identifier && encountered.objects[id] !== true) {      unsaved.push(encountered.objects[id]);    }  }  return (0, _concat.default)(unsaved).call(unsaved, encountered.files);}function traverse(obj /*: ParseObject*/, encountered /*: EncounterMap*/, shouldThrow /*: boolean*/, allowDeepUnsaved /*: boolean*/) {  if (obj instanceof _ParseObject.default) {    if (!obj.id && shouldThrow) {      throw new Error('Cannot create a pointer to an unsaved Object.');    }    var _identifier = obj.className + ':' + obj._getId();    if (!encountered.objects[_identifier]) {      encountered.objects[_identifier] = obj.dirty() ? obj : true;      var attributes = obj.attributes;      for (var attr in attributes) {        if ((0, _typeof2.default)(attributes[attr]) === 'object') {          traverse(attributes[attr], encountered, !allowDeepUnsaved, allowDeepUnsaved);        }      }    }    return;  }  if (obj instanceof _ParseFile.default) {    var _context;    if (!obj.url() && (0, _indexOf.default)(_context = encountered.files).call(_context, obj) < 0) {      encountered.files.push(obj);    }    return;  }  if (obj instanceof _ParseRelation.default) {    return;  }  if ((0, _isArray.default)(obj)) {    (0, _forEach.default)(obj).call(obj, function (el) {      if ((0, _typeof2.default)(el) === 'object') {        traverse(el, encountered, shouldThrow, allowDeepUnsaved);      }    });  }  for (var k in obj) {    if ((0, _typeof2.default)(obj[k]) === 'object') {      traverse(obj[k], encountered, shouldThrow, allowDeepUnsaved);    }  }}
 |