f93b7c3fa28d9ff60d981588741bc898244c45f546abbc93830e14968fa62e72.json 47 KB

1
  1. {"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 _promise = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/promise\"));\nvar _set = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/set\"));\nvar _keys = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/object/keys\"));\nvar _filter = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/filter\"));\nvar _includes = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/includes\"));\nvar _startsWith = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/starts-with\"));\nvar _isArray = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/array/is-array\"));\nvar _map = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/map\"));\nvar _concat = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/concat\"));\nvar _from = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/array/from\"));\nvar _find = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/find\"));\nvar _CoreManager = _interopRequireDefault(require(\"./CoreManager\"));\nvar _LocalDatastoreController = _interopRequireDefault(require(\"./LocalDatastoreController\"));\nvar _ParseQuery = _interopRequireDefault(require(\"./ParseQuery\"));\nvar _LocalDatastoreUtils = require(\"./LocalDatastoreUtils\");\n/**\n * Provides a local datastore which can be used to store and retrieve <code>Parse.Object</code>. <br />\n * To enable this functionality, call <code>Parse.enableLocalDatastore()</code>.\n *\n * Pin object to add to local datastore\n *\n * <pre>await object.pin();</pre>\n * <pre>await object.pinWithName('pinName');</pre>\n *\n * Query pinned objects\n *\n * <pre>query.fromLocalDatastore();</pre>\n * <pre>query.fromPin();</pre>\n * <pre>query.fromPinWithName();</pre>\n *\n * <pre>const localObjects = await query.find();</pre>\n *\n * @class Parse.LocalDatastore\n * @static\n */\nconst LocalDatastore = {\n isEnabled: false,\n isSyncing: false,\n fromPinWithName(name) {\n const controller = _CoreManager.default.getLocalDatastoreController();\n return controller.fromPinWithName(name);\n },\n pinWithName(name, value) {\n return _asyncToGenerator(function* () {\n const controller = _CoreManager.default.getLocalDatastoreController();\n return controller.pinWithName(name, value);\n })();\n },\n unPinWithName(name) {\n return _asyncToGenerator(function* () {\n const controller = _CoreManager.default.getLocalDatastoreController();\n return controller.unPinWithName(name);\n })();\n },\n _getAllContents() {\n const controller = _CoreManager.default.getLocalDatastoreController();\n return controller.getAllContents();\n },\n // Use for testing\n _getRawStorage() {\n return _asyncToGenerator(function* () {\n const controller = _CoreManager.default.getLocalDatastoreController();\n return controller.getRawStorage();\n })();\n },\n _clear() {\n return _asyncToGenerator(function* () {\n const controller = _CoreManager.default.getLocalDatastoreController();\n return controller.clear();\n })();\n },\n // Pin the object and children recursively\n // Saves the object and children key to Pin Name\n _handlePinAllWithName(name, objects) {\n var _this = this;\n return _asyncToGenerator(function* () {\n const pinName = _this.getPinName(name);\n const toPinPromises = [];\n const objectKeys = [];\n for (const parent of objects) {\n const children = _this._getChildren(parent);\n const parentKey = _this.getKeyForObject(parent);\n const json = parent._toFullJSON(undefined, true);\n if (parent._localId) {\n json._localId = parent._localId;\n }\n children[parentKey] = json;\n for (const objectKey in children) {\n objectKeys.push(objectKey);\n toPinPromises.push(_this.pinWithName(objectKey, [children[objectKey]]));\n }\n }\n const fromPinPromise = _this.fromPinWithName(pinName);\n const [pinned] = yield _promise.default.all([fromPinPromise, toPinPromises]);\n const toPin = [...new _set.default([...(pinned || []), ...objectKeys])];\n return _this.pinWithName(pinName, toPin);\n })();\n },\n // Removes object and children keys from pin name\n // Keeps the object and children pinned\n _handleUnPinAllWithName(name, objects) {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n const localDatastore = yield _this2._getAllContents();\n const pinName = _this2.getPinName(name);\n const promises = [];\n let objectKeys = [];\n for (const parent of objects) {\n const children = _this2._getChildren(parent);\n const parentKey = _this2.getKeyForObject(parent);\n objectKeys.push(parentKey, ...(0, _keys.default)(children));\n }\n objectKeys = [...new _set.default(objectKeys)];\n let pinned = localDatastore[pinName] || [];\n pinned = (0, _filter.default)(pinned).call(pinned, item => !(0, _includes.default)(objectKeys).call(objectKeys, item));\n if (pinned.length == 0) {\n promises.push(_this2.unPinWithName(pinName));\n delete localDatastore[pinName];\n } else {\n promises.push(_this2.pinWithName(pinName, pinned));\n localDatastore[pinName] = pinned;\n }\n for (const objectKey of objectKeys) {\n let hasReference = false;\n for (const key in localDatastore) {\n if (key === _LocalDatastoreUtils.DEFAULT_PIN || (0, _startsWith.default)(key).call(key, _LocalDatastoreUtils.PIN_PREFIX)) {\n const pinnedObjects = localDatastore[key] || [];\n if ((0, _includes.default)(pinnedObjects).call(pinnedObjects, objectKey)) {\n hasReference = true;\n break;\n }\n }\n }\n if (!hasReference) {\n promises.push(_this2.unPinWithName(objectKey));\n }\n }\n return _promise.default.all(promises);\n })();\n },\n // Retrieve all pointer fields from object recursively\n _getChildren(object) {\n const encountered = {};\n const json = object._toFullJSON(undefined, true);\n for (const key in json) {\n if (json[key] && json[key].__type && json[key].__type === 'Object') {\n this._traverse(json[key], encountered);\n }\n }\n return encountered;\n },\n _traverse(object, encountered) {\n if (!object.objectId) {\n return;\n } else {\n const objectKey = this.getKeyForObject(object);\n if (encountered[objectKey]) {\n return;\n }\n encountered[objectKey] = object;\n }\n for (const key in object) {\n let json = object[key];\n if (!object[key]) {\n json = object;\n }\n if (json.__type && json.__type === 'Object') {\n this._traverse(json, encountered);\n }\n }\n },\n // Transform keys in pin name to objects\n _serializeObjectsFromPinName(name) {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n var _context;\n const localDatastore = yield _this3._getAllContents();\n const allObjects = [];\n for (const key in localDatastore) {\n if ((0, _startsWith.default)(key).call(key, _LocalDatastoreUtils.OBJECT_PREFIX)) {\n allObjects.push(localDatastore[key][0]);\n }\n }\n if (!name) {\n return allObjects;\n }\n const pinName = _this3.getPinName(name);\n const pinned = localDatastore[pinName];\n if (!(0, _isArray.default)(pinned)) {\n return [];\n }\n const promises = (0, _map.default)(pinned).call(pinned, objectKey => _this3.fromPinWithName(objectKey));\n let objects = yield _promise.default.all(promises);\n objects = (0, _concat.default)(_context = []).call(_context, ...objects);\n return (0, _filter.default)(objects).call(objects, object => object != null);\n })();\n },\n // Replaces object pointers with pinned pointers\n // The object pointers may contain old data\n // Uses Breadth First Search Algorithm\n _serializeObject(objectKey, localDatastore) {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n let LDS = localDatastore;\n if (!LDS) {\n LDS = yield _this4._getAllContents();\n }\n if (!LDS[objectKey] || LDS[objectKey].length === 0) {\n return null;\n }\n const root = LDS[objectKey][0];\n const queue = [];\n const meta = {};\n let uniqueId = 0;\n meta[uniqueId] = root;\n queue.push(uniqueId);\n while (queue.length !== 0) {\n const nodeId = queue.shift();\n const subTreeRoot = meta[nodeId];\n for (const field in subTreeRoot) {\n const value = subTreeRoot[field];\n if (value.__type && value.__type === 'Object') {\n const key = _this4.getKeyForObject(value);\n if (LDS[key] && LDS[key].length > 0) {\n const pointer = LDS[key][0];\n uniqueId++;\n meta[uniqueId] = pointer;\n subTreeRoot[field] = pointer;\n queue.push(uniqueId);\n }\n }\n }\n }\n return root;\n })();\n },\n // Called when an object is save / fetched\n // Update object pin value\n _updateObjectIfPinned(object) {\n var _this5 = this;\n return _asyncToGenerator(function* () {\n if (!_this5.isEnabled) {\n return;\n }\n const objectKey = _this5.getKeyForObject(object);\n const pinned = yield _this5.fromPinWithName(objectKey);\n if (!pinned || pinned.length === 0) {\n return;\n }\n return _this5.pinWithName(objectKey, [object._toFullJSON()]);\n })();\n },\n // Called when object is destroyed\n // Unpin object and remove all references from pin names\n // TODO: Destroy children?\n _destroyObjectIfPinned(object) {\n var _this6 = this;\n return _asyncToGenerator(function* () {\n if (!_this6.isEnabled) {\n return;\n }\n const localDatastore = yield _this6._getAllContents();\n const objectKey = _this6.getKeyForObject(object);\n const pin = localDatastore[objectKey];\n if (!pin) {\n return;\n }\n const promises = [_this6.unPinWithName(objectKey)];\n delete localDatastore[objectKey];\n for (const key in localDatastore) {\n if (key === _LocalDatastoreUtils.DEFAULT_PIN || (0, _startsWith.default)(key).call(key, _LocalDatastoreUtils.PIN_PREFIX)) {\n let pinned = localDatastore[key] || [];\n if ((0, _includes.default)(pinned).call(pinned, objectKey)) {\n pinned = (0, _filter.default)(pinned).call(pinned, item => item !== objectKey);\n if (pinned.length == 0) {\n promises.push(_this6.unPinWithName(key));\n delete localDatastore[key];\n } else {\n promises.push(_this6.pinWithName(key, pinned));\n localDatastore[key] = pinned;\n }\n }\n }\n }\n return _promise.default.all(promises);\n })();\n },\n // Update pin and references of the unsaved object\n _updateLocalIdForObject(localId, object) {\n var _this7 = this;\n return _asyncToGenerator(function* () {\n if (!_this7.isEnabled) {\n return;\n }\n const localKey = `${_LocalDatastoreUtils.OBJECT_PREFIX}${object.className}_${localId}`;\n const objectKey = _this7.getKeyForObject(object);\n const unsaved = yield _this7.fromPinWithName(localKey);\n if (!unsaved || unsaved.length === 0) {\n return;\n }\n const promises = [_this7.unPinWithName(localKey), _this7.pinWithName(objectKey, unsaved)];\n const localDatastore = yield _this7._getAllContents();\n for (const key in localDatastore) {\n if (key === _LocalDatastoreUtils.DEFAULT_PIN || (0, _startsWith.default)(key).call(key, _LocalDatastoreUtils.PIN_PREFIX)) {\n let pinned = localDatastore[key] || [];\n if ((0, _includes.default)(pinned).call(pinned, localKey)) {\n pinned = (0, _filter.default)(pinned).call(pinned, item => item !== localKey);\n pinned.push(objectKey);\n promises.push(_this7.pinWithName(key, pinned));\n localDatastore[key] = pinned;\n }\n }\n }\n return _promise.default.all(promises);\n })();\n },\n /**\n * Updates Local Datastore from Server\n *\n * <pre>\n * await Parse.LocalDatastore.updateFromServer();\n * </pre>\n *\n * @function updateFromServer\n * @name Parse.LocalDatastore.updateFromServer\n * @static\n */\n updateFromServer() {\n var _this8 = this;\n return _asyncToGenerator(function* () {\n var _context2;\n if (!_this8.checkIfEnabled() || _this8.isSyncing) {\n return;\n }\n const localDatastore = yield _this8._getAllContents();\n const keys = [];\n for (const key in localDatastore) {\n if ((0, _startsWith.default)(key).call(key, _LocalDatastoreUtils.OBJECT_PREFIX)) {\n keys.push(key);\n }\n }\n if (keys.length === 0) {\n return;\n }\n _this8.isSyncing = true;\n const pointersHash = {};\n for (const key of keys) {\n // Ignore the OBJECT_PREFIX\n let [,, className, objectId] = key.split('_');\n\n // User key is split into [ 'Parse', 'LDS', '', 'User', 'objectId' ]\n if (key.split('_').length === 5 && key.split('_')[3] === 'User') {\n className = '_User';\n objectId = key.split('_')[4];\n }\n if ((0, _startsWith.default)(objectId).call(objectId, 'local')) {\n continue;\n }\n if (!(className in pointersHash)) {\n pointersHash[className] = new _set.default();\n }\n pointersHash[className].add(objectId);\n }\n const queryPromises = (0, _map.default)(_context2 = (0, _keys.default)(pointersHash)).call(_context2, className => {\n const objectIds = (0, _from.default)(pointersHash[className]);\n const query = new _ParseQuery.default(className);\n query.limit(objectIds.length);\n if (objectIds.length === 1) {\n query.equalTo('objectId', objectIds[0]);\n } else {\n query.containedIn('objectId', objectIds);\n }\n return (0, _find.default)(query).call(query);\n });\n try {\n const responses = yield _promise.default.all(queryPromises);\n const objects = (0, _concat.default)([]).apply([], responses);\n const pinPromises = (0, _map.default)(objects).call(objects, object => {\n const objectKey = _this8.getKeyForObject(object);\n return _this8.pinWithName(objectKey, object._toFullJSON());\n });\n yield _promise.default.all(pinPromises);\n _this8.isSyncing = false;\n } catch (error) {\n console.error('Error syncing LocalDatastore: ', error);\n _this8.isSyncing = false;\n }\n })();\n },\n getKeyForObject(object) {\n const objectId = object.objectId || object._getId();\n return `${_LocalDatastoreUtils.OBJECT_PREFIX}${object.className}_${objectId}`;\n },\n getPinName(pinName) {\n if (!pinName || pinName === _LocalDatastoreUtils.DEFAULT_PIN) {\n return _LocalDatastoreUtils.DEFAULT_PIN;\n }\n return _LocalDatastoreUtils.PIN_PREFIX + pinName;\n },\n checkIfEnabled() {\n if (!this.isEnabled) {\n console.error('Parse.enableLocalDatastore() must be called first');\n }\n return this.isEnabled;\n }\n};\nmodule.exports = LocalDatastore;\nvar _default = exports.default = LocalDatastore;\n_CoreManager.default.setLocalDatastoreController(_LocalDatastoreController.default);\n_CoreManager.default.setLocalDatastore(LocalDatastore);","map":{"version":3,"names":["_asyncToGenerator","require","default","_Object$defineProperty","_interopRequireDefault","exports","value","_promise","_set","_keys","_filter","_includes","_startsWith","_isArray","_map","_concat","_from","_find","_CoreManager","_LocalDatastoreController","_ParseQuery","_LocalDatastoreUtils","LocalDatastore","isEnabled","isSyncing","fromPinWithName","name","controller","getLocalDatastoreController","pinWithName","unPinWithName","_getAllContents","getAllContents","_getRawStorage","getRawStorage","_clear","clear","_handlePinAllWithName","objects","_this","pinName","getPinName","toPinPromises","objectKeys","parent","children","_getChildren","parentKey","getKeyForObject","json","_toFullJSON","undefined","_localId","objectKey","push","fromPinPromise","pinned","all","toPin","_handleUnPinAllWithName","_this2","localDatastore","promises","call","item","length","hasReference","key","DEFAULT_PIN","PIN_PREFIX","pinnedObjects","object","encountered","__type","_traverse","objectId","_serializeObjectsFromPinName","_this3","_context","allObjects","OBJECT_PREFIX","_serializeObject","_this4","LDS","root","queue","meta","uniqueId","nodeId","shift","subTreeRoot","field","pointer","_updateObjectIfPinned","_this5","_destroyObjectIfPinned","_this6","pin","_updateLocalIdForObject","localId","_this7","localKey","className","unsaved","updateFromServer","_this8","_context2","checkIfEnabled","keys","pointersHash","split","add","queryPromises","objectIds","query","limit","equalTo","containedIn","responses","apply","pinPromises","error","console","_getId","module","_default","setLocalDatastoreController","setLocalDatastore"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/parse/lib/browser/LocalDatastore.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 _promise = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/promise\"));\nvar _set = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/set\"));\nvar _keys = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/object/keys\"));\nvar _filter = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/filter\"));\nvar _includes = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/includes\"));\nvar _startsWith = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/starts-with\"));\nvar _isArray = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/array/is-array\"));\nvar _map = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/map\"));\nvar _concat = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/concat\"));\nvar _from = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/array/from\"));\nvar _find = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/find\"));\nvar _CoreManager = _interopRequireDefault(require(\"./CoreManager\"));\nvar _LocalDatastoreController = _interopRequireDefault(require(\"./LocalDatastoreController\"));\nvar _ParseQuery = _interopRequireDefault(require(\"./ParseQuery\"));\nvar _LocalDatastoreUtils = require(\"./LocalDatastoreUtils\");\n/**\n * Provides a local datastore which can be used to store and retrieve <code>Parse.Object</code>. <br />\n * To enable this functionality, call <code>Parse.enableLocalDatastore()</code>.\n *\n * Pin object to add to local datastore\n *\n * <pre>await object.pin();</pre>\n * <pre>await object.pinWithName('pinName');</pre>\n *\n * Query pinned objects\n *\n * <pre>query.fromLocalDatastore();</pre>\n * <pre>query.fromPin();</pre>\n * <pre>query.fromPinWithName();</pre>\n *\n * <pre>const localObjects = await query.find();</pre>\n *\n * @class Parse.LocalDatastore\n * @static\n */\nconst LocalDatastore = {\n isEnabled: false,\n isSyncing: false,\n fromPinWithName(name) {\n const controller = _CoreManager.default.getLocalDatastoreController();\n return controller.fromPinWithName(name);\n },\n async pinWithName(name, value) {\n const controller = _CoreManager.default.getLocalDatastoreController();\n return controller.pinWithName(name, value);\n },\n async unPinWithName(name) {\n const controller = _CoreManager.default.getLocalDatastoreController();\n return controller.unPinWithName(name);\n },\n _getAllContents() {\n const controller = _CoreManager.default.getLocalDatastoreController();\n return controller.getAllContents();\n },\n // Use for testing\n async _getRawStorage() {\n const controller = _CoreManager.default.getLocalDatastoreController();\n return controller.getRawStorage();\n },\n async _clear() {\n const controller = _CoreManager.default.getLocalDatastoreController();\n return controller.clear();\n },\n // Pin the object and children recursively\n // Saves the object and children key to Pin Name\n async _handlePinAllWithName(name, objects) {\n const pinName = this.getPinName(name);\n const toPinPromises = [];\n const objectKeys = [];\n for (const parent of objects) {\n const children = this._getChildren(parent);\n const parentKey = this.getKeyForObject(parent);\n const json = parent._toFullJSON(undefined, true);\n if (parent._localId) {\n json._localId = parent._localId;\n }\n children[parentKey] = json;\n for (const objectKey in children) {\n objectKeys.push(objectKey);\n toPinPromises.push(this.pinWithName(objectKey, [children[objectKey]]));\n }\n }\n const fromPinPromise = this.fromPinWithName(pinName);\n const [pinned] = await _promise.default.all([fromPinPromise, toPinPromises]);\n const toPin = [...new _set.default([...(pinned || []), ...objectKeys])];\n return this.pinWithName(pinName, toPin);\n },\n // Removes object and children keys from pin name\n // Keeps the object and children pinned\n async _handleUnPinAllWithName(name, objects) {\n const localDatastore = await this._getAllContents();\n const pinName = this.getPinName(name);\n const promises = [];\n let objectKeys = [];\n for (const parent of objects) {\n const children = this._getChildren(parent);\n const parentKey = this.getKeyForObject(parent);\n objectKeys.push(parentKey, ...(0, _keys.default)(children));\n }\n objectKeys = [...new _set.default(objectKeys)];\n let pinned = localDatastore[pinName] || [];\n pinned = (0, _filter.default)(pinned).call(pinned, item => !(0, _includes.default)(objectKeys).call(objectKeys, item));\n if (pinned.length == 0) {\n promises.push(this.unPinWithName(pinName));\n delete localDatastore[pinName];\n } else {\n promises.push(this.pinWithName(pinName, pinned));\n localDatastore[pinName] = pinned;\n }\n for (const objectKey of objectKeys) {\n let hasReference = false;\n for (const key in localDatastore) {\n if (key === _LocalDatastoreUtils.DEFAULT_PIN || (0, _startsWith.default)(key).call(key, _LocalDatastoreUtils.PIN_PREFIX)) {\n const pinnedObjects = localDatastore[key] || [];\n if ((0, _includes.default)(pinnedObjects).call(pinnedObjects, objectKey)) {\n hasReference = true;\n break;\n }\n }\n }\n if (!hasReference) {\n promises.push(this.unPinWithName(objectKey));\n }\n }\n return _promise.default.all(promises);\n },\n // Retrieve all pointer fields from object recursively\n _getChildren(object) {\n const encountered = {};\n const json = object._toFullJSON(undefined, true);\n for (const key in json) {\n if (json[key] && json[key].__type && json[key].__type === 'Object') {\n this._traverse(json[key], encountered);\n }\n }\n return encountered;\n },\n _traverse(object, encountered) {\n if (!object.objectId) {\n return;\n } else {\n const objectKey = this.getKeyForObject(object);\n if (encountered[objectKey]) {\n return;\n }\n encountered[objectKey] = object;\n }\n for (const key in object) {\n let json = object[key];\n if (!object[key]) {\n json = object;\n }\n if (json.__type && json.__type === 'Object') {\n this._traverse(json, encountered);\n }\n }\n },\n // Transform keys in pin name to objects\n async _serializeObjectsFromPinName(name) {\n var _context;\n const localDatastore = await this._getAllContents();\n const allObjects = [];\n for (const key in localDatastore) {\n if ((0, _startsWith.default)(key).call(key, _LocalDatastoreUtils.OBJECT_PREFIX)) {\n allObjects.push(localDatastore[key][0]);\n }\n }\n if (!name) {\n return allObjects;\n }\n const pinName = this.getPinName(name);\n const pinned = localDatastore[pinName];\n if (!(0, _isArray.default)(pinned)) {\n return [];\n }\n const promises = (0, _map.default)(pinned).call(pinned, objectKey => this.fromPinWithName(objectKey));\n let objects = await _promise.default.all(promises);\n objects = (0, _concat.default)(_context = []).call(_context, ...objects);\n return (0, _filter.default)(objects).call(objects, object => object != null);\n },\n // Replaces object pointers with pinned pointers\n // The object pointers may contain old data\n // Uses Breadth First Search Algorithm\n async _serializeObject(objectKey, localDatastore) {\n let LDS = localDatastore;\n if (!LDS) {\n LDS = await this._getAllContents();\n }\n if (!LDS[objectKey] || LDS[objectKey].length === 0) {\n return null;\n }\n const root = LDS[objectKey][0];\n const queue = [];\n const meta = {};\n let uniqueId = 0;\n meta[uniqueId] = root;\n queue.push(uniqueId);\n while (queue.length !== 0) {\n const nodeId = queue.shift();\n const subTreeRoot = meta[nodeId];\n for (const field in subTreeRoot) {\n const value = subTreeRoot[field];\n if (value.__type && value.__type === 'Object') {\n const key = this.getKeyForObject(value);\n if (LDS[key] && LDS[key].length > 0) {\n const pointer = LDS[key][0];\n uniqueId++;\n meta[uniqueId] = pointer;\n subTreeRoot[field] = pointer;\n queue.push(uniqueId);\n }\n }\n }\n }\n return root;\n },\n // Called when an object is save / fetched\n // Update object pin value\n async _updateObjectIfPinned(object) {\n if (!this.isEnabled) {\n return;\n }\n const objectKey = this.getKeyForObject(object);\n const pinned = await this.fromPinWithName(objectKey);\n if (!pinned || pinned.length === 0) {\n return;\n }\n return this.pinWithName(objectKey, [object._toFullJSON()]);\n },\n // Called when object is destroyed\n // Unpin object and remove all references from pin names\n // TODO: Destroy children?\n async _destroyObjectIfPinned(object) {\n if (!this.isEnabled) {\n return;\n }\n const localDatastore = await this._getAllContents();\n const objectKey = this.getKeyForObject(object);\n const pin = localDatastore[objectKey];\n if (!pin) {\n return;\n }\n const promises = [this.unPinWithName(objectKey)];\n delete localDatastore[objectKey];\n for (const key in localDatastore) {\n if (key === _LocalDatastoreUtils.DEFAULT_PIN || (0, _startsWith.default)(key).call(key, _LocalDatastoreUtils.PIN_PREFIX)) {\n let pinned = localDatastore[key] || [];\n if ((0, _includes.default)(pinned).call(pinned, objectKey)) {\n pinned = (0, _filter.default)(pinned).call(pinned, item => item !== objectKey);\n if (pinned.length == 0) {\n promises.push(this.unPinWithName(key));\n delete localDatastore[key];\n } else {\n promises.push(this.pinWithName(key, pinned));\n localDatastore[key] = pinned;\n }\n }\n }\n }\n return _promise.default.all(promises);\n },\n // Update pin and references of the unsaved object\n async _updateLocalIdForObject(localId, object) {\n if (!this.isEnabled) {\n return;\n }\n const localKey = `${_LocalDatastoreUtils.OBJECT_PREFIX}${object.className}_${localId}`;\n const objectKey = this.getKeyForObject(object);\n const unsaved = await this.fromPinWithName(localKey);\n if (!unsaved || unsaved.length === 0) {\n return;\n }\n const promises = [this.unPinWithName(localKey), this.pinWithName(objectKey, unsaved)];\n const localDatastore = await this._getAllContents();\n for (const key in localDatastore) {\n if (key === _LocalDatastoreUtils.DEFAULT_PIN || (0, _startsWith.default)(key).call(key, _LocalDatastoreUtils.PIN_PREFIX)) {\n let pinned = localDatastore[key] || [];\n if ((0, _includes.default)(pinned).call(pinned, localKey)) {\n pinned = (0, _filter.default)(pinned).call(pinned, item => item !== localKey);\n pinned.push(objectKey);\n promises.push(this.pinWithName(key, pinned));\n localDatastore[key] = pinned;\n }\n }\n }\n return _promise.default.all(promises);\n },\n /**\n * Updates Local Datastore from Server\n *\n * <pre>\n * await Parse.LocalDatastore.updateFromServer();\n * </pre>\n *\n * @function updateFromServer\n * @name Parse.LocalDatastore.updateFromServer\n * @static\n */\n async updateFromServer() {\n var _context2;\n if (!this.checkIfEnabled() || this.isSyncing) {\n return;\n }\n const localDatastore = await this._getAllContents();\n const keys = [];\n for (const key in localDatastore) {\n if ((0, _startsWith.default)(key).call(key, _LocalDatastoreUtils.OBJECT_PREFIX)) {\n keys.push(key);\n }\n }\n if (keys.length === 0) {\n return;\n }\n this.isSyncing = true;\n const pointersHash = {};\n for (const key of keys) {\n // Ignore the OBJECT_PREFIX\n let [,, className, objectId] = key.split('_');\n\n // User key is split into [ 'Parse', 'LDS', '', 'User', 'objectId' ]\n if (key.split('_').length === 5 && key.split('_')[3] === 'User') {\n className = '_User';\n objectId = key.split('_')[4];\n }\n if ((0, _startsWith.default)(objectId).call(objectId, 'local')) {\n continue;\n }\n if (!(className in pointersHash)) {\n pointersHash[className] = new _set.default();\n }\n pointersHash[className].add(objectId);\n }\n const queryPromises = (0, _map.default)(_context2 = (0, _keys.default)(pointersHash)).call(_context2, className => {\n const objectIds = (0, _from.default)(pointersHash[className]);\n const query = new _ParseQuery.default(className);\n query.limit(objectIds.length);\n if (objectIds.length === 1) {\n query.equalTo('objectId', objectIds[0]);\n } else {\n query.containedIn('objectId', objectIds);\n }\n return (0, _find.default)(query).call(query);\n });\n try {\n const responses = await _promise.default.all(queryPromises);\n const objects = (0, _concat.default)([]).apply([], responses);\n const pinPromises = (0, _map.default)(objects).call(objects, object => {\n const objectKey = this.getKeyForObject(object);\n return this.pinWithName(objectKey, object._toFullJSON());\n });\n await _promise.default.all(pinPromises);\n this.isSyncing = false;\n } catch (error) {\n console.error('Error syncing LocalDatastore: ', error);\n this.isSyncing = false;\n }\n },\n getKeyForObject(object) {\n const objectId = object.objectId || object._getId();\n return `${_LocalDatastoreUtils.OBJECT_PREFIX}${object.className}_${objectId}`;\n },\n getPinName(pinName) {\n if (!pinName || pinName === _LocalDatastoreUtils.DEFAULT_PIN) {\n return _LocalDatastoreUtils.DEFAULT_PIN;\n }\n return _LocalDatastoreUtils.PIN_PREFIX + pinName;\n },\n checkIfEnabled() {\n if (!this.isEnabled) {\n console.error('Parse.enableLocalDatastore() must be called first');\n }\n return this.isEnabled;\n }\n};\nmodule.exports = LocalDatastore;\nvar _default = exports.default = LocalDatastore;\n_CoreManager.default.setLocalDatastoreController(_LocalDatastoreController.default);\n_CoreManager.default.setLocalDatastore(LocalDatastore);"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}