encode.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  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 = _default;
  8. var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/typeof"));
  9. var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
  10. var _indexOf = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/index-of"));
  11. var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
  12. var _startsWith = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/starts-with"));
  13. var _isArray = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/is-array"));
  14. var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
  15. var _ParseACL = _interopRequireDefault(require("./ParseACL"));
  16. var _ParseFile = _interopRequireDefault(require("./ParseFile"));
  17. var _ParseGeoPoint = _interopRequireDefault(require("./ParseGeoPoint"));
  18. var _ParsePolygon = _interopRequireDefault(require("./ParsePolygon"));
  19. var _ParseObject = _interopRequireDefault(require("./ParseObject"));
  20. var _ParseOp = require("./ParseOp");
  21. var _ParseRelation = _interopRequireDefault(require("./ParseRelation"));
  22. /**
  23. * Copyright (c) 2015-present, Parse, LLC.
  24. * All rights reserved.
  25. *
  26. * This source code is licensed under the BSD-style license found in the
  27. * LICENSE file in the root directory of this source tree. An additional grant
  28. * of patent rights can be found in the PATENTS file in the same directory.
  29. *
  30. * @flow
  31. */
  32. function encode(value
  33. /*: mixed*/
  34. , disallowObjects
  35. /*: boolean*/
  36. , forcePointers
  37. /*: boolean*/
  38. , seen
  39. /*: Array<mixed>*/
  40. , offline
  41. /*: boolean*/
  42. )
  43. /*: any*/
  44. {
  45. if (value instanceof _ParseObject.default) {
  46. var _context;
  47. if (disallowObjects) {
  48. throw new Error('Parse Objects not allowed here');
  49. }
  50. var seenEntry = value.id ? (0, _concat.default)(_context = "".concat(value.className, ":")).call(_context, value.id) : value;
  51. if (forcePointers || !seen || (0, _indexOf.default)(seen).call(seen, seenEntry) > -1 || value.dirty() || (0, _keys.default)(value._getServerData()).length < 1) {
  52. var _context2;
  53. if (offline && (0, _startsWith.default)(_context2 = value._getId()).call(_context2, 'local')) {
  54. return value.toOfflinePointer();
  55. }
  56. return value.toPointer();
  57. }
  58. seen = (0, _concat.default)(seen).call(seen, seenEntry);
  59. return value._toFullJSON(seen, offline);
  60. }
  61. if (value instanceof _ParseOp.Op || value instanceof _ParseACL.default || value instanceof _ParseGeoPoint.default || value instanceof _ParsePolygon.default || value instanceof _ParseRelation.default) {
  62. return value.toJSON();
  63. }
  64. if (value instanceof _ParseFile.default) {
  65. if (!value.url()) {
  66. throw new Error('Tried to encode an unsaved file.');
  67. }
  68. return value.toJSON();
  69. }
  70. if (Object.prototype.toString.call(value) === '[object Date]') {
  71. if (isNaN(value)) {
  72. throw new Error('Tried to encode an invalid date.');
  73. }
  74. return {
  75. __type: 'Date',
  76. iso: value
  77. /*: any*/
  78. .toJSON()
  79. };
  80. }
  81. if (Object.prototype.toString.call(value) === '[object RegExp]' && typeof value.source === 'string') {
  82. return value.source;
  83. }
  84. if ((0, _isArray.default)(value)) {
  85. return (0, _map.default)(value).call(value, function (v) {
  86. return encode(v, disallowObjects, forcePointers, seen, offline);
  87. });
  88. }
  89. if (value && (0, _typeof2.default)(value) === 'object') {
  90. var output = {};
  91. for (var k in value) {
  92. output[k] = encode(value[k], disallowObjects, forcePointers, seen, offline);
  93. }
  94. return output;
  95. }
  96. return value;
  97. }
  98. function _default(value
  99. /*: mixed*/
  100. , disallowObjects
  101. /*:: ?: boolean*/
  102. , forcePointers
  103. /*:: ?: boolean*/
  104. , seen
  105. /*:: ?: Array<mixed>*/
  106. , offline
  107. /*:: ?: boolean*/
  108. )
  109. /*: any*/
  110. {
  111. return encode(value, !!disallowObjects, !!forcePointers, seen || [], offline);
  112. }