canBeSerialized.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = canBeSerialized;
  7. var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
  8. var _ParseFile = _interopRequireDefault(require("./ParseFile"));
  9. var _ParseObject = _interopRequireDefault(require("./ParseObject"));
  10. var _ParseRelation = _interopRequireDefault(require("./ParseRelation"));
  11. /**
  12. * Copyright (c) 2015-present, Parse, LLC.
  13. * All rights reserved.
  14. *
  15. * This source code is licensed under the BSD-style license found in the
  16. * LICENSE file in the root directory of this source tree. An additional grant
  17. * of patent rights can be found in the PATENTS file in the same directory.
  18. *
  19. * @flow
  20. */
  21. function canBeSerialized(obj
  22. /*: ParseObject*/
  23. )
  24. /*: boolean*/
  25. {
  26. if (!(obj instanceof _ParseObject.default)) {
  27. return true;
  28. }
  29. var attributes = obj.attributes;
  30. for (var attr in attributes) {
  31. var val = attributes[attr];
  32. if (!canBeSerializedHelper(val)) {
  33. return false;
  34. }
  35. }
  36. return true;
  37. }
  38. function canBeSerializedHelper(value
  39. /*: any*/
  40. )
  41. /*: boolean*/
  42. {
  43. if ((0, _typeof2.default)(value) !== 'object') {
  44. return true;
  45. }
  46. if (value instanceof _ParseRelation.default) {
  47. return true;
  48. }
  49. if (value instanceof _ParseObject.default) {
  50. return !!value.id;
  51. }
  52. if (value instanceof _ParseFile.default) {
  53. if (value.url()) {
  54. return true;
  55. }
  56. return false;
  57. }
  58. if (Array.isArray(value)) {
  59. for (var i = 0; i < value.length; i++) {
  60. if (!canBeSerializedHelper(value[i])) {
  61. return false;
  62. }
  63. }
  64. return true;
  65. }
  66. for (var k in value) {
  67. if (!canBeSerializedHelper(value[k])) {
  68. return false;
  69. }
  70. }
  71. return true;
  72. }