decode.js 1.8 KB

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