aboutsummaryrefslogtreecommitdiff
path: root/node_modules/jest-util/build/deepCyclicCopy.js
diff options
context:
space:
mode:
authorJoel Kronqvist <joel.h.kronqvist@gmail.com>2022-03-05 19:02:27 +0200
committerJoel Kronqvist <joel.h.kronqvist@gmail.com>2022-03-05 19:02:27 +0200
commit5d309ff52cd399a6b71968a6b9a70c8ac0b98981 (patch)
tree360f7eb50f956e2367ef38fa1fc6ac7ac5258042 /node_modules/jest-util/build/deepCyclicCopy.js
parentb500a50f1b97d93c98b36ed9a980f8188d648147 (diff)
downloadLYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.tar.gz
LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.zip
Added node_modules for the updating to work properly.
Diffstat (limited to 'node_modules/jest-util/build/deepCyclicCopy.js')
-rw-r--r--node_modules/jest-util/build/deepCyclicCopy.js84
1 files changed, 84 insertions, 0 deletions
diff --git a/node_modules/jest-util/build/deepCyclicCopy.js b/node_modules/jest-util/build/deepCyclicCopy.js
new file mode 100644
index 0000000..e76e34b
--- /dev/null
+++ b/node_modules/jest-util/build/deepCyclicCopy.js
@@ -0,0 +1,84 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = deepCyclicCopy;
+
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+const EMPTY = new Set();
+
+function deepCyclicCopy(
+ value,
+ options = {
+ blacklist: EMPTY,
+ keepPrototype: false
+ },
+ cycles = new WeakMap()
+) {
+ if (typeof value !== 'object' || value === null) {
+ return value;
+ } else if (cycles.has(value)) {
+ return cycles.get(value);
+ } else if (Array.isArray(value)) {
+ return deepCyclicCopyArray(value, options, cycles);
+ } else {
+ return deepCyclicCopyObject(value, options, cycles);
+ }
+}
+
+function deepCyclicCopyObject(object, options, cycles) {
+ const newObject = options.keepPrototype
+ ? Object.create(Object.getPrototypeOf(object))
+ : {};
+ const descriptors = Object.getOwnPropertyDescriptors(object);
+ cycles.set(object, newObject);
+ Object.keys(descriptors).forEach(key => {
+ if (options.blacklist && options.blacklist.has(key)) {
+ delete descriptors[key];
+ return;
+ }
+
+ const descriptor = descriptors[key];
+
+ if (typeof descriptor.value !== 'undefined') {
+ descriptor.value = deepCyclicCopy(
+ descriptor.value,
+ {
+ blacklist: EMPTY,
+ keepPrototype: options.keepPrototype
+ },
+ cycles
+ );
+ }
+
+ descriptor.configurable = true;
+ });
+ return Object.defineProperties(newObject, descriptors);
+}
+
+function deepCyclicCopyArray(array, options, cycles) {
+ const newArray = options.keepPrototype
+ ? new (Object.getPrototypeOf(array).constructor)(array.length)
+ : [];
+ const length = array.length;
+ cycles.set(array, newArray);
+
+ for (let i = 0; i < length; i++) {
+ newArray[i] = deepCyclicCopy(
+ array[i],
+ {
+ blacklist: EMPTY,
+ keepPrototype: options.keepPrototype
+ },
+ cycles
+ );
+ }
+
+ return newArray;
+}