canBeSerialized.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = canBeSerialized;
  6. var _ParseFile = _interopRequireDefault(require("./ParseFile"));
  7. var _ParseObject = _interopRequireDefault(require("./ParseObject"));
  8. var _ParseRelation = _interopRequireDefault(require("./ParseRelation"));
  9. function _interopRequireDefault(obj) {
  10. return obj && obj.__esModule ? obj : {
  11. default: obj
  12. };
  13. }
  14. /**
  15. * @flow
  16. */
  17. function canBeSerialized(obj /*: ParseObject*/) /*: boolean*/{
  18. if (!(obj instanceof _ParseObject.default)) {
  19. return true;
  20. }
  21. const attributes = obj.attributes;
  22. for (const attr in attributes) {
  23. const val = attributes[attr];
  24. if (!canBeSerializedHelper(val)) {
  25. return false;
  26. }
  27. }
  28. return true;
  29. }
  30. function canBeSerializedHelper(value /*: any*/) /*: boolean*/{
  31. if (typeof value !== 'object') {
  32. return true;
  33. }
  34. if (value instanceof _ParseRelation.default) {
  35. return true;
  36. }
  37. if (value instanceof _ParseObject.default) {
  38. return !!value.id;
  39. }
  40. if (value instanceof _ParseFile.default) {
  41. if (value.url()) {
  42. return true;
  43. }
  44. return false;
  45. }
  46. if (Array.isArray(value)) {
  47. for (let i = 0; i < value.length; i++) {
  48. if (!canBeSerializedHelper(value[i])) {
  49. return false;
  50. }
  51. }
  52. return true;
  53. }
  54. for (const k in value) {
  55. if (!canBeSerializedHelper(value[k])) {
  56. return false;
  57. }
  58. }
  59. return true;
  60. }