aboutsummaryrefslogtreecommitdiff
path: root/node_modules/lodash/_baseClone.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/lodash/_baseClone.js')
-rw-r--r--node_modules/lodash/_baseClone.js20
1 files changed, 19 insertions, 1 deletions
diff --git a/node_modules/lodash/_baseClone.js b/node_modules/lodash/_baseClone.js
index 7c27a37d3..6f73684f2 100644
--- a/node_modules/lodash/_baseClone.js
+++ b/node_modules/lodash/_baseClone.js
@@ -15,7 +15,9 @@ var Stack = require('./_Stack'),
initCloneObject = require('./_initCloneObject'),
isArray = require('./isArray'),
isBuffer = require('./isBuffer'),
+ isMap = require('./isMap'),
isObject = require('./isObject'),
+ isSet = require('./isSet'),
keys = require('./keys');
/** Used to compose bitmasks for cloning. */
@@ -123,7 +125,7 @@ function baseClone(value, bitmask, customizer, key, object, stack) {
if (!cloneableTags[tag]) {
return object ? value : {};
}
- result = initCloneByTag(value, tag, baseClone, isDeep);
+ result = initCloneByTag(value, tag, isDeep);
}
}
// Check for circular references and return its corresponding clone.
@@ -134,6 +136,22 @@ function baseClone(value, bitmask, customizer, key, object, stack) {
}
stack.set(value, result);
+ if (isSet(value)) {
+ value.forEach(function(subValue) {
+ result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
+ });
+
+ return result;
+ }
+
+ if (isMap(value)) {
+ value.forEach(function(subValue, key) {
+ result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
+ });
+
+ return result;
+ }
+
var keysFunc = isFull
? (isFlat ? getAllKeysIn : getAllKeys)
: (isFlat ? keysIn : keys);