{"ast":null,"code":"\"use strict\";\n\nvar _asyncToGenerator = require(\"F:/workspace/202226701027/huinongbao-app/node_modules/@babel/runtime/helpers/asyncToGenerator.js\").default;\nvar _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js-stable/object/define-property\");\nvar _interopRequireDefault = require(\"@babel/runtime-corejs3/helpers/interopRequireDefault\");\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _stringify = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/json/stringify\"));\nvar _splice = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/splice\"));\nvar _findIndex = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/find-index\"));\nvar _setInterval2 = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/set-interval\"));\nvar _find = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/find\"));\nvar _CoreManager = _interopRequireDefault(require(\"./CoreManager\"));\nvar _ParseError = _interopRequireDefault(require(\"./ParseError\"));\nvar _ParseObject = _interopRequireDefault(require(\"./ParseObject\"));\nvar _ParseQuery = _interopRequireDefault(require(\"./ParseQuery\"));\nvar _Storage = _interopRequireDefault(require(\"./Storage\"));\nconst QUEUE_KEY = 'Parse/Eventually/Queue';\nlet queueCache = [];\nlet dirtyCache = true;\nlet polling = undefined;\n\n/**\n * Provides utility functions to queue objects that will be\n * saved to the server at a later date.\n *\n * @class Parse.EventuallyQueue\n * @static\n */\nconst EventuallyQueue = {\n /**\n * Add object to queue with save operation.\n *\n * @function save\n * @name Parse.EventuallyQueue.save\n * @param {ParseObject} object Parse.Object to be saved eventually\n * @param {object} [serverOptions] See {@link https://parseplatform.org/Parse-SDK-JS/api/master/Parse.Object.html#save Parse.Object.save} options.\n * @returns {Promise} A promise that is fulfilled if object is added to queue.\n * @static\n * @see Parse.Object#saveEventually\n */\n save(object) {\n let serverOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.enqueue('save', object, serverOptions);\n },\n /**\n * Add object to queue with save operation.\n *\n * @function destroy\n * @name Parse.EventuallyQueue.destroy\n * @param {ParseObject} object Parse.Object to be destroyed eventually\n * @param {object} [serverOptions] See {@link https://parseplatform.org/Parse-SDK-JS/api/master/Parse.Object.html#destroy Parse.Object.destroy} options\n * @returns {Promise} A promise that is fulfilled if object is added to queue.\n * @static\n * @see Parse.Object#destroyEventually\n */\n destroy(object) {\n let serverOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.enqueue('destroy', object, serverOptions);\n },\n /**\n * Generate unique identifier to avoid duplicates and maintain previous state.\n *\n * @param {string} action save / destroy\n * @param {object} object Parse.Object to be queued\n * @returns {string}\n * @static\n * @ignore\n */\n generateQueueId(action, object) {\n object._getId();\n const {\n className,\n id,\n _localId\n } = object;\n const uniqueId = object.get('hash') || _localId;\n return [action, className, id, uniqueId].join('_');\n },\n /**\n * Build queue object and add to queue.\n *\n * @param {string} action save / destroy\n * @param {object} object Parse.Object to be queued\n * @param {object} [serverOptions]\n * @returns {Promise} A promise that is fulfilled if object is added to queue.\n * @static\n * @ignore\n */\n enqueue(action, object, serverOptions) {\n var _this = this;\n return _asyncToGenerator(function* () {\n const queueData = yield _this.getQueue();\n const queueId = _this.generateQueueId(action, object);\n let index = _this.queueItemExists(queueData, queueId);\n if (index > -1) {\n // Add cached values to new object if they don't exist\n for (const prop in queueData[index].object) {\n if (typeof object.get(prop) === 'undefined') {\n object.set(prop, queueData[index].object[prop]);\n }\n }\n } else {\n index = queueData.length;\n }\n queueData[index] = {\n queueId,\n action,\n object: object.toJSON(),\n serverOptions,\n id: object.id,\n className: object.className,\n hash: object.get('hash'),\n createdAt: new Date()\n };\n return _this.setQueue(queueData);\n })();\n },\n store(data) {\n return _Storage.default.setItemAsync(QUEUE_KEY, (0, _stringify.default)(data));\n },\n load() {\n return _Storage.default.getItemAsync(QUEUE_KEY);\n },\n /**\n * Sets the in-memory queue from local storage and returns.\n *\n * @function getQueue\n * @name Parse.EventuallyQueue.getQueue\n * @returns {Promise}\n * @static\n */\n getQueue() {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n if (dirtyCache) {\n queueCache = JSON.parse((yield _this2.load()) || '[]');\n dirtyCache = false;\n }\n return queueCache;\n })();\n },\n /**\n * Saves the queue to local storage\n *\n * @param {Queue} queue Queue containing Parse.Object data.\n * @returns {Promise} A promise that is fulfilled when queue is stored.\n * @static\n * @ignore\n */\n setQueue(queue) {\n queueCache = queue;\n return this.store(queueCache);\n },\n /**\n * Removes Parse.Object data from queue.\n *\n * @param {string} queueId Unique identifier for Parse.Object data.\n * @returns {Promise} A promise that is fulfilled when queue is stored.\n * @static\n * @ignore\n */\n remove(queueId) {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n const queueData = yield _this3.getQueue();\n const index = _this3.queueItemExists(queueData, queueId);\n if (index > -1) {\n (0, _splice.default)(queueData).call(queueData, index, 1);\n yield _this3.setQueue(queueData);\n }\n })();\n },\n /**\n * Removes all objects from queue.\n *\n * @function clear\n * @name Parse.EventuallyQueue.clear\n * @returns {Promise} A promise that is fulfilled when queue is cleared.\n * @static\n */\n clear() {\n queueCache = [];\n return this.store([]);\n },\n /**\n * Return the index of a queueId in the queue. Returns -1 if not found.\n *\n * @param {Queue} queue Queue containing Parse.Object data.\n * @param {string} queueId Unique identifier for Parse.Object data.\n * @returns {number}\n * @static\n * @ignore\n */\n queueItemExists(queue, queueId) {\n return (0, _findIndex.default)(queue).call(queue, data => data.queueId === queueId);\n },\n /**\n * Return the number of objects in the queue.\n *\n * @function length\n * @name Parse.EventuallyQueue.length\n * @returns {Promise}\n * @static\n */\n length() {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n const queueData = yield _this4.getQueue();\n return queueData.length;\n })();\n },\n /**\n * Sends the queue to the server.\n *\n * @function sendQueue\n * @name Parse.EventuallyQueue.sendQueue\n * @returns {Promise} Returns true if queue was sent successfully.\n * @static\n */\n sendQueue() {\n var _this5 = this;\n return _asyncToGenerator(function* () {\n const queue = yield _this5.getQueue();\n const queueData = [...queue];\n if (queueData.length === 0) {\n return false;\n }\n for (let i = 0; i < queueData.length; i += 1) {\n const queueObject = queueData[i];\n const {\n id,\n hash,\n className\n } = queueObject;\n const ObjectType = _ParseObject.default.extend(className);\n if (id) {\n yield _this5.process.byId(ObjectType, queueObject);\n } else if (hash) {\n yield _this5.process.byHash(ObjectType, queueObject);\n } else {\n yield _this5.process.create(ObjectType, queueObject);\n }\n }\n return true;\n })();\n },\n /**\n * Build queue object and add to queue.\n *\n * @param {ParseObject} object Parse.Object to be processed\n * @param {QueueObject} queueObject Parse.Object data from the queue\n * @returns {Promise} A promise that is fulfilled when operation is performed.\n * @static\n * @ignore\n */\n sendQueueCallback(object, queueObject) {\n var _this6 = this;\n return _asyncToGenerator(function* () {\n if (!object) {\n return _this6.remove(queueObject.queueId);\n }\n switch (queueObject.action) {\n case 'save':\n // Queued update was overwritten by other request. Do not save\n if (typeof object.updatedAt !== 'undefined' && object.updatedAt > new Date(queueObject.object.createdAt)) {\n return _this6.remove(queueObject.queueId);\n }\n try {\n yield object.save(queueObject.object, queueObject.serverOptions);\n yield _this6.remove(queueObject.queueId);\n } catch (e) {\n if (e.code !== _ParseError.default.CONNECTION_FAILED) {\n yield _this6.remove(queueObject.queueId);\n }\n }\n break;\n case 'destroy':\n try {\n yield object.destroy(queueObject.serverOptions);\n yield _this6.remove(queueObject.queueId);\n } catch (e) {\n if (e.code !== _ParseError.default.CONNECTION_FAILED) {\n yield _this6.remove(queueObject.queueId);\n }\n }\n break;\n }\n })();\n },\n /**\n * Start polling server for network connection.\n * Will send queue if connection is established.\n *\n * @function poll\n * @name Parse.EventuallyQueue.poll\n * @param [ms] Milliseconds to ping the server. Default 2000ms\n * @static\n */\n poll() {\n let ms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 2000;\n if (polling) {\n return;\n }\n polling = (0, _setInterval2.default)(() => {\n const RESTController = _CoreManager.default.getRESTController();\n RESTController.request('GET', 'health').then(_ref => {\n let {\n status\n } = _ref;\n if (status === 'ok') {\n this.stopPoll();\n return this.sendQueue();\n }\n }).catch(e => e);\n }, ms);\n },\n /**\n * Turns off polling.\n *\n * @function stopPoll\n * @name Parse.EventuallyQueue.stopPoll\n * @static\n */\n stopPoll() {\n clearInterval(polling);\n polling = undefined;\n },\n /**\n * Return true if pinging the server.\n *\n * @function isPolling\n * @name Parse.EventuallyQueue.isPolling\n * @returns {boolean}\n * @static\n */\n isPolling() {\n return !!polling;\n },\n _setPolling(flag) {\n polling = flag;\n },\n process: {\n create(ObjectType, queueObject) {\n const object = new ObjectType();\n return EventuallyQueue.sendQueueCallback(object, queueObject);\n },\n byId(ObjectType, queueObject) {\n return _asyncToGenerator(function* () {\n const {\n sessionToken\n } = queueObject.serverOptions;\n const query = new _ParseQuery.default(ObjectType);\n query.equalTo('objectId', queueObject.id);\n const results = yield (0, _find.default)(query).call(query, {\n sessionToken\n });\n return EventuallyQueue.sendQueueCallback(results[0], queueObject);\n })();\n },\n byHash(ObjectType, queueObject) {\n return _asyncToGenerator(function* () {\n const {\n sessionToken\n } = queueObject.serverOptions;\n const query = new _ParseQuery.default(ObjectType);\n query.equalTo('hash', queueObject.hash);\n const results = yield (0, _find.default)(query).call(query, {\n sessionToken\n });\n if (results.length > 0) {\n return EventuallyQueue.sendQueueCallback(results[0], queueObject);\n }\n return EventuallyQueue.process.create(ObjectType, queueObject);\n })();\n }\n }\n};\nmodule.exports = EventuallyQueue;\nvar _default = exports.default = EventuallyQueue;","map":{"version":3,"names":["_asyncToGenerator","require","default","_Object$defineProperty","_interopRequireDefault","exports","value","_stringify","_splice","_findIndex","_setInterval2","_find","_CoreManager","_ParseError","_ParseObject","_ParseQuery","_Storage","QUEUE_KEY","queueCache","dirtyCache","polling","undefined","EventuallyQueue","save","object","serverOptions","arguments","length","enqueue","destroy","generateQueueId","action","_getId","className","id","_localId","uniqueId","get","join","_this","queueData","getQueue","queueId","index","queueItemExists","prop","set","toJSON","hash","createdAt","Date","setQueue","store","data","setItemAsync","load","getItemAsync","_this2","JSON","parse","queue","remove","_this3","call","clear","_this4","sendQueue","_this5","i","queueObject","ObjectType","extend","process","byId","byHash","create","sendQueueCallback","_this6","updatedAt","e","code","CONNECTION_FAILED","poll","ms","RESTController","getRESTController","request","then","_ref","status","stopPoll","catch","clearInterval","isPolling","_setPolling","flag","sessionToken","query","equalTo","results","module","_default"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/parse/lib/browser/EventuallyQueue.js"],"sourcesContent":["\"use strict\";\n\nvar _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js-stable/object/define-property\");\nvar _interopRequireDefault = require(\"@babel/runtime-corejs3/helpers/interopRequireDefault\");\n_Object$defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _stringify = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/json/stringify\"));\nvar _splice = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/splice\"));\nvar _findIndex = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/find-index\"));\nvar _setInterval2 = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/set-interval\"));\nvar _find = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/find\"));\nvar _CoreManager = _interopRequireDefault(require(\"./CoreManager\"));\nvar _ParseError = _interopRequireDefault(require(\"./ParseError\"));\nvar _ParseObject = _interopRequireDefault(require(\"./ParseObject\"));\nvar _ParseQuery = _interopRequireDefault(require(\"./ParseQuery\"));\nvar _Storage = _interopRequireDefault(require(\"./Storage\"));\nconst QUEUE_KEY = 'Parse/Eventually/Queue';\nlet queueCache = [];\nlet dirtyCache = true;\nlet polling = undefined;\n\n/**\n * Provides utility functions to queue objects that will be\n * saved to the server at a later date.\n *\n * @class Parse.EventuallyQueue\n * @static\n */\nconst EventuallyQueue = {\n /**\n * Add object to queue with save operation.\n *\n * @function save\n * @name Parse.EventuallyQueue.save\n * @param {ParseObject} object Parse.Object to be saved eventually\n * @param {object} [serverOptions] See {@link https://parseplatform.org/Parse-SDK-JS/api/master/Parse.Object.html#save Parse.Object.save} options.\n * @returns {Promise} A promise that is fulfilled if object is added to queue.\n * @static\n * @see Parse.Object#saveEventually\n */\n save(object) {\n let serverOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.enqueue('save', object, serverOptions);\n },\n /**\n * Add object to queue with save operation.\n *\n * @function destroy\n * @name Parse.EventuallyQueue.destroy\n * @param {ParseObject} object Parse.Object to be destroyed eventually\n * @param {object} [serverOptions] See {@link https://parseplatform.org/Parse-SDK-JS/api/master/Parse.Object.html#destroy Parse.Object.destroy} options\n * @returns {Promise} A promise that is fulfilled if object is added to queue.\n * @static\n * @see Parse.Object#destroyEventually\n */\n destroy(object) {\n let serverOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.enqueue('destroy', object, serverOptions);\n },\n /**\n * Generate unique identifier to avoid duplicates and maintain previous state.\n *\n * @param {string} action save / destroy\n * @param {object} object Parse.Object to be queued\n * @returns {string}\n * @static\n * @ignore\n */\n generateQueueId(action, object) {\n object._getId();\n const {\n className,\n id,\n _localId\n } = object;\n const uniqueId = object.get('hash') || _localId;\n return [action, className, id, uniqueId].join('_');\n },\n /**\n * Build queue object and add to queue.\n *\n * @param {string} action save / destroy\n * @param {object} object Parse.Object to be queued\n * @param {object} [serverOptions]\n * @returns {Promise} A promise that is fulfilled if object is added to queue.\n * @static\n * @ignore\n */\n async enqueue(action, object, serverOptions) {\n const queueData = await this.getQueue();\n const queueId = this.generateQueueId(action, object);\n let index = this.queueItemExists(queueData, queueId);\n if (index > -1) {\n // Add cached values to new object if they don't exist\n for (const prop in queueData[index].object) {\n if (typeof object.get(prop) === 'undefined') {\n object.set(prop, queueData[index].object[prop]);\n }\n }\n } else {\n index = queueData.length;\n }\n queueData[index] = {\n queueId,\n action,\n object: object.toJSON(),\n serverOptions,\n id: object.id,\n className: object.className,\n hash: object.get('hash'),\n createdAt: new Date()\n };\n return this.setQueue(queueData);\n },\n store(data) {\n return _Storage.default.setItemAsync(QUEUE_KEY, (0, _stringify.default)(data));\n },\n load() {\n return _Storage.default.getItemAsync(QUEUE_KEY);\n },\n /**\n * Sets the in-memory queue from local storage and returns.\n *\n * @function getQueue\n * @name Parse.EventuallyQueue.getQueue\n * @returns {Promise}\n * @static\n */\n async getQueue() {\n if (dirtyCache) {\n queueCache = JSON.parse((await this.load()) || '[]');\n dirtyCache = false;\n }\n return queueCache;\n },\n /**\n * Saves the queue to local storage\n *\n * @param {Queue} queue Queue containing Parse.Object data.\n * @returns {Promise} A promise that is fulfilled when queue is stored.\n * @static\n * @ignore\n */\n setQueue(queue) {\n queueCache = queue;\n return this.store(queueCache);\n },\n /**\n * Removes Parse.Object data from queue.\n *\n * @param {string} queueId Unique identifier for Parse.Object data.\n * @returns {Promise} A promise that is fulfilled when queue is stored.\n * @static\n * @ignore\n */\n async remove(queueId) {\n const queueData = await this.getQueue();\n const index = this.queueItemExists(queueData, queueId);\n if (index > -1) {\n (0, _splice.default)(queueData).call(queueData, index, 1);\n await this.setQueue(queueData);\n }\n },\n /**\n * Removes all objects from queue.\n *\n * @function clear\n * @name Parse.EventuallyQueue.clear\n * @returns {Promise} A promise that is fulfilled when queue is cleared.\n * @static\n */\n clear() {\n queueCache = [];\n return this.store([]);\n },\n /**\n * Return the index of a queueId in the queue. Returns -1 if not found.\n *\n * @param {Queue} queue Queue containing Parse.Object data.\n * @param {string} queueId Unique identifier for Parse.Object data.\n * @returns {number}\n * @static\n * @ignore\n */\n queueItemExists(queue, queueId) {\n return (0, _findIndex.default)(queue).call(queue, data => data.queueId === queueId);\n },\n /**\n * Return the number of objects in the queue.\n *\n * @function length\n * @name Parse.EventuallyQueue.length\n * @returns {Promise}\n * @static\n */\n async length() {\n const queueData = await this.getQueue();\n return queueData.length;\n },\n /**\n * Sends the queue to the server.\n *\n * @function sendQueue\n * @name Parse.EventuallyQueue.sendQueue\n * @returns {Promise} Returns true if queue was sent successfully.\n * @static\n */\n async sendQueue() {\n const queue = await this.getQueue();\n const queueData = [...queue];\n if (queueData.length === 0) {\n return false;\n }\n for (let i = 0; i < queueData.length; i += 1) {\n const queueObject = queueData[i];\n const {\n id,\n hash,\n className\n } = queueObject;\n const ObjectType = _ParseObject.default.extend(className);\n if (id) {\n await this.process.byId(ObjectType, queueObject);\n } else if (hash) {\n await this.process.byHash(ObjectType, queueObject);\n } else {\n await this.process.create(ObjectType, queueObject);\n }\n }\n return true;\n },\n /**\n * Build queue object and add to queue.\n *\n * @param {ParseObject} object Parse.Object to be processed\n * @param {QueueObject} queueObject Parse.Object data from the queue\n * @returns {Promise} A promise that is fulfilled when operation is performed.\n * @static\n * @ignore\n */\n async sendQueueCallback(object, queueObject) {\n if (!object) {\n return this.remove(queueObject.queueId);\n }\n switch (queueObject.action) {\n case 'save':\n // Queued update was overwritten by other request. Do not save\n if (typeof object.updatedAt !== 'undefined' && object.updatedAt > new Date(queueObject.object.createdAt)) {\n return this.remove(queueObject.queueId);\n }\n try {\n await object.save(queueObject.object, queueObject.serverOptions);\n await this.remove(queueObject.queueId);\n } catch (e) {\n if (e.code !== _ParseError.default.CONNECTION_FAILED) {\n await this.remove(queueObject.queueId);\n }\n }\n break;\n case 'destroy':\n try {\n await object.destroy(queueObject.serverOptions);\n await this.remove(queueObject.queueId);\n } catch (e) {\n if (e.code !== _ParseError.default.CONNECTION_FAILED) {\n await this.remove(queueObject.queueId);\n }\n }\n break;\n }\n },\n /**\n * Start polling server for network connection.\n * Will send queue if connection is established.\n *\n * @function poll\n * @name Parse.EventuallyQueue.poll\n * @param [ms] Milliseconds to ping the server. Default 2000ms\n * @static\n */\n poll() {\n let ms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 2000;\n if (polling) {\n return;\n }\n polling = (0, _setInterval2.default)(() => {\n const RESTController = _CoreManager.default.getRESTController();\n RESTController.request('GET', 'health').then(_ref => {\n let {\n status\n } = _ref;\n if (status === 'ok') {\n this.stopPoll();\n return this.sendQueue();\n }\n }).catch(e => e);\n }, ms);\n },\n /**\n * Turns off polling.\n *\n * @function stopPoll\n * @name Parse.EventuallyQueue.stopPoll\n * @static\n */\n stopPoll() {\n clearInterval(polling);\n polling = undefined;\n },\n /**\n * Return true if pinging the server.\n *\n * @function isPolling\n * @name Parse.EventuallyQueue.isPolling\n * @returns {boolean}\n * @static\n */\n isPolling() {\n return !!polling;\n },\n _setPolling(flag) {\n polling = flag;\n },\n process: {\n create(ObjectType, queueObject) {\n const object = new ObjectType();\n return EventuallyQueue.sendQueueCallback(object, queueObject);\n },\n async byId(ObjectType, queueObject) {\n const {\n sessionToken\n } = queueObject.serverOptions;\n const query = new _ParseQuery.default(ObjectType);\n query.equalTo('objectId', queueObject.id);\n const results = await (0, _find.default)(query).call(query, {\n sessionToken\n });\n return EventuallyQueue.sendQueueCallback(results[0], queueObject);\n },\n async byHash(ObjectType, queueObject) {\n const {\n sessionToken\n } = queueObject.serverOptions;\n const query = new _ParseQuery.default(ObjectType);\n query.equalTo('hash', queueObject.hash);\n const results = await (0, _find.default)(query).call(query, {\n sessionToken\n });\n if (results.length > 0) {\n return EventuallyQueue.sendQueueCallback(results[0], queueObject);\n }\n return EventuallyQueue.process.create(ObjectType, queueObject);\n }\n }\n};\nmodule.exports = EventuallyQueue;\nvar _default = exports.default = EventuallyQueue;"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}