encode.js 3.4 KB

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