encode.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = _default;
  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 encode(value, disallowObjects, forcePointers, seen, offline) {
  14. if (value instanceof _ParseObject.default) {
  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. if (value instanceof _ParseOp.Op || value instanceof _ParseACL.default || value instanceof _ParseGeoPoint.default || value instanceof _ParsePolygon.default || value instanceof _ParseRelation.default) {
  29. return value.toJSON();
  30. }
  31. if (value instanceof _ParseFile.default) {
  32. if (!value.url()) {
  33. throw new Error('Tried to encode an unsaved file.');
  34. }
  35. return value.toJSON();
  36. }
  37. if (Object.prototype.toString.call(value) === '[object Date]') {
  38. if (isNaN(value)) {
  39. throw new Error('Tried to encode an invalid date.');
  40. }
  41. return {
  42. __type: 'Date',
  43. iso: value.toJSON()
  44. };
  45. }
  46. if (Object.prototype.toString.call(value) === '[object RegExp]' && typeof value.source === 'string') {
  47. return value.source;
  48. }
  49. if (Array.isArray(value)) {
  50. return value.map(function (v) {
  51. return encode(v, disallowObjects, forcePointers, seen, offline);
  52. });
  53. }
  54. if (value && typeof value === 'object') {
  55. var output = {};
  56. for (var k in value) {
  57. output[k] = encode(value[k], disallowObjects, forcePointers, seen, offline);
  58. }
  59. return output;
  60. }
  61. return value;
  62. }
  63. function _default(value, disallowObjects, forcePointers, seen, offline) {
  64. return encode(value, !!disallowObjects, !!forcePointers, seen || [], offline);
  65. }