decode.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = decode;
  7. var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
  8. var _ParseACL = _interopRequireDefault(require("./ParseACL"));
  9. var _ParseFile = _interopRequireDefault(require("./ParseFile"));
  10. var _ParseGeoPoint = _interopRequireDefault(require("./ParseGeoPoint"));
  11. var _ParsePolygon = _interopRequireDefault(require("./ParsePolygon"));
  12. var _ParseObject = _interopRequireDefault(require("./ParseObject"));
  13. var _ParseOp = require("./ParseOp");
  14. var _ParseRelation = _interopRequireDefault(require("./ParseRelation"));
  15. /**
  16. * Copyright (c) 2015-present, Parse, LLC.
  17. * All rights reserved.
  18. *
  19. * This source code is licensed under the BSD-style license found in the
  20. * LICENSE file in the root directory of this source tree. An additional grant
  21. * of patent rights can be found in the PATENTS file in the same directory.
  22. *
  23. * @flow
  24. */
  25. // eslint-disable-line no-unused-vars
  26. function decode(value
  27. /*: any*/
  28. )
  29. /*: any*/
  30. {
  31. if (value === null || (0, _typeof2.default)(value) !== 'object') {
  32. return value;
  33. }
  34. if (Array.isArray(value)) {
  35. var dup = [];
  36. value.forEach(function (v, i) {
  37. dup[i] = decode(v);
  38. });
  39. return dup;
  40. }
  41. if (typeof value.__op === 'string') {
  42. return (0, _ParseOp.opFromJSON)(value);
  43. }
  44. if (value.__type === 'Pointer' && value.className) {
  45. return _ParseObject.default.fromJSON(value);
  46. }
  47. if (value.__type === 'Object' && value.className) {
  48. return _ParseObject.default.fromJSON(value);
  49. }
  50. if (value.__type === 'Relation') {
  51. // The parent and key fields will be populated by the parent
  52. var relation = new _ParseRelation.default(null, null);
  53. relation.targetClassName = value.className;
  54. return relation;
  55. }
  56. if (value.__type === 'Date') {
  57. return new Date(value.iso);
  58. }
  59. if (value.__type === 'File') {
  60. return _ParseFile.default.fromJSON(value);
  61. }
  62. if (value.__type === 'GeoPoint') {
  63. return new _ParseGeoPoint.default({
  64. latitude: value.latitude,
  65. longitude: value.longitude
  66. });
  67. }
  68. if (value.__type === 'Polygon') {
  69. return new _ParsePolygon.default(value.coordinates);
  70. }
  71. var copy = {};
  72. for (var k in value) {
  73. copy[k] = decode(value[k]);
  74. }
  75. return copy;
  76. }