canBeSerialized.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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 = canBeSerialized;
  8. var _isArray = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/is-array"));
  9. var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/typeof"));
  10. var _ParseFile = _interopRequireDefault(require("./ParseFile"));
  11. var _ParseObject = _interopRequireDefault(require("./ParseObject"));
  12. var _ParseRelation = _interopRequireDefault(require("./ParseRelation"));
  13. /**
  14. * @flow
  15. */
  16. function canBeSerialized(obj /*: ParseObject*/) /*: boolean*/{
  17. if (!(obj instanceof _ParseObject.default)) {
  18. return true;
  19. }
  20. var attributes = obj.attributes;
  21. for (var attr in attributes) {
  22. var val = attributes[attr];
  23. if (!canBeSerializedHelper(val)) {
  24. return false;
  25. }
  26. }
  27. return true;
  28. }
  29. function canBeSerializedHelper(value /*: any*/) /*: boolean*/{
  30. if ((0, _typeof2.default)(value) !== 'object') {
  31. return true;
  32. }
  33. if (value instanceof _ParseRelation.default) {
  34. return true;
  35. }
  36. if (value instanceof _ParseObject.default) {
  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 ((0, _isArray.default)(value)) {
  46. for (var i = 0; i < value.length; i++) {
  47. if (!canBeSerializedHelper(value[i])) {
  48. return false;
  49. }
  50. }
  51. return true;
  52. }
  53. for (var k in value) {
  54. if (!canBeSerializedHelper(value[k])) {
  55. return false;
  56. }
  57. }
  58. return true;
  59. }