| 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);
 
-     }
 
-   }
 
- }
 
 
  |