canBeSerialized.js 1.4 KB

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