canBeSerialized.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. * Copyright (c) 2015-present, Parse, LLC.
  15. * All rights reserved.
  16. *
  17. * This source code is licensed under the BSD-style license found in the
  18. * LICENSE file in the root directory of this source tree. An additional grant
  19. * of patent rights can be found in the PATENTS file in the same directory.
  20. *
  21. * @flow
  22. */
  23. function canBeSerialized(obj
  24. /*: ParseObject*/
  25. )
  26. /*: boolean*/
  27. {
  28. if (!(obj instanceof _ParseObject.default)) {
  29. return true;
  30. }
  31. var attributes = obj.attributes;
  32. for (var attr in attributes) {
  33. var val = attributes[attr];
  34. if (!canBeSerializedHelper(val)) {
  35. return false;
  36. }
  37. }
  38. return true;
  39. }
  40. function canBeSerializedHelper(value
  41. /*: any*/
  42. )
  43. /*: boolean*/
  44. {
  45. if ((0, _typeof2.default)(value) !== 'object') {
  46. return true;
  47. }
  48. if (value instanceof _ParseRelation.default) {
  49. return true;
  50. }
  51. if (value instanceof _ParseObject.default) {
  52. return !!value.id;
  53. }
  54. if (value instanceof _ParseFile.default) {
  55. if (value.url()) {
  56. return true;
  57. }
  58. return false;
  59. }
  60. if ((0, _isArray.default)(value)) {
  61. for (var i = 0; i < value.length; i++) {
  62. if (!canBeSerializedHelper(value[i])) {
  63. return false;
  64. }
  65. }
  66. return true;
  67. }
  68. for (var k in value) {
  69. if (!canBeSerializedHelper(value[k])) {
  70. return false;
  71. }
  72. }
  73. return true;
  74. }