decode.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = decode;
  6. var _CoreManager = _interopRequireDefault(require("./CoreManager"));
  7. var _ParseFile = _interopRequireDefault(require("./ParseFile"));
  8. var _ParseGeoPoint = _interopRequireDefault(require("./ParseGeoPoint"));
  9. var _ParsePolygon = _interopRequireDefault(require("./ParsePolygon"));
  10. var _ParseRelation = _interopRequireDefault(require("./ParseRelation"));
  11. function decode(value) {
  12. if (value === null || typeof value !== 'object' || value instanceof Date) {
  13. return value;
  14. }
  15. if (Array.isArray(value)) {
  16. var dup = [];
  17. value.forEach(function (v, i) {
  18. dup[i] = decode(v);
  19. });
  20. return dup;
  21. }
  22. if (typeof value.__op === 'string') {
  23. var _CoreManager$getParse = _CoreManager.default.getParseOp(),
  24. opFromJSON = _CoreManager$getParse.opFromJSON;
  25. return opFromJSON(value);
  26. }
  27. var ParseObject = _CoreManager.default.getParseObject();
  28. if (value.__type === 'Pointer' && value.className) {
  29. return ParseObject.fromJSON(value);
  30. }
  31. if (value.__type === 'Object' && value.className) {
  32. return ParseObject.fromJSON(value);
  33. }
  34. if (value.__type === 'Relation') {
  35. var relation = new _ParseRelation.default(null, null);
  36. relation.targetClassName = value.className;
  37. return relation;
  38. }
  39. if (value.__type === 'Date') {
  40. return new Date(value.iso);
  41. }
  42. if (value.__type === 'File') {
  43. return _ParseFile.default.fromJSON(value);
  44. }
  45. if (value.__type === 'GeoPoint') {
  46. return new _ParseGeoPoint.default({
  47. latitude: value.latitude,
  48. longitude: value.longitude
  49. });
  50. }
  51. if (value.__type === 'Polygon') {
  52. return new _ParsePolygon.default(value.coordinates);
  53. }
  54. var copy = {};
  55. for (var k in value) {
  56. copy[k] = decode(value[k]);
  57. }
  58. return copy;
  59. }