encode.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = _default;
  6. var _CoreManager = _interopRequireDefault(require("./CoreManager"));
  7. var _ParseACL = _interopRequireDefault(require("./ParseACL"));
  8. var _ParseFile = _interopRequireDefault(require("./ParseFile"));
  9. var _ParseGeoPoint = _interopRequireDefault(require("./ParseGeoPoint"));
  10. var _ParsePolygon = _interopRequireDefault(require("./ParsePolygon"));
  11. var _ParseRelation = _interopRequireDefault(require("./ParseRelation"));
  12. function encode(value, disallowObjects, forcePointers, seen, offline) {
  13. var ParseObject = _CoreManager.default.getParseObject();
  14. if (value instanceof ParseObject) {
  15. if (disallowObjects) {
  16. throw new Error('Parse Objects not allowed here');
  17. }
  18. var seenEntry = value.id ? value.className + ':' + value.id : value;
  19. if (forcePointers || !seen || seen.indexOf(seenEntry) > -1 || value.dirty() || Object.keys(value._getServerData()).length < 1) {
  20. if (offline && value._getId().startsWith('local')) {
  21. return value.toOfflinePointer();
  22. }
  23. return value.toPointer();
  24. }
  25. seen = seen.concat(seenEntry);
  26. return value._toFullJSON(seen, offline);
  27. }
  28. var _CoreManager$getParse = _CoreManager.default.getParseOp(),
  29. Op = _CoreManager$getParse.Op;
  30. if (value instanceof Op || value instanceof _ParseACL.default || value instanceof _ParseGeoPoint.default || value instanceof _ParsePolygon.default || value instanceof _ParseRelation.default) {
  31. return value.toJSON();
  32. }
  33. if (value instanceof _ParseFile.default) {
  34. if (!value.url()) {
  35. throw new Error('Tried to encode an unsaved file.');
  36. }
  37. return value.toJSON();
  38. }
  39. if (Object.prototype.toString.call(value) === '[object Date]') {
  40. if (isNaN(value)) {
  41. throw new Error('Tried to encode an invalid date.');
  42. }
  43. return {
  44. __type: 'Date',
  45. iso: value.toJSON()
  46. };
  47. }
  48. if (Object.prototype.toString.call(value) === '[object RegExp]' && typeof value.source === 'string') {
  49. return value.source;
  50. }
  51. if (Array.isArray(value)) {
  52. return value.map(function (v) {
  53. return encode(v, disallowObjects, forcePointers, seen, offline);
  54. });
  55. }
  56. if (value && typeof value === 'object') {
  57. var output = {};
  58. for (var k in value) {
  59. output[k] = encode(value[k], disallowObjects, forcePointers, seen, offline);
  60. }
  61. return output;
  62. }
  63. return value;
  64. }
  65. function _default(value, disallowObjects, forcePointers, seen, offline) {
  66. return encode(value, !!disallowObjects, !!forcePointers, seen || [], offline);
  67. }