d83f808ef17582c51bd6d9fc8b52af997f2d1e9237495b63719a90650d39f951658677c7c6d9b46eafa71fa5d847d4a8bfe1761a86a57178420d8f4e368edf 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = _default;
  6. const circleSet = new Set();
  7. let depth = 0;
  8. function deepClone(value, cache, allowCircle) {
  9. if (value !== null) {
  10. if (allowCircle) {
  11. if (cache.has(value)) return cache.get(value);
  12. } else if (++depth > 250) {
  13. if (circleSet.has(value)) {
  14. depth = 0;
  15. circleSet.clear();
  16. throw new Error("Babel-deepClone: Cycles are not allowed in AST");
  17. }
  18. circleSet.add(value);
  19. }
  20. let cloned;
  21. if (Array.isArray(value)) {
  22. cloned = new Array(value.length);
  23. if (allowCircle) cache.set(value, cloned);
  24. for (let i = 0; i < value.length; i++) {
  25. cloned[i] = typeof value[i] !== "object" ? value[i] : deepClone(value[i], cache, allowCircle);
  26. }
  27. } else {
  28. cloned = {};
  29. if (allowCircle) cache.set(value, cloned);
  30. const keys = Object.keys(value);
  31. for (let i = 0; i < keys.length; i++) {
  32. const key = keys[i];
  33. cloned[key] = typeof value[key] !== "object" ? value[key] : deepClone(value[key], cache, allowCircle || key === "leadingComments" || key === "innerComments" || key === "trailingComments" || key === "extra");
  34. }
  35. }
  36. if (!allowCircle) {
  37. if (depth-- > 250) circleSet.delete(value);
  38. }
  39. return cloned;
  40. }
  41. return value;
  42. }
  43. function _default(value) {
  44. if (typeof value !== "object") return value;
  45. {
  46. try {
  47. return deepClone(value, new Map(), true);
  48. } catch (_) {
  49. return structuredClone(value);
  50. }
  51. }
  52. }
  53. 0 && 0;
  54. //# sourceMappingURL=clone-deep.js.map