diff --git a/README.md b/README.md
index eaa9a6a74..1ebcd20ea 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# lodash-es v4.0.1
+# lodash-es v4.1.0
The [lodash](https://lodash.com/) library exported as [ES](http://www.ecma-international.org/ecma-262/6.0/) modules.
@@ -7,4 +7,4 @@ Generated using [lodash-cli](https://www.npmjs.com/package/lodash-cli):
$ lodash modularize exports=es -o ./
```
-See the [package source](https://github.com/lodash/lodash/tree/4.0.1-es) for more details.
+See the [package source](https://github.com/lodash/lodash/tree/4.1.0-es) for more details.
diff --git a/internal/Hash.js b/_Hash.js
similarity index 88%
rename from internal/Hash.js
rename to _Hash.js
index 0fba9376c..73c741b58 100644
--- a/internal/Hash.js
+++ b/_Hash.js
@@ -1,4 +1,4 @@
-import nativeCreate from './nativeCreate';
+import nativeCreate from './_nativeCreate';
/** Used for built-in method references. */
var objectProto = Object.prototype;
diff --git a/internal/LazyWrapper.js b/_LazyWrapper.js
similarity index 88%
rename from internal/LazyWrapper.js
rename to _LazyWrapper.js
index e93e4a1ec..95a49dbd5 100644
--- a/internal/LazyWrapper.js
+++ b/_LazyWrapper.js
@@ -1,5 +1,5 @@
-import baseCreate from './baseCreate';
-import baseLodash from './baseLodash';
+import baseCreate from './_baseCreate';
+import baseLodash from './_baseLodash';
/** Used as references for the maximum length and index of an array. */
var MAX_ARRAY_LENGTH = 4294967295;
diff --git a/internal/LodashWrapper.js b/_LodashWrapper.js
similarity index 86%
rename from internal/LodashWrapper.js
rename to _LodashWrapper.js
index 08a1cdd4a..b7e44407d 100644
--- a/internal/LodashWrapper.js
+++ b/_LodashWrapper.js
@@ -1,5 +1,5 @@
-import baseCreate from './baseCreate';
-import baseLodash from './baseLodash';
+import baseCreate from './_baseCreate';
+import baseLodash from './_baseLodash';
/**
* The base constructor for creating `lodash` wrapper objects.
diff --git a/internal/Map.js b/_Map.js
similarity index 64%
rename from internal/Map.js
rename to _Map.js
index 846355c16..89649e1e6 100644
--- a/internal/Map.js
+++ b/_Map.js
@@ -1,5 +1,5 @@
-import getNative from './getNative';
-import root from './root';
+import getNative from './_getNative';
+import root from './_root';
/* Built-in method references that are verified to be native. */
var Map = getNative(root, 'Map');
diff --git a/internal/MapCache.js b/_MapCache.js
similarity index 77%
rename from internal/MapCache.js
rename to _MapCache.js
index 13ee61db3..a0d716575 100644
--- a/internal/MapCache.js
+++ b/_MapCache.js
@@ -1,8 +1,8 @@
-import mapClear from './mapClear';
-import mapDelete from './mapDelete';
-import mapGet from './mapGet';
-import mapHas from './mapHas';
-import mapSet from './mapSet';
+import mapClear from './_mapClear';
+import mapDelete from './_mapDelete';
+import mapGet from './_mapGet';
+import mapHas from './_mapHas';
+import mapSet from './_mapSet';
/**
* Creates a map cache object to store key-value pairs.
diff --git a/internal/Reflect.js b/_Reflect.js
similarity index 75%
rename from internal/Reflect.js
rename to _Reflect.js
index 89162b591..13b569802 100644
--- a/internal/Reflect.js
+++ b/_Reflect.js
@@ -1,4 +1,4 @@
-import root from './root';
+import root from './_root';
/** Built-in value references. */
var Reflect = root.Reflect;
diff --git a/internal/Set.js b/_Set.js
similarity index 64%
rename from internal/Set.js
rename to _Set.js
index 23a328016..e80a6fa3e 100644
--- a/internal/Set.js
+++ b/_Set.js
@@ -1,5 +1,5 @@
-import getNative from './getNative';
-import root from './root';
+import getNative from './_getNative';
+import root from './_root';
/* Built-in method references that are verified to be native. */
var Set = getNative(root, 'Set');
diff --git a/internal/SetCache.js b/_SetCache.js
similarity index 84%
rename from internal/SetCache.js
rename to _SetCache.js
index eca84426f..30b2ebd1d 100644
--- a/internal/SetCache.js
+++ b/_SetCache.js
@@ -1,5 +1,5 @@
-import MapCache from './MapCache';
-import cachePush from './cachePush';
+import MapCache from './_MapCache';
+import cachePush from './_cachePush';
/**
*
diff --git a/internal/Stack.js b/_Stack.js
similarity index 74%
rename from internal/Stack.js
rename to _Stack.js
index 821153dc3..cb06511b8 100644
--- a/internal/Stack.js
+++ b/_Stack.js
@@ -1,8 +1,8 @@
-import stackClear from './stackClear';
-import stackDelete from './stackDelete';
-import stackGet from './stackGet';
-import stackHas from './stackHas';
-import stackSet from './stackSet';
+import stackClear from './_stackClear';
+import stackDelete from './_stackDelete';
+import stackGet from './_stackGet';
+import stackHas from './_stackHas';
+import stackSet from './_stackSet';
/**
* Creates a stack cache object to store key-value pairs.
diff --git a/internal/Symbol.js b/_Symbol.js
similarity index 75%
rename from internal/Symbol.js
rename to _Symbol.js
index 7103a7cc5..9dedac06f 100644
--- a/internal/Symbol.js
+++ b/_Symbol.js
@@ -1,4 +1,4 @@
-import root from './root';
+import root from './_root';
/** Built-in value references. */
var Symbol = root.Symbol;
diff --git a/internal/Uint8Array.js b/_Uint8Array.js
similarity index 77%
rename from internal/Uint8Array.js
rename to _Uint8Array.js
index cabbb800d..c39fd9f17 100644
--- a/internal/Uint8Array.js
+++ b/_Uint8Array.js
@@ -1,4 +1,4 @@
-import root from './root';
+import root from './_root';
/** Built-in value references. */
var Uint8Array = root.Uint8Array;
diff --git a/internal/WeakMap.js b/_WeakMap.js
similarity index 66%
rename from internal/WeakMap.js
rename to _WeakMap.js
index e0410c589..4a9e9630a 100644
--- a/internal/WeakMap.js
+++ b/_WeakMap.js
@@ -1,5 +1,5 @@
-import getNative from './getNative';
-import root from './root';
+import getNative from './_getNative';
+import root from './_root';
/* Built-in method references that are verified to be native. */
var WeakMap = getNative(root, 'WeakMap');
diff --git a/internal/addMapEntry.js b/_addMapEntry.js
similarity index 100%
rename from internal/addMapEntry.js
rename to _addMapEntry.js
diff --git a/internal/addSetEntry.js b/_addSetEntry.js
similarity index 100%
rename from internal/addSetEntry.js
rename to _addSetEntry.js
diff --git a/internal/apply.js b/_apply.js
similarity index 100%
rename from internal/apply.js
rename to _apply.js
diff --git a/_arrayAggregator.js b/_arrayAggregator.js
new file mode 100644
index 000000000..34ee1293c
--- /dev/null
+++ b/_arrayAggregator.js
@@ -0,0 +1,22 @@
+/**
+ * A specialized version of `baseAggregator` for arrays.
+ *
+ * @private
+ * @param {Array} array The array to iterate over.
+ * @param {Function} setter The function to set `accumulator` values.
+ * @param {Function} iteratee The iteratee to transform keys.
+ * @param {Object} accumulator The initial aggregated object.
+ * @returns {Function} Returns `accumulator`.
+ */
+function arrayAggregator(array, setter, iteratee, accumulator) {
+ var index = -1,
+ length = array.length;
+
+ while (++index < length) {
+ var value = array[index];
+ setter(accumulator, value, iteratee(value), array);
+ }
+ return accumulator;
+}
+
+export default arrayAggregator;
diff --git a/internal/arrayConcat.js b/_arrayConcat.js
similarity index 100%
rename from internal/arrayConcat.js
rename to _arrayConcat.js
diff --git a/internal/arrayEach.js b/_arrayEach.js
similarity index 100%
rename from internal/arrayEach.js
rename to _arrayEach.js
diff --git a/internal/arrayEachRight.js b/_arrayEachRight.js
similarity index 100%
rename from internal/arrayEachRight.js
rename to _arrayEachRight.js
diff --git a/internal/arrayEvery.js b/_arrayEvery.js
similarity index 100%
rename from internal/arrayEvery.js
rename to _arrayEvery.js
diff --git a/internal/arrayFilter.js b/_arrayFilter.js
similarity index 100%
rename from internal/arrayFilter.js
rename to _arrayFilter.js
diff --git a/internal/arrayIncludes.js b/_arrayIncludes.js
similarity index 91%
rename from internal/arrayIncludes.js
rename to _arrayIncludes.js
index 9a99b17ce..b6c6fffd4 100644
--- a/internal/arrayIncludes.js
+++ b/_arrayIncludes.js
@@ -1,4 +1,4 @@
-import baseIndexOf from './baseIndexOf';
+import baseIndexOf from './_baseIndexOf';
/**
* A specialized version of `_.includes` for arrays without support for
diff --git a/internal/arrayIncludesWith.js b/_arrayIncludesWith.js
similarity index 100%
rename from internal/arrayIncludesWith.js
rename to _arrayIncludesWith.js
diff --git a/internal/arrayMap.js b/_arrayMap.js
similarity index 100%
rename from internal/arrayMap.js
rename to _arrayMap.js
diff --git a/internal/arrayPush.js b/_arrayPush.js
similarity index 100%
rename from internal/arrayPush.js
rename to _arrayPush.js
diff --git a/internal/arrayReduce.js b/_arrayReduce.js
similarity index 100%
rename from internal/arrayReduce.js
rename to _arrayReduce.js
diff --git a/internal/arrayReduceRight.js b/_arrayReduceRight.js
similarity index 100%
rename from internal/arrayReduceRight.js
rename to _arrayReduceRight.js
diff --git a/internal/arraySome.js b/_arraySome.js
similarity index 100%
rename from internal/arraySome.js
rename to _arraySome.js
diff --git a/internal/assignInDefaults.js b/_assignInDefaults.js
similarity index 96%
rename from internal/assignInDefaults.js
rename to _assignInDefaults.js
index b3af762e7..e379a41af 100644
--- a/internal/assignInDefaults.js
+++ b/_assignInDefaults.js
@@ -1,4 +1,4 @@
-import eq from '../eq';
+import eq from './eq';
/** Used for built-in method references. */
var objectProto = Object.prototype;
diff --git a/internal/assignMergeValue.js b/_assignMergeValue.js
similarity index 95%
rename from internal/assignMergeValue.js
rename to _assignMergeValue.js
index 56486df21..7b1353d25 100644
--- a/internal/assignMergeValue.js
+++ b/_assignMergeValue.js
@@ -1,4 +1,4 @@
-import eq from '../eq';
+import eq from './eq';
/**
* This function is like `assignValue` except that it doesn't assign `undefined` values.
diff --git a/internal/assignValue.js b/_assignValue.js
similarity index 97%
rename from internal/assignValue.js
rename to _assignValue.js
index b7d2b3e52..59257f10b 100644
--- a/internal/assignValue.js
+++ b/_assignValue.js
@@ -1,4 +1,4 @@
-import eq from '../eq';
+import eq from './eq';
/** Used for built-in method references. */
var objectProto = Object.prototype;
diff --git a/internal/assocDelete.js b/_assocDelete.js
similarity index 94%
rename from internal/assocDelete.js
rename to _assocDelete.js
index 206d7d8e9..215bea701 100644
--- a/internal/assocDelete.js
+++ b/_assocDelete.js
@@ -1,4 +1,4 @@
-import assocIndexOf from './assocIndexOf';
+import assocIndexOf from './_assocIndexOf';
/** Used for built-in method references. */
var arrayProto = Array.prototype;
diff --git a/internal/assocGet.js b/_assocGet.js
similarity index 89%
rename from internal/assocGet.js
rename to _assocGet.js
index a171e8486..721227d00 100644
--- a/internal/assocGet.js
+++ b/_assocGet.js
@@ -1,4 +1,4 @@
-import assocIndexOf from './assocIndexOf';
+import assocIndexOf from './_assocIndexOf';
/**
* Gets the associative array value for `key`.
diff --git a/internal/assocHas.js b/_assocHas.js
similarity index 89%
rename from internal/assocHas.js
rename to _assocHas.js
index 9691dbc2c..2f8b8fd23 100644
--- a/internal/assocHas.js
+++ b/_assocHas.js
@@ -1,4 +1,4 @@
-import assocIndexOf from './assocIndexOf';
+import assocIndexOf from './_assocIndexOf';
/**
* Checks if an associative array value for `key` exists.
diff --git a/internal/assocIndexOf.js b/_assocIndexOf.js
similarity index 95%
rename from internal/assocIndexOf.js
rename to _assocIndexOf.js
index 969b9a8ec..a80dd4fce 100644
--- a/internal/assocIndexOf.js
+++ b/_assocIndexOf.js
@@ -1,4 +1,4 @@
-import eq from '../eq';
+import eq from './eq';
/**
* Gets the index at which the first occurrence of `key` is found in `array`
diff --git a/internal/assocSet.js b/_assocSet.js
similarity index 90%
rename from internal/assocSet.js
rename to _assocSet.js
index 8adf34e99..beabfc44b 100644
--- a/internal/assocSet.js
+++ b/_assocSet.js
@@ -1,4 +1,4 @@
-import assocIndexOf from './assocIndexOf';
+import assocIndexOf from './_assocIndexOf';
/**
* Sets the associative array `key` to `value`.
diff --git a/_baseAggregator.js b/_baseAggregator.js
new file mode 100644
index 000000000..d017ea45c
--- /dev/null
+++ b/_baseAggregator.js
@@ -0,0 +1,21 @@
+import baseEach from './_baseEach';
+
+/**
+ * Aggregates elements of `collection` on `accumulator` with keys transformed
+ * by `iteratee` and values set by `setter`.
+ *
+ * @private
+ * @param {Array|Object} collection The collection to iterate over.
+ * @param {Function} setter The function to set `accumulator` values.
+ * @param {Function} iteratee The iteratee to transform keys.
+ * @param {Object} accumulator The initial aggregated object.
+ * @returns {Function} Returns `accumulator`.
+ */
+function baseAggregator(collection, setter, iteratee, accumulator) {
+ baseEach(collection, function(value, key, collection) {
+ setter(accumulator, value, iteratee(value), collection);
+ });
+ return accumulator;
+}
+
+export default baseAggregator;
diff --git a/internal/baseAssign.js b/_baseAssign.js
similarity index 85%
rename from internal/baseAssign.js
rename to _baseAssign.js
index 30097379f..af9797f44 100644
--- a/internal/baseAssign.js
+++ b/_baseAssign.js
@@ -1,5 +1,5 @@
-import copyObject from './copyObject';
-import keys from '../keys';
+import copyObject from './_copyObject';
+import keys from './keys';
/**
* The base implementation of `_.assign` without support for multiple sources
diff --git a/internal/baseAt.js b/_baseAt.js
similarity index 95%
rename from internal/baseAt.js
rename to _baseAt.js
index 135ca2f04..944cf9e01 100644
--- a/internal/baseAt.js
+++ b/_baseAt.js
@@ -1,4 +1,4 @@
-import get from '../get';
+import get from './get';
/**
* The base implementation of `_.at` without support for individual paths.
diff --git a/internal/baseClamp.js b/_baseClamp.js
similarity index 100%
rename from internal/baseClamp.js
rename to _baseClamp.js
diff --git a/internal/baseClone.js b/_baseClone.js
similarity index 86%
rename from internal/baseClone.js
rename to _baseClone.js
index bcc3299b2..c80942113 100644
--- a/internal/baseClone.js
+++ b/_baseClone.js
@@ -1,17 +1,17 @@
-import Stack from './Stack';
-import arrayEach from './arrayEach';
-import assignValue from './assignValue';
-import baseAssign from './baseAssign';
-import baseForOwn from './baseForOwn';
-import copyArray from './copyArray';
-import copySymbols from './copySymbols';
-import getTag from './getTag';
-import initCloneArray from './initCloneArray';
-import initCloneByTag from './initCloneByTag';
-import initCloneObject from './initCloneObject';
-import isArray from '../isArray';
-import isHostObject from './isHostObject';
-import isObject from '../isObject';
+import Stack from './_Stack';
+import arrayEach from './_arrayEach';
+import assignValue from './_assignValue';
+import baseAssign from './_baseAssign';
+import baseForOwn from './_baseForOwn';
+import copyArray from './_copyArray';
+import copySymbols from './_copySymbols';
+import getTag from './_getTag';
+import initCloneArray from './_initCloneArray';
+import initCloneByTag from './_initCloneByTag';
+import initCloneObject from './_initCloneObject';
+import isArray from './isArray';
+import isHostObject from './_isHostObject';
+import isObject from './isObject';
/** `Object#toString` result references. */
var argsTag = '[object Arguments]',
diff --git a/internal/baseConforms.js b/_baseConforms.js
similarity index 96%
rename from internal/baseConforms.js
rename to _baseConforms.js
index 5560bb8cf..bbcb3253f 100644
--- a/internal/baseConforms.js
+++ b/_baseConforms.js
@@ -1,4 +1,4 @@
-import keys from '../keys';
+import keys from './keys';
/**
* The base implementation of `_.conforms` which doesn't clone `source`.
diff --git a/internal/baseCreate.js b/_baseCreate.js
similarity index 93%
rename from internal/baseCreate.js
rename to _baseCreate.js
index 4ea485da6..98c576034 100644
--- a/internal/baseCreate.js
+++ b/_baseCreate.js
@@ -1,4 +1,4 @@
-import isObject from '../isObject';
+import isObject from './isObject';
/**
* The base implementation of `_.create` without support for assigning
diff --git a/internal/baseDelay.js b/_baseDelay.js
similarity index 100%
rename from internal/baseDelay.js
rename to _baseDelay.js
diff --git a/internal/baseDifference.js b/_baseDifference.js
similarity index 86%
rename from internal/baseDifference.js
rename to _baseDifference.js
index a2f73009e..c65b4222e 100644
--- a/internal/baseDifference.js
+++ b/_baseDifference.js
@@ -1,9 +1,9 @@
-import SetCache from './SetCache';
-import arrayIncludes from './arrayIncludes';
-import arrayIncludesWith from './arrayIncludesWith';
-import arrayMap from './arrayMap';
-import baseUnary from './baseUnary';
-import cacheHas from './cacheHas';
+import SetCache from './_SetCache';
+import arrayIncludes from './_arrayIncludes';
+import arrayIncludesWith from './_arrayIncludesWith';
+import arrayMap from './_arrayMap';
+import baseUnary from './_baseUnary';
+import cacheHas from './_cacheHas';
/** Used as the size to enable large array optimizations. */
var LARGE_ARRAY_SIZE = 200;
diff --git a/internal/baseEach.js b/_baseEach.js
similarity index 80%
rename from internal/baseEach.js
rename to _baseEach.js
index 76cf1f2f4..01e9c423d 100644
--- a/internal/baseEach.js
+++ b/_baseEach.js
@@ -1,5 +1,5 @@
-import baseForOwn from './baseForOwn';
-import createBaseEach from './createBaseEach';
+import baseForOwn from './_baseForOwn';
+import createBaseEach from './_createBaseEach';
/**
* The base implementation of `_.forEach` without support for iteratee shorthands.
diff --git a/internal/baseEachRight.js b/_baseEachRight.js
similarity index 79%
rename from internal/baseEachRight.js
rename to _baseEachRight.js
index 8b100a6d6..dee5059ba 100644
--- a/internal/baseEachRight.js
+++ b/_baseEachRight.js
@@ -1,5 +1,5 @@
-import baseForOwnRight from './baseForOwnRight';
-import createBaseEach from './createBaseEach';
+import baseForOwnRight from './_baseForOwnRight';
+import createBaseEach from './_createBaseEach';
/**
* The base implementation of `_.forEachRight` without support for iteratee shorthands.
diff --git a/internal/baseEvery.js b/_baseEvery.js
similarity index 94%
rename from internal/baseEvery.js
rename to _baseEvery.js
index e978a4bec..8de3a4d89 100644
--- a/internal/baseEvery.js
+++ b/_baseEvery.js
@@ -1,4 +1,4 @@
-import baseEach from './baseEach';
+import baseEach from './_baseEach';
/**
* The base implementation of `_.every` without support for iteratee shorthands.
diff --git a/internal/baseExtremum.js b/_baseExtremum.js
similarity index 100%
rename from internal/baseExtremum.js
rename to _baseExtremum.js
diff --git a/internal/baseFill.js b/_baseFill.js
similarity index 91%
rename from internal/baseFill.js
rename to _baseFill.js
index 57e524501..f7e4c8cff 100644
--- a/internal/baseFill.js
+++ b/_baseFill.js
@@ -1,5 +1,5 @@
-import toInteger from '../toInteger';
-import toLength from '../toLength';
+import toInteger from './toInteger';
+import toLength from './toLength';
/**
* The base implementation of `_.fill` without an iteratee call guard.
diff --git a/internal/baseFilter.js b/_baseFilter.js
similarity index 93%
rename from internal/baseFilter.js
rename to _baseFilter.js
index 5855cb5d3..942c522e5 100644
--- a/internal/baseFilter.js
+++ b/_baseFilter.js
@@ -1,4 +1,4 @@
-import baseEach from './baseEach';
+import baseEach from './_baseEach';
/**
* The base implementation of `_.filter` without support for iteratee shorthands.
diff --git a/internal/baseFind.js b/_baseFind.js
similarity index 100%
rename from internal/baseFind.js
rename to _baseFind.js
diff --git a/internal/baseFindIndex.js b/_baseFindIndex.js
similarity index 100%
rename from internal/baseFindIndex.js
rename to _baseFindIndex.js
diff --git a/internal/baseFlatten.js b/_baseFlatten.js
similarity index 85%
rename from internal/baseFlatten.js
rename to _baseFlatten.js
index 4327be6e3..d668ae5b4 100644
--- a/internal/baseFlatten.js
+++ b/_baseFlatten.js
@@ -1,7 +1,7 @@
-import arrayPush from './arrayPush';
-import isArguments from '../isArguments';
-import isArray from '../isArray';
-import isArrayLikeObject from '../isArrayLikeObject';
+import arrayPush from './_arrayPush';
+import isArguments from './isArguments';
+import isArray from './isArray';
+import isArrayLikeObject from './isArrayLikeObject';
/**
* The base implementation of `_.flatten` with support for restricting flattening.
diff --git a/internal/baseFor.js b/_baseFor.js
similarity index 92%
rename from internal/baseFor.js
rename to _baseFor.js
index 5c642b7a8..8c300c8f7 100644
--- a/internal/baseFor.js
+++ b/_baseFor.js
@@ -1,4 +1,4 @@
-import createBaseFor from './createBaseFor';
+import createBaseFor from './_createBaseFor';
/**
* The base implementation of `baseForIn` and `baseForOwn` which iterates
diff --git a/internal/baseForIn.js b/_baseForIn.js
similarity index 86%
rename from internal/baseForIn.js
rename to _baseForIn.js
index f152367fe..5f9d91527 100644
--- a/internal/baseForIn.js
+++ b/_baseForIn.js
@@ -1,5 +1,5 @@
-import baseFor from './baseFor';
-import keysIn from '../keysIn';
+import baseFor from './_baseFor';
+import keysIn from './keysIn';
/**
* The base implementation of `_.forIn` without support for iteratee shorthands.
diff --git a/internal/baseForOwn.js b/_baseForOwn.js
similarity index 86%
rename from internal/baseForOwn.js
rename to _baseForOwn.js
index 4ec8880ea..002d298f8 100644
--- a/internal/baseForOwn.js
+++ b/_baseForOwn.js
@@ -1,5 +1,5 @@
-import baseFor from './baseFor';
-import keys from '../keys';
+import baseFor from './_baseFor';
+import keys from './keys';
/**
* The base implementation of `_.forOwn` without support for iteratee shorthands.
diff --git a/internal/baseForOwnRight.js b/_baseForOwnRight.js
similarity index 85%
rename from internal/baseForOwnRight.js
rename to _baseForOwnRight.js
index ad5fd8f04..d3287b382 100644
--- a/internal/baseForOwnRight.js
+++ b/_baseForOwnRight.js
@@ -1,5 +1,5 @@
-import baseForRight from './baseForRight';
-import keys from '../keys';
+import baseForRight from './_baseForRight';
+import keys from './keys';
/**
* The base implementation of `_.forOwnRight` without support for iteratee shorthands.
diff --git a/internal/baseForRight.js b/_baseForRight.js
similarity index 90%
rename from internal/baseForRight.js
rename to _baseForRight.js
index 2525791dd..31e303767 100644
--- a/internal/baseForRight.js
+++ b/_baseForRight.js
@@ -1,4 +1,4 @@
-import createBaseFor from './createBaseFor';
+import createBaseFor from './_createBaseFor';
/**
* This function is like `baseFor` except that it iterates over properties
diff --git a/internal/baseFunctions.js b/_baseFunctions.js
similarity index 85%
rename from internal/baseFunctions.js
rename to _baseFunctions.js
index ef2d79140..d860b7db7 100644
--- a/internal/baseFunctions.js
+++ b/_baseFunctions.js
@@ -1,5 +1,5 @@
-import arrayFilter from './arrayFilter';
-import isFunction from '../isFunction';
+import arrayFilter from './_arrayFilter';
+import isFunction from './isFunction';
/**
* The base implementation of `_.functions` which creates an array of
diff --git a/internal/baseGet.js b/_baseGet.js
similarity index 88%
rename from internal/baseGet.js
rename to _baseGet.js
index 4292ed916..e64234fbf 100644
--- a/internal/baseGet.js
+++ b/_baseGet.js
@@ -1,5 +1,5 @@
-import baseToPath from './baseToPath';
-import isKey from './isKey';
+import baseToPath from './_baseToPath';
+import isKey from './_isKey';
/**
* The base implementation of `_.get` without support for default values.
diff --git a/internal/baseHas.js b/_baseHas.js
similarity index 100%
rename from internal/baseHas.js
rename to _baseHas.js
diff --git a/internal/baseHasIn.js b/_baseHasIn.js
similarity index 100%
rename from internal/baseHasIn.js
rename to _baseHasIn.js
diff --git a/internal/baseInRange.js b/_baseInRange.js
similarity index 100%
rename from internal/baseInRange.js
rename to _baseInRange.js
diff --git a/internal/baseIndexOf.js b/_baseIndexOf.js
similarity index 94%
rename from internal/baseIndexOf.js
rename to _baseIndexOf.js
index f23611cbf..06452347a 100644
--- a/internal/baseIndexOf.js
+++ b/_baseIndexOf.js
@@ -1,4 +1,4 @@
-import indexOfNaN from './indexOfNaN';
+import indexOfNaN from './_indexOfNaN';
/**
* The base implementation of `_.indexOf` without `fromIndex` bounds checks.
diff --git a/internal/baseIntersection.js b/_baseIntersection.js
similarity index 86%
rename from internal/baseIntersection.js
rename to _baseIntersection.js
index 980087c60..d5a3ded07 100644
--- a/internal/baseIntersection.js
+++ b/_baseIntersection.js
@@ -1,9 +1,9 @@
-import SetCache from './SetCache';
-import arrayIncludes from './arrayIncludes';
-import arrayIncludesWith from './arrayIncludesWith';
-import arrayMap from './arrayMap';
-import baseUnary from './baseUnary';
-import cacheHas from './cacheHas';
+import SetCache from './_SetCache';
+import arrayIncludes from './_arrayIncludes';
+import arrayIncludesWith from './_arrayIncludesWith';
+import arrayMap from './_arrayMap';
+import baseUnary from './_baseUnary';
+import cacheHas from './_cacheHas';
/**
* The base implementation of methods like `_.intersection`, without support
diff --git a/_baseInverter.js b/_baseInverter.js
new file mode 100644
index 000000000..eef7f19ce
--- /dev/null
+++ b/_baseInverter.js
@@ -0,0 +1,21 @@
+import baseForOwn from './_baseForOwn';
+
+/**
+ * The base implementation of `_.invert` and `_.invertBy` which inverts
+ * `object` with values transformed by `iteratee` and set by `setter`.
+ *
+ * @private
+ * @param {Object} object The object to iterate over.
+ * @param {Function} setter The function to set `accumulator` values.
+ * @param {Function} iteratee The iteratee to transform values.
+ * @param {Object} accumulator The initial inverted object.
+ * @returns {Function} Returns `accumulator`.
+ */
+function baseInverter(object, setter, iteratee, accumulator) {
+ baseForOwn(object, function(value, key, object) {
+ setter(accumulator, iteratee(value), key, object);
+ });
+ return accumulator;
+}
+
+export default baseInverter;
diff --git a/internal/baseInvoke.js b/_baseInvoke.js
similarity index 80%
rename from internal/baseInvoke.js
rename to _baseInvoke.js
index c9d84ff25..e64cca0d0 100644
--- a/internal/baseInvoke.js
+++ b/_baseInvoke.js
@@ -1,8 +1,8 @@
-import apply from './apply';
-import baseToPath from './baseToPath';
-import isKey from './isKey';
-import last from '../last';
-import parent from './parent';
+import apply from './_apply';
+import baseToPath from './_baseToPath';
+import isKey from './_isKey';
+import last from './last';
+import parent from './_parent';
/**
* The base implementation of `_.invoke` without support for individual
diff --git a/internal/baseIsEqual.js b/_baseIsEqual.js
similarity index 88%
rename from internal/baseIsEqual.js
rename to _baseIsEqual.js
index 7f06bb1e8..d04dd52a7 100644
--- a/internal/baseIsEqual.js
+++ b/_baseIsEqual.js
@@ -1,6 +1,6 @@
-import baseIsEqualDeep from './baseIsEqualDeep';
-import isObject from '../isObject';
-import isObjectLike from '../isObjectLike';
+import baseIsEqualDeep from './_baseIsEqualDeep';
+import isObject from './isObject';
+import isObjectLike from './isObjectLike';
/**
* The base implementation of `_.isEqual` which supports partial comparisons
diff --git a/internal/baseIsEqualDeep.js b/_baseIsEqualDeep.js
similarity index 89%
rename from internal/baseIsEqualDeep.js
rename to _baseIsEqualDeep.js
index b6054bf83..37a8fe323 100644
--- a/internal/baseIsEqualDeep.js
+++ b/_baseIsEqualDeep.js
@@ -1,11 +1,11 @@
-import Stack from './Stack';
-import equalArrays from './equalArrays';
-import equalByTag from './equalByTag';
-import equalObjects from './equalObjects';
-import getTag from './getTag';
-import isArray from '../isArray';
-import isHostObject from './isHostObject';
-import isTypedArray from '../isTypedArray';
+import Stack from './_Stack';
+import equalArrays from './_equalArrays';
+import equalByTag from './_equalByTag';
+import equalObjects from './_equalObjects';
+import getTag from './_getTag';
+import isArray from './isArray';
+import isHostObject from './_isHostObject';
+import isTypedArray from './isTypedArray';
/** Used to compose bitmasks for comparison styles. */
var PARTIAL_COMPARE_FLAG = 2;
diff --git a/internal/baseIsMatch.js b/_baseIsMatch.js
similarity index 95%
rename from internal/baseIsMatch.js
rename to _baseIsMatch.js
index 86b0bc891..a0b0b84a7 100644
--- a/internal/baseIsMatch.js
+++ b/_baseIsMatch.js
@@ -1,5 +1,5 @@
-import Stack from './Stack';
-import baseIsEqual from './baseIsEqual';
+import Stack from './_Stack';
+import baseIsEqual from './_baseIsEqual';
/** Used to compose bitmasks for comparison styles. */
var UNORDERED_COMPARE_FLAG = 1,
diff --git a/internal/baseIteratee.js b/_baseIteratee.js
similarity index 72%
rename from internal/baseIteratee.js
rename to _baseIteratee.js
index 324184ba9..e8bd0aa28 100644
--- a/internal/baseIteratee.js
+++ b/_baseIteratee.js
@@ -1,8 +1,8 @@
-import baseMatches from './baseMatches';
-import baseMatchesProperty from './baseMatchesProperty';
-import identity from '../identity';
-import isArray from '../isArray';
-import property from '../property';
+import baseMatches from './_baseMatches';
+import baseMatchesProperty from './_baseMatchesProperty';
+import identity from './identity';
+import isArray from './isArray';
+import property from './property';
/**
* The base implementation of `_.iteratee`.
diff --git a/internal/baseKeys.js b/_baseKeys.js
similarity index 100%
rename from internal/baseKeys.js
rename to _baseKeys.js
diff --git a/internal/baseKeysIn.js b/_baseKeysIn.js
similarity index 91%
rename from internal/baseKeysIn.js
rename to _baseKeysIn.js
index 0b0979794..06f42f870 100644
--- a/internal/baseKeysIn.js
+++ b/_baseKeysIn.js
@@ -1,5 +1,5 @@
-import Reflect from './Reflect';
-import iteratorToArray from './iteratorToArray';
+import Reflect from './_Reflect';
+import iteratorToArray from './_iteratorToArray';
/** Used for built-in method references. */
var objectProto = Object.prototype;
diff --git a/internal/baseLodash.js b/_baseLodash.js
similarity index 100%
rename from internal/baseLodash.js
rename to _baseLodash.js
diff --git a/internal/baseMap.js b/_baseMap.js
similarity index 88%
rename from internal/baseMap.js
rename to _baseMap.js
index 3b7d357ee..a85bdd178 100644
--- a/internal/baseMap.js
+++ b/_baseMap.js
@@ -1,5 +1,5 @@
-import baseEach from './baseEach';
-import isArrayLike from '../isArrayLike';
+import baseEach from './_baseEach';
+import isArrayLike from './isArrayLike';
/**
* The base implementation of `_.map` without support for iteratee shorthands.
diff --git a/internal/baseMatches.js b/_baseMatches.js
similarity index 89%
rename from internal/baseMatches.js
rename to _baseMatches.js
index 93df4341d..b1d237be7 100644
--- a/internal/baseMatches.js
+++ b/_baseMatches.js
@@ -1,5 +1,5 @@
-import baseIsMatch from './baseIsMatch';
-import getMatchData from './getMatchData';
+import baseIsMatch from './_baseIsMatch';
+import getMatchData from './_getMatchData';
/**
* The base implementation of `_.matches` which doesn't clone `source`.
diff --git a/internal/baseMatchesProperty.js b/_baseMatchesProperty.js
similarity index 88%
rename from internal/baseMatchesProperty.js
rename to _baseMatchesProperty.js
index 0bec4280f..b7fe5b5de 100644
--- a/internal/baseMatchesProperty.js
+++ b/_baseMatchesProperty.js
@@ -1,6 +1,6 @@
-import baseIsEqual from './baseIsEqual';
-import get from '../get';
-import hasIn from '../hasIn';
+import baseIsEqual from './_baseIsEqual';
+import get from './get';
+import hasIn from './hasIn';
/** Used to compose bitmasks for comparison styles. */
var UNORDERED_COMPARE_FLAG = 1,
diff --git a/internal/baseMerge.js b/_baseMerge.js
similarity index 79%
rename from internal/baseMerge.js
rename to _baseMerge.js
index 1e99ca59f..388e059af 100644
--- a/internal/baseMerge.js
+++ b/_baseMerge.js
@@ -1,11 +1,11 @@
-import Stack from './Stack';
-import arrayEach from './arrayEach';
-import assignMergeValue from './assignMergeValue';
-import baseMergeDeep from './baseMergeDeep';
-import isArray from '../isArray';
-import isObject from '../isObject';
-import isTypedArray from '../isTypedArray';
-import keysIn from '../keysIn';
+import Stack from './_Stack';
+import arrayEach from './_arrayEach';
+import assignMergeValue from './_assignMergeValue';
+import baseMergeDeep from './_baseMergeDeep';
+import isArray from './isArray';
+import isObject from './isObject';
+import isTypedArray from './isTypedArray';
+import keysIn from './keysIn';
/**
* The base implementation of `_.merge` without support for multiple sources.
diff --git a/internal/baseMergeDeep.js b/_baseMergeDeep.js
similarity index 78%
rename from internal/baseMergeDeep.js
rename to _baseMergeDeep.js
index 76e766d6e..c1ad501fe 100644
--- a/internal/baseMergeDeep.js
+++ b/_baseMergeDeep.js
@@ -1,14 +1,14 @@
-import assignMergeValue from './assignMergeValue';
-import baseClone from './baseClone';
-import copyArray from './copyArray';
-import isArguments from '../isArguments';
-import isArray from '../isArray';
-import isArrayLikeObject from '../isArrayLikeObject';
-import isFunction from '../isFunction';
-import isObject from '../isObject';
-import isPlainObject from '../isPlainObject';
-import isTypedArray from '../isTypedArray';
-import toPlainObject from '../toPlainObject';
+import assignMergeValue from './_assignMergeValue';
+import baseClone from './_baseClone';
+import copyArray from './_copyArray';
+import isArguments from './isArguments';
+import isArray from './isArray';
+import isArrayLikeObject from './isArrayLikeObject';
+import isFunction from './isFunction';
+import isObject from './isObject';
+import isPlainObject from './isPlainObject';
+import isTypedArray from './isTypedArray';
+import toPlainObject from './toPlainObject';
/**
* A specialized version of `baseMerge` for arrays and objects which performs
@@ -27,7 +27,7 @@ import toPlainObject from '../toPlainObject';
function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
var objValue = object[key],
srcValue = source[key],
- stacked = stack.get(srcValue) || stack.get(objValue);
+ stacked = stack.get(srcValue);
if (stacked) {
assignMergeValue(object, key, stacked);
@@ -46,6 +46,7 @@ function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, sta
newValue = copyArray(objValue);
}
else {
+ isCommon = false;
newValue = baseClone(srcValue);
}
}
@@ -54,6 +55,7 @@ function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, sta
newValue = toPlainObject(objValue);
}
else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {
+ isCommon = false;
newValue = baseClone(srcValue);
}
else {
diff --git a/internal/baseOrderBy.js b/_baseOrderBy.js
similarity index 82%
rename from internal/baseOrderBy.js
rename to _baseOrderBy.js
index 41dc37556..f987cb183 100644
--- a/internal/baseOrderBy.js
+++ b/_baseOrderBy.js
@@ -1,8 +1,8 @@
-import arrayMap from './arrayMap';
-import baseIteratee from './baseIteratee';
-import baseMap from './baseMap';
-import baseSortBy from './baseSortBy';
-import compareMultiple from './compareMultiple';
+import arrayMap from './_arrayMap';
+import baseIteratee from './_baseIteratee';
+import baseMap from './_baseMap';
+import baseSortBy from './_baseSortBy';
+import compareMultiple from './_compareMultiple';
/**
* The base implementation of `_.orderBy` without param guards.
diff --git a/internal/basePick.js b/_basePick.js
similarity index 92%
rename from internal/basePick.js
rename to _basePick.js
index 95f1d145b..c942ef137 100644
--- a/internal/basePick.js
+++ b/_basePick.js
@@ -1,4 +1,4 @@
-import arrayReduce from './arrayReduce';
+import arrayReduce from './_arrayReduce';
/**
* The base implementation of `_.pick` without support for individual
diff --git a/internal/basePickBy.js b/_basePickBy.js
similarity index 92%
rename from internal/basePickBy.js
rename to _basePickBy.js
index 3b9fe8dbc..32efc66b5 100644
--- a/internal/basePickBy.js
+++ b/_basePickBy.js
@@ -1,4 +1,4 @@
-import baseForIn from './baseForIn';
+import baseForIn from './_baseForIn';
/**
* The base implementation of `_.pickBy` without support for iteratee shorthands.
diff --git a/internal/baseProperty.js b/_baseProperty.js
similarity index 100%
rename from internal/baseProperty.js
rename to _baseProperty.js
diff --git a/internal/basePropertyDeep.js b/_basePropertyDeep.js
similarity index 90%
rename from internal/basePropertyDeep.js
rename to _basePropertyDeep.js
index ae817578c..3913f638d 100644
--- a/internal/basePropertyDeep.js
+++ b/_basePropertyDeep.js
@@ -1,4 +1,4 @@
-import baseGet from './baseGet';
+import baseGet from './_baseGet';
/**
* A specialized version of `baseProperty` which supports deep paths.
diff --git a/internal/basePullAll.js b/_basePullAll.js
similarity index 86%
rename from internal/basePullAll.js
rename to _basePullAll.js
index 68c8e5a12..7f3cf3037 100644
--- a/internal/basePullAll.js
+++ b/_basePullAll.js
@@ -1,4 +1,4 @@
-import basePullAllBy from './basePullAllBy';
+import basePullAllBy from './_basePullAllBy';
/**
* The base implementation of `_.pullAll`.
diff --git a/internal/basePullAllBy.js b/_basePullAllBy.js
similarity index 93%
rename from internal/basePullAllBy.js
rename to _basePullAllBy.js
index fd08cd9e3..1a6ca9e6e 100644
--- a/internal/basePullAllBy.js
+++ b/_basePullAllBy.js
@@ -1,5 +1,5 @@
-import arrayMap from './arrayMap';
-import baseIndexOf from './baseIndexOf';
+import arrayMap from './_arrayMap';
+import baseIndexOf from './_baseIndexOf';
/** Used for built-in method references. */
var arrayProto = Array.prototype;
diff --git a/internal/basePullAt.js b/_basePullAt.js
similarity index 86%
rename from internal/basePullAt.js
rename to _basePullAt.js
index 93dcacb46..8f50662bd 100644
--- a/internal/basePullAt.js
+++ b/_basePullAt.js
@@ -1,8 +1,8 @@
-import baseToPath from './baseToPath';
-import isIndex from './isIndex';
-import isKey from './isKey';
-import last from '../last';
-import parent from './parent';
+import baseToPath from './_baseToPath';
+import isIndex from './_isIndex';
+import isKey from './_isKey';
+import last from './last';
+import parent from './_parent';
/** Used for built-in method references. */
var arrayProto = Array.prototype;
diff --git a/internal/baseRandom.js b/_baseRandom.js
similarity index 100%
rename from internal/baseRandom.js
rename to _baseRandom.js
diff --git a/internal/baseRange.js b/_baseRange.js
similarity index 100%
rename from internal/baseRange.js
rename to _baseRange.js
diff --git a/internal/baseReduce.js b/_baseReduce.js
similarity index 100%
rename from internal/baseReduce.js
rename to _baseReduce.js
diff --git a/internal/baseSet.js b/_baseSet.js
similarity index 85%
rename from internal/baseSet.js
rename to _baseSet.js
index e73dd5847..6b04422e0 100644
--- a/internal/baseSet.js
+++ b/_baseSet.js
@@ -1,8 +1,8 @@
-import assignValue from './assignValue';
-import baseToPath from './baseToPath';
-import isIndex from './isIndex';
-import isKey from './isKey';
-import isObject from '../isObject';
+import assignValue from './_assignValue';
+import baseToPath from './_baseToPath';
+import isIndex from './_isIndex';
+import isKey from './_isKey';
+import isObject from './isObject';
/**
* The base implementation of `_.set`.
diff --git a/internal/baseSetData.js b/_baseSetData.js
similarity index 84%
rename from internal/baseSetData.js
rename to _baseSetData.js
index 1fd920eef..f91346443 100644
--- a/internal/baseSetData.js
+++ b/_baseSetData.js
@@ -1,5 +1,5 @@
-import identity from '../identity';
-import metaMap from './metaMap';
+import identity from './identity';
+import metaMap from './_metaMap';
/**
* The base implementation of `setData` without support for hot loop detection.
diff --git a/internal/baseSlice.js b/_baseSlice.js
similarity index 100%
rename from internal/baseSlice.js
rename to _baseSlice.js
diff --git a/internal/baseSome.js b/_baseSome.js
similarity index 94%
rename from internal/baseSome.js
rename to _baseSome.js
index f33f6ea2c..def0a3203 100644
--- a/internal/baseSome.js
+++ b/_baseSome.js
@@ -1,4 +1,4 @@
-import baseEach from './baseEach';
+import baseEach from './_baseEach';
/**
* The base implementation of `_.some` without support for iteratee shorthands.
diff --git a/internal/baseSortBy.js b/_baseSortBy.js
similarity index 100%
rename from internal/baseSortBy.js
rename to _baseSortBy.js
diff --git a/internal/baseSortedIndex.js b/_baseSortedIndex.js
similarity index 93%
rename from internal/baseSortedIndex.js
rename to _baseSortedIndex.js
index 4e19323ff..e3718f61a 100644
--- a/internal/baseSortedIndex.js
+++ b/_baseSortedIndex.js
@@ -1,5 +1,5 @@
-import baseSortedIndexBy from './baseSortedIndexBy';
-import identity from '../identity';
+import baseSortedIndexBy from './_baseSortedIndexBy';
+import identity from './identity';
/** Used as references for the maximum length and index of an array. */
var MAX_ARRAY_LENGTH = 4294967295,
diff --git a/internal/baseSortedIndexBy.js b/_baseSortedIndexBy.js
similarity index 100%
rename from internal/baseSortedIndexBy.js
rename to _baseSortedIndexBy.js
diff --git a/internal/baseSortedUniq.js b/_baseSortedUniq.js
similarity index 84%
rename from internal/baseSortedUniq.js
rename to _baseSortedUniq.js
index 086c6b8a9..5428bd8a8 100644
--- a/internal/baseSortedUniq.js
+++ b/_baseSortedUniq.js
@@ -1,4 +1,4 @@
-import baseSortedUniqBy from './baseSortedUniqBy';
+import baseSortedUniqBy from './_baseSortedUniqBy';
/**
* The base implementation of `_.sortedUniq`.
diff --git a/internal/baseSortedUniqBy.js b/_baseSortedUniqBy.js
similarity index 97%
rename from internal/baseSortedUniqBy.js
rename to _baseSortedUniqBy.js
index 71e552e51..8484197be 100644
--- a/internal/baseSortedUniqBy.js
+++ b/_baseSortedUniqBy.js
@@ -1,4 +1,4 @@
-import eq from '../eq';
+import eq from './eq';
/**
* The base implementation of `_.sortedUniqBy` without support for iteratee
diff --git a/internal/baseSum.js b/_baseSum.js
similarity index 94%
rename from internal/baseSum.js
rename to _baseSum.js
index c0e4ea5e3..3ef08537b 100644
--- a/internal/baseSum.js
+++ b/_baseSum.js
@@ -17,7 +17,7 @@ function baseSum(array, iteratee) {
result = result === undefined ? current : (result + current);
}
}
- return result;
+ return length ? result : 0;
}
export default baseSum;
diff --git a/internal/baseTimes.js b/_baseTimes.js
similarity index 100%
rename from internal/baseTimes.js
rename to _baseTimes.js
diff --git a/internal/baseToPairs.js b/_baseToPairs.js
similarity index 93%
rename from internal/baseToPairs.js
rename to _baseToPairs.js
index ed98cf1cb..68eb14b63 100644
--- a/internal/baseToPairs.js
+++ b/_baseToPairs.js
@@ -1,4 +1,4 @@
-import arrayMap from './arrayMap';
+import arrayMap from './_arrayMap';
/**
* The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
diff --git a/internal/baseToPath.js b/_baseToPath.js
similarity index 81%
rename from internal/baseToPath.js
rename to _baseToPath.js
index de15bc6aa..a7ccdd7b1 100644
--- a/internal/baseToPath.js
+++ b/_baseToPath.js
@@ -1,5 +1,5 @@
-import isArray from '../isArray';
-import stringToPath from './stringToPath';
+import isArray from './isArray';
+import stringToPath from './_stringToPath';
/**
* The base implementation of `_.toPath` which only converts `value` to a
diff --git a/internal/baseUnary.js b/_baseUnary.js
similarity index 100%
rename from internal/baseUnary.js
rename to _baseUnary.js
diff --git a/internal/baseUniq.js b/_baseUniq.js
similarity index 86%
rename from internal/baseUniq.js
rename to _baseUniq.js
index 17de7c2b0..40e126c75 100644
--- a/internal/baseUniq.js
+++ b/_baseUniq.js
@@ -1,9 +1,9 @@
-import SetCache from './SetCache';
-import arrayIncludes from './arrayIncludes';
-import arrayIncludesWith from './arrayIncludesWith';
-import cacheHas from './cacheHas';
-import createSet from './createSet';
-import setToArray from './setToArray';
+import SetCache from './_SetCache';
+import arrayIncludes from './_arrayIncludes';
+import arrayIncludesWith from './_arrayIncludesWith';
+import cacheHas from './_cacheHas';
+import createSet from './_createSet';
+import setToArray from './_setToArray';
/** Used as the size to enable large array optimizations. */
var LARGE_ARRAY_SIZE = 200;
diff --git a/internal/baseUnset.js b/_baseUnset.js
similarity index 77%
rename from internal/baseUnset.js
rename to _baseUnset.js
index b1c740231..5743c1188 100644
--- a/internal/baseUnset.js
+++ b/_baseUnset.js
@@ -1,8 +1,8 @@
-import baseToPath from './baseToPath';
-import has from '../has';
-import isKey from './isKey';
-import last from '../last';
-import parent from './parent';
+import baseToPath from './_baseToPath';
+import has from './has';
+import isKey from './_isKey';
+import last from './last';
+import parent from './_parent';
/**
* The base implementation of `_.unset`.
diff --git a/internal/baseValues.js b/_baseValues.js
similarity index 93%
rename from internal/baseValues.js
rename to _baseValues.js
index 37a526e5d..b4d657a9b 100644
--- a/internal/baseValues.js
+++ b/_baseValues.js
@@ -1,4 +1,4 @@
-import arrayMap from './arrayMap';
+import arrayMap from './_arrayMap';
/**
* The base implementation of `_.values` and `_.valuesIn` which creates an
diff --git a/internal/baseWhile.js b/_baseWhile.js
similarity index 95%
rename from internal/baseWhile.js
rename to _baseWhile.js
index 045d539db..f480e753c 100644
--- a/internal/baseWhile.js
+++ b/_baseWhile.js
@@ -1,4 +1,4 @@
-import baseSlice from './baseSlice';
+import baseSlice from './_baseSlice';
/**
* The base implementation of methods like `_.dropWhile` and `_.takeWhile`
diff --git a/internal/baseWrapperValue.js b/_baseWrapperValue.js
similarity index 85%
rename from internal/baseWrapperValue.js
rename to _baseWrapperValue.js
index fad9d936f..95c652714 100644
--- a/internal/baseWrapperValue.js
+++ b/_baseWrapperValue.js
@@ -1,6 +1,6 @@
-import LazyWrapper from './LazyWrapper';
-import arrayPush from './arrayPush';
-import arrayReduce from './arrayReduce';
+import LazyWrapper from './_LazyWrapper';
+import arrayPush from './_arrayPush';
+import arrayReduce from './_arrayReduce';
/**
* The base implementation of `wrapperValue` which returns the result of
diff --git a/internal/baseXor.js b/_baseXor.js
similarity index 87%
rename from internal/baseXor.js
rename to _baseXor.js
index 96e844191..7cf0851b7 100644
--- a/internal/baseXor.js
+++ b/_baseXor.js
@@ -1,6 +1,6 @@
-import arrayPush from './arrayPush';
-import baseDifference from './baseDifference';
-import baseUniq from './baseUniq';
+import arrayPush from './_arrayPush';
+import baseDifference from './_baseDifference';
+import baseUniq from './_baseUniq';
/**
* The base implementation of methods like `_.xor`, without support for
diff --git a/_baseZipObject.js b/_baseZipObject.js
new file mode 100644
index 000000000..98f29af3a
--- /dev/null
+++ b/_baseZipObject.js
@@ -0,0 +1,22 @@
+/**
+ * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
+ *
+ * @private
+ * @param {Array} props The property names.
+ * @param {Array} values The property values.
+ * @param {Function} assignFunc The function to assign values.
+ * @returns {Object} Returns the new object.
+ */
+function baseZipObject(props, values, assignFunc) {
+ var index = -1,
+ length = props.length,
+ valsLength = values.length,
+ result = {};
+
+ while (++index < length) {
+ assignFunc(result, props[index], index < valsLength ? values[index] : undefined);
+ }
+ return result;
+}
+
+export default baseZipObject;
diff --git a/internal/cacheHas.js b/_cacheHas.js
similarity index 94%
rename from internal/cacheHas.js
rename to _cacheHas.js
index a3d401ff6..c5761e636 100644
--- a/internal/cacheHas.js
+++ b/_cacheHas.js
@@ -1,4 +1,4 @@
-import isKeyable from './isKeyable';
+import isKeyable from './_isKeyable';
/** Used to stand-in for `undefined` hash values. */
var HASH_UNDEFINED = '__lodash_hash_undefined__';
diff --git a/internal/cachePush.js b/_cachePush.js
similarity index 93%
rename from internal/cachePush.js
rename to _cachePush.js
index 27b972253..ccfd13b4d 100644
--- a/internal/cachePush.js
+++ b/_cachePush.js
@@ -1,4 +1,4 @@
-import isKeyable from './isKeyable';
+import isKeyable from './_isKeyable';
/** Used to stand-in for `undefined` hash values. */
var HASH_UNDEFINED = '__lodash_hash_undefined__';
diff --git a/internal/charsEndIndex.js b/_charsEndIndex.js
similarity index 92%
rename from internal/charsEndIndex.js
rename to _charsEndIndex.js
index 2a8f730ad..79590a0e2 100644
--- a/internal/charsEndIndex.js
+++ b/_charsEndIndex.js
@@ -1,4 +1,4 @@
-import baseIndexOf from './baseIndexOf';
+import baseIndexOf from './_baseIndexOf';
/**
* Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol
diff --git a/internal/charsStartIndex.js b/_charsStartIndex.js
similarity index 93%
rename from internal/charsStartIndex.js
rename to _charsStartIndex.js
index 6ceb43491..301a82491 100644
--- a/internal/charsStartIndex.js
+++ b/_charsStartIndex.js
@@ -1,4 +1,4 @@
-import baseIndexOf from './baseIndexOf';
+import baseIndexOf from './_baseIndexOf';
/**
* Used by `_.trim` and `_.trimStart` to get the index of the first string symbol
diff --git a/internal/checkGlobal.js b/_checkGlobal.js
similarity index 100%
rename from internal/checkGlobal.js
rename to _checkGlobal.js
diff --git a/internal/cloneBuffer.js b/_cloneBuffer.js
similarity index 90%
rename from internal/cloneBuffer.js
rename to _cloneBuffer.js
index 5e56ba0ac..24986f3c6 100644
--- a/internal/cloneBuffer.js
+++ b/_cloneBuffer.js
@@ -1,4 +1,4 @@
-import Uint8Array from './Uint8Array';
+import Uint8Array from './_Uint8Array';
/**
* Creates a clone of `buffer`.
diff --git a/internal/cloneMap.js b/_cloneMap.js
similarity index 69%
rename from internal/cloneMap.js
rename to _cloneMap.js
index cb54bdaa1..c3defb6ae 100644
--- a/internal/cloneMap.js
+++ b/_cloneMap.js
@@ -1,6 +1,6 @@
-import addMapEntry from './addMapEntry';
-import arrayReduce from './arrayReduce';
-import mapToArray from './mapToArray';
+import addMapEntry from './_addMapEntry';
+import arrayReduce from './_arrayReduce';
+import mapToArray from './_mapToArray';
/**
* Creates a clone of `map`.
diff --git a/internal/cloneRegExp.js b/_cloneRegExp.js
similarity index 100%
rename from internal/cloneRegExp.js
rename to _cloneRegExp.js
diff --git a/internal/cloneSet.js b/_cloneSet.js
similarity index 69%
rename from internal/cloneSet.js
rename to _cloneSet.js
index 44c6f7c48..416882635 100644
--- a/internal/cloneSet.js
+++ b/_cloneSet.js
@@ -1,6 +1,6 @@
-import addSetEntry from './addSetEntry';
-import arrayReduce from './arrayReduce';
-import setToArray from './setToArray';
+import addSetEntry from './_addSetEntry';
+import arrayReduce from './_arrayReduce';
+import setToArray from './_setToArray';
/**
* Creates a clone of `set`.
diff --git a/internal/cloneSymbol.js b/_cloneSymbol.js
similarity index 93%
rename from internal/cloneSymbol.js
rename to _cloneSymbol.js
index 4924db27c..597c83cb3 100644
--- a/internal/cloneSymbol.js
+++ b/_cloneSymbol.js
@@ -1,4 +1,4 @@
-import Symbol from './Symbol';
+import Symbol from './_Symbol';
/** Used to convert symbols to primitives and strings. */
var symbolProto = Symbol ? Symbol.prototype : undefined,
diff --git a/internal/cloneTypedArray.js b/_cloneTypedArray.js
similarity index 91%
rename from internal/cloneTypedArray.js
rename to _cloneTypedArray.js
index 95c2c40ee..ae15df170 100644
--- a/internal/cloneTypedArray.js
+++ b/_cloneTypedArray.js
@@ -1,4 +1,4 @@
-import cloneBuffer from './cloneBuffer';
+import cloneBuffer from './_cloneBuffer';
/**
* Creates a clone of `typedArray`.
diff --git a/internal/compareAscending.js b/_compareAscending.js
similarity index 100%
rename from internal/compareAscending.js
rename to _compareAscending.js
diff --git a/internal/compareMultiple.js b/_compareMultiple.js
similarity index 96%
rename from internal/compareMultiple.js
rename to _compareMultiple.js
index 323c24216..7e2887b7a 100644
--- a/internal/compareMultiple.js
+++ b/_compareMultiple.js
@@ -1,4 +1,4 @@
-import compareAscending from './compareAscending';
+import compareAscending from './_compareAscending';
/**
* Used by `_.orderBy` to compare multiple properties of a value to another
diff --git a/internal/composeArgs.js b/_composeArgs.js
similarity index 100%
rename from internal/composeArgs.js
rename to _composeArgs.js
diff --git a/internal/composeArgsRight.js b/_composeArgsRight.js
similarity index 100%
rename from internal/composeArgsRight.js
rename to _composeArgsRight.js
diff --git a/internal/copyArray.js b/_copyArray.js
similarity index 100%
rename from internal/copyArray.js
rename to _copyArray.js
diff --git a/internal/copyObject.js b/_copyObject.js
similarity index 89%
rename from internal/copyObject.js
rename to _copyObject.js
index 1e7050819..3a22a6394 100644
--- a/internal/copyObject.js
+++ b/_copyObject.js
@@ -1,4 +1,4 @@
-import copyObjectWith from './copyObjectWith';
+import copyObjectWith from './_copyObjectWith';
/**
* Copies properties of `source` to `object`.
diff --git a/internal/copyObjectWith.js b/_copyObjectWith.js
similarity index 95%
rename from internal/copyObjectWith.js
rename to _copyObjectWith.js
index 46adee9b3..faf39e4a0 100644
--- a/internal/copyObjectWith.js
+++ b/_copyObjectWith.js
@@ -1,4 +1,4 @@
-import assignValue from './assignValue';
+import assignValue from './_assignValue';
/**
* This function is like `copyObject` except that it accepts a function to
diff --git a/internal/copySymbols.js b/_copySymbols.js
similarity index 82%
rename from internal/copySymbols.js
rename to _copySymbols.js
index 854798050..54da1b6d1 100644
--- a/internal/copySymbols.js
+++ b/_copySymbols.js
@@ -1,5 +1,5 @@
-import copyObject from './copyObject';
-import getSymbols from './getSymbols';
+import copyObject from './_copyObject';
+import getSymbols from './_getSymbols';
/**
* Copies own symbol properties of `source` to `object`.
diff --git a/_createAggregator.js b/_createAggregator.js
new file mode 100644
index 000000000..168b7f298
--- /dev/null
+++ b/_createAggregator.js
@@ -0,0 +1,23 @@
+import arrayAggregator from './_arrayAggregator';
+import baseAggregator from './_baseAggregator';
+import baseIteratee from './_baseIteratee';
+import isArray from './isArray';
+
+/**
+ * Creates a function like `_.groupBy`.
+ *
+ * @private
+ * @param {Function} setter The function to set accumulator values.
+ * @param {Function} [initializer] The accumulator object initializer.
+ * @returns {Function} Returns the new aggregator function.
+ */
+function createAggregator(setter, initializer) {
+ return function(collection, iteratee) {
+ var func = isArray(collection) ? arrayAggregator : baseAggregator,
+ accumulator = initializer ? initializer() : {};
+
+ return func(collection, setter, baseIteratee(iteratee), accumulator);
+ };
+}
+
+export default createAggregator;
diff --git a/internal/createAssigner.js b/_createAssigner.js
similarity index 92%
rename from internal/createAssigner.js
rename to _createAssigner.js
index b3e62f1dc..9efc8ed99 100644
--- a/internal/createAssigner.js
+++ b/_createAssigner.js
@@ -1,5 +1,5 @@
-import isIterateeCall from './isIterateeCall';
-import rest from '../rest';
+import isIterateeCall from './_isIterateeCall';
+import rest from './rest';
/**
* Creates a function like `_.assign`.
diff --git a/internal/createBaseEach.js b/_createBaseEach.js
similarity index 95%
rename from internal/createBaseEach.js
rename to _createBaseEach.js
index f3b527edb..b996be35a 100644
--- a/internal/createBaseEach.js
+++ b/_createBaseEach.js
@@ -1,4 +1,4 @@
-import isArrayLike from '../isArrayLike';
+import isArrayLike from './isArrayLike';
/**
* Creates a `baseEach` or `baseEachRight` function.
diff --git a/internal/createBaseFor.js b/_createBaseFor.js
similarity index 100%
rename from internal/createBaseFor.js
rename to _createBaseFor.js
diff --git a/internal/createBaseWrapper.js b/_createBaseWrapper.js
similarity index 90%
rename from internal/createBaseWrapper.js
rename to _createBaseWrapper.js
index 6693eaafa..90df28ff4 100644
--- a/internal/createBaseWrapper.js
+++ b/_createBaseWrapper.js
@@ -1,5 +1,5 @@
-import createCtorWrapper from './createCtorWrapper';
-import root from './root';
+import createCtorWrapper from './_createCtorWrapper';
+import root from './_root';
/** Used to compose bitmasks for wrapper metadata. */
var BIND_FLAG = 1;
diff --git a/internal/createCaseFirst.js b/_createCaseFirst.js
similarity index 93%
rename from internal/createCaseFirst.js
rename to _createCaseFirst.js
index b6d203376..68dbe741d 100644
--- a/internal/createCaseFirst.js
+++ b/_createCaseFirst.js
@@ -1,5 +1,5 @@
-import stringToArray from './stringToArray';
-import toString from '../toString';
+import stringToArray from './_stringToArray';
+import toString from './toString';
/** Used to compose unicode character classes. */
var rsAstralRange = '\\ud800-\\udfff',
diff --git a/internal/createCompounder.js b/_createCompounder.js
similarity index 77%
rename from internal/createCompounder.js
rename to _createCompounder.js
index 6178cdab3..69e511fa5 100644
--- a/internal/createCompounder.js
+++ b/_createCompounder.js
@@ -1,6 +1,6 @@
-import arrayReduce from './arrayReduce';
-import deburr from '../deburr';
-import words from '../words';
+import arrayReduce from './_arrayReduce';
+import deburr from './deburr';
+import words from './words';
/**
* Creates a function like `_.camelCase`.
diff --git a/internal/createCtorWrapper.js b/_createCtorWrapper.js
similarity index 94%
rename from internal/createCtorWrapper.js
rename to _createCtorWrapper.js
index 331cd0f08..132991941 100644
--- a/internal/createCtorWrapper.js
+++ b/_createCtorWrapper.js
@@ -1,5 +1,5 @@
-import baseCreate from './baseCreate';
-import isObject from '../isObject';
+import baseCreate from './_baseCreate';
+import isObject from './isObject';
/**
* Creates a function that produces an instance of `Ctor` regardless of
diff --git a/internal/createCurryWrapper.js b/_createCurryWrapper.js
similarity index 80%
rename from internal/createCurryWrapper.js
rename to _createCurryWrapper.js
index 1fb8b1f86..4b396c6b7 100644
--- a/internal/createCurryWrapper.js
+++ b/_createCurryWrapper.js
@@ -1,9 +1,9 @@
-import apply from './apply';
-import createCtorWrapper from './createCtorWrapper';
-import createHybridWrapper from './createHybridWrapper';
-import createRecurryWrapper from './createRecurryWrapper';
-import replaceHolders from './replaceHolders';
-import root from './root';
+import apply from './_apply';
+import createCtorWrapper from './_createCtorWrapper';
+import createHybridWrapper from './_createHybridWrapper';
+import createRecurryWrapper from './_createRecurryWrapper';
+import replaceHolders from './_replaceHolders';
+import root from './_root';
/**
* Creates a function that wraps `func` to enable currying.
diff --git a/internal/createFlow.js b/_createFlow.js
similarity index 88%
rename from internal/createFlow.js
rename to _createFlow.js
index dd0371a58..8f8765bbd 100644
--- a/internal/createFlow.js
+++ b/_createFlow.js
@@ -1,10 +1,10 @@
-import LodashWrapper from './LodashWrapper';
-import baseFlatten from './baseFlatten';
-import getData from './getData';
-import getFuncName from './getFuncName';
-import isArray from '../isArray';
-import isLaziable from './isLaziable';
-import rest from '../rest';
+import LodashWrapper from './_LodashWrapper';
+import baseFlatten from './_baseFlatten';
+import getData from './_getData';
+import getFuncName from './_getFuncName';
+import isArray from './isArray';
+import isLaziable from './_isLaziable';
+import rest from './rest';
/** Used to compose bitmasks for wrapper metadata. */
var CURRY_FLAG = 8,
diff --git a/internal/createHybridWrapper.js b/_createHybridWrapper.js
similarity index 89%
rename from internal/createHybridWrapper.js
rename to _createHybridWrapper.js
index be81ece05..b6be32937 100644
--- a/internal/createHybridWrapper.js
+++ b/_createHybridWrapper.js
@@ -1,10 +1,10 @@
-import composeArgs from './composeArgs';
-import composeArgsRight from './composeArgsRight';
-import createCtorWrapper from './createCtorWrapper';
-import createRecurryWrapper from './createRecurryWrapper';
-import reorder from './reorder';
-import replaceHolders from './replaceHolders';
-import root from './root';
+import composeArgs from './_composeArgs';
+import composeArgsRight from './_composeArgsRight';
+import createCtorWrapper from './_createCtorWrapper';
+import createRecurryWrapper from './_createRecurryWrapper';
+import reorder from './_reorder';
+import replaceHolders from './_replaceHolders';
+import root from './_root';
/** Used to compose bitmasks for wrapper metadata. */
var BIND_FLAG = 1,
diff --git a/_createInverter.js b/_createInverter.js
new file mode 100644
index 000000000..9c86e9fd9
--- /dev/null
+++ b/_createInverter.js
@@ -0,0 +1,17 @@
+import baseInverter from './_baseInverter';
+
+/**
+ * Creates a function like `_.invertBy`.
+ *
+ * @private
+ * @param {Function} setter The function to set accumulator values.
+ * @param {Function} toIteratee The function to resolve iteratees.
+ * @returns {Function} Returns the new inverter function.
+ */
+function createInverter(setter, toIteratee) {
+ return function(object, iteratee) {
+ return baseInverter(object, setter, toIteratee(iteratee), {});
+ };
+}
+
+export default createInverter;
diff --git a/internal/createOver.js b/_createOver.js
similarity index 75%
rename from internal/createOver.js
rename to _createOver.js
index 0722c595e..c177d6f08 100644
--- a/internal/createOver.js
+++ b/_createOver.js
@@ -1,8 +1,8 @@
-import apply from './apply';
-import arrayMap from './arrayMap';
-import baseFlatten from './baseFlatten';
-import baseIteratee from './baseIteratee';
-import rest from '../rest';
+import apply from './_apply';
+import arrayMap from './_arrayMap';
+import baseFlatten from './_baseFlatten';
+import baseIteratee from './_baseIteratee';
+import rest from './rest';
/**
* Creates a function like `_.over`.
diff --git a/internal/createPadding.js b/_createPadding.js
similarity index 91%
rename from internal/createPadding.js
rename to _createPadding.js
index f3285bcd5..1a5d41b5e 100644
--- a/internal/createPadding.js
+++ b/_createPadding.js
@@ -1,7 +1,7 @@
-import repeat from '../repeat';
-import stringSize from './stringSize';
-import stringToArray from './stringToArray';
-import toInteger from '../toInteger';
+import repeat from './repeat';
+import stringSize from './_stringSize';
+import stringToArray from './_stringToArray';
+import toInteger from './toInteger';
/** Used to compose unicode character classes. */
var rsAstralRange = '\\ud800-\\udfff',
diff --git a/internal/createPartialWrapper.js b/_createPartialWrapper.js
similarity index 92%
rename from internal/createPartialWrapper.js
rename to _createPartialWrapper.js
index 42e2b0d67..fb1940dff 100644
--- a/internal/createPartialWrapper.js
+++ b/_createPartialWrapper.js
@@ -1,6 +1,6 @@
-import apply from './apply';
-import createCtorWrapper from './createCtorWrapper';
-import root from './root';
+import apply from './_apply';
+import createCtorWrapper from './_createCtorWrapper';
+import root from './_root';
/** Used to compose bitmasks for wrapper metadata. */
var BIND_FLAG = 1;
diff --git a/internal/createRange.js b/_createRange.js
similarity index 86%
rename from internal/createRange.js
rename to _createRange.js
index b26c7670c..0d94df11f 100644
--- a/internal/createRange.js
+++ b/_createRange.js
@@ -1,6 +1,6 @@
-import baseRange from './baseRange';
-import isIterateeCall from './isIterateeCall';
-import toNumber from '../toNumber';
+import baseRange from './_baseRange';
+import isIterateeCall from './_isIterateeCall';
+import toNumber from './toNumber';
/**
* Creates a `_.range` or `_.rangeRight` function.
diff --git a/internal/createRecurryWrapper.js b/_createRecurryWrapper.js
similarity index 94%
rename from internal/createRecurryWrapper.js
rename to _createRecurryWrapper.js
index 127dfdb9a..7a8d98a25 100644
--- a/internal/createRecurryWrapper.js
+++ b/_createRecurryWrapper.js
@@ -1,6 +1,6 @@
-import copyArray from './copyArray';
-import isLaziable from './isLaziable';
-import setData from './setData';
+import copyArray from './_copyArray';
+import isLaziable from './_isLaziable';
+import setData from './_setData';
/** Used to compose bitmasks for wrapper metadata. */
var BIND_FLAG = 1,
diff --git a/internal/createRound.js b/_createRound.js
similarity index 88%
rename from internal/createRound.js
rename to _createRound.js
index a197b70e2..f0efe5f0e 100644
--- a/internal/createRound.js
+++ b/_createRound.js
@@ -1,6 +1,6 @@
-import toInteger from '../toInteger';
-import toNumber from '../toNumber';
-import toString from '../toString';
+import toInteger from './toInteger';
+import toNumber from './toNumber';
+import toString from './toString';
/**
* Creates a function like `_.round`.
diff --git a/internal/createSet.js b/_createSet.js
similarity index 84%
rename from internal/createSet.js
rename to _createSet.js
index 63536c8d8..a2f2afc68 100644
--- a/internal/createSet.js
+++ b/_createSet.js
@@ -1,5 +1,5 @@
-import Set from './Set';
-import noop from '../noop';
+import Set from './_Set';
+import noop from './noop';
/**
* Creates a set of `values`.
diff --git a/internal/createWrapper.js b/_createWrapper.js
similarity index 88%
rename from internal/createWrapper.js
rename to _createWrapper.js
index e5ba76744..8db83b9ca 100644
--- a/internal/createWrapper.js
+++ b/_createWrapper.js
@@ -1,12 +1,12 @@
-import baseSetData from './baseSetData';
-import createBaseWrapper from './createBaseWrapper';
-import createCurryWrapper from './createCurryWrapper';
-import createHybridWrapper from './createHybridWrapper';
-import createPartialWrapper from './createPartialWrapper';
-import getData from './getData';
-import mergeData from './mergeData';
-import setData from './setData';
-import toInteger from '../toInteger';
+import baseSetData from './_baseSetData';
+import createBaseWrapper from './_createBaseWrapper';
+import createCurryWrapper from './_createCurryWrapper';
+import createHybridWrapper from './_createHybridWrapper';
+import createPartialWrapper from './_createPartialWrapper';
+import getData from './_getData';
+import mergeData from './_mergeData';
+import setData from './_setData';
+import toInteger from './toInteger';
/** Used to compose bitmasks for wrapper metadata. */
var BIND_FLAG = 1,
diff --git a/internal/deburrLetter.js b/_deburrLetter.js
similarity index 100%
rename from internal/deburrLetter.js
rename to _deburrLetter.js
diff --git a/internal/equalArrays.js b/_equalArrays.js
similarity index 98%
rename from internal/equalArrays.js
rename to _equalArrays.js
index 76f8f302b..ff975ccee 100644
--- a/internal/equalArrays.js
+++ b/_equalArrays.js
@@ -1,4 +1,4 @@
-import arraySome from './arraySome';
+import arraySome from './_arraySome';
/** Used to compose bitmasks for comparison styles. */
var UNORDERED_COMPARE_FLAG = 1,
diff --git a/internal/equalByTag.js b/_equalByTag.js
similarity index 95%
rename from internal/equalByTag.js
rename to _equalByTag.js
index 1de50e844..005e34a49 100644
--- a/internal/equalByTag.js
+++ b/_equalByTag.js
@@ -1,7 +1,7 @@
-import Symbol from './Symbol';
-import Uint8Array from './Uint8Array';
-import mapToArray from './mapToArray';
-import setToArray from './setToArray';
+import Symbol from './_Symbol';
+import Uint8Array from './_Uint8Array';
+import mapToArray from './_mapToArray';
+import setToArray from './_setToArray';
/** Used to compose bitmasks for comparison styles. */
var UNORDERED_COMPARE_FLAG = 1,
diff --git a/internal/equalObjects.js b/_equalObjects.js
similarity index 97%
rename from internal/equalObjects.js
rename to _equalObjects.js
index 4916ea733..7511bb2dc 100644
--- a/internal/equalObjects.js
+++ b/_equalObjects.js
@@ -1,5 +1,5 @@
-import baseHas from './baseHas';
-import keys from '../keys';
+import baseHas from './_baseHas';
+import keys from './keys';
/** Used to compose bitmasks for comparison styles. */
var PARTIAL_COMPARE_FLAG = 2;
diff --git a/internal/escapeHtmlChar.js b/_escapeHtmlChar.js
similarity index 100%
rename from internal/escapeHtmlChar.js
rename to _escapeHtmlChar.js
diff --git a/internal/escapeStringChar.js b/_escapeStringChar.js
similarity index 100%
rename from internal/escapeStringChar.js
rename to _escapeStringChar.js
diff --git a/internal/getData.js b/_getData.js
similarity index 80%
rename from internal/getData.js
rename to _getData.js
index ab01f2379..d598853a9 100644
--- a/internal/getData.js
+++ b/_getData.js
@@ -1,5 +1,5 @@
-import metaMap from './metaMap';
-import noop from '../noop';
+import metaMap from './_metaMap';
+import noop from './noop';
/**
* Gets metadata for `func`.
diff --git a/internal/getFuncName.js b/_getFuncName.js
similarity index 94%
rename from internal/getFuncName.js
rename to _getFuncName.js
index 43bca34cd..410468b97 100644
--- a/internal/getFuncName.js
+++ b/_getFuncName.js
@@ -1,4 +1,4 @@
-import realNames from './realNames';
+import realNames from './_realNames';
/** Used for built-in method references. */
var objectProto = Object.prototype;
diff --git a/internal/getLength.js b/_getLength.js
similarity index 89%
rename from internal/getLength.js
rename to _getLength.js
index b4fff076b..223a94577 100644
--- a/internal/getLength.js
+++ b/_getLength.js
@@ -1,4 +1,4 @@
-import baseProperty from './baseProperty';
+import baseProperty from './_baseProperty';
/**
* Gets the "length" property value of `object`.
diff --git a/internal/getMatchData.js b/_getMatchData.js
similarity index 82%
rename from internal/getMatchData.js
rename to _getMatchData.js
index bb5124708..de84bb721 100644
--- a/internal/getMatchData.js
+++ b/_getMatchData.js
@@ -1,5 +1,5 @@
-import isStrictComparable from './isStrictComparable';
-import toPairs from '../toPairs';
+import isStrictComparable from './_isStrictComparable';
+import toPairs from './toPairs';
/**
* Gets the property names, values, and compare flags of `object`.
diff --git a/internal/getNative.js b/_getNative.js
similarity index 91%
rename from internal/getNative.js
rename to _getNative.js
index 1b8e71391..b91f8dc61 100644
--- a/internal/getNative.js
+++ b/_getNative.js
@@ -1,4 +1,4 @@
-import isNative from '../isNative';
+import isNative from './isNative';
/**
* Gets the native function at `key` of `object`.
diff --git a/internal/getSymbols.js b/_getSymbols.js
similarity index 100%
rename from internal/getSymbols.js
rename to _getSymbols.js
diff --git a/internal/getTag.js b/_getTag.js
similarity index 96%
rename from internal/getTag.js
rename to _getTag.js
index 3ecf91703..0b756c767 100644
--- a/internal/getTag.js
+++ b/_getTag.js
@@ -1,5 +1,5 @@
-import Map from './Map';
-import Set from './Set';
+import Map from './_Map';
+import Set from './_Set';
/** `Object#toString` result references. */
var mapTag = '[object Map]',
diff --git a/internal/getView.js b/_getView.js
similarity index 100%
rename from internal/getView.js
rename to _getView.js
diff --git a/internal/hasPath.js b/_hasPath.js
similarity index 64%
rename from internal/hasPath.js
rename to _hasPath.js
index 66dd47845..aeaee998a 100644
--- a/internal/hasPath.js
+++ b/_hasPath.js
@@ -1,12 +1,12 @@
-import baseToPath from './baseToPath';
-import isArguments from '../isArguments';
-import isArray from '../isArray';
-import isIndex from './isIndex';
-import isKey from './isKey';
-import isLength from '../isLength';
-import isString from '../isString';
-import last from '../last';
-import parent from './parent';
+import baseToPath from './_baseToPath';
+import isArguments from './isArguments';
+import isArray from './isArray';
+import isIndex from './_isIndex';
+import isKey from './_isKey';
+import isLength from './isLength';
+import isString from './isString';
+import last from './last';
+import parent from './_parent';
/**
* Checks if `path` exists on `object`.
@@ -30,8 +30,11 @@ function hasPath(object, path, hasFunc) {
result = hasFunc(object, path);
}
}
- return result || (isLength(object && object.length) && isIndex(path, object.length) &&
- (isArray(object) || isString(object) || isArguments(object)));
+ var length = object ? object.length : undefined;
+ return result || (
+ !!length && isLength(length) && isIndex(path, length) &&
+ (isArray(object) || isString(object) || isArguments(object))
+ );
}
export default hasPath;
diff --git a/internal/hashDelete.js b/_hashDelete.js
similarity index 91%
rename from internal/hashDelete.js
rename to _hashDelete.js
index 28a88c4fb..300da9b3b 100644
--- a/internal/hashDelete.js
+++ b/_hashDelete.js
@@ -1,4 +1,4 @@
-import hashHas from './hashHas';
+import hashHas from './_hashHas';
/**
* Removes `key` and its value from the hash.
diff --git a/internal/hashGet.js b/_hashGet.js
similarity index 94%
rename from internal/hashGet.js
rename to _hashGet.js
index 72557a1c5..9bdbe2c6f 100644
--- a/internal/hashGet.js
+++ b/_hashGet.js
@@ -1,4 +1,4 @@
-import nativeCreate from './nativeCreate';
+import nativeCreate from './_nativeCreate';
/** Used to stand-in for `undefined` hash values. */
var HASH_UNDEFINED = '__lodash_hash_undefined__';
diff --git a/internal/hashHas.js b/_hashHas.js
similarity index 92%
rename from internal/hashHas.js
rename to _hashHas.js
index 90e74a178..3eb82b7be 100644
--- a/internal/hashHas.js
+++ b/_hashHas.js
@@ -1,4 +1,4 @@
-import nativeCreate from './nativeCreate';
+import nativeCreate from './_nativeCreate';
/** Used for built-in method references. */
var objectProto = Object.prototype;
diff --git a/internal/hashSet.js b/_hashSet.js
similarity index 90%
rename from internal/hashSet.js
rename to _hashSet.js
index d2d0738ee..3f72147be 100644
--- a/internal/hashSet.js
+++ b/_hashSet.js
@@ -1,4 +1,4 @@
-import nativeCreate from './nativeCreate';
+import nativeCreate from './_nativeCreate';
/** Used to stand-in for `undefined` hash values. */
var HASH_UNDEFINED = '__lodash_hash_undefined__';
diff --git a/internal/indexKeys.js b/_indexKeys.js
similarity index 52%
rename from internal/indexKeys.js
rename to _indexKeys.js
index 070f4e68d..67c2f07c3 100644
--- a/internal/indexKeys.js
+++ b/_indexKeys.js
@@ -1,8 +1,8 @@
-import baseTimes from './baseTimes';
-import isArguments from '../isArguments';
-import isArray from '../isArray';
-import isLength from '../isLength';
-import isString from '../isString';
+import baseTimes from './_baseTimes';
+import isArguments from './isArguments';
+import isArray from './isArray';
+import isLength from './isLength';
+import isString from './isString';
/**
* Creates an array of index keys for `object` values of arrays,
@@ -14,9 +14,11 @@ import isString from '../isString';
*/
function indexKeys(object) {
var length = object ? object.length : undefined;
- return (isLength(length) && (isArray(object) || isString(object) || isArguments(object)))
- ? baseTimes(length, String)
- : null;
+ if (isLength(length) &&
+ (isArray(object) || isString(object) || isArguments(object))) {
+ return baseTimes(length, String);
+ }
+ return null;
}
export default indexKeys;
diff --git a/internal/indexOfNaN.js b/_indexOfNaN.js
similarity index 100%
rename from internal/indexOfNaN.js
rename to _indexOfNaN.js
diff --git a/internal/initCloneArray.js b/_initCloneArray.js
similarity index 100%
rename from internal/initCloneArray.js
rename to _initCloneArray.js
diff --git a/internal/initCloneByTag.js b/_initCloneByTag.js
similarity index 88%
rename from internal/initCloneByTag.js
rename to _initCloneByTag.js
index bf02b3577..b46b625bb 100644
--- a/internal/initCloneByTag.js
+++ b/_initCloneByTag.js
@@ -1,9 +1,9 @@
-import cloneBuffer from './cloneBuffer';
-import cloneMap from './cloneMap';
-import cloneRegExp from './cloneRegExp';
-import cloneSet from './cloneSet';
-import cloneSymbol from './cloneSymbol';
-import cloneTypedArray from './cloneTypedArray';
+import cloneBuffer from './_cloneBuffer';
+import cloneMap from './_cloneMap';
+import cloneRegExp from './_cloneRegExp';
+import cloneSet from './_cloneSet';
+import cloneSymbol from './_cloneSymbol';
+import cloneTypedArray from './_cloneTypedArray';
/** `Object#toString` result references. */
var boolTag = '[object Boolean]',
diff --git a/internal/initCloneObject.js b/_initCloneObject.js
similarity index 65%
rename from internal/initCloneObject.js
rename to _initCloneObject.js
index 40f5fa485..41d926509 100644
--- a/internal/initCloneObject.js
+++ b/_initCloneObject.js
@@ -1,5 +1,6 @@
-import baseCreate from './baseCreate';
-import isFunction from '../isFunction';
+import baseCreate from './_baseCreate';
+import isFunction from './isFunction';
+import isPrototype from './_isPrototype';
/**
* Initializes an object clone.
@@ -9,6 +10,9 @@ import isFunction from '../isFunction';
* @returns {Object} Returns the initialized clone.
*/
function initCloneObject(object) {
+ if (isPrototype(object)) {
+ return {};
+ }
var Ctor = object.constructor;
return baseCreate(isFunction(Ctor) ? Ctor.prototype : undefined);
}
diff --git a/internal/isHostObject.js b/_isHostObject.js
similarity index 100%
rename from internal/isHostObject.js
rename to _isHostObject.js
diff --git a/internal/isIndex.js b/_isIndex.js
similarity index 100%
rename from internal/isIndex.js
rename to _isIndex.js
diff --git a/internal/isIterateeCall.js b/_isIterateeCall.js
similarity index 84%
rename from internal/isIterateeCall.js
rename to _isIterateeCall.js
index 808ad1345..d8174b1da 100644
--- a/internal/isIterateeCall.js
+++ b/_isIterateeCall.js
@@ -1,7 +1,7 @@
-import eq from '../eq';
-import isArrayLike from '../isArrayLike';
-import isIndex from './isIndex';
-import isObject from '../isObject';
+import eq from './eq';
+import isArrayLike from './isArrayLike';
+import isIndex from './_isIndex';
+import isObject from './isObject';
/**
* Checks if the provided arguments are from an iteratee call.
diff --git a/internal/isKey.js b/_isKey.js
similarity index 95%
rename from internal/isKey.js
rename to _isKey.js
index 76e0981eb..83db62cbf 100644
--- a/internal/isKey.js
+++ b/_isKey.js
@@ -1,4 +1,4 @@
-import isArray from '../isArray';
+import isArray from './isArray';
/** Used to match property names within property paths. */
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
diff --git a/internal/isKeyable.js b/_isKeyable.js
similarity index 100%
rename from internal/isKeyable.js
rename to _isKeyable.js
diff --git a/internal/isLaziable.js b/_isLaziable.js
similarity index 77%
rename from internal/isLaziable.js
rename to _isLaziable.js
index feaac019b..d06ec2ddc 100644
--- a/internal/isLaziable.js
+++ b/_isLaziable.js
@@ -1,7 +1,7 @@
-import LazyWrapper from './LazyWrapper';
-import getData from './getData';
-import getFuncName from './getFuncName';
-import lodash from '../wrapperLodash';
+import LazyWrapper from './_LazyWrapper';
+import getData from './_getData';
+import getFuncName from './_getFuncName';
+import lodash from './wrapperLodash';
/**
* Checks if `func` has a lazy counterpart.
diff --git a/internal/isPrototype.js b/_isPrototype.js
similarity index 100%
rename from internal/isPrototype.js
rename to _isPrototype.js
diff --git a/internal/isStrictComparable.js b/_isStrictComparable.js
similarity index 91%
rename from internal/isStrictComparable.js
rename to _isStrictComparable.js
index 1d6ef1257..97be5a20b 100644
--- a/internal/isStrictComparable.js
+++ b/_isStrictComparable.js
@@ -1,4 +1,4 @@
-import isObject from '../isObject';
+import isObject from './isObject';
/**
* Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
diff --git a/internal/iteratorToArray.js b/_iteratorToArray.js
similarity index 100%
rename from internal/iteratorToArray.js
rename to _iteratorToArray.js
diff --git a/internal/lazyClone.js b/_lazyClone.js
similarity index 87%
rename from internal/lazyClone.js
rename to _lazyClone.js
index f000e864c..e51a13d69 100644
--- a/internal/lazyClone.js
+++ b/_lazyClone.js
@@ -1,5 +1,5 @@
-import LazyWrapper from './LazyWrapper';
-import copyArray from './copyArray';
+import LazyWrapper from './_LazyWrapper';
+import copyArray from './_copyArray';
/**
* Creates a clone of the lazy wrapper object.
diff --git a/internal/lazyReverse.js b/_lazyReverse.js
similarity index 91%
rename from internal/lazyReverse.js
rename to _lazyReverse.js
index ef282d39c..fbc1a34c7 100644
--- a/internal/lazyReverse.js
+++ b/_lazyReverse.js
@@ -1,4 +1,4 @@
-import LazyWrapper from './LazyWrapper';
+import LazyWrapper from './_LazyWrapper';
/**
* Reverses the direction of lazy iteration.
diff --git a/internal/lazyValue.js b/_lazyValue.js
similarity index 93%
rename from internal/lazyValue.js
rename to _lazyValue.js
index 93651a3f8..b1dac437f 100644
--- a/internal/lazyValue.js
+++ b/_lazyValue.js
@@ -1,6 +1,6 @@
-import baseWrapperValue from './baseWrapperValue';
-import getView from './getView';
-import isArray from '../isArray';
+import baseWrapperValue from './_baseWrapperValue';
+import getView from './_getView';
+import isArray from './isArray';
/** Used as the size to enable large array optimizations. */
var LARGE_ARRAY_SIZE = 200;
diff --git a/internal/mapClear.js b/_mapClear.js
similarity index 81%
rename from internal/mapClear.js
rename to _mapClear.js
index 51e2918cb..a805ef06d 100644
--- a/internal/mapClear.js
+++ b/_mapClear.js
@@ -1,5 +1,5 @@
-import Hash from './Hash';
-import Map from './Map';
+import Hash from './_Hash';
+import Map from './_Map';
/**
* Removes all key-value entries from the map.
diff --git a/internal/mapDelete.js b/_mapDelete.js
similarity index 77%
rename from internal/mapDelete.js
rename to _mapDelete.js
index 120f56cae..20c7f86d9 100644
--- a/internal/mapDelete.js
+++ b/_mapDelete.js
@@ -1,7 +1,7 @@
-import Map from './Map';
-import assocDelete from './assocDelete';
-import hashDelete from './hashDelete';
-import isKeyable from './isKeyable';
+import Map from './_Map';
+import assocDelete from './_assocDelete';
+import hashDelete from './_hashDelete';
+import isKeyable from './_isKeyable';
/**
* Removes `key` and its value from the map.
diff --git a/internal/mapGet.js b/_mapGet.js
similarity index 76%
rename from internal/mapGet.js
rename to _mapGet.js
index 1aaeda84f..a6bc8fa4c 100644
--- a/internal/mapGet.js
+++ b/_mapGet.js
@@ -1,7 +1,7 @@
-import Map from './Map';
-import assocGet from './assocGet';
-import hashGet from './hashGet';
-import isKeyable from './isKeyable';
+import Map from './_Map';
+import assocGet from './_assocGet';
+import hashGet from './_hashGet';
+import isKeyable from './_isKeyable';
/**
* Gets the map value for `key`.
diff --git a/internal/mapHas.js b/_mapHas.js
similarity index 78%
rename from internal/mapHas.js
rename to _mapHas.js
index 2bbcd7a99..0615d87f8 100644
--- a/internal/mapHas.js
+++ b/_mapHas.js
@@ -1,7 +1,7 @@
-import Map from './Map';
-import assocHas from './assocHas';
-import hashHas from './hashHas';
-import isKeyable from './isKeyable';
+import Map from './_Map';
+import assocHas from './_assocHas';
+import hashHas from './_hashHas';
+import isKeyable from './_isKeyable';
/**
* Checks if a map value for `key` exists.
diff --git a/internal/mapSet.js b/_mapSet.js
similarity index 79%
rename from internal/mapSet.js
rename to _mapSet.js
index 5bc650a56..382866226 100644
--- a/internal/mapSet.js
+++ b/_mapSet.js
@@ -1,7 +1,7 @@
-import Map from './Map';
-import assocSet from './assocSet';
-import hashSet from './hashSet';
-import isKeyable from './isKeyable';
+import Map from './_Map';
+import assocSet from './_assocSet';
+import hashSet from './_hashSet';
+import isKeyable from './_isKeyable';
/**
* Sets the map `key` to `value`.
diff --git a/internal/mapToArray.js b/_mapToArray.js
similarity index 100%
rename from internal/mapToArray.js
rename to _mapToArray.js
diff --git a/internal/mergeData.js b/_mergeData.js
similarity index 94%
rename from internal/mergeData.js
rename to _mergeData.js
index 0dda6e78c..3691b8ce5 100644
--- a/internal/mergeData.js
+++ b/_mergeData.js
@@ -1,7 +1,7 @@
-import composeArgs from './composeArgs';
-import composeArgsRight from './composeArgsRight';
-import copyArray from './copyArray';
-import replaceHolders from './replaceHolders';
+import composeArgs from './_composeArgs';
+import composeArgsRight from './_composeArgsRight';
+import copyArray from './_copyArray';
+import replaceHolders from './_replaceHolders';
/** Used to compose bitmasks for wrapper metadata. */
var BIND_FLAG = 1,
diff --git a/internal/mergeDefaults.js b/_mergeDefaults.js
similarity index 91%
rename from internal/mergeDefaults.js
rename to _mergeDefaults.js
index c08cb64b8..05eae7dee 100644
--- a/internal/mergeDefaults.js
+++ b/_mergeDefaults.js
@@ -1,5 +1,5 @@
-import baseMerge from './baseMerge';
-import isObject from '../isObject';
+import baseMerge from './_baseMerge';
+import isObject from './isObject';
/**
* Used by `_.defaultsDeep` to customize its `_.merge` use.
diff --git a/internal/metaMap.js b/_metaMap.js
similarity index 75%
rename from internal/metaMap.js
rename to _metaMap.js
index aeda1e383..02ab0e582 100644
--- a/internal/metaMap.js
+++ b/_metaMap.js
@@ -1,4 +1,4 @@
-import WeakMap from './WeakMap';
+import WeakMap from './_WeakMap';
/** Used to store function metadata. */
var metaMap = WeakMap && new WeakMap;
diff --git a/internal/nativeCreate.js b/_nativeCreate.js
similarity index 79%
rename from internal/nativeCreate.js
rename to _nativeCreate.js
index 1df596f45..6444b749a 100644
--- a/internal/nativeCreate.js
+++ b/_nativeCreate.js
@@ -1,4 +1,4 @@
-import getNative from './getNative';
+import getNative from './_getNative';
/* Built-in method references that are verified to be native. */
var nativeCreate = getNative(Object, 'create');
diff --git a/internal/parent.js b/_parent.js
similarity index 84%
rename from internal/parent.js
rename to _parent.js
index 0f621956a..a799302a3 100644
--- a/internal/parent.js
+++ b/_parent.js
@@ -1,5 +1,5 @@
-import baseSlice from './baseSlice';
-import get from '../get';
+import baseSlice from './_baseSlice';
+import get from './get';
/**
* Gets the parent value at `path` of `object`.
diff --git a/internal/reEscape.js b/_reEscape.js
similarity index 100%
rename from internal/reEscape.js
rename to _reEscape.js
diff --git a/internal/reEvaluate.js b/_reEvaluate.js
similarity index 100%
rename from internal/reEvaluate.js
rename to _reEvaluate.js
diff --git a/internal/reInterpolate.js b/_reInterpolate.js
similarity index 100%
rename from internal/reInterpolate.js
rename to _reInterpolate.js
diff --git a/internal/realNames.js b/_realNames.js
similarity index 100%
rename from internal/realNames.js
rename to _realNames.js
diff --git a/internal/reorder.js b/_reorder.js
similarity index 91%
rename from internal/reorder.js
rename to _reorder.js
index 0be0bcebc..55bbdcc49 100644
--- a/internal/reorder.js
+++ b/_reorder.js
@@ -1,5 +1,5 @@
-import copyArray from './copyArray';
-import isIndex from './isIndex';
+import copyArray from './_copyArray';
+import isIndex from './_isIndex';
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeMin = Math.min;
diff --git a/internal/replaceHolders.js b/_replaceHolders.js
similarity index 100%
rename from internal/replaceHolders.js
rename to _replaceHolders.js
diff --git a/internal/root.js b/_root.js
similarity index 96%
rename from internal/root.js
rename to _root.js
index 2b376d78b..85cf03fbe 100644
--- a/internal/root.js
+++ b/_root.js
@@ -1,4 +1,4 @@
-import checkGlobal from './checkGlobal';
+import checkGlobal from './_checkGlobal';
/** Used to determine if values are of the language type `Object`. */
var objectTypes = {
diff --git a/internal/setData.js b/_setData.js
similarity index 93%
rename from internal/setData.js
rename to _setData.js
index 458127454..ed20702c3 100644
--- a/internal/setData.js
+++ b/_setData.js
@@ -1,5 +1,5 @@
-import baseSetData from './baseSetData';
-import now from '../now';
+import baseSetData from './_baseSetData';
+import now from './now';
/** Used to detect hot functions by number of calls within a span of milliseconds. */
var HOT_COUNT = 150,
diff --git a/internal/setToArray.js b/_setToArray.js
similarity index 100%
rename from internal/setToArray.js
rename to _setToArray.js
diff --git a/internal/stackClear.js b/_stackClear.js
similarity index 100%
rename from internal/stackClear.js
rename to _stackClear.js
diff --git a/internal/stackDelete.js b/_stackDelete.js
similarity index 90%
rename from internal/stackDelete.js
rename to _stackDelete.js
index c9bdeb80a..52519820a 100644
--- a/internal/stackDelete.js
+++ b/_stackDelete.js
@@ -1,4 +1,4 @@
-import assocDelete from './assocDelete';
+import assocDelete from './_assocDelete';
/**
* Removes `key` and its value from the stack.
diff --git a/internal/stackGet.js b/_stackGet.js
similarity index 90%
rename from internal/stackGet.js
rename to _stackGet.js
index 0f512c012..3ae4204e6 100644
--- a/internal/stackGet.js
+++ b/_stackGet.js
@@ -1,4 +1,4 @@
-import assocGet from './assocGet';
+import assocGet from './_assocGet';
/**
* Gets the stack value for `key`.
diff --git a/internal/stackHas.js b/_stackHas.js
similarity index 91%
rename from internal/stackHas.js
rename to _stackHas.js
index db6f9c663..993dce6d9 100644
--- a/internal/stackHas.js
+++ b/_stackHas.js
@@ -1,4 +1,4 @@
-import assocHas from './assocHas';
+import assocHas from './_assocHas';
/**
* Checks if a stack value for `key` exists.
diff --git a/internal/stackSet.js b/_stackSet.js
similarity index 90%
rename from internal/stackSet.js
rename to _stackSet.js
index 160e241b0..41ec3d395 100644
--- a/internal/stackSet.js
+++ b/_stackSet.js
@@ -1,5 +1,5 @@
-import MapCache from './MapCache';
-import assocSet from './assocSet';
+import MapCache from './_MapCache';
+import assocSet from './_assocSet';
/** Used as the size to enable large array optimizations. */
var LARGE_ARRAY_SIZE = 200;
diff --git a/internal/stringSize.js b/_stringSize.js
similarity index 100%
rename from internal/stringSize.js
rename to _stringSize.js
diff --git a/internal/stringToArray.js b/_stringToArray.js
similarity index 100%
rename from internal/stringToArray.js
rename to _stringToArray.js
diff --git a/internal/stringToPath.js b/_stringToPath.js
similarity index 94%
rename from internal/stringToPath.js
rename to _stringToPath.js
index 5269d7870..b1b0f84bb 100644
--- a/internal/stringToPath.js
+++ b/_stringToPath.js
@@ -1,4 +1,4 @@
-import toString from '../toString';
+import toString from './toString';
/** Used to match property names within property paths. */
var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g;
diff --git a/internal/toArrayLikeObject.js b/_toArrayLikeObject.js
similarity index 84%
rename from internal/toArrayLikeObject.js
rename to _toArrayLikeObject.js
index b9066b11d..865fc5f52 100644
--- a/internal/toArrayLikeObject.js
+++ b/_toArrayLikeObject.js
@@ -1,4 +1,4 @@
-import isArrayLikeObject from '../isArrayLikeObject';
+import isArrayLikeObject from './isArrayLikeObject';
/**
* Converts `value` to an array-like object if it's not one.
diff --git a/internal/toFunction.js b/_toFunction.js
similarity index 88%
rename from internal/toFunction.js
rename to _toFunction.js
index 199ee43e1..0cddddc3d 100644
--- a/internal/toFunction.js
+++ b/_toFunction.js
@@ -1,4 +1,4 @@
-import identity from '../identity';
+import identity from './identity';
/**
* Converts `value` to a function if it's not one.
diff --git a/internal/unescapeHtmlChar.js b/_unescapeHtmlChar.js
similarity index 100%
rename from internal/unescapeHtmlChar.js
rename to _unescapeHtmlChar.js
diff --git a/internal/wrapperClone.js b/_wrapperClone.js
similarity index 80%
rename from internal/wrapperClone.js
rename to _wrapperClone.js
index c9b8f0752..7fcc05346 100644
--- a/internal/wrapperClone.js
+++ b/_wrapperClone.js
@@ -1,6 +1,6 @@
-import LazyWrapper from './LazyWrapper';
-import LodashWrapper from './LodashWrapper';
-import copyArray from './copyArray';
+import LazyWrapper from './_LazyWrapper';
+import LodashWrapper from './_LodashWrapper';
+import copyArray from './_copyArray';
/**
* Creates a clone of `wrapper`.
diff --git a/array.default.js b/array.default.js
index 38a07bdc4..08144c241 100644
--- a/array.default.js
+++ b/array.default.js
@@ -58,6 +58,7 @@ import xorBy from './xorBy';
import xorWith from './xorWith';
import zip from './zip';
import zipObject from './zipObject';
+import zipObjectDeep from './zipObjectDeep';
import zipWith from './zipWith';
export default {
@@ -73,5 +74,5 @@ export default {
takeWhile, union, unionBy, unionWith, uniq,
uniqBy, uniqWith, unzip, unzipWith, without,
xor, xorBy, xorWith, zip, zipObject,
- zipWith
+ zipObjectDeep, zipWith
};
diff --git a/array.js b/array.js
index 56cd7d9ab..ef71aa4e7 100644
--- a/array.js
+++ b/array.js
@@ -58,5 +58,6 @@ export { default as xorBy } from './xorBy';
export { default as xorWith } from './xorWith';
export { default as zip } from './zip';
export { default as zipObject } from './zipObject';
+export { default as zipObjectDeep } from './zipObjectDeep';
export { default as zipWith } from './zipWith';
export { default as default } from './array.default';
diff --git a/ary.js b/ary.js
index 092d31797..bd2a68e49 100644
--- a/ary.js
+++ b/ary.js
@@ -1,4 +1,4 @@
-import createWrapper from './internal/createWrapper';
+import createWrapper from './_createWrapper';
/** Used to compose bitmasks for wrapper metadata. */
var ARY_FLAG = 128;
diff --git a/assign.js b/assign.js
index 6d7af5ede..c13a41deb 100644
--- a/assign.js
+++ b/assign.js
@@ -1,5 +1,5 @@
-import copyObject from './internal/copyObject';
-import createAssigner from './internal/createAssigner';
+import copyObject from './_copyObject';
+import createAssigner from './_createAssigner';
import keys from './keys';
/**
diff --git a/assignIn.js b/assignIn.js
index a0ead9eda..eb281b15f 100644
--- a/assignIn.js
+++ b/assignIn.js
@@ -1,5 +1,5 @@
-import copyObject from './internal/copyObject';
-import createAssigner from './internal/createAssigner';
+import copyObject from './_copyObject';
+import createAssigner from './_createAssigner';
import keysIn from './keysIn';
/**
diff --git a/assignInWith.js b/assignInWith.js
index 94355be03..4b713ae76 100644
--- a/assignInWith.js
+++ b/assignInWith.js
@@ -1,5 +1,5 @@
-import copyObjectWith from './internal/copyObjectWith';
-import createAssigner from './internal/createAssigner';
+import copyObjectWith from './_copyObjectWith';
+import createAssigner from './_createAssigner';
import keysIn from './keysIn';
/**
diff --git a/assignWith.js b/assignWith.js
index 82470ea04..6e9d36bef 100644
--- a/assignWith.js
+++ b/assignWith.js
@@ -1,5 +1,5 @@
-import copyObjectWith from './internal/copyObjectWith';
-import createAssigner from './internal/createAssigner';
+import copyObjectWith from './_copyObjectWith';
+import createAssigner from './_createAssigner';
import keys from './keys';
/**
diff --git a/at.js b/at.js
index 686d950d7..9f8b4f087 100644
--- a/at.js
+++ b/at.js
@@ -1,5 +1,5 @@
-import baseAt from './internal/baseAt';
-import baseFlatten from './internal/baseFlatten';
+import baseAt from './_baseAt';
+import baseFlatten from './_baseFlatten';
import rest from './rest';
/**
diff --git a/attempt.js b/attempt.js
index 4ff7bd591..c93d21a96 100644
--- a/attempt.js
+++ b/attempt.js
@@ -1,4 +1,4 @@
-import apply from './internal/apply';
+import apply from './_apply';
import isError from './isError';
import rest from './rest';
diff --git a/bind.js b/bind.js
index 157a8ec74..514a79f5d 100644
--- a/bind.js
+++ b/bind.js
@@ -1,5 +1,5 @@
-import createWrapper from './internal/createWrapper';
-import replaceHolders from './internal/replaceHolders';
+import createWrapper from './_createWrapper';
+import replaceHolders from './_replaceHolders';
import rest from './rest';
/** Used to compose bitmasks for wrapper metadata. */
diff --git a/bindAll.js b/bindAll.js
index eb5229dc3..975dae922 100644
--- a/bindAll.js
+++ b/bindAll.js
@@ -1,5 +1,5 @@
-import arrayEach from './internal/arrayEach';
-import baseFlatten from './internal/baseFlatten';
+import arrayEach from './_arrayEach';
+import baseFlatten from './_baseFlatten';
import bind from './bind';
import rest from './rest';
diff --git a/bindKey.js b/bindKey.js
index 3af317bf5..a98333a53 100644
--- a/bindKey.js
+++ b/bindKey.js
@@ -1,5 +1,5 @@
-import createWrapper from './internal/createWrapper';
-import replaceHolders from './internal/replaceHolders';
+import createWrapper from './_createWrapper';
+import replaceHolders from './_replaceHolders';
import rest from './rest';
/** Used to compose bitmasks for wrapper metadata. */
diff --git a/camelCase.js b/camelCase.js
index ca3c15f0d..f941d428c 100644
--- a/camelCase.js
+++ b/camelCase.js
@@ -1,5 +1,5 @@
import capitalize from './capitalize';
-import createCompounder from './internal/createCompounder';
+import createCompounder from './_createCompounder';
/**
* Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
diff --git a/ceil.js b/ceil.js
index 8a0ff4afd..e12c031df 100644
--- a/ceil.js
+++ b/ceil.js
@@ -1,4 +1,4 @@
-import createRound from './internal/createRound';
+import createRound from './_createRound';
/**
* Computes `number` rounded up to `precision`.
diff --git a/chunk.js b/chunk.js
index 698ddc165..0c69eb333 100644
--- a/chunk.js
+++ b/chunk.js
@@ -1,4 +1,4 @@
-import baseSlice from './internal/baseSlice';
+import baseSlice from './_baseSlice';
import toInteger from './toInteger';
/* Built-in method references for those with the same name as other `lodash` methods. */
diff --git a/clamp.js b/clamp.js
index 59c63d30e..8e079db30 100644
--- a/clamp.js
+++ b/clamp.js
@@ -1,4 +1,4 @@
-import baseClamp from './internal/baseClamp';
+import baseClamp from './_baseClamp';
import toNumber from './toNumber';
/**
diff --git a/clone.js b/clone.js
index 4bbda5540..92b2d33f0 100644
--- a/clone.js
+++ b/clone.js
@@ -1,4 +1,4 @@
-import baseClone from './internal/baseClone';
+import baseClone from './_baseClone';
/**
* Creates a shallow clone of `value`.
diff --git a/cloneDeep.js b/cloneDeep.js
index 7bfd3eb48..81c7febfa 100644
--- a/cloneDeep.js
+++ b/cloneDeep.js
@@ -1,4 +1,4 @@
-import baseClone from './internal/baseClone';
+import baseClone from './_baseClone';
/**
* This method is like `_.clone` except that it recursively clones `value`.
diff --git a/cloneDeepWith.js b/cloneDeepWith.js
index 64fcbaf31..8219adaa0 100644
--- a/cloneDeepWith.js
+++ b/cloneDeepWith.js
@@ -1,4 +1,4 @@
-import baseClone from './internal/baseClone';
+import baseClone from './_baseClone';
/**
* This method is like `_.cloneWith` except that it recursively clones `value`.
diff --git a/cloneWith.js b/cloneWith.js
index 9752a53f6..a7e2181b7 100644
--- a/cloneWith.js
+++ b/cloneWith.js
@@ -1,4 +1,4 @@
-import baseClone from './internal/baseClone';
+import baseClone from './_baseClone';
/**
* This method is like `_.clone` except that it accepts `customizer` which
diff --git a/commit.js b/commit.js
index c7f250229..2bda55645 100644
--- a/commit.js
+++ b/commit.js
@@ -1,4 +1,4 @@
-import LodashWrapper from './internal/LodashWrapper';
+import LodashWrapper from './_LodashWrapper';
/**
* Executes the chained sequence and returns the wrapped result.
diff --git a/concat.js b/concat.js
index 777ae3c9d..0b71d10d7 100644
--- a/concat.js
+++ b/concat.js
@@ -1,5 +1,5 @@
-import arrayConcat from './internal/arrayConcat';
-import baseFlatten from './internal/baseFlatten';
+import arrayConcat from './_arrayConcat';
+import baseFlatten from './_baseFlatten';
import isArray from './isArray';
import rest from './rest';
diff --git a/cond.js b/cond.js
index f8e4523a7..1451970f0 100644
--- a/cond.js
+++ b/cond.js
@@ -1,6 +1,6 @@
-import apply from './internal/apply';
-import arrayMap from './internal/arrayMap';
-import baseIteratee from './internal/baseIteratee';
+import apply from './_apply';
+import arrayMap from './_arrayMap';
+import baseIteratee from './_baseIteratee';
import rest from './rest';
/** Used as the `TypeError` message for "Functions" methods. */
diff --git a/conforms.js b/conforms.js
index e90dca164..219b30e92 100644
--- a/conforms.js
+++ b/conforms.js
@@ -1,5 +1,5 @@
-import baseClone from './internal/baseClone';
-import baseConforms from './internal/baseConforms';
+import baseClone from './_baseClone';
+import baseConforms from './_baseConforms';
/**
* Creates a function that invokes the predicate properties of `source` with
diff --git a/countBy.js b/countBy.js
index b306748fc..4832d00bd 100644
--- a/countBy.js
+++ b/countBy.js
@@ -1,4 +1,4 @@
-import createAggregator from './internal/createAggregator';
+import createAggregator from './_createAggregator';
/** Used for built-in method references. */
var objectProto = Object.prototype;
diff --git a/create.js b/create.js
index ef18b9074..8cca55c2a 100644
--- a/create.js
+++ b/create.js
@@ -1,5 +1,5 @@
-import baseAssign from './internal/baseAssign';
-import baseCreate from './internal/baseCreate';
+import baseAssign from './_baseAssign';
+import baseCreate from './_baseCreate';
/**
* Creates an object that inherits from the `prototype` object. If a `properties`
diff --git a/curry.js b/curry.js
index 318864915..eb16cb00a 100644
--- a/curry.js
+++ b/curry.js
@@ -1,4 +1,4 @@
-import createWrapper from './internal/createWrapper';
+import createWrapper from './_createWrapper';
/** Used to compose bitmasks for wrapper metadata. */
var CURRY_FLAG = 8;
diff --git a/curryRight.js b/curryRight.js
index 05d230cad..ba2daa86e 100644
--- a/curryRight.js
+++ b/curryRight.js
@@ -1,4 +1,4 @@
-import createWrapper from './internal/createWrapper';
+import createWrapper from './_createWrapper';
/** Used to compose bitmasks for wrapper metadata. */
var CURRY_RIGHT_FLAG = 16;
diff --git a/deburr.js b/deburr.js
index 696914e54..97b2e636f 100644
--- a/deburr.js
+++ b/deburr.js
@@ -1,4 +1,4 @@
-import deburrLetter from './internal/deburrLetter';
+import deburrLetter from './_deburrLetter';
import toString from './toString';
/** Used to match latin-1 supplementary letters (excluding mathematical operators). */
diff --git a/defaults.js b/defaults.js
index 63e3df637..26f822284 100644
--- a/defaults.js
+++ b/defaults.js
@@ -1,5 +1,5 @@
-import apply from './internal/apply';
-import assignInDefaults from './internal/assignInDefaults';
+import apply from './_apply';
+import assignInDefaults from './_assignInDefaults';
import assignInWith from './assignInWith';
import rest from './rest';
diff --git a/defaultsDeep.js b/defaultsDeep.js
index f7f8d4bc9..d6e409d04 100644
--- a/defaultsDeep.js
+++ b/defaultsDeep.js
@@ -1,5 +1,5 @@
-import apply from './internal/apply';
-import mergeDefaults from './internal/mergeDefaults';
+import apply from './_apply';
+import mergeDefaults from './_mergeDefaults';
import mergeWith from './mergeWith';
import rest from './rest';
diff --git a/defer.js b/defer.js
index ed4f5e343..4178ba121 100644
--- a/defer.js
+++ b/defer.js
@@ -1,4 +1,4 @@
-import baseDelay from './internal/baseDelay';
+import baseDelay from './_baseDelay';
import rest from './rest';
/**
diff --git a/delay.js b/delay.js
index 9112fb5de..ad1378f88 100644
--- a/delay.js
+++ b/delay.js
@@ -1,4 +1,4 @@
-import baseDelay from './internal/baseDelay';
+import baseDelay from './_baseDelay';
import rest from './rest';
import toNumber from './toNumber';
diff --git a/difference.js b/difference.js
index 53bbe28ae..111d5adc2 100644
--- a/difference.js
+++ b/difference.js
@@ -1,5 +1,5 @@
-import baseDifference from './internal/baseDifference';
-import baseFlatten from './internal/baseFlatten';
+import baseDifference from './_baseDifference';
+import baseFlatten from './_baseFlatten';
import isArrayLikeObject from './isArrayLikeObject';
import rest from './rest';
diff --git a/differenceBy.js b/differenceBy.js
index d101dd25e..9eb6af8ad 100644
--- a/differenceBy.js
+++ b/differenceBy.js
@@ -1,6 +1,6 @@
-import baseDifference from './internal/baseDifference';
-import baseFlatten from './internal/baseFlatten';
-import baseIteratee from './internal/baseIteratee';
+import baseDifference from './_baseDifference';
+import baseFlatten from './_baseFlatten';
+import baseIteratee from './_baseIteratee';
import isArrayLikeObject from './isArrayLikeObject';
import last from './last';
import rest from './rest';
diff --git a/differenceWith.js b/differenceWith.js
index 7f573cc62..52956b0fd 100644
--- a/differenceWith.js
+++ b/differenceWith.js
@@ -1,5 +1,5 @@
-import baseDifference from './internal/baseDifference';
-import baseFlatten from './internal/baseFlatten';
+import baseDifference from './_baseDifference';
+import baseFlatten from './_baseFlatten';
import isArrayLikeObject from './isArrayLikeObject';
import last from './last';
import rest from './rest';
diff --git a/drop.js b/drop.js
index 3afb5d785..ebe48bfe2 100644
--- a/drop.js
+++ b/drop.js
@@ -1,4 +1,4 @@
-import baseSlice from './internal/baseSlice';
+import baseSlice from './_baseSlice';
import toInteger from './toInteger';
/**
diff --git a/dropRight.js b/dropRight.js
index 67b3b32fe..2081eb140 100644
--- a/dropRight.js
+++ b/dropRight.js
@@ -1,4 +1,4 @@
-import baseSlice from './internal/baseSlice';
+import baseSlice from './_baseSlice';
import toInteger from './toInteger';
/**
diff --git a/dropRightWhile.js b/dropRightWhile.js
index 43067e75e..f61229941 100644
--- a/dropRightWhile.js
+++ b/dropRightWhile.js
@@ -1,5 +1,5 @@
-import baseIteratee from './internal/baseIteratee';
-import baseWhile from './internal/baseWhile';
+import baseIteratee from './_baseIteratee';
+import baseWhile from './_baseWhile';
/**
* Creates a slice of `array` excluding elements dropped from the end.
diff --git a/dropWhile.js b/dropWhile.js
index 211ad3c82..b029843e9 100644
--- a/dropWhile.js
+++ b/dropWhile.js
@@ -1,5 +1,5 @@
-import baseIteratee from './internal/baseIteratee';
-import baseWhile from './internal/baseWhile';
+import baseIteratee from './_baseIteratee';
+import baseWhile from './_baseWhile';
/**
* Creates a slice of `array` excluding elements dropped from the beginning.
diff --git a/endsWith.js b/endsWith.js
index 851d42664..7230b1540 100644
--- a/endsWith.js
+++ b/endsWith.js
@@ -1,4 +1,4 @@
-import baseClamp from './internal/baseClamp';
+import baseClamp from './_baseClamp';
import toInteger from './toInteger';
import toString from './toString';
diff --git a/escape.js b/escape.js
index 5ca549509..463ab2d1d 100644
--- a/escape.js
+++ b/escape.js
@@ -1,4 +1,4 @@
-import escapeHtmlChar from './internal/escapeHtmlChar';
+import escapeHtmlChar from './_escapeHtmlChar';
import toString from './toString';
/** Used to match HTML entities and HTML characters. */
diff --git a/every.js b/every.js
index ebaafe05e..f69f245a4 100644
--- a/every.js
+++ b/every.js
@@ -1,8 +1,8 @@
-import arrayEvery from './internal/arrayEvery';
-import baseEvery from './internal/baseEvery';
-import baseIteratee from './internal/baseIteratee';
+import arrayEvery from './_arrayEvery';
+import baseEvery from './_baseEvery';
+import baseIteratee from './_baseIteratee';
import isArray from './isArray';
-import isIterateeCall from './internal/isIterateeCall';
+import isIterateeCall from './_isIterateeCall';
/**
* Checks if `predicate` returns truthy for **all** elements of `collection`.
diff --git a/fill.js b/fill.js
index 2a337d1d6..479dfce69 100644
--- a/fill.js
+++ b/fill.js
@@ -1,5 +1,5 @@
-import baseFill from './internal/baseFill';
-import isIterateeCall from './internal/isIterateeCall';
+import baseFill from './_baseFill';
+import isIterateeCall from './_isIterateeCall';
/**
* Fills elements of `array` with `value` from `start` up to, but not
diff --git a/filter.js b/filter.js
index cfa0844ae..5a646550b 100644
--- a/filter.js
+++ b/filter.js
@@ -1,6 +1,6 @@
-import arrayFilter from './internal/arrayFilter';
-import baseFilter from './internal/baseFilter';
-import baseIteratee from './internal/baseIteratee';
+import arrayFilter from './_arrayFilter';
+import baseFilter from './_baseFilter';
+import baseIteratee from './_baseIteratee';
import isArray from './isArray';
/**
diff --git a/find.js b/find.js
index bfabb403d..2022d741a 100644
--- a/find.js
+++ b/find.js
@@ -1,7 +1,7 @@
-import baseEach from './internal/baseEach';
-import baseFind from './internal/baseFind';
-import baseFindIndex from './internal/baseFindIndex';
-import baseIteratee from './internal/baseIteratee';
+import baseEach from './_baseEach';
+import baseFind from './_baseFind';
+import baseFindIndex from './_baseFindIndex';
+import baseIteratee from './_baseIteratee';
import isArray from './isArray';
/**
diff --git a/findIndex.js b/findIndex.js
index 73a133d90..4d46e0522 100644
--- a/findIndex.js
+++ b/findIndex.js
@@ -1,5 +1,5 @@
-import baseFindIndex from './internal/baseFindIndex';
-import baseIteratee from './internal/baseIteratee';
+import baseFindIndex from './_baseFindIndex';
+import baseIteratee from './_baseIteratee';
/**
* This method is like `_.find` except that it returns the index of the first
diff --git a/findKey.js b/findKey.js
index c7b1b31ca..2f4e5990a 100644
--- a/findKey.js
+++ b/findKey.js
@@ -1,6 +1,6 @@
-import baseFind from './internal/baseFind';
-import baseForOwn from './internal/baseForOwn';
-import baseIteratee from './internal/baseIteratee';
+import baseFind from './_baseFind';
+import baseForOwn from './_baseForOwn';
+import baseIteratee from './_baseIteratee';
/**
* This method is like `_.find` except that it returns the key of the first
diff --git a/findLast.js b/findLast.js
index 5ada5d872..11017f6ed 100644
--- a/findLast.js
+++ b/findLast.js
@@ -1,7 +1,7 @@
-import baseEachRight from './internal/baseEachRight';
-import baseFind from './internal/baseFind';
-import baseFindIndex from './internal/baseFindIndex';
-import baseIteratee from './internal/baseIteratee';
+import baseEachRight from './_baseEachRight';
+import baseFind from './_baseFind';
+import baseFindIndex from './_baseFindIndex';
+import baseIteratee from './_baseIteratee';
import isArray from './isArray';
/**
diff --git a/findLastIndex.js b/findLastIndex.js
index 51cb671fd..fbdd3954b 100644
--- a/findLastIndex.js
+++ b/findLastIndex.js
@@ -1,5 +1,5 @@
-import baseFindIndex from './internal/baseFindIndex';
-import baseIteratee from './internal/baseIteratee';
+import baseFindIndex from './_baseFindIndex';
+import baseIteratee from './_baseIteratee';
/**
* This method is like `_.findIndex` except that it iterates over elements
diff --git a/findLastKey.js b/findLastKey.js
index 4d59c9131..2499a67ba 100644
--- a/findLastKey.js
+++ b/findLastKey.js
@@ -1,6 +1,6 @@
-import baseFind from './internal/baseFind';
-import baseForOwnRight from './internal/baseForOwnRight';
-import baseIteratee from './internal/baseIteratee';
+import baseFind from './_baseFind';
+import baseForOwnRight from './_baseForOwnRight';
+import baseIteratee from './_baseIteratee';
/**
* This method is like `_.findKey` except that it iterates over elements of
diff --git a/flatMap.js b/flatMap.js
index c3e08d8ee..6d8177c54 100644
--- a/flatMap.js
+++ b/flatMap.js
@@ -1,6 +1,6 @@
-import arrayMap from './internal/arrayMap';
-import baseFlatten from './internal/baseFlatten';
-import baseIteratee from './internal/baseIteratee';
+import arrayMap from './_arrayMap';
+import baseFlatten from './_baseFlatten';
+import baseIteratee from './_baseIteratee';
/**
* Creates an array of flattened values by running each element in `array`
diff --git a/flatten.js b/flatten.js
index bbf0d8698..379f126e8 100644
--- a/flatten.js
+++ b/flatten.js
@@ -1,4 +1,4 @@
-import baseFlatten from './internal/baseFlatten';
+import baseFlatten from './_baseFlatten';
/**
* Flattens `array` a single level.
diff --git a/flattenDeep.js b/flattenDeep.js
index b617d7233..782dc5281 100644
--- a/flattenDeep.js
+++ b/flattenDeep.js
@@ -1,4 +1,4 @@
-import baseFlatten from './internal/baseFlatten';
+import baseFlatten from './_baseFlatten';
/**
* This method is like `_.flatten` except that it recursively flattens `array`.
diff --git a/flip.js b/flip.js
index 0972af36d..5e11ec7d3 100644
--- a/flip.js
+++ b/flip.js
@@ -1,4 +1,4 @@
-import createWrapper from './internal/createWrapper';
+import createWrapper from './_createWrapper';
/** Used to compose bitmasks for wrapper metadata. */
var FLIP_FLAG = 512;
diff --git a/floor.js b/floor.js
index 93f895f58..f1582cbd8 100644
--- a/floor.js
+++ b/floor.js
@@ -1,4 +1,4 @@
-import createRound from './internal/createRound';
+import createRound from './_createRound';
/**
* Computes `number` rounded down to `precision`.
diff --git a/flow.js b/flow.js
index 50ebf7ec6..865a0feff 100644
--- a/flow.js
+++ b/flow.js
@@ -1,4 +1,4 @@
-import createFlow from './internal/createFlow';
+import createFlow from './_createFlow';
/**
* Creates a function that returns the result of invoking the provided
diff --git a/flowRight.js b/flowRight.js
index 26c0c8321..fe6b55bb1 100644
--- a/flowRight.js
+++ b/flowRight.js
@@ -1,4 +1,4 @@
-import createFlow from './internal/createFlow';
+import createFlow from './_createFlow';
/**
* This method is like `_.flow` except that it creates a function that
diff --git a/forEach.js b/forEach.js
index e8bd1f136..30055ac45 100644
--- a/forEach.js
+++ b/forEach.js
@@ -1,7 +1,7 @@
-import arrayEach from './internal/arrayEach';
-import baseEach from './internal/baseEach';
+import arrayEach from './_arrayEach';
+import baseEach from './_baseEach';
import isArray from './isArray';
-import toFunction from './internal/toFunction';
+import toFunction from './_toFunction';
/**
* Iterates over elements of `collection` invoking `iteratee` for each element.
diff --git a/forEachRight.js b/forEachRight.js
index 7cc4270c8..2f1ec34ba 100644
--- a/forEachRight.js
+++ b/forEachRight.js
@@ -1,7 +1,7 @@
-import arrayEachRight from './internal/arrayEachRight';
-import baseEachRight from './internal/baseEachRight';
+import arrayEachRight from './_arrayEachRight';
+import baseEachRight from './_baseEachRight';
import isArray from './isArray';
-import toFunction from './internal/toFunction';
+import toFunction from './_toFunction';
/**
* This method is like `_.forEach` except that it iterates over elements of
diff --git a/forIn.js b/forIn.js
index 28551a061..6ed3c1823 100644
--- a/forIn.js
+++ b/forIn.js
@@ -1,6 +1,6 @@
-import baseFor from './internal/baseFor';
+import baseFor from './_baseFor';
import keysIn from './keysIn';
-import toFunction from './internal/toFunction';
+import toFunction from './_toFunction';
/**
* Iterates over own and inherited enumerable properties of an object invoking
diff --git a/forInRight.js b/forInRight.js
index 14e88c04a..516ba43f8 100644
--- a/forInRight.js
+++ b/forInRight.js
@@ -1,6 +1,6 @@
-import baseForRight from './internal/baseForRight';
+import baseForRight from './_baseForRight';
import keysIn from './keysIn';
-import toFunction from './internal/toFunction';
+import toFunction from './_toFunction';
/**
* This method is like `_.forIn` except that it iterates over properties of
diff --git a/forOwn.js b/forOwn.js
index f667ea2d1..294ac1c9e 100644
--- a/forOwn.js
+++ b/forOwn.js
@@ -1,5 +1,5 @@
-import baseForOwn from './internal/baseForOwn';
-import toFunction from './internal/toFunction';
+import baseForOwn from './_baseForOwn';
+import toFunction from './_toFunction';
/**
* Iterates over own enumerable properties of an object invoking `iteratee`
diff --git a/forOwnRight.js b/forOwnRight.js
index 58fc38cf9..504859a28 100644
--- a/forOwnRight.js
+++ b/forOwnRight.js
@@ -1,5 +1,5 @@
-import baseForOwnRight from './internal/baseForOwnRight';
-import toFunction from './internal/toFunction';
+import baseForOwnRight from './_baseForOwnRight';
+import toFunction from './_toFunction';
/**
* This method is like `_.forOwn` except that it iterates over properties of
diff --git a/functions.js b/functions.js
index dd76adcde..7b3f22910 100644
--- a/functions.js
+++ b/functions.js
@@ -1,4 +1,4 @@
-import baseFunctions from './internal/baseFunctions';
+import baseFunctions from './_baseFunctions';
import keys from './keys';
/**
diff --git a/functionsIn.js b/functionsIn.js
index f88c57e95..7a836b928 100644
--- a/functionsIn.js
+++ b/functionsIn.js
@@ -1,4 +1,4 @@
-import baseFunctions from './internal/baseFunctions';
+import baseFunctions from './_baseFunctions';
import keysIn from './keysIn';
/**
diff --git a/get.js b/get.js
index 6a863a557..2ce768938 100644
--- a/get.js
+++ b/get.js
@@ -1,4 +1,4 @@
-import baseGet from './internal/baseGet';
+import baseGet from './_baseGet';
/**
* Gets the value at `path` of `object`. If the resolved value is
diff --git a/groupBy.js b/groupBy.js
index da85bb703..e913b8d16 100644
--- a/groupBy.js
+++ b/groupBy.js
@@ -1,4 +1,4 @@
-import createAggregator from './internal/createAggregator';
+import createAggregator from './_createAggregator';
/** Used for built-in method references. */
var objectProto = Object.prototype;
diff --git a/has.js b/has.js
index 438179059..16527d60c 100644
--- a/has.js
+++ b/has.js
@@ -1,5 +1,5 @@
-import baseHas from './internal/baseHas';
-import hasPath from './internal/hasPath';
+import baseHas from './_baseHas';
+import hasPath from './_hasPath';
/**
* Checks if `path` is a direct property of `object`.
diff --git a/hasIn.js b/hasIn.js
index a700e43d6..bfdfae2e9 100644
--- a/hasIn.js
+++ b/hasIn.js
@@ -1,5 +1,5 @@
-import baseHasIn from './internal/baseHasIn';
-import hasPath from './internal/hasPath';
+import baseHasIn from './_baseHasIn';
+import hasPath from './_hasPath';
/**
* Checks if `path` is a direct or inherited property of `object`.
diff --git a/inRange.js b/inRange.js
index face7d88c..9c3b67788 100644
--- a/inRange.js
+++ b/inRange.js
@@ -1,4 +1,4 @@
-import baseInRange from './internal/baseInRange';
+import baseInRange from './_baseInRange';
import toNumber from './toNumber';
/**
diff --git a/includes.js b/includes.js
index a7f03cdd9..191111e2c 100644
--- a/includes.js
+++ b/includes.js
@@ -1,4 +1,4 @@
-import baseIndexOf from './internal/baseIndexOf';
+import baseIndexOf from './_baseIndexOf';
import isArrayLike from './isArrayLike';
import isString from './isString';
import toInteger from './toInteger';
diff --git a/indexOf.js b/indexOf.js
index 25126230b..1b395acc2 100644
--- a/indexOf.js
+++ b/indexOf.js
@@ -1,4 +1,4 @@
-import baseIndexOf from './internal/baseIndexOf';
+import baseIndexOf from './_baseIndexOf';
import toInteger from './toInteger';
/* Built-in method references for those with the same name as other `lodash` methods. */
diff --git a/internal/createAggregator.js b/internal/createAggregator.js
deleted file mode 100644
index f53259456..000000000
--- a/internal/createAggregator.js
+++ /dev/null
@@ -1,35 +0,0 @@
-import baseEach from './baseEach';
-import baseIteratee from './baseIteratee';
-import isArray from '../isArray';
-
-/**
- * Creates a function like `_.groupBy`.
- *
- * @private
- * @param {Function} setter The function to set keys and values of the accumulator object.
- * @param {Function} [initializer] The function to initialize the accumulator object.
- * @returns {Function} Returns the new aggregator function.
- */
-function createAggregator(setter, initializer) {
- return function(collection, iteratee) {
- var result = initializer ? initializer() : {};
- iteratee = baseIteratee(iteratee);
-
- if (isArray(collection)) {
- var index = -1,
- length = collection.length;
-
- while (++index < length) {
- var value = collection[index];
- setter(result, value, iteratee(value), collection);
- }
- } else {
- baseEach(collection, function(value, key, collection) {
- setter(result, value, iteratee(value), collection);
- });
- }
- return result;
- };
-}
-
-export default createAggregator;
diff --git a/intersection.js b/intersection.js
index f8c48a112..8d03b3195 100644
--- a/intersection.js
+++ b/intersection.js
@@ -1,7 +1,7 @@
-import arrayMap from './internal/arrayMap';
-import baseIntersection from './internal/baseIntersection';
+import arrayMap from './_arrayMap';
+import baseIntersection from './_baseIntersection';
import rest from './rest';
-import toArrayLikeObject from './internal/toArrayLikeObject';
+import toArrayLikeObject from './_toArrayLikeObject';
/**
* Creates an array of unique values that are included in all of the provided
diff --git a/intersectionBy.js b/intersectionBy.js
index ff8cd2870..6201dc1a9 100644
--- a/intersectionBy.js
+++ b/intersectionBy.js
@@ -1,9 +1,9 @@
-import arrayMap from './internal/arrayMap';
-import baseIntersection from './internal/baseIntersection';
-import baseIteratee from './internal/baseIteratee';
+import arrayMap from './_arrayMap';
+import baseIntersection from './_baseIntersection';
+import baseIteratee from './_baseIteratee';
import last from './last';
import rest from './rest';
-import toArrayLikeObject from './internal/toArrayLikeObject';
+import toArrayLikeObject from './_toArrayLikeObject';
/**
* This method is like `_.intersection` except that it accepts `iteratee`
diff --git a/intersectionWith.js b/intersectionWith.js
index 8a4076246..4dc7a6766 100644
--- a/intersectionWith.js
+++ b/intersectionWith.js
@@ -1,8 +1,8 @@
-import arrayMap from './internal/arrayMap';
-import baseIntersection from './internal/baseIntersection';
+import arrayMap from './_arrayMap';
+import baseIntersection from './_baseIntersection';
import last from './last';
import rest from './rest';
-import toArrayLikeObject from './internal/toArrayLikeObject';
+import toArrayLikeObject from './_toArrayLikeObject';
/**
* This method is like `_.intersection` except that it accepts `comparator`
diff --git a/invert.js b/invert.js
index 9743942c9..607f61b01 100644
--- a/invert.js
+++ b/invert.js
@@ -1,23 +1,16 @@
-import arrayReduce from './internal/arrayReduce';
-import keys from './keys';
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
+import constant from './constant';
+import createInverter from './_createInverter';
+import identity from './identity';
/**
* Creates an object composed of the inverted keys and values of `object`.
* If `object` contains duplicate values, subsequent values overwrite property
- * assignments of previous values unless `multiVal` is `true`.
+ * assignments of previous values.
*
* @static
* @memberOf _
* @category Object
* @param {Object} object The object to invert.
- * @param {boolean} [multiVal] Allow multiple values per key.
- * @param- {Object} [guard] Enables use as an iteratee for functions like `_.map`.
* @returns {Object} Returns the new inverted object.
* @example
*
@@ -25,26 +18,9 @@ var hasOwnProperty = objectProto.hasOwnProperty;
*
* _.invert(object);
* // => { '1': 'c', '2': 'b' }
- *
- * // with `multiVal`
- * _.invert(object, true);
- * // => { '1': ['a', 'c'], '2': ['b'] }
*/
-function invert(object, multiVal, guard) {
- return arrayReduce(keys(object), function(result, key) {
- var value = object[key];
- if (multiVal && !guard) {
- if (hasOwnProperty.call(result, value)) {
- result[value].push(key);
- } else {
- result[value] = [key];
- }
- }
- else {
- result[value] = key;
- }
- return result;
- }, {});
-}
+var invert = createInverter(function(result, value, key) {
+ result[value] = key;
+}, constant(identity));
export default invert;
diff --git a/invertBy.js b/invertBy.js
new file mode 100644
index 000000000..584722f5e
--- /dev/null
+++ b/invertBy.js
@@ -0,0 +1,43 @@
+import baseIteratee from './_baseIteratee';
+import createInverter from './_createInverter';
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * This method is like `_.invert` except that the inverted object is generated
+ * from the results of running each element of `object` through `iteratee`.
+ * The corresponding inverted value of each inverted key is an array of keys
+ * responsible for generating the inverted value. The iteratee is invoked
+ * with one argument: (value).
+ *
+ * @static
+ * @memberOf _
+ * @category Object
+ * @param {Object} object The object to invert.
+ * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element.
+ * @returns {Object} Returns the new inverted object.
+ * @example
+ *
+ * var object = { 'a': 1, 'b': 2, 'c': 1 };
+ *
+ * _.invertBy(object);
+ * // => { '1': ['a', 'c'], '2': ['b'] }
+ *
+ * _.invertBy(object, function(value) {
+ * return 'group' + value;
+ * });
+ * // => { 'group1': ['a', 'c'], 'group2': ['b'] }
+ */
+var invertBy = createInverter(function(result, value, key) {
+ if (hasOwnProperty.call(result, value)) {
+ result[value].push(key);
+ } else {
+ result[value] = [key];
+ }
+}, baseIteratee);
+
+export default invertBy;
diff --git a/invoke.js b/invoke.js
index 42d4e76a7..375d99808 100644
--- a/invoke.js
+++ b/invoke.js
@@ -1,4 +1,4 @@
-import baseInvoke from './internal/baseInvoke';
+import baseInvoke from './_baseInvoke';
import rest from './rest';
/**
diff --git a/invokeMap.js b/invokeMap.js
index becc750e2..1a46218a2 100644
--- a/invokeMap.js
+++ b/invokeMap.js
@@ -1,8 +1,8 @@
-import apply from './internal/apply';
-import baseEach from './internal/baseEach';
-import baseInvoke from './internal/baseInvoke';
+import apply from './_apply';
+import baseEach from './_baseEach';
+import baseInvoke from './_baseInvoke';
import isArrayLike from './isArrayLike';
-import isKey from './internal/isKey';
+import isKey from './_isKey';
import rest from './rest';
/**
diff --git a/isArrayLike.js b/isArrayLike.js
index e4614b565..981e18600 100644
--- a/isArrayLike.js
+++ b/isArrayLike.js
@@ -1,4 +1,4 @@
-import getLength from './internal/getLength';
+import getLength from './_getLength';
import isFunction from './isFunction';
import isLength from './isLength';
diff --git a/isEmpty.js b/isEmpty.js
index dc5d66203..64f348e28 100644
--- a/isEmpty.js
+++ b/isEmpty.js
@@ -1,7 +1,14 @@
+import isArguments from './isArguments';
+import isArray from './isArray';
+import isArrayLike from './isArrayLike';
import isFunction from './isFunction';
-import isObjectLike from './isObjectLike';
-import keys from './keys';
-import size from './size';
+import isString from './isString';
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
/**
* Checks if `value` is empty. A value is considered empty unless it's an
@@ -31,9 +38,16 @@ import size from './size';
* // => false
*/
function isEmpty(value) {
- return (!isObjectLike(value) || isFunction(value.splice))
- ? !size(value)
- : !keys(value).length;
+ if (isArrayLike(value) &&
+ (isArray(value) || isString(value) || isFunction(value.splice) || isArguments(value))) {
+ return !value.length;
+ }
+ for (var key in value) {
+ if (hasOwnProperty.call(value, key)) {
+ return false;
+ }
+ }
+ return true;
}
export default isEmpty;
diff --git a/isEqual.js b/isEqual.js
index 586548aa1..fdd02369c 100644
--- a/isEqual.js
+++ b/isEqual.js
@@ -1,4 +1,4 @@
-import baseIsEqual from './internal/baseIsEqual';
+import baseIsEqual from './_baseIsEqual';
/**
* Performs a deep comparison between two values to determine if they are
diff --git a/isEqualWith.js b/isEqualWith.js
index c363ae1d1..0518f08ff 100644
--- a/isEqualWith.js
+++ b/isEqualWith.js
@@ -1,4 +1,4 @@
-import baseIsEqual from './internal/baseIsEqual';
+import baseIsEqual from './_baseIsEqual';
/**
* This method is like `_.isEqual` except that it accepts `customizer` which is
diff --git a/isFinite.js b/isFinite.js
index 057d5db27..e0ea97e2d 100644
--- a/isFinite.js
+++ b/isFinite.js
@@ -1,4 +1,4 @@
-import root from './internal/root';
+import root from './_root';
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeIsFinite = root.isFinite;
diff --git a/isMatch.js b/isMatch.js
index e32ffec0c..c49669a93 100644
--- a/isMatch.js
+++ b/isMatch.js
@@ -1,5 +1,5 @@
-import baseIsMatch from './internal/baseIsMatch';
-import getMatchData from './internal/getMatchData';
+import baseIsMatch from './_baseIsMatch';
+import getMatchData from './_getMatchData';
/**
* Performs a deep comparison between `object` and `source` to determine if
diff --git a/isMatchWith.js b/isMatchWith.js
index 71d7c1ff7..b141032bd 100644
--- a/isMatchWith.js
+++ b/isMatchWith.js
@@ -1,5 +1,5 @@
-import baseIsMatch from './internal/baseIsMatch';
-import getMatchData from './internal/getMatchData';
+import baseIsMatch from './_baseIsMatch';
+import getMatchData from './_getMatchData';
/**
* This method is like `_.isMatch` except that it accepts `customizer` which
diff --git a/isNative.js b/isNative.js
index 18bf0432e..d0b25303a 100644
--- a/isNative.js
+++ b/isNative.js
@@ -1,5 +1,5 @@
import isFunction from './isFunction';
-import isHostObject from './internal/isHostObject';
+import isHostObject from './_isHostObject';
import isObjectLike from './isObjectLike';
/** Used to match `RegExp` [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns). */
diff --git a/isObject.js b/isObject.js
index 8aebc4b8d..524064d95 100644
--- a/isObject.js
+++ b/isObject.js
@@ -22,8 +22,6 @@
* // => false
*/
function isObject(value) {
- // Avoid a V8 JIT bug in Chrome 19-20.
- // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
var type = typeof value;
return !!value && (type == 'object' || type == 'function');
}
diff --git a/isPlainObject.js b/isPlainObject.js
index dcef5ebc6..2b15908a5 100644
--- a/isPlainObject.js
+++ b/isPlainObject.js
@@ -1,4 +1,4 @@
-import isHostObject from './internal/isHostObject';
+import isHostObject from './_isHostObject';
import isObjectLike from './isObjectLike';
/** `Object#toString` result references. */
diff --git a/iteratee.js b/iteratee.js
index 7e6a5ba2a..285459f10 100644
--- a/iteratee.js
+++ b/iteratee.js
@@ -1,4 +1,4 @@
-import baseIteratee from './internal/baseIteratee';
+import baseIteratee from './_baseIteratee';
import isArray from './isArray';
import isObjectLike from './isObjectLike';
import matches from './matches';
diff --git a/kebabCase.js b/kebabCase.js
index 3af75437e..b0bf2fc2f 100644
--- a/kebabCase.js
+++ b/kebabCase.js
@@ -1,4 +1,4 @@
-import createCompounder from './internal/createCompounder';
+import createCompounder from './_createCompounder';
/**
* Converts `string` to [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).
diff --git a/keyBy.js b/keyBy.js
index 6e745c1e2..ca8ba1d1f 100644
--- a/keyBy.js
+++ b/keyBy.js
@@ -1,4 +1,4 @@
-import createAggregator from './internal/createAggregator';
+import createAggregator from './_createAggregator';
/**
* Creates an object composed of keys generated from the results of running
@@ -14,17 +14,17 @@ import createAggregator from './internal/createAggregator';
* @returns {Object} Returns the composed aggregate object.
* @example
*
- * var keyData = [
+ * var array = [
* { 'dir': 'left', 'code': 97 },
* { 'dir': 'right', 'code': 100 }
* ];
*
- * _.keyBy(keyData, function(o) {
+ * _.keyBy(array, function(o) {
* return String.fromCharCode(o.code);
* });
* // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
*
- * _.keyBy(keyData, 'dir');
+ * _.keyBy(array, 'dir');
* // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
*/
var keyBy = createAggregator(function(result, value, key) {
diff --git a/keys.js b/keys.js
index 71dd5436d..a50a26ed6 100644
--- a/keys.js
+++ b/keys.js
@@ -1,9 +1,9 @@
-import baseHas from './internal/baseHas';
-import baseKeys from './internal/baseKeys';
-import indexKeys from './internal/indexKeys';
+import baseHas from './_baseHas';
+import baseKeys from './_baseKeys';
+import indexKeys from './_indexKeys';
import isArrayLike from './isArrayLike';
-import isIndex from './internal/isIndex';
-import isPrototype from './internal/isPrototype';
+import isIndex from './_isIndex';
+import isPrototype from './_isPrototype';
/**
* Creates an array of the own enumerable property names of `object`.
diff --git a/keysIn.js b/keysIn.js
index d3e06e263..cb5f83cc7 100644
--- a/keysIn.js
+++ b/keysIn.js
@@ -1,7 +1,7 @@
-import baseKeysIn from './internal/baseKeysIn';
-import indexKeys from './internal/indexKeys';
-import isIndex from './internal/isIndex';
-import isPrototype from './internal/isPrototype';
+import baseKeysIn from './_baseKeysIn';
+import indexKeys from './_indexKeys';
+import isIndex from './_isIndex';
+import isPrototype from './_isPrototype';
/** Used for built-in method references. */
var objectProto = Object.prototype;
diff --git a/lastIndexOf.js b/lastIndexOf.js
index eb56fbc58..3157ef3b3 100644
--- a/lastIndexOf.js
+++ b/lastIndexOf.js
@@ -1,4 +1,4 @@
-import indexOfNaN from './internal/indexOfNaN';
+import indexOfNaN from './_indexOfNaN';
import toInteger from './toInteger';
/* Built-in method references for those with the same name as other `lodash` methods. */
diff --git a/lodash.default.js b/lodash.default.js
index 8f38b6988..92859581d 100644
--- a/lodash.default.js
+++ b/lodash.default.js
@@ -1,6 +1,6 @@
/**
* @license
- * lodash 4.0.1 (Custom Build)
+ * lodash 4.1.0 (Custom Build)
* Build: `lodash modularize exports="es" -o ./`
* Copyright 2012-2016 The Dojo Foundation
* Based on Underscore.js 1.8.3
@@ -18,33 +18,33 @@ import object from './object';
import seq from './seq';
import string from './string';
import util from './util';
-import LazyWrapper from './internal/LazyWrapper';
-import LodashWrapper from './internal/LodashWrapper';
-import Symbol from './internal/Symbol';
-import arrayEach from './internal/arrayEach';
-import arrayPush from './internal/arrayPush';
-import baseForOwn from './internal/baseForOwn';
-import baseFunctions from './internal/baseFunctions';
-import baseInvoke from './internal/baseInvoke';
-import baseIteratee from './internal/baseIteratee';
-import createHybridWrapper from './internal/createHybridWrapper';
+import LazyWrapper from './_LazyWrapper';
+import LodashWrapper from './_LodashWrapper';
+import Symbol from './_Symbol';
+import arrayEach from './_arrayEach';
+import arrayPush from './_arrayPush';
+import baseForOwn from './_baseForOwn';
+import baseFunctions from './_baseFunctions';
+import baseInvoke from './_baseInvoke';
+import baseIteratee from './_baseIteratee';
+import createHybridWrapper from './_createHybridWrapper';
import identity from './identity';
import isArray from './isArray';
import isObject from './isObject';
import keys from './keys';
import last from './last';
-import lazyClone from './internal/lazyClone';
-import lazyReverse from './internal/lazyReverse';
-import lazyValue from './internal/lazyValue';
+import lazyClone from './_lazyClone';
+import lazyReverse from './_lazyReverse';
+import lazyValue from './_lazyValue';
import _mixin from './mixin';
-import realNames from './internal/realNames';
+import realNames from './_realNames';
import rest from './rest';
import thru from './thru';
import toInteger from './toInteger';
import lodash from './wrapperLodash';
/** Used as the semantic version number. */
-var VERSION = '4.0.1';
+var VERSION = '4.1.0';
/** Used to compose bitmasks for wrapper metadata. */
var BIND_KEY_FLAG = 2;
@@ -140,6 +140,7 @@ lodash.intersection = array.intersection;
lodash.intersectionBy = array.intersectionBy;
lodash.intersectionWith = array.intersectionWith;
lodash.invert = object.invert;
+lodash.invertBy = object.invertBy;
lodash.invokeMap = collection.invokeMap;
lodash.iteratee = util.iteratee;
lodash.keyBy = collection.keyBy;
@@ -228,6 +229,7 @@ lodash.xorBy = array.xorBy;
lodash.xorWith = array.xorWith;
lodash.zip = array.zip;
lodash.zipObject = array.zipObject;
+lodash.zipObjectDeep = array.zipObjectDeep;
lodash.zipWith = array.zipWith;
// Add aliases.
diff --git a/lodash.js b/lodash.js
index 78706c40f..8851f4ad1 100644
--- a/lodash.js
+++ b/lodash.js
@@ -1,6 +1,6 @@
/**
* @license
- * lodash 4.0.1 (Custom Build)
+ * lodash 4.1.0 (Custom Build)
* Build: `lodash modularize exports="es" -o ./`
* Copyright 2012-2016 The Dojo Foundation
* Based on Underscore.js 1.8.3
@@ -102,6 +102,7 @@ export { default as intersection } from './intersection';
export { default as intersectionBy } from './intersectionBy';
export { default as intersectionWith } from './intersectionWith';
export { default as invert } from './invert';
+export { default as invertBy } from './invertBy';
export { default as invoke } from './invoke';
export { default as invokeMap } from './invokeMap';
export { default as isArguments } from './isArguments';
@@ -298,5 +299,6 @@ export { default as xorBy } from './xorBy';
export { default as xorWith } from './xorWith';
export { default as zip } from './zip';
export { default as zipObject } from './zipObject';
+export { default as zipObjectDeep } from './zipObjectDeep';
export { default as zipWith } from './zipWith';
export { default as default } from './lodash.default';
diff --git a/lowerCase.js b/lowerCase.js
index e06f7b18b..075654455 100644
--- a/lowerCase.js
+++ b/lowerCase.js
@@ -1,4 +1,4 @@
-import createCompounder from './internal/createCompounder';
+import createCompounder from './_createCompounder';
/**
* Converts `string`, as space separated words, to lower case.
diff --git a/lowerFirst.js b/lowerFirst.js
index f5f6a4fc6..af298e7e9 100644
--- a/lowerFirst.js
+++ b/lowerFirst.js
@@ -1,4 +1,4 @@
-import createCaseFirst from './internal/createCaseFirst';
+import createCaseFirst from './_createCaseFirst';
/**
* Converts the first character of `string` to lower case.
diff --git a/map.js b/map.js
index 4a9a8d721..e41fca95e 100644
--- a/map.js
+++ b/map.js
@@ -1,6 +1,6 @@
-import arrayMap from './internal/arrayMap';
-import baseIteratee from './internal/baseIteratee';
-import baseMap from './internal/baseMap';
+import arrayMap from './_arrayMap';
+import baseIteratee from './_baseIteratee';
+import baseMap from './_baseMap';
import isArray from './isArray';
/**
diff --git a/mapKeys.js b/mapKeys.js
index d1394242f..c0b7e3b86 100644
--- a/mapKeys.js
+++ b/mapKeys.js
@@ -1,5 +1,5 @@
-import baseForOwn from './internal/baseForOwn';
-import baseIteratee from './internal/baseIteratee';
+import baseForOwn from './_baseForOwn';
+import baseIteratee from './_baseIteratee';
/**
* The opposite of `_.mapValues`; this method creates an object with the
diff --git a/mapValues.js b/mapValues.js
index 13e1c8326..75478dd8d 100644
--- a/mapValues.js
+++ b/mapValues.js
@@ -1,5 +1,5 @@
-import baseForOwn from './internal/baseForOwn';
-import baseIteratee from './internal/baseIteratee';
+import baseForOwn from './_baseForOwn';
+import baseIteratee from './_baseIteratee';
/**
* Creates an object with the same keys as `object` and values generated by
diff --git a/matches.js b/matches.js
index e3b06506a..f8c3cd2da 100644
--- a/matches.js
+++ b/matches.js
@@ -1,5 +1,5 @@
-import baseClone from './internal/baseClone';
-import baseMatches from './internal/baseMatches';
+import baseClone from './_baseClone';
+import baseMatches from './_baseMatches';
/**
* Creates a function that performs a deep partial comparison between a given
diff --git a/matchesProperty.js b/matchesProperty.js
index 39a54663e..52d24ec41 100644
--- a/matchesProperty.js
+++ b/matchesProperty.js
@@ -1,5 +1,5 @@
-import baseClone from './internal/baseClone';
-import baseMatchesProperty from './internal/baseMatchesProperty';
+import baseClone from './_baseClone';
+import baseMatchesProperty from './_baseMatchesProperty';
/**
* Creates a function that performs a deep partial comparison between the
diff --git a/max.js b/max.js
index 0efe10a55..588add547 100644
--- a/max.js
+++ b/max.js
@@ -1,4 +1,4 @@
-import baseExtremum from './internal/baseExtremum';
+import baseExtremum from './_baseExtremum';
import gt from './gt';
import identity from './identity';
diff --git a/maxBy.js b/maxBy.js
index 4a058a375..b43221569 100644
--- a/maxBy.js
+++ b/maxBy.js
@@ -1,5 +1,5 @@
-import baseExtremum from './internal/baseExtremum';
-import baseIteratee from './internal/baseIteratee';
+import baseExtremum from './_baseExtremum';
+import baseIteratee from './_baseIteratee';
import gt from './gt';
/**
diff --git a/memoize.js b/memoize.js
index 42577daf5..4fc43356b 100644
--- a/memoize.js
+++ b/memoize.js
@@ -1,4 +1,4 @@
-import MapCache from './internal/MapCache';
+import MapCache from './_MapCache';
/** Used as the `TypeError` message for "Functions" methods. */
var FUNC_ERROR_TEXT = 'Expected a function';
diff --git a/merge.js b/merge.js
index 355fccd90..85cc86409 100644
--- a/merge.js
+++ b/merge.js
@@ -1,5 +1,5 @@
-import baseMerge from './internal/baseMerge';
-import createAssigner from './internal/createAssigner';
+import baseMerge from './_baseMerge';
+import createAssigner from './_createAssigner';
/**
* Recursively merges own and inherited enumerable properties of source
diff --git a/mergeWith.js b/mergeWith.js
index 69a584891..508bc10bd 100644
--- a/mergeWith.js
+++ b/mergeWith.js
@@ -1,5 +1,5 @@
-import baseMerge from './internal/baseMerge';
-import createAssigner from './internal/createAssigner';
+import baseMerge from './_baseMerge';
+import createAssigner from './_createAssigner';
/**
* This method is like `_.merge` except that it accepts `customizer` which
diff --git a/method.js b/method.js
index cb951de9c..dfce962a4 100644
--- a/method.js
+++ b/method.js
@@ -1,4 +1,4 @@
-import baseInvoke from './internal/baseInvoke';
+import baseInvoke from './_baseInvoke';
import rest from './rest';
/**
diff --git a/methodOf.js b/methodOf.js
index dfdfb7cb8..d807b604b 100644
--- a/methodOf.js
+++ b/methodOf.js
@@ -1,4 +1,4 @@
-import baseInvoke from './internal/baseInvoke';
+import baseInvoke from './_baseInvoke';
import rest from './rest';
/**
diff --git a/min.js b/min.js
index 631fa4473..c1d9c38bf 100644
--- a/min.js
+++ b/min.js
@@ -1,4 +1,4 @@
-import baseExtremum from './internal/baseExtremum';
+import baseExtremum from './_baseExtremum';
import identity from './identity';
import lt from './lt';
diff --git a/minBy.js b/minBy.js
index 7e21fec56..1edb69fc7 100644
--- a/minBy.js
+++ b/minBy.js
@@ -1,5 +1,5 @@
-import baseExtremum from './internal/baseExtremum';
-import baseIteratee from './internal/baseIteratee';
+import baseExtremum from './_baseExtremum';
+import baseIteratee from './_baseIteratee';
import lt from './lt';
/**
diff --git a/mixin.js b/mixin.js
index 822d9bde2..46c53688a 100644
--- a/mixin.js
+++ b/mixin.js
@@ -1,7 +1,7 @@
-import arrayEach from './internal/arrayEach';
-import arrayPush from './internal/arrayPush';
-import baseFunctions from './internal/baseFunctions';
-import copyArray from './internal/copyArray';
+import arrayEach from './_arrayEach';
+import arrayPush from './_arrayPush';
+import baseFunctions from './_baseFunctions';
+import copyArray from './_copyArray';
import isFunction from './isFunction';
import isObject from './isObject';
import keys from './keys';
diff --git a/object.default.js b/object.default.js
index b4c6411e6..30ef1a8fb 100644
--- a/object.default.js
+++ b/object.default.js
@@ -19,6 +19,7 @@ import get from './get';
import has from './has';
import hasIn from './hasIn';
import invert from './invert';
+import invertBy from './invertBy';
import invoke from './invoke';
import keys from './keys';
import keysIn from './keysIn';
@@ -45,9 +46,9 @@ export default {
defaults, defaultsDeep, extend, extendWith, findKey,
findLastKey, forIn, forInRight, forOwn, forOwnRight,
functions, functionsIn, get, has, hasIn,
- invert, invoke, keys, keysIn, mapKeys,
- mapValues, merge, mergeWith, omit, omitBy,
- pick, pickBy, result, set, setWith,
- toPairs, toPairsIn, transform, unset, values,
- valuesIn
+ invert, invertBy, invoke, keys, keysIn,
+ mapKeys, mapValues, merge, mergeWith, omit,
+ omitBy, pick, pickBy, result, set,
+ setWith, toPairs, toPairsIn, transform, unset,
+ values, valuesIn
};
diff --git a/object.js b/object.js
index 79bb6ef76..8826ba4fb 100644
--- a/object.js
+++ b/object.js
@@ -19,6 +19,7 @@ export { default as get } from './get';
export { default as has } from './has';
export { default as hasIn } from './hasIn';
export { default as invert } from './invert';
+export { default as invertBy } from './invertBy';
export { default as invoke } from './invoke';
export { default as keys } from './keys';
export { default as keysIn } from './keysIn';
diff --git a/omit.js b/omit.js
index ed341bce8..c073d0bd3 100644
--- a/omit.js
+++ b/omit.js
@@ -1,7 +1,7 @@
-import arrayMap from './internal/arrayMap';
-import baseDifference from './internal/baseDifference';
-import baseFlatten from './internal/baseFlatten';
-import basePick from './internal/basePick';
+import arrayMap from './_arrayMap';
+import baseDifference from './_baseDifference';
+import baseFlatten from './_baseFlatten';
+import basePick from './_basePick';
import keysIn from './keysIn';
import rest from './rest';
diff --git a/omitBy.js b/omitBy.js
index 56179f798..f61c3dabd 100644
--- a/omitBy.js
+++ b/omitBy.js
@@ -1,5 +1,5 @@
-import baseIteratee from './internal/baseIteratee';
-import basePickBy from './internal/basePickBy';
+import baseIteratee from './_baseIteratee';
+import basePickBy from './_basePickBy';
/**
* The opposite of `_.pickBy`; this method creates an object composed of the
diff --git a/orderBy.js b/orderBy.js
index dd3c2a6d8..94dd9ae22 100644
--- a/orderBy.js
+++ b/orderBy.js
@@ -1,4 +1,4 @@
-import baseOrderBy from './internal/baseOrderBy';
+import baseOrderBy from './_baseOrderBy';
import isArray from './isArray';
/**
diff --git a/over.js b/over.js
index 38502a411..6a0444f88 100644
--- a/over.js
+++ b/over.js
@@ -1,5 +1,5 @@
-import arrayMap from './internal/arrayMap';
-import createOver from './internal/createOver';
+import arrayMap from './_arrayMap';
+import createOver from './_createOver';
/**
* Creates a function that invokes `iteratees` with the arguments provided
diff --git a/overArgs.js b/overArgs.js
index 5929f42b7..fde6c73c3 100644
--- a/overArgs.js
+++ b/overArgs.js
@@ -1,7 +1,7 @@
-import apply from './internal/apply';
-import arrayMap from './internal/arrayMap';
-import baseFlatten from './internal/baseFlatten';
-import baseIteratee from './internal/baseIteratee';
+import apply from './_apply';
+import arrayMap from './_arrayMap';
+import baseFlatten from './_baseFlatten';
+import baseIteratee from './_baseIteratee';
import rest from './rest';
/* Built-in method references for those with the same name as other `lodash` methods. */
diff --git a/overEvery.js b/overEvery.js
index 922624d77..df70e6da3 100644
--- a/overEvery.js
+++ b/overEvery.js
@@ -1,5 +1,5 @@
-import arrayEvery from './internal/arrayEvery';
-import createOver from './internal/createOver';
+import arrayEvery from './_arrayEvery';
+import createOver from './_createOver';
/**
* Creates a function that checks if **all** of the `predicates` return
diff --git a/overSome.js b/overSome.js
index 1e41a8b16..d1a5d9d56 100644
--- a/overSome.js
+++ b/overSome.js
@@ -1,5 +1,5 @@
-import arraySome from './internal/arraySome';
-import createOver from './internal/createOver';
+import arraySome from './_arraySome';
+import createOver from './_createOver';
/**
* Creates a function that checks if **any** of the `predicates` return
diff --git a/package.json b/package.json
index 333c422dc..17a6fe3a1 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "lodash-es",
- "version": "4.0.1",
+ "version": "4.1.0",
"description": "Lodash exported as ES modules.",
"homepage": "https://lodash.com/custom-builds",
"license": "MIT",
diff --git a/pad.js b/pad.js
index 887959d2f..61fa8b815 100644
--- a/pad.js
+++ b/pad.js
@@ -1,5 +1,5 @@
-import createPadding from './internal/createPadding';
-import stringSize from './internal/stringSize';
+import createPadding from './_createPadding';
+import stringSize from './_stringSize';
import toInteger from './toInteger';
import toString from './toString';
diff --git a/padEnd.js b/padEnd.js
index ada5680fe..cc266cd31 100644
--- a/padEnd.js
+++ b/padEnd.js
@@ -1,4 +1,4 @@
-import createPadding from './internal/createPadding';
+import createPadding from './_createPadding';
import toString from './toString';
/**
diff --git a/padStart.js b/padStart.js
index 4cf076fa1..c788b84f8 100644
--- a/padStart.js
+++ b/padStart.js
@@ -1,4 +1,4 @@
-import createPadding from './internal/createPadding';
+import createPadding from './_createPadding';
import toString from './toString';
/**
diff --git a/parseInt.js b/parseInt.js
index 62363f2a2..f99099a56 100644
--- a/parseInt.js
+++ b/parseInt.js
@@ -1,4 +1,4 @@
-import root from './internal/root';
+import root from './_root';
import toString from './toString';
/** Used to match leading and trailing whitespace. */
diff --git a/partial.js b/partial.js
index a07c855f2..8de56f127 100644
--- a/partial.js
+++ b/partial.js
@@ -1,5 +1,5 @@
-import createWrapper from './internal/createWrapper';
-import replaceHolders from './internal/replaceHolders';
+import createWrapper from './_createWrapper';
+import replaceHolders from './_replaceHolders';
import rest from './rest';
/** Used to compose bitmasks for wrapper metadata. */
diff --git a/partialRight.js b/partialRight.js
index 1fd853b7a..9c09f49e6 100644
--- a/partialRight.js
+++ b/partialRight.js
@@ -1,5 +1,5 @@
-import createWrapper from './internal/createWrapper';
-import replaceHolders from './internal/replaceHolders';
+import createWrapper from './_createWrapper';
+import replaceHolders from './_replaceHolders';
import rest from './rest';
/** Used to compose bitmasks for wrapper metadata. */
diff --git a/partition.js b/partition.js
index ec503d92a..524a8d321 100644
--- a/partition.js
+++ b/partition.js
@@ -1,4 +1,4 @@
-import createAggregator from './internal/createAggregator';
+import createAggregator from './_createAggregator';
/**
* Creates an array of elements split into two groups, the first of which
diff --git a/pick.js b/pick.js
index f3b83631d..9be4baf7c 100644
--- a/pick.js
+++ b/pick.js
@@ -1,5 +1,5 @@
-import baseFlatten from './internal/baseFlatten';
-import basePick from './internal/basePick';
+import baseFlatten from './_baseFlatten';
+import basePick from './_basePick';
import rest from './rest';
/**
diff --git a/pickBy.js b/pickBy.js
index 86f7bf2c3..2ec375349 100644
--- a/pickBy.js
+++ b/pickBy.js
@@ -1,5 +1,5 @@
-import baseIteratee from './internal/baseIteratee';
-import basePickBy from './internal/basePickBy';
+import baseIteratee from './_baseIteratee';
+import basePickBy from './_basePickBy';
/**
* Creates an object composed of the `object` properties `predicate` returns
diff --git a/plant.js b/plant.js
index 4adaedcac..339412d60 100644
--- a/plant.js
+++ b/plant.js
@@ -1,5 +1,5 @@
-import baseLodash from './internal/baseLodash';
-import wrapperClone from './internal/wrapperClone';
+import baseLodash from './_baseLodash';
+import wrapperClone from './_wrapperClone';
/**
* Creates a clone of the chained sequence planting `value` as the wrapped value.
diff --git a/property.js b/property.js
index 534035f60..daeea29f9 100644
--- a/property.js
+++ b/property.js
@@ -1,6 +1,6 @@
-import baseProperty from './internal/baseProperty';
-import basePropertyDeep from './internal/basePropertyDeep';
-import isKey from './internal/isKey';
+import baseProperty from './_baseProperty';
+import basePropertyDeep from './_basePropertyDeep';
+import isKey from './_isKey';
/**
* Creates a function that returns the value at `path` of a given object.
diff --git a/propertyOf.js b/propertyOf.js
index 9e4d9349e..cf4614545 100644
--- a/propertyOf.js
+++ b/propertyOf.js
@@ -1,4 +1,4 @@
-import baseGet from './internal/baseGet';
+import baseGet from './_baseGet';
/**
* The opposite of `_.property`; this method creates a function that returns
diff --git a/pullAll.js b/pullAll.js
index eaa1d1fdd..abb00ed8f 100644
--- a/pullAll.js
+++ b/pullAll.js
@@ -1,4 +1,4 @@
-import basePullAll from './internal/basePullAll';
+import basePullAll from './_basePullAll';
/**
* This method is like `_.pull` except that it accepts an array of values to remove.
diff --git a/pullAllBy.js b/pullAllBy.js
index e9325f47d..162f98feb 100644
--- a/pullAllBy.js
+++ b/pullAllBy.js
@@ -1,5 +1,5 @@
-import baseIteratee from './internal/baseIteratee';
-import basePullAllBy from './internal/basePullAllBy';
+import baseIteratee from './_baseIteratee';
+import basePullAllBy from './_basePullAllBy';
/**
* This method is like `_.pullAll` except that it accepts `iteratee` which is
diff --git a/pullAt.js b/pullAt.js
index c99e08049..28f1eb679 100644
--- a/pullAt.js
+++ b/pullAt.js
@@ -1,8 +1,8 @@
-import arrayMap from './internal/arrayMap';
-import baseAt from './internal/baseAt';
-import baseFlatten from './internal/baseFlatten';
-import basePullAt from './internal/basePullAt';
-import compareAscending from './internal/compareAscending';
+import arrayMap from './_arrayMap';
+import baseAt from './_baseAt';
+import baseFlatten from './_baseFlatten';
+import basePullAt from './_basePullAt';
+import compareAscending from './_compareAscending';
import rest from './rest';
/**
diff --git a/random.js b/random.js
index 5f23877c5..181e48ab0 100644
--- a/random.js
+++ b/random.js
@@ -1,5 +1,5 @@
-import baseRandom from './internal/baseRandom';
-import isIterateeCall from './internal/isIterateeCall';
+import baseRandom from './_baseRandom';
+import isIterateeCall from './_isIterateeCall';
import toNumber from './toNumber';
/** Built-in method references without a dependency on `root`. */
diff --git a/range.js b/range.js
index 2883bfd82..e9c959648 100644
--- a/range.js
+++ b/range.js
@@ -1,4 +1,4 @@
-import createRange from './internal/createRange';
+import createRange from './_createRange';
/**
* Creates an array of numbers (positive and/or negative) progressing from
diff --git a/rangeRight.js b/rangeRight.js
index fc3f7d511..f3f602eda 100644
--- a/rangeRight.js
+++ b/rangeRight.js
@@ -1,4 +1,4 @@
-import createRange from './internal/createRange';
+import createRange from './_createRange';
/**
* This method is like `_.range` except that it populates values in
diff --git a/rearg.js b/rearg.js
index ea11ab4f5..720f05c9f 100644
--- a/rearg.js
+++ b/rearg.js
@@ -1,5 +1,5 @@
-import baseFlatten from './internal/baseFlatten';
-import createWrapper from './internal/createWrapper';
+import baseFlatten from './_baseFlatten';
+import createWrapper from './_createWrapper';
import rest from './rest';
/** Used to compose bitmasks for wrapper metadata. */
diff --git a/reduce.js b/reduce.js
index 578f46d9f..84f30363c 100644
--- a/reduce.js
+++ b/reduce.js
@@ -1,7 +1,7 @@
-import arrayReduce from './internal/arrayReduce';
-import baseEach from './internal/baseEach';
-import baseIteratee from './internal/baseIteratee';
-import baseReduce from './internal/baseReduce';
+import arrayReduce from './_arrayReduce';
+import baseEach from './_baseEach';
+import baseIteratee from './_baseIteratee';
+import baseReduce from './_baseReduce';
import isArray from './isArray';
/**
@@ -30,7 +30,7 @@ import isArray from './isArray';
*
* _.reduce([1, 2], function(sum, n) {
* return sum + n;
- * });
+ * }, 0);
* // => 3
*
* _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
diff --git a/reduceRight.js b/reduceRight.js
index baf846c4c..21e3e284b 100644
--- a/reduceRight.js
+++ b/reduceRight.js
@@ -1,7 +1,7 @@
-import arrayReduceRight from './internal/arrayReduceRight';
-import baseEachRight from './internal/baseEachRight';
-import baseIteratee from './internal/baseIteratee';
-import baseReduce from './internal/baseReduce';
+import arrayReduceRight from './_arrayReduceRight';
+import baseEachRight from './_baseEachRight';
+import baseIteratee from './_baseIteratee';
+import baseReduce from './_baseReduce';
import isArray from './isArray';
/**
diff --git a/reject.js b/reject.js
index 8651c1312..d61f39acc 100644
--- a/reject.js
+++ b/reject.js
@@ -1,6 +1,6 @@
-import arrayFilter from './internal/arrayFilter';
-import baseFilter from './internal/baseFilter';
-import baseIteratee from './internal/baseIteratee';
+import arrayFilter from './_arrayFilter';
+import baseFilter from './_baseFilter';
+import baseIteratee from './_baseIteratee';
import isArray from './isArray';
/**
diff --git a/remove.js b/remove.js
index ffa05fbf5..c929c55cf 100644
--- a/remove.js
+++ b/remove.js
@@ -1,5 +1,5 @@
-import baseIteratee from './internal/baseIteratee';
-import basePullAt from './internal/basePullAt';
+import baseIteratee from './_baseIteratee';
+import basePullAt from './_basePullAt';
/**
* Removes all elements from `array` that `predicate` returns truthy for
diff --git a/rest.js b/rest.js
index 6f8ec16e4..65a559abc 100644
--- a/rest.js
+++ b/rest.js
@@ -1,4 +1,4 @@
-import apply from './internal/apply';
+import apply from './_apply';
import toInteger from './toInteger';
/** Used as the `TypeError` message for "Functions" methods. */
diff --git a/result.js b/result.js
index c5652cb80..1e21a7e35 100644
--- a/result.js
+++ b/result.js
@@ -1,8 +1,8 @@
-import baseToPath from './internal/baseToPath';
+import baseToPath from './_baseToPath';
import get from './get';
import isFunction from './isFunction';
-import isKey from './internal/isKey';
-import parent from './internal/parent';
+import isKey from './_isKey';
+import parent from './_parent';
/**
* This method is like `_.get` except that if the resolved value is a function
diff --git a/round.js b/round.js
index ccfd20bee..e10c05605 100644
--- a/round.js
+++ b/round.js
@@ -1,4 +1,4 @@
-import createRound from './internal/createRound';
+import createRound from './_createRound';
/**
* Computes `number` rounded to `precision`.
diff --git a/sample.js b/sample.js
index d1add77d0..1f4159335 100644
--- a/sample.js
+++ b/sample.js
@@ -1,4 +1,4 @@
-import baseRandom from './internal/baseRandom';
+import baseRandom from './_baseRandom';
import isArrayLike from './isArrayLike';
import values from './values';
diff --git a/sampleSize.js b/sampleSize.js
index bf6ef1d50..3db5e78c6 100644
--- a/sampleSize.js
+++ b/sampleSize.js
@@ -1,5 +1,5 @@
-import baseClamp from './internal/baseClamp';
-import baseRandom from './internal/baseRandom';
+import baseClamp from './_baseClamp';
+import baseRandom from './_baseRandom';
import toArray from './toArray';
import toInteger from './toInteger';
diff --git a/set.js b/set.js
index eeab21b96..7ae317aac 100644
--- a/set.js
+++ b/set.js
@@ -1,4 +1,4 @@
-import baseSet from './internal/baseSet';
+import baseSet from './_baseSet';
/**
* Sets the value at `path` of `object`. If a portion of `path` doesn't exist
diff --git a/setWith.js b/setWith.js
index 2950f5860..700c6a702 100644
--- a/setWith.js
+++ b/setWith.js
@@ -1,4 +1,4 @@
-import baseSet from './internal/baseSet';
+import baseSet from './_baseSet';
/**
* This method is like `_.set` except that it accepts `customizer` which is
diff --git a/size.js b/size.js
index 57cc21aac..bcce92113 100644
--- a/size.js
+++ b/size.js
@@ -1,7 +1,7 @@
import isArrayLike from './isArrayLike';
import isString from './isString';
import keys from './keys';
-import stringSize from './internal/stringSize';
+import stringSize from './_stringSize';
/**
* Gets the size of `collection` by returning its length for array-like
diff --git a/slice.js b/slice.js
index bec70cff2..f7fc8eb10 100644
--- a/slice.js
+++ b/slice.js
@@ -1,5 +1,5 @@
-import baseSlice from './internal/baseSlice';
-import isIterateeCall from './internal/isIterateeCall';
+import baseSlice from './_baseSlice';
+import isIterateeCall from './_isIterateeCall';
import toInteger from './toInteger';
/**
diff --git a/snakeCase.js b/snakeCase.js
index 8261f3387..f067357a4 100644
--- a/snakeCase.js
+++ b/snakeCase.js
@@ -1,4 +1,4 @@
-import createCompounder from './internal/createCompounder';
+import createCompounder from './_createCompounder';
/**
* Converts `string` to [snake case](https://en.wikipedia.org/wiki/Snake_case).
diff --git a/some.js b/some.js
index 816faef96..122ceb162 100644
--- a/some.js
+++ b/some.js
@@ -1,8 +1,8 @@
-import arraySome from './internal/arraySome';
-import baseIteratee from './internal/baseIteratee';
-import baseSome from './internal/baseSome';
+import arraySome from './_arraySome';
+import baseIteratee from './_baseIteratee';
+import baseSome from './_baseSome';
import isArray from './isArray';
-import isIterateeCall from './internal/isIterateeCall';
+import isIterateeCall from './_isIterateeCall';
/**
* Checks if `predicate` returns truthy for **any** element of `collection`.
diff --git a/sortBy.js b/sortBy.js
index cb28447f9..09b9e4374 100644
--- a/sortBy.js
+++ b/sortBy.js
@@ -1,6 +1,6 @@
-import baseFlatten from './internal/baseFlatten';
-import baseOrderBy from './internal/baseOrderBy';
-import isIterateeCall from './internal/isIterateeCall';
+import baseFlatten from './_baseFlatten';
+import baseOrderBy from './_baseOrderBy';
+import isIterateeCall from './_isIterateeCall';
import rest from './rest';
/**
diff --git a/sortedIndex.js b/sortedIndex.js
index 4665e01da..5e90a8ff2 100644
--- a/sortedIndex.js
+++ b/sortedIndex.js
@@ -1,4 +1,4 @@
-import baseSortedIndex from './internal/baseSortedIndex';
+import baseSortedIndex from './_baseSortedIndex';
/**
* Uses a binary search to determine the lowest index at which `value` should
diff --git a/sortedIndexBy.js b/sortedIndexBy.js
index 9dec783e6..9a44fc10b 100644
--- a/sortedIndexBy.js
+++ b/sortedIndexBy.js
@@ -1,5 +1,5 @@
-import baseIteratee from './internal/baseIteratee';
-import baseSortedIndexBy from './internal/baseSortedIndexBy';
+import baseIteratee from './_baseIteratee';
+import baseSortedIndexBy from './_baseSortedIndexBy';
/**
* This method is like `_.sortedIndex` except that it accepts `iteratee`
diff --git a/sortedIndexOf.js b/sortedIndexOf.js
index 6c24cedfa..29971e358 100644
--- a/sortedIndexOf.js
+++ b/sortedIndexOf.js
@@ -1,4 +1,4 @@
-import baseSortedIndex from './internal/baseSortedIndex';
+import baseSortedIndex from './_baseSortedIndex';
import eq from './eq';
/**
diff --git a/sortedLastIndex.js b/sortedLastIndex.js
index fed0beb48..97cb659b9 100644
--- a/sortedLastIndex.js
+++ b/sortedLastIndex.js
@@ -1,4 +1,4 @@
-import baseSortedIndex from './internal/baseSortedIndex';
+import baseSortedIndex from './_baseSortedIndex';
/**
* This method is like `_.sortedIndex` except that it returns the highest
diff --git a/sortedLastIndexBy.js b/sortedLastIndexBy.js
index dee0af533..8f4a20ded 100644
--- a/sortedLastIndexBy.js
+++ b/sortedLastIndexBy.js
@@ -1,5 +1,5 @@
-import baseIteratee from './internal/baseIteratee';
-import baseSortedIndexBy from './internal/baseSortedIndexBy';
+import baseIteratee from './_baseIteratee';
+import baseSortedIndexBy from './_baseSortedIndexBy';
/**
* This method is like `_.sortedLastIndex` except that it accepts `iteratee`
diff --git a/sortedLastIndexOf.js b/sortedLastIndexOf.js
index 2d5b98caf..f05e54318 100644
--- a/sortedLastIndexOf.js
+++ b/sortedLastIndexOf.js
@@ -1,4 +1,4 @@
-import baseSortedIndex from './internal/baseSortedIndex';
+import baseSortedIndex from './_baseSortedIndex';
import eq from './eq';
/**
diff --git a/sortedUniq.js b/sortedUniq.js
index 87b88345a..1b8e45e7a 100644
--- a/sortedUniq.js
+++ b/sortedUniq.js
@@ -1,4 +1,4 @@
-import baseSortedUniq from './internal/baseSortedUniq';
+import baseSortedUniq from './_baseSortedUniq';
/**
* This method is like `_.uniq` except that it's designed and optimized
diff --git a/sortedUniqBy.js b/sortedUniqBy.js
index d674c6f91..fa095e2ff 100644
--- a/sortedUniqBy.js
+++ b/sortedUniqBy.js
@@ -1,5 +1,5 @@
-import baseIteratee from './internal/baseIteratee';
-import baseSortedUniqBy from './internal/baseSortedUniqBy';
+import baseIteratee from './_baseIteratee';
+import baseSortedUniqBy from './_baseSortedUniqBy';
/**
* This method is like `_.uniqBy` except that it's designed and optimized
diff --git a/spread.js b/spread.js
index 684585eec..12a4de9e1 100644
--- a/spread.js
+++ b/spread.js
@@ -1,4 +1,4 @@
-import apply from './internal/apply';
+import apply from './_apply';
/** Used as the `TypeError` message for "Functions" methods. */
var FUNC_ERROR_TEXT = 'Expected a function';
diff --git a/startCase.js b/startCase.js
index ec7dc7cac..320ce23db 100644
--- a/startCase.js
+++ b/startCase.js
@@ -1,5 +1,5 @@
import capitalize from './capitalize';
-import createCompounder from './internal/createCompounder';
+import createCompounder from './_createCompounder';
/**
* Converts `string` to [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).
diff --git a/startsWith.js b/startsWith.js
index 064fcc6ab..49768d1d1 100644
--- a/startsWith.js
+++ b/startsWith.js
@@ -1,4 +1,4 @@
-import baseClamp from './internal/baseClamp';
+import baseClamp from './_baseClamp';
import toInteger from './toInteger';
import toString from './toString';
diff --git a/sum.js b/sum.js
index 9bba5cfa2..47cdab263 100644
--- a/sum.js
+++ b/sum.js
@@ -1,4 +1,4 @@
-import baseSum from './internal/baseSum';
+import baseSum from './_baseSum';
import identity from './identity';
/**
@@ -17,7 +17,7 @@ import identity from './identity';
function sum(array) {
return (array && array.length)
? baseSum(array, identity)
- : undefined;
+ : 0;
}
export default sum;
diff --git a/sumBy.js b/sumBy.js
index ce1774839..9faa08e52 100644
--- a/sumBy.js
+++ b/sumBy.js
@@ -1,5 +1,5 @@
-import baseIteratee from './internal/baseIteratee';
-import baseSum from './internal/baseSum';
+import baseIteratee from './_baseIteratee';
+import baseSum from './_baseSum';
/**
* This method is like `_.sum` except that it accepts `iteratee` which is
@@ -26,7 +26,7 @@ import baseSum from './internal/baseSum';
function sumBy(array, iteratee) {
return (array && array.length)
? baseSum(array, baseIteratee(iteratee))
- : undefined;
+ : 0;
}
export default sumBy;
diff --git a/take.js b/take.js
index bd5ae3446..ca6d228b1 100644
--- a/take.js
+++ b/take.js
@@ -1,4 +1,4 @@
-import baseSlice from './internal/baseSlice';
+import baseSlice from './_baseSlice';
import toInteger from './toInteger';
/**
diff --git a/takeRight.js b/takeRight.js
index 014642298..61a91afc2 100644
--- a/takeRight.js
+++ b/takeRight.js
@@ -1,4 +1,4 @@
-import baseSlice from './internal/baseSlice';
+import baseSlice from './_baseSlice';
import toInteger from './toInteger';
/**
diff --git a/takeRightWhile.js b/takeRightWhile.js
index 300758160..e485cc0d4 100644
--- a/takeRightWhile.js
+++ b/takeRightWhile.js
@@ -1,5 +1,5 @@
-import baseIteratee from './internal/baseIteratee';
-import baseWhile from './internal/baseWhile';
+import baseIteratee from './_baseIteratee';
+import baseWhile from './_baseWhile';
/**
* Creates a slice of `array` with elements taken from the end. Elements are
diff --git a/takeWhile.js b/takeWhile.js
index a4baa4256..88de89b67 100644
--- a/takeWhile.js
+++ b/takeWhile.js
@@ -1,5 +1,5 @@
-import baseIteratee from './internal/baseIteratee';
-import baseWhile from './internal/baseWhile';
+import baseIteratee from './_baseIteratee';
+import baseWhile from './_baseWhile';
/**
* Creates a slice of `array` with elements taken from the beginning. Elements
diff --git a/template.js b/template.js
index e8778ca35..c8bf402f7 100644
--- a/template.js
+++ b/template.js
@@ -1,12 +1,12 @@
-import assignInDefaults from './internal/assignInDefaults';
+import assignInDefaults from './_assignInDefaults';
import assignInWith from './assignInWith';
import attempt from './attempt';
-import baseValues from './internal/baseValues';
-import escapeStringChar from './internal/escapeStringChar';
+import baseValues from './_baseValues';
+import escapeStringChar from './_escapeStringChar';
import isError from './isError';
-import isIterateeCall from './internal/isIterateeCall';
+import isIterateeCall from './_isIterateeCall';
import keys from './keys';
-import reInterpolate from './internal/reInterpolate';
+import reInterpolate from './_reInterpolate';
import templateSettings from './templateSettings';
import toString from './toString';
diff --git a/templateSettings.js b/templateSettings.js
index 5bce93057..c614525a4 100644
--- a/templateSettings.js
+++ b/templateSettings.js
@@ -1,7 +1,7 @@
import escape from './escape';
-import reEscape from './internal/reEscape';
-import reEvaluate from './internal/reEvaluate';
-import reInterpolate from './internal/reInterpolate';
+import reEscape from './_reEscape';
+import reEvaluate from './_reEvaluate';
+import reInterpolate from './_reInterpolate';
/**
* By default, the template delimiters used by lodash are like those in
diff --git a/times.js b/times.js
index 06cda5d92..30b4503e1 100644
--- a/times.js
+++ b/times.js
@@ -1,5 +1,5 @@
-import baseTimes from './internal/baseTimes';
-import toFunction from './internal/toFunction';
+import baseTimes from './_baseTimes';
+import toFunction from './_toFunction';
import toInteger from './toInteger';
/** Used as references for various `Number` constants. */
diff --git a/toArray.js b/toArray.js
index 1da77f963..559383e98 100644
--- a/toArray.js
+++ b/toArray.js
@@ -1,12 +1,12 @@
-import Symbol from './internal/Symbol';
-import copyArray from './internal/copyArray';
-import getTag from './internal/getTag';
+import Symbol from './_Symbol';
+import copyArray from './_copyArray';
+import getTag from './_getTag';
import isArrayLike from './isArrayLike';
import isString from './isString';
-import iteratorToArray from './internal/iteratorToArray';
-import mapToArray from './internal/mapToArray';
-import setToArray from './internal/setToArray';
-import stringToArray from './internal/stringToArray';
+import iteratorToArray from './_iteratorToArray';
+import mapToArray from './_mapToArray';
+import setToArray from './_setToArray';
+import stringToArray from './_stringToArray';
import values from './values';
/** `Object#toString` result references. */
diff --git a/toLength.js b/toLength.js
index d48044f60..7af01ad68 100644
--- a/toLength.js
+++ b/toLength.js
@@ -1,4 +1,4 @@
-import baseClamp from './internal/baseClamp';
+import baseClamp from './_baseClamp';
import toInteger from './toInteger';
/** Used as references for the maximum length and index of an array. */
diff --git a/toPairs.js b/toPairs.js
index 3aefd1751..4a411e1fc 100644
--- a/toPairs.js
+++ b/toPairs.js
@@ -1,4 +1,4 @@
-import baseToPairs from './internal/baseToPairs';
+import baseToPairs from './_baseToPairs';
import keys from './keys';
/**
diff --git a/toPairsIn.js b/toPairsIn.js
index 5b198c4c7..950f14b85 100644
--- a/toPairsIn.js
+++ b/toPairsIn.js
@@ -1,4 +1,4 @@
-import baseToPairs from './internal/baseToPairs';
+import baseToPairs from './_baseToPairs';
import keysIn from './keysIn';
/**
diff --git a/toPath.js b/toPath.js
index fa0bd118b..03a6db89f 100644
--- a/toPath.js
+++ b/toPath.js
@@ -1,6 +1,6 @@
-import arrayMap from './internal/arrayMap';
+import arrayMap from './_arrayMap';
import isArray from './isArray';
-import stringToPath from './internal/stringToPath';
+import stringToPath from './_stringToPath';
/**
* Converts `value` to a property path array.
diff --git a/toPlainObject.js b/toPlainObject.js
index 9bab37ad7..c5b2852ee 100644
--- a/toPlainObject.js
+++ b/toPlainObject.js
@@ -1,4 +1,4 @@
-import copyObject from './internal/copyObject';
+import copyObject from './_copyObject';
import keysIn from './keysIn';
/**
diff --git a/toSafeInteger.js b/toSafeInteger.js
index c608ee09a..1260235e7 100644
--- a/toSafeInteger.js
+++ b/toSafeInteger.js
@@ -1,4 +1,4 @@
-import baseClamp from './internal/baseClamp';
+import baseClamp from './_baseClamp';
import toInteger from './toInteger';
/** Used as references for various `Number` constants. */
diff --git a/toString.js b/toString.js
index fe0eebf68..e1af8b2be 100644
--- a/toString.js
+++ b/toString.js
@@ -1,4 +1,4 @@
-import Symbol from './internal/Symbol';
+import Symbol from './_Symbol';
import isSymbol from './isSymbol';
/** Used as references for various `Number` constants. */
diff --git a/transform.js b/transform.js
index fdbe2c7d8..effc6d127 100644
--- a/transform.js
+++ b/transform.js
@@ -1,7 +1,7 @@
-import arrayEach from './internal/arrayEach';
-import baseCreate from './internal/baseCreate';
-import baseForOwn from './internal/baseForOwn';
-import baseIteratee from './internal/baseIteratee';
+import arrayEach from './_arrayEach';
+import baseCreate from './_baseCreate';
+import baseForOwn from './_baseForOwn';
+import baseIteratee from './_baseIteratee';
import isArray from './isArray';
import isFunction from './isFunction';
import isObject from './isObject';
@@ -27,12 +27,12 @@ import isTypedArray from './isTypedArray';
* _.transform([2, 3, 4], function(result, n) {
* result.push(n *= n);
* return n % 2 == 0;
- * });
+ * }, []);
* // => [4, 9]
*
* _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
* (result[value] || (result[value] = [])).push(key);
- * });
+ * }, {});
* // => { '1': ['a', 'c'], '2': ['b'] }
*/
function transform(object, iteratee, accumulator) {
diff --git a/trim.js b/trim.js
index adc9ad8f3..76c8adc3d 100644
--- a/trim.js
+++ b/trim.js
@@ -1,6 +1,6 @@
-import charsEndIndex from './internal/charsEndIndex';
-import charsStartIndex from './internal/charsStartIndex';
-import stringToArray from './internal/stringToArray';
+import charsEndIndex from './_charsEndIndex';
+import charsStartIndex from './_charsStartIndex';
+import stringToArray from './_stringToArray';
import toString from './toString';
/** Used to match leading and trailing whitespace. */
diff --git a/trimEnd.js b/trimEnd.js
index bf10e4902..fbde7f963 100644
--- a/trimEnd.js
+++ b/trimEnd.js
@@ -1,5 +1,5 @@
-import charsEndIndex from './internal/charsEndIndex';
-import stringToArray from './internal/stringToArray';
+import charsEndIndex from './_charsEndIndex';
+import stringToArray from './_stringToArray';
import toString from './toString';
/** Used to match leading and trailing whitespace. */
diff --git a/trimStart.js b/trimStart.js
index 203873bb5..efd13c605 100644
--- a/trimStart.js
+++ b/trimStart.js
@@ -1,5 +1,5 @@
-import charsStartIndex from './internal/charsStartIndex';
-import stringToArray from './internal/stringToArray';
+import charsStartIndex from './_charsStartIndex';
+import stringToArray from './_stringToArray';
import toString from './toString';
/** Used to match leading and trailing whitespace. */
diff --git a/truncate.js b/truncate.js
index 8b6e7690e..0da2a02c6 100644
--- a/truncate.js
+++ b/truncate.js
@@ -1,7 +1,7 @@
import isObject from './isObject';
import isRegExp from './isRegExp';
-import stringSize from './internal/stringSize';
-import stringToArray from './internal/stringToArray';
+import stringSize from './_stringSize';
+import stringToArray from './_stringToArray';
import toInteger from './toInteger';
import toString from './toString';
diff --git a/unescape.js b/unescape.js
index 488cf9982..c0eb8172b 100644
--- a/unescape.js
+++ b/unescape.js
@@ -1,5 +1,5 @@
import toString from './toString';
-import unescapeHtmlChar from './internal/unescapeHtmlChar';
+import unescapeHtmlChar from './_unescapeHtmlChar';
/** Used to match HTML entities and HTML characters. */
var reEscapedHtml = /&(?:amp|lt|gt|quot|#39|#96);/g,
diff --git a/union.js b/union.js
index 88138f7e4..69083f383 100644
--- a/union.js
+++ b/union.js
@@ -1,5 +1,5 @@
-import baseFlatten from './internal/baseFlatten';
-import baseUniq from './internal/baseUniq';
+import baseFlatten from './_baseFlatten';
+import baseUniq from './_baseUniq';
import rest from './rest';
/**
diff --git a/unionBy.js b/unionBy.js
index 2a8c16825..1af5370fb 100644
--- a/unionBy.js
+++ b/unionBy.js
@@ -1,6 +1,6 @@
-import baseFlatten from './internal/baseFlatten';
-import baseIteratee from './internal/baseIteratee';
-import baseUniq from './internal/baseUniq';
+import baseFlatten from './_baseFlatten';
+import baseIteratee from './_baseIteratee';
+import baseUniq from './_baseUniq';
import isArrayLikeObject from './isArrayLikeObject';
import last from './last';
import rest from './rest';
diff --git a/unionWith.js b/unionWith.js
index 78dcf83af..ff6e45a12 100644
--- a/unionWith.js
+++ b/unionWith.js
@@ -1,5 +1,5 @@
-import baseFlatten from './internal/baseFlatten';
-import baseUniq from './internal/baseUniq';
+import baseFlatten from './_baseFlatten';
+import baseUniq from './_baseUniq';
import isArrayLikeObject from './isArrayLikeObject';
import last from './last';
import rest from './rest';
diff --git a/uniq.js b/uniq.js
index 24164bfde..e378621c7 100644
--- a/uniq.js
+++ b/uniq.js
@@ -1,4 +1,4 @@
-import baseUniq from './internal/baseUniq';
+import baseUniq from './_baseUniq';
/**
* Creates a duplicate-free version of an array, using
diff --git a/uniqBy.js b/uniqBy.js
index e3a6e74b7..af52385f9 100644
--- a/uniqBy.js
+++ b/uniqBy.js
@@ -1,5 +1,5 @@
-import baseIteratee from './internal/baseIteratee';
-import baseUniq from './internal/baseUniq';
+import baseIteratee from './_baseIteratee';
+import baseUniq from './_baseUniq';
/**
* This method is like `_.uniq` except that it accepts `iteratee` which is
diff --git a/uniqWith.js b/uniqWith.js
index 1f36cf699..f958a6cb1 100644
--- a/uniqWith.js
+++ b/uniqWith.js
@@ -1,4 +1,4 @@
-import baseUniq from './internal/baseUniq';
+import baseUniq from './_baseUniq';
/**
* This method is like `_.uniq` except that it accepts `comparator` which
diff --git a/unset.js b/unset.js
index 6f184b2e4..d1431e1a9 100644
--- a/unset.js
+++ b/unset.js
@@ -1,4 +1,4 @@
-import baseUnset from './internal/baseUnset';
+import baseUnset from './_baseUnset';
/**
* Removes the property at `path` of `object`.
diff --git a/unzip.js b/unzip.js
index bda6c3f3b..517fe2389 100644
--- a/unzip.js
+++ b/unzip.js
@@ -1,7 +1,7 @@
-import arrayFilter from './internal/arrayFilter';
-import arrayMap from './internal/arrayMap';
-import baseProperty from './internal/baseProperty';
-import baseTimes from './internal/baseTimes';
+import arrayFilter from './_arrayFilter';
+import arrayMap from './_arrayMap';
+import baseProperty from './_baseProperty';
+import baseTimes from './_baseTimes';
import isArrayLikeObject from './isArrayLikeObject';
/* Built-in method references for those with the same name as other `lodash` methods. */
diff --git a/unzipWith.js b/unzipWith.js
index 99f9ed634..5e9355197 100644
--- a/unzipWith.js
+++ b/unzipWith.js
@@ -1,5 +1,5 @@
-import apply from './internal/apply';
-import arrayMap from './internal/arrayMap';
+import apply from './_apply';
+import arrayMap from './_arrayMap';
import unzip from './unzip';
/**
diff --git a/upperCase.js b/upperCase.js
index 6eca5dd2c..801222aa2 100644
--- a/upperCase.js
+++ b/upperCase.js
@@ -1,4 +1,4 @@
-import createCompounder from './internal/createCompounder';
+import createCompounder from './_createCompounder';
/**
* Converts `string`, as space separated words, to upper case.
diff --git a/upperFirst.js b/upperFirst.js
index 8cd4e8bcb..45d19f438 100644
--- a/upperFirst.js
+++ b/upperFirst.js
@@ -1,4 +1,4 @@
-import createCaseFirst from './internal/createCaseFirst';
+import createCaseFirst from './_createCaseFirst';
/**
* Converts the first character of `string` to upper case.
diff --git a/values.js b/values.js
index b1525e329..5b32b64e6 100644
--- a/values.js
+++ b/values.js
@@ -1,4 +1,4 @@
-import baseValues from './internal/baseValues';
+import baseValues from './_baseValues';
import keys from './keys';
/**
diff --git a/valuesIn.js b/valuesIn.js
index 3cea6d2ae..db4442246 100644
--- a/valuesIn.js
+++ b/valuesIn.js
@@ -1,4 +1,4 @@
-import baseValues from './internal/baseValues';
+import baseValues from './_baseValues';
import keysIn from './keysIn';
/**
diff --git a/without.js b/without.js
index 1f67bbb62..8ec326c06 100644
--- a/without.js
+++ b/without.js
@@ -1,4 +1,4 @@
-import baseDifference from './internal/baseDifference';
+import baseDifference from './_baseDifference';
import isArrayLikeObject from './isArrayLikeObject';
import rest from './rest';
diff --git a/wrapperAt.js b/wrapperAt.js
index c86f84f8d..5e47385bc 100644
--- a/wrapperAt.js
+++ b/wrapperAt.js
@@ -1,8 +1,8 @@
-import LazyWrapper from './internal/LazyWrapper';
-import LodashWrapper from './internal/LodashWrapper';
-import baseAt from './internal/baseAt';
-import baseFlatten from './internal/baseFlatten';
-import isIndex from './internal/isIndex';
+import LazyWrapper from './_LazyWrapper';
+import LodashWrapper from './_LodashWrapper';
+import baseAt from './_baseAt';
+import baseFlatten from './_baseFlatten';
+import isIndex from './_isIndex';
import rest from './rest';
import thru from './thru';
diff --git a/wrapperLodash.js b/wrapperLodash.js
index 10784a684..76cfd79d1 100644
--- a/wrapperLodash.js
+++ b/wrapperLodash.js
@@ -1,9 +1,9 @@
-import LazyWrapper from './internal/LazyWrapper';
-import LodashWrapper from './internal/LodashWrapper';
-import baseLodash from './internal/baseLodash';
+import LazyWrapper from './_LazyWrapper';
+import LodashWrapper from './_LodashWrapper';
+import baseLodash from './_baseLodash';
import isArray from './isArray';
import isObjectLike from './isObjectLike';
-import wrapperClone from './internal/wrapperClone';
+import wrapperClone from './_wrapperClone';
/** Used for built-in method references. */
var objectProto = Object.prototype;
@@ -57,20 +57,21 @@ var hasOwnProperty = objectProto.hasOwnProperty;
* `differenceBy`, `differenceWith`, `drop`, `dropRight`, `dropRightWhile`,
* `dropWhile`, `fill`, `filter`, `flatten`, `flattenDeep`, `flip`, `flow`,
* `flowRight`, `fromPairs`, `functions`, `functionsIn`, `groupBy`, `initial`,
- * `intersection`, `intersectionBy`, `intersectionWith`, `invert`, `invokeMap`,
- * `iteratee`, `keyBy`, `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`,
- * `matches`, `matchesProperty`, `memoize`, `merge`, `mergeWith`, `method`,
- * `methodOf`, `mixin`, `negate`, `nthArg`, `omit`, `omitBy`, `once`, `orderBy`,
- * `over`, `overArgs`, `overEvery`, `overSome`, `partial`, `partialRight`,
- * `partition`, `pick`, `pickBy`, `plant`, `property`, `propertyOf`, `pull`,
- * `pullAll`, `pullAllBy`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`,
- * `reject`, `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`,
- * `shuffle`, `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`,
- * `takeRight`, `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`,
- * `toArray`, `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`,
- * `unary`, `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`,
- * `unset`, `unshift`, `unzip`, `unzipWith`, `values`, `valuesIn`, `without`,
- * `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, `zipObject`, and `zipWith`
+ * `intersection`, `intersectionBy`, `intersectionWith`, `invert`, `invertBy`,
+ * `invokeMap`, `iteratee`, `keyBy`, `keys`, `keysIn`, `map`, `mapKeys`,
+ * `mapValues`, `matches`, `matchesProperty`, `memoize`, `merge`, `mergeWith`,
+ * `method`, `methodOf`, `mixin`, `negate`, `nthArg`, `omit`, `omitBy`, `once`,
+ * `orderBy`, `over`, `overArgs`, `overEvery`, `overSome`, `partial`,
+ * `partialRight`, `partition`, `pick`, `pickBy`, `plant`, `property`,
+ * `propertyOf`, `pull`, `pullAll`, `pullAllBy`, `pullAt`, `push`, `range`,
+ * `rangeRight`, `rearg`, `reject`, `remove`, `rest`, `reverse`, `sampleSize`,
+ * `set`, `setWith`, `shuffle`, `slice`, `sort`, `sortBy`, `splice`, `spread`,
+ * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `tap`, `throttle`,
+ * `thru`, `toArray`, `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`,
+ * `transform`, `unary`, `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`,
+ * `uniqWith`, `unset`, `unshift`, `unzip`, `unzipWith`, `values`, `valuesIn`,
+ * `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, `zipObject`,
+ * `zipObjectDeep`, and `zipWith`
*
* The wrapper methods that are **not** chainable by default are:
* `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
diff --git a/wrapperReverse.js b/wrapperReverse.js
index 6915c6e39..86306a99b 100644
--- a/wrapperReverse.js
+++ b/wrapperReverse.js
@@ -1,5 +1,5 @@
-import LazyWrapper from './internal/LazyWrapper';
-import LodashWrapper from './internal/LodashWrapper';
+import LazyWrapper from './_LazyWrapper';
+import LodashWrapper from './_LodashWrapper';
import reverse from './reverse';
import thru from './thru';
diff --git a/wrapperValue.js b/wrapperValue.js
index f6694d9af..c6ece5b56 100644
--- a/wrapperValue.js
+++ b/wrapperValue.js
@@ -1,4 +1,4 @@
-import baseWrapperValue from './internal/baseWrapperValue';
+import baseWrapperValue from './_baseWrapperValue';
/**
* Executes the chained sequence to extract the unwrapped value.
diff --git a/xor.js b/xor.js
index 82672e7c5..aa1bb692e 100644
--- a/xor.js
+++ b/xor.js
@@ -1,5 +1,5 @@
-import arrayFilter from './internal/arrayFilter';
-import baseXor from './internal/baseXor';
+import arrayFilter from './_arrayFilter';
+import baseXor from './_baseXor';
import isArrayLikeObject from './isArrayLikeObject';
import rest from './rest';
diff --git a/xorBy.js b/xorBy.js
index d0667208f..6c8801fee 100644
--- a/xorBy.js
+++ b/xorBy.js
@@ -1,6 +1,6 @@
-import arrayFilter from './internal/arrayFilter';
-import baseIteratee from './internal/baseIteratee';
-import baseXor from './internal/baseXor';
+import arrayFilter from './_arrayFilter';
+import baseIteratee from './_baseIteratee';
+import baseXor from './_baseXor';
import isArrayLikeObject from './isArrayLikeObject';
import last from './last';
import rest from './rest';
diff --git a/xorWith.js b/xorWith.js
index ea66c8fb0..7c4ee3376 100644
--- a/xorWith.js
+++ b/xorWith.js
@@ -1,5 +1,5 @@
-import arrayFilter from './internal/arrayFilter';
-import baseXor from './internal/baseXor';
+import arrayFilter from './_arrayFilter';
+import baseXor from './_baseXor';
import isArrayLikeObject from './isArrayLikeObject';
import last from './last';
import rest from './rest';
diff --git a/zipObject.js b/zipObject.js
index 98dc1d7c7..221acf49d 100644
--- a/zipObject.js
+++ b/zipObject.js
@@ -1,4 +1,5 @@
-import baseSet from './internal/baseSet';
+import assignValue from './_assignValue';
+import baseZipObject from './_baseZipObject';
/**
* This method is like `_.fromPairs` except that it accepts two arrays,
@@ -12,19 +13,11 @@ import baseSet from './internal/baseSet';
* @returns {Object} Returns the new object.
* @example
*
- * _.zipObject(['fred', 'barney'], [30, 40]);
- * // => { 'fred': 30, 'barney': 40 }
+ * _.zipObject(['a', 'b'], [1, 2]);
+ * // => { 'a': 1, 'b': 2 }
*/
function zipObject(props, values) {
- var index = -1,
- length = props ? props.length : 0,
- valsLength = values ? values.length : 0,
- result = {};
-
- while (++index < length) {
- baseSet(result, props[index], index < valsLength ? values[index] : undefined);
- }
- return result;
+ return baseZipObject(props || [], values || [], assignValue);
}
export default zipObject;
diff --git a/zipObjectDeep.js b/zipObjectDeep.js
new file mode 100644
index 000000000..8118bcb17
--- /dev/null
+++ b/zipObjectDeep.js
@@ -0,0 +1,22 @@
+import baseSet from './_baseSet';
+import baseZipObject from './_baseZipObject';
+
+/**
+ * This method is like `_.zipObject` except that it supports property paths.
+ *
+ * @static
+ * @memberOf _
+ * @category Array
+ * @param {Array} [props=[]] The property names.
+ * @param {Array} [values=[]] The property values.
+ * @returns {Object} Returns the new object.
+ * @example
+ *
+ * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);
+ * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }
+ */
+function zipObjectDeep(props, values) {
+ return baseZipObject(props || [], values || [], baseSet);
+}
+
+export default zipObjectDeep;