decode.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. "use strict";
  2. var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
  3. var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
  4. _Object$defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = decode;
  8. var _isArray = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/is-array"));
  9. var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
  10. var _CoreManager = _interopRequireDefault(require("./CoreManager"));
  11. var _ParseFile = _interopRequireDefault(require("./ParseFile"));
  12. var _ParseGeoPoint = _interopRequireDefault(require("./ParseGeoPoint"));
  13. var _ParsePolygon = _interopRequireDefault(require("./ParsePolygon"));
  14. var _ParseRelation = _interopRequireDefault(require("./ParseRelation"));
  15. function decode(value) {
  16. if (value === null || typeof value !== 'object' || value instanceof Date) {
  17. return value;
  18. }
  19. if ((0, _isArray.default)(value)) {
  20. const dup = [];
  21. (0, _forEach.default)(value).call(value, (v, i) => {
  22. dup[i] = decode(v);
  23. });
  24. return dup;
  25. }
  26. if (typeof value.__op === 'string') {
  27. const {
  28. opFromJSON
  29. } = _CoreManager.default.getParseOp();
  30. return opFromJSON(value);
  31. }
  32. const ParseObject = _CoreManager.default.getParseObject();
  33. if (value.__type === 'Pointer' && value.className) {
  34. return ParseObject.fromJSON(value);
  35. }
  36. if (value.__type === 'Object' && value.className) {
  37. return ParseObject.fromJSON(value);
  38. }
  39. if (value.__type === 'Relation') {
  40. // The parent and key fields will be populated by the parent
  41. const relation = new _ParseRelation.default(null, null);
  42. relation.targetClassName = value.className;
  43. return relation;
  44. }
  45. if (value.__type === 'Date') {
  46. return new Date(value.iso);
  47. }
  48. if (value.__type === 'File') {
  49. return _ParseFile.default.fromJSON(value);
  50. }
  51. if (value.__type === 'GeoPoint') {
  52. return new _ParseGeoPoint.default({
  53. latitude: value.latitude,
  54. longitude: value.longitude
  55. });
  56. }
  57. if (value.__type === 'Polygon') {
  58. return new _ParsePolygon.default(value.coordinates);
  59. }
  60. const copy = {};
  61. for (const k in value) {
  62. copy[k] = decode(value[k]);
  63. }
  64. return copy;
  65. }