diff --git a/README.md b/README.md index ccfaa3d45..eaa9a6a74 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# lodash-es v4.0.0 +# lodash-es v4.0.1 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.0-es) for more details. +See the [package source](https://github.com/lodash/lodash/tree/4.0.1-es) for more details. diff --git a/assignInWith.js b/assignInWith.js index b477a655c..94355be03 100644 --- a/assignInWith.js +++ b/assignInWith.js @@ -29,7 +29,7 @@ import keysIn from './keysIn'; * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); * // => { 'a': 1, 'b': 2 } */ -var assignInWith = createAssigner(function(object, source, customizer) { +var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { copyObjectWith(source, keysIn(source), object, customizer); }); diff --git a/assignWith.js b/assignWith.js index 410a641c7..82470ea04 100644 --- a/assignWith.js +++ b/assignWith.js @@ -28,7 +28,7 @@ import keys from './keys'; * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); * // => { 'a': 1, 'b': 2 } */ -var assignWith = createAssigner(function(object, source, customizer) { +var assignWith = createAssigner(function(object, source, srcIndex, customizer) { copyObjectWith(source, keys(source), object, customizer); }); diff --git a/cloneDeepWith.js b/cloneDeepWith.js index dce45adf1..64fcbaf31 100644 --- a/cloneDeepWith.js +++ b/cloneDeepWith.js @@ -17,7 +17,7 @@ import baseClone from './internal/baseClone'; * } * } * - * var el = _.cloneDeep(document.body, customizer); + * var el = _.cloneDeepWith(document.body, customizer); * * console.log(el === document.body); * // => false diff --git a/cloneWith.js b/cloneWith.js index 628579923..9752a53f6 100644 --- a/cloneWith.js +++ b/cloneWith.js @@ -4,7 +4,7 @@ import baseClone from './internal/baseClone'; * This method is like `_.clone` except that it accepts `customizer` which * is invoked to produce the cloned value. If `customizer` returns `undefined` * cloning is handled by the method instead. The `customizer` is invoked with - * up to five arguments; (value [, index|key, object, stack]). + * up to four arguments; (value [, index|key, object, stack]). * * @static * @memberOf _ @@ -20,7 +20,7 @@ import baseClone from './internal/baseClone'; * } * } * - * var el = _.clone(document.body, customizer); + * var el = _.cloneWith(document.body, customizer); * * console.log(el === document.body); * // => false diff --git a/concat.js b/concat.js index 1cd2dab4e..777ae3c9d 100644 --- a/concat.js +++ b/concat.js @@ -25,8 +25,11 @@ import rest from './rest'; * // => [1] */ var concat = rest(function(array, values) { + if (!isArray(array)) { + array = array == null ? [] : [Object(array)]; + } values = baseFlatten(values); - return arrayConcat(isArray(array) ? array : [Object(array)], values); + return arrayConcat(array, values); }); export default concat; diff --git a/cond.js b/cond.js index 402859c90..f8e4523a7 100644 --- a/cond.js +++ b/cond.js @@ -23,7 +23,7 @@ var FUNC_ERROR_TEXT = 'Expected a function'; * [_.matches({ 'a': 1 }), _.constant('matches A')], * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')], * [_.constant(true), _.constant('no match')] - * ]) + * ]); * * func({ 'a': 1, 'b': 2 }); * // => 'matches A' diff --git a/countBy.js b/countBy.js index 23d81a76b..b306748fc 100644 --- a/countBy.js +++ b/countBy.js @@ -16,7 +16,7 @@ var hasOwnProperty = objectProto.hasOwnProperty; * @memberOf _ * @category Collection * @param {Array|Object} collection The collection to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element. + * @param {Function|Object|string} [iteratee=_.identity] The iteratee to transform keys. * @returns {Object} Returns the composed aggregate object. * @example * diff --git a/deburr.js b/deburr.js index 36569e4c3..696914e54 100644 --- a/deburr.js +++ b/deburr.js @@ -5,12 +5,16 @@ import toString from './toString'; var reLatin1 = /[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g; /** Used to compose unicode character classes. */ -var rsComboRange = '\\u0300-\\u036f\\ufe20-\\ufe23'; +var rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23', + rsComboSymbolsRange = '\\u20d0-\\u20f0'; /** Used to compose unicode capture groups. */ -var rsCombo = '[' + rsComboRange + ']'; +var rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']'; -/** Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). */ +/** + * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and + * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). + */ var reComboMark = RegExp(rsCombo, 'g'); /** diff --git a/extend.js b/extend.js new file mode 100644 index 000000000..62e97fd87 --- /dev/null +++ b/extend.js @@ -0,0 +1 @@ +export { default } from './assignIn' diff --git a/extendWith.js b/extendWith.js new file mode 100644 index 000000000..bd45c9a57 --- /dev/null +++ b/extendWith.js @@ -0,0 +1 @@ +export { default } from './assignInWith' diff --git a/fromPairs.js b/fromPairs.js index 86bb0da1f..e8725e590 100644 --- a/fromPairs.js +++ b/fromPairs.js @@ -1,5 +1,3 @@ -import baseSet from './internal/baseSet'; - /** * The inverse of `_.toPairs`; this method returns an object composed * from key-value `pairs`. @@ -21,7 +19,7 @@ function fromPairs(pairs) { while (++index < length) { var pair = pairs[index]; - baseSet(result, pair[0], pair[1]); + result[pair[0]] = pair[1]; } return result; } diff --git a/groupBy.js b/groupBy.js index b7e03d3da..da85bb703 100644 --- a/groupBy.js +++ b/groupBy.js @@ -9,14 +9,14 @@ var hasOwnProperty = objectProto.hasOwnProperty; /** * Creates an object composed of keys generated from the results of running * each element of `collection` through `iteratee`. The corresponding value - * of each key is an array of the elements responsible for generating the key. + * of each key is an array of elements responsible for generating the key. * The iteratee is invoked with one argument: (value). * * @static * @memberOf _ * @category Collection * @param {Array|Object} collection The collection to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element. + * @param {Function|Object|string} [iteratee=_.identity] The iteratee to transform keys. * @returns {Object} Returns the composed aggregate object. * @example * diff --git a/internal/_Symbol.js b/internal/Symbol.js similarity index 55% rename from internal/_Symbol.js rename to internal/Symbol.js index bffed6a80..7103a7cc5 100644 --- a/internal/_Symbol.js +++ b/internal/Symbol.js @@ -1,6 +1,6 @@ import root from './root'; /** Built-in value references. */ -var _Symbol = root.Symbol; +var Symbol = root.Symbol; -export default _Symbol; +export default Symbol; diff --git a/internal/arrayReduce.js b/internal/arrayReduce.js index 25d17865c..15ce42904 100644 --- a/internal/arrayReduce.js +++ b/internal/arrayReduce.js @@ -6,14 +6,14 @@ * @param {Array} array The array to iterate over. * @param {Function} iteratee The function invoked per iteration. * @param {*} [accumulator] The initial value. - * @param {boolean} [initFromArray] Specify using the first element of `array` as the initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as the initial value. * @returns {*} Returns the accumulated value. */ -function arrayReduce(array, iteratee, accumulator, initFromArray) { +function arrayReduce(array, iteratee, accumulator, initAccum) { var index = -1, length = array.length; - if (initFromArray && length) { + if (initAccum && length) { accumulator = array[++index]; } while (++index < length) { diff --git a/internal/arrayReduceRight.js b/internal/arrayReduceRight.js index f7549633b..b05bff76a 100644 --- a/internal/arrayReduceRight.js +++ b/internal/arrayReduceRight.js @@ -6,12 +6,12 @@ * @param {Array} array The array to iterate over. * @param {Function} iteratee The function invoked per iteration. * @param {*} [accumulator] The initial value. - * @param {boolean} [initFromArray] Specify using the last element of `array` as the initial value. + * @param {boolean} [initAccum] Specify using the last element of `array` as the initial value. * @returns {*} Returns the accumulated value. */ -function arrayReduceRight(array, iteratee, accumulator, initFromArray) { +function arrayReduceRight(array, iteratee, accumulator, initAccum) { var length = array.length; - if (initFromArray && length) { + if (initAccum && length) { accumulator = array[--length]; } while (length--) { diff --git a/internal/baseFind.js b/internal/baseFind.js index d229d8161..c59775e72 100644 --- a/internal/baseFind.js +++ b/internal/baseFind.js @@ -1,7 +1,7 @@ /** * The base implementation of methods like `_.find` and `_.findKey`, without * support for iteratee shorthands, which iterates over `collection` using - * the provided `eachFunc`. + * `eachFunc`. * * @private * @param {Array|Object} collection The collection to search. diff --git a/internal/baseInvoke.js b/internal/baseInvoke.js index ce6fc1665..c9d84ff25 100644 --- a/internal/baseInvoke.js +++ b/internal/baseInvoke.js @@ -8,7 +8,6 @@ import parent from './parent'; * The base implementation of `_.invoke` without support for individual * method arguments. * - * * @private * @param {Object} object The object to query. * @param {Array|string} path The path of the method to invoke. diff --git a/internal/baseIsMatch.js b/internal/baseIsMatch.js index 8b68cdcd2..86b0bc891 100644 --- a/internal/baseIsMatch.js +++ b/internal/baseIsMatch.js @@ -47,7 +47,10 @@ function baseIsMatch(object, source, matchData, customizer) { var stack = new Stack, result = customizer ? customizer(objValue, srcValue, key, object, source, stack) : undefined; - if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) : result)) { + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) + : result + )) { return false; } } diff --git a/internal/baseMerge.js b/internal/baseMerge.js index 93202a71d..1e99ca59f 100644 --- a/internal/baseMerge.js +++ b/internal/baseMerge.js @@ -13,10 +13,11 @@ import keysIn from '../keysIn'; * @private * @param {Object} object The destination object. * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. * @param {Function} [customizer] The function to customize merged values. * @param {Object} [stack] Tracks traversed source values and their merged counterparts. */ -function baseMerge(object, source, customizer, stack) { +function baseMerge(object, source, srcIndex, customizer, stack) { if (object === source) { return; } @@ -28,7 +29,7 @@ function baseMerge(object, source, customizer, stack) { } if (isObject(srcValue)) { stack || (stack = new Stack); - baseMergeDeep(object, source, key, baseMerge, customizer, stack); + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); } else { var newValue = customizer ? customizer(object[key], srcValue, (key + ''), object, source, stack) : undefined; diff --git a/internal/baseMergeDeep.js b/internal/baseMergeDeep.js index 9da5de47a..76e766d6e 100644 --- a/internal/baseMergeDeep.js +++ b/internal/baseMergeDeep.js @@ -19,11 +19,12 @@ import toPlainObject from '../toPlainObject'; * @param {Object} object The destination object. * @param {Object} source The source object. * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. * @param {Function} mergeFunc The function to merge values. * @param {Function} [customizer] The function to customize assigned values. * @param {Object} [stack] Tracks traversed source values and their merged counterparts. */ -function baseMergeDeep(object, source, key, mergeFunc, customizer, stack) { +function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { var objValue = object[key], srcValue = source[key], stacked = stack.get(srcValue) || stack.get(objValue); @@ -38,24 +39,36 @@ function baseMergeDeep(object, source, key, mergeFunc, customizer, stack) { if (isCommon) { newValue = srcValue; if (isArray(srcValue) || isTypedArray(srcValue)) { - newValue = isArray(objValue) - ? objValue - : ((isArrayLikeObject(objValue)) ? copyArray(objValue) : baseClone(srcValue)); + if (isArray(objValue)) { + newValue = srcIndex ? copyArray(objValue) : objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else { + newValue = baseClone(srcValue); + } } else if (isPlainObject(srcValue) || isArguments(srcValue)) { - newValue = isArguments(objValue) - ? toPlainObject(objValue) - : (isObject(objValue) ? objValue : baseClone(srcValue)); + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) { + newValue = baseClone(srcValue); + } + else { + newValue = srcIndex ? baseClone(objValue) : objValue; + } } else { - isCommon = isFunction(srcValue); + isCommon = false; } } stack.set(srcValue, newValue); if (isCommon) { // Recursively merge objects and arrays (susceptible to call stack limits). - mergeFunc(newValue, srcValue, customizer, stack); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); } assignMergeValue(object, key, newValue); } diff --git a/internal/basePickBy.js b/internal/basePickBy.js index 24be0cfe8..3b9fe8dbc 100644 --- a/internal/basePickBy.js +++ b/internal/basePickBy.js @@ -11,7 +11,7 @@ import baseForIn from './baseForIn'; function basePickBy(object, predicate) { var result = {}; baseForIn(object, function(value, key) { - if (predicate(value)) { + if (predicate(value, key)) { result[key] = value; } }); diff --git a/internal/baseReduce.js b/internal/baseReduce.js index d81fc728a..3fb676aa9 100644 --- a/internal/baseReduce.js +++ b/internal/baseReduce.js @@ -1,20 +1,19 @@ /** * The base implementation of `_.reduce` and `_.reduceRight`, without support - * for iteratee shorthands, which iterates over `collection` using the provided - * `eachFunc`. + * for iteratee shorthands, which iterates over `collection` using `eachFunc`. * * @private * @param {Array|Object} collection The collection to iterate over. * @param {Function} iteratee The function invoked per iteration. * @param {*} accumulator The initial value. - * @param {boolean} initFromCollection Specify using the first or last element of `collection` as the initial value. + * @param {boolean} initAccum Specify using the first or last element of `collection` as the initial value. * @param {Function} eachFunc The function to iterate over `collection`. * @returns {*} Returns the accumulated value. */ -function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) { +function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { eachFunc(collection, function(value, index, collection) { - accumulator = initFromCollection - ? (initFromCollection = false, value) + accumulator = initAccum + ? (initAccum = false, value) : iteratee(accumulator, value, index, collection); }); return accumulator; diff --git a/internal/cloneSymbol.js b/internal/cloneSymbol.js index 4bc4c587a..4924db27c 100644 --- a/internal/cloneSymbol.js +++ b/internal/cloneSymbol.js @@ -1,8 +1,8 @@ -import _Symbol from './_Symbol'; +import Symbol from './Symbol'; /** Used to convert symbols to primitives and strings. */ -var symbolProto = _Symbol ? _Symbol.prototype : undefined, - symbolValueOf = _Symbol ? symbolProto.valueOf : undefined; +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = Symbol ? symbolProto.valueOf : undefined; /** * Creates a clone of the `symbol` object. @@ -12,7 +12,7 @@ var symbolProto = _Symbol ? _Symbol.prototype : undefined, * @returns {Object} Returns the cloned symbol object. */ function cloneSymbol(symbol) { - return _Symbol ? Object(symbolValueOf.call(symbol)) : {}; + return Symbol ? Object(symbolValueOf.call(symbol)) : {}; } export default cloneSymbol; diff --git a/internal/createAssigner.js b/internal/createAssigner.js index 0dd9da9b2..b3e62f1dc 100644 --- a/internal/createAssigner.js +++ b/internal/createAssigner.js @@ -24,7 +24,7 @@ function createAssigner(assigner) { while (++index < length) { var source = sources[index]; if (source) { - assigner(object, source, customizer); + assigner(object, source, index, customizer); } } return object; diff --git a/internal/createCaseFirst.js b/internal/createCaseFirst.js index 419286fcb..b6d203376 100644 --- a/internal/createCaseFirst.js +++ b/internal/createCaseFirst.js @@ -3,14 +3,15 @@ import toString from '../toString'; /** Used to compose unicode character classes. */ var rsAstralRange = '\\ud800-\\udfff', - rsComboRange = '\\u0300-\\u036f\\ufe20-\\ufe23', + rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23', + rsComboSymbolsRange = '\\u20d0-\\u20f0', rsVarRange = '\\ufe0e\\ufe0f'; /** Used to compose unicode capture groups. */ var rsZWJ = '\\u200d'; /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ -var reHasComplexSymbol = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); +var reHasComplexSymbol = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']'); /** * Creates a function like `_.lowerFirst`. diff --git a/internal/createPadding.js b/internal/createPadding.js index 5b5e1620f..f3285bcd5 100644 --- a/internal/createPadding.js +++ b/internal/createPadding.js @@ -5,14 +5,15 @@ import toInteger from '../toInteger'; /** Used to compose unicode character classes. */ var rsAstralRange = '\\ud800-\\udfff', - rsComboRange = '\\u0300-\\u036f\\ufe20-\\ufe23', + rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23', + rsComboSymbolsRange = '\\u20d0-\\u20f0', rsVarRange = '\\ufe0e\\ufe0f'; /** Used to compose unicode capture groups. */ var rsZWJ = '\\u200d'; /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ -var reHasComplexSymbol = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); +var reHasComplexSymbol = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']'); /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeCeil = Math.ceil; diff --git a/internal/equalByTag.js b/internal/equalByTag.js index 2a1355eb2..1de50e844 100644 --- a/internal/equalByTag.js +++ b/internal/equalByTag.js @@ -1,5 +1,5 @@ +import Symbol from './Symbol'; import Uint8Array from './Uint8Array'; -import _Symbol from './_Symbol'; import mapToArray from './mapToArray'; import setToArray from './setToArray'; @@ -21,8 +21,8 @@ var boolTag = '[object Boolean]', var arrayBufferTag = '[object ArrayBuffer]'; /** Used to convert symbols to primitives and strings. */ -var symbolProto = _Symbol ? _Symbol.prototype : undefined, - symbolValueOf = _Symbol ? symbolProto.valueOf : undefined; +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = Symbol ? symbolProto.valueOf : undefined; /** * A specialized version of `baseIsEqualDeep` for comparing objects of @@ -80,7 +80,7 @@ function equalByTag(object, other, tag, equalFunc, customizer, bitmask) { equalFunc(convert(object), convert(other), customizer, bitmask | UNORDERED_COMPARE_FLAG); case symbolTag: - return !!_Symbol && (symbolValueOf.call(object) == symbolValueOf.call(other)); + return !!Symbol && (symbolValueOf.call(object) == symbolValueOf.call(other)); } return false; } diff --git a/internal/equalObjects.js b/internal/equalObjects.js index a98567ce8..4916ea733 100644 --- a/internal/equalObjects.js +++ b/internal/equalObjects.js @@ -2,8 +2,7 @@ import baseHas from './baseHas'; import keys from '../keys'; /** Used to compose bitmasks for comparison styles. */ -var UNORDERED_COMPARE_FLAG = 1, - PARTIAL_COMPARE_FLAG = 2; +var PARTIAL_COMPARE_FLAG = 2; /** * A specialized version of `baseIsEqualDeep` for objects with support for @@ -20,7 +19,6 @@ var UNORDERED_COMPARE_FLAG = 1, */ function equalObjects(object, other, equalFunc, customizer, bitmask, stack) { var isPartial = bitmask & PARTIAL_COMPARE_FLAG, - isUnordered = bitmask & UNORDERED_COMPARE_FLAG, objProps = keys(object), objLength = objProps.length, othProps = keys(other), @@ -32,8 +30,7 @@ function equalObjects(object, other, equalFunc, customizer, bitmask, stack) { var index = objLength; while (index--) { var key = objProps[index]; - if (!(isPartial ? key in other : baseHas(other, key)) || - !(isUnordered || key == othProps[index])) { + if (!(isPartial ? key in other : baseHas(other, key))) { return false; } } diff --git a/internal/getFuncName.js b/internal/getFuncName.js index d5f56fc81..43bca34cd 100644 --- a/internal/getFuncName.js +++ b/internal/getFuncName.js @@ -1,5 +1,11 @@ import realNames from './realNames'; +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + /** * Gets the name of `func`. * @@ -10,7 +16,7 @@ import realNames from './realNames'; function getFuncName(func) { var result = (func.name + ''), array = realNames[result], - length = array ? array.length : 0; + length = hasOwnProperty.call(realNames, result) ? array.length : 0; while (length--) { var data = array[length], diff --git a/internal/mergeDefaults.js b/internal/mergeDefaults.js index 9b74d4ea1..c08cb64b8 100644 --- a/internal/mergeDefaults.js +++ b/internal/mergeDefaults.js @@ -1,4 +1,3 @@ -import baseClone from './baseClone'; import baseMerge from './baseMerge'; import isObject from '../isObject'; @@ -17,9 +16,9 @@ import isObject from '../isObject'; function mergeDefaults(objValue, srcValue, key, object, source, stack) { if (isObject(objValue) && isObject(srcValue)) { stack.set(srcValue, objValue); - baseMerge(objValue, srcValue, mergeDefaults, stack); + baseMerge(objValue, srcValue, undefined, mergeDefaults, stack); } - return objValue === undefined ? baseClone(srcValue) : objValue; + return objValue; } export default mergeDefaults; diff --git a/internal/stringSize.js b/internal/stringSize.js index 070656b34..82337db1a 100644 --- a/internal/stringSize.js +++ b/internal/stringSize.js @@ -1,12 +1,14 @@ /** Used to compose unicode character classes. */ var rsAstralRange = '\\ud800-\\udfff', - rsComboRange = '\\u0300-\\u036f\\ufe20-\\ufe23', + rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23', + rsComboSymbolsRange = '\\u20d0-\\u20f0', rsVarRange = '\\ufe0e\\ufe0f'; /** Used to compose unicode capture groups. */ var rsAstral = '[' + rsAstralRange + ']', - rsCombo = '[' + rsComboRange + ']', - rsModifier = '(?:\\ud83c[\\udffb-\\udfff])', + rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', rsNonAstral = '[^' + rsAstralRange + ']', rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', @@ -20,14 +22,15 @@ var reOptMod = rsModifier + '?', rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ -var reComplexSymbol = RegExp(rsSymbol + rsSeq, 'g'); +var reComplexSymbol = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ -var reHasComplexSymbol = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); +var reHasComplexSymbol = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']'); /** * Gets the number of symbols in `string`. * + * @private * @param {string} string The string to inspect. * @returns {number} Returns the string size. */ diff --git a/internal/stringToArray.js b/internal/stringToArray.js index 5a2c6047a..136909b3c 100644 --- a/internal/stringToArray.js +++ b/internal/stringToArray.js @@ -1,12 +1,14 @@ /** Used to compose unicode character classes. */ var rsAstralRange = '\\ud800-\\udfff', - rsComboRange = '\\u0300-\\u036f\\ufe20-\\ufe23', + rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23', + rsComboSymbolsRange = '\\u20d0-\\u20f0', rsVarRange = '\\ufe0e\\ufe0f'; /** Used to compose unicode capture groups. */ var rsAstral = '[' + rsAstralRange + ']', - rsCombo = '[' + rsComboRange + ']', - rsModifier = '(?:\\ud83c[\\udffb-\\udfff])', + rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', rsNonAstral = '[^' + rsAstralRange + ']', rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', @@ -20,7 +22,7 @@ var reOptMod = rsModifier + '?', rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ -var reComplexSymbol = RegExp(rsSymbol + rsSeq, 'g'); +var reComplexSymbol = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); /** * Converts `string` to an array. diff --git a/intersection.js b/intersection.js index 61b52321f..f8c48a112 100644 --- a/intersection.js +++ b/intersection.js @@ -14,6 +14,7 @@ import toArrayLikeObject from './internal/toArrayLikeObject'; * @param {...Array} [arrays] The arrays to inspect. * @returns {Array} Returns the new array of shared values. * @example + * * _.intersection([2, 1], [4, 2], [1, 2]); * // => [2] */ diff --git a/isEqualWith.js b/isEqualWith.js index f7397398e..c363ae1d1 100644 --- a/isEqualWith.js +++ b/isEqualWith.js @@ -3,7 +3,7 @@ import baseIsEqual from './internal/baseIsEqual'; /** * This method is like `_.isEqual` except that it accepts `customizer` which is * invoked to compare values. If `customizer` returns `undefined` comparisons are - * handled by the method instead. The `customizer` is invoked with up to seven arguments: + * handled by the method instead. The `customizer` is invoked with up to six arguments: * (objValue, othValue [, index|key, object, other, stack]). * * @static diff --git a/isMatchWith.js b/isMatchWith.js index 97539690d..71d7c1ff7 100644 --- a/isMatchWith.js +++ b/isMatchWith.js @@ -4,7 +4,7 @@ import getMatchData from './internal/getMatchData'; /** * This method is like `_.isMatch` except that it accepts `customizer` which * is invoked to compare values. If `customizer` returns `undefined` comparisons - * are handled by the method instead. The `customizer` is invoked with three + * are handled by the method instead. The `customizer` is invoked with five * arguments: (objValue, srcValue, index|key, object, source). * * @static diff --git a/keyBy.js b/keyBy.js index c7b18da46..6e745c1e2 100644 --- a/keyBy.js +++ b/keyBy.js @@ -10,7 +10,7 @@ import createAggregator from './internal/createAggregator'; * @memberOf _ * @category Collection * @param {Array|Object} collection The collection to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element. + * @param {Function|Object|string} [iteratee=_.identity] The iteratee to transform keys. * @returns {Object} Returns the composed aggregate object. * @example * @@ -19,13 +19,13 @@ import createAggregator from './internal/createAggregator'; * { 'dir': 'right', 'code': 100 } * ]; * - * _.keyBy(keyData, 'dir'); - * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } - * * _.keyBy(keyData, function(o) { * return String.fromCharCode(o.code); * }); * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * + * _.keyBy(keyData, 'dir'); + * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } */ var keyBy = createAggregator(function(result, value, key) { result[key] = value; diff --git a/lodash.default.js b/lodash.default.js index 819c47bf1..8f38b6988 100644 --- a/lodash.default.js +++ b/lodash.default.js @@ -1,6 +1,6 @@ /** * @license - * lodash 4.0.0 (Custom Build) + * lodash 4.0.1 (Custom Build) * Build: `lodash modularize exports="es" -o ./` * Copyright 2012-2016 The Dojo Foundation * Based on Underscore.js 1.8.3 @@ -20,7 +20,7 @@ import string from './string'; import util from './util'; import LazyWrapper from './internal/LazyWrapper'; import LodashWrapper from './internal/LodashWrapper'; -import _Symbol from './internal/_Symbol'; +import Symbol from './internal/Symbol'; import arrayEach from './internal/arrayEach'; import arrayPush from './internal/arrayPush'; import baseForOwn from './internal/baseForOwn'; @@ -44,7 +44,7 @@ import toInteger from './toInteger'; import lodash from './wrapperLodash'; /** Used as the semantic version number. */ -var VERSION = '4.0.0'; +var VERSION = '4.0.1'; /** Used to compose bitmasks for wrapper metadata. */ var BIND_KEY_FLAG = 2; @@ -64,7 +64,7 @@ var arrayProto = Array.prototype, var hasOwnProperty = objectProto.hasOwnProperty; /** Built-in value references. */ -var iteratorSymbol = typeof (iteratorSymbol = _Symbol && _Symbol.iterator) == 'symbol' ? iteratorSymbol : undefined; +var iteratorSymbol = typeof (iteratorSymbol = Symbol && Symbol.iterator) == 'symbol' ? iteratorSymbol : undefined; /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max, @@ -231,8 +231,6 @@ lodash.zipObject = array.zipObject; lodash.zipWith = array.zipWith; // Add aliases. -lodash.each = collection.forEach; -lodash.eachRight = collection.forEachRight; lodash.extend = object.assignIn; lodash.extendWith = object.assignInWith; @@ -371,6 +369,8 @@ lodash.upperCase = string.upperCase; lodash.upperFirst = string.upperFirst; // Add aliases. +lodash.each = collection.forEach; +lodash.eachRight = collection.forEachRight; lodash.first = array.head; mixin(lodash, (function() { diff --git a/lodash.js b/lodash.js index f65170e3b..78706c40f 100644 --- a/lodash.js +++ b/lodash.js @@ -1,6 +1,6 @@ /** * @license - * lodash 4.0.0 (Custom Build) + * lodash 4.0.1 (Custom Build) * Build: `lodash modularize exports="es" -o ./` * Copyright 2012-2016 The Dojo Foundation * Based on Underscore.js 1.8.3 @@ -60,6 +60,8 @@ export { default as eq } from './eq'; export { default as escape } from './escape'; export { default as escapeRegExp } from './escapeRegExp'; export { default as every } from './every'; +export { default as extend } from './extend'; +export { default as extendWith } from './extendWith'; export { default as fill } from './fill'; export { default as filter } from './filter'; export { default as find } from './find'; @@ -285,6 +287,7 @@ export { default as wrapperAt } from './wrapperAt'; export { default as wrapperChain } from './wrapperChain'; export { default as wrapperCommit } from './commit'; export { default as wrapperFlatMap } from './wrapperFlatMap'; +export { default as wrapperLodash } from './wrapperLodash'; export { default as wrapperNext } from './next'; export { default as wrapperPlant } from './plant'; export { default as wrapperReverse } from './wrapperReverse'; diff --git a/map.js b/map.js index cb5139a30..4a9a8d721 100644 --- a/map.js +++ b/map.js @@ -29,11 +29,11 @@ import isArray from './isArray'; * return n * n; * } * - * _.map([1, 2], square); - * // => [3, 6] + * _.map([4, 8], square); + * // => [16, 64] * - * _.map({ 'a': 1, 'b': 2 }, square); - * // => [3, 6] (iteration order is not guaranteed) + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) * * var users = [ * { 'user': 'barney' }, diff --git a/maxBy.js b/maxBy.js index 08b632aa5..4a058a375 100644 --- a/maxBy.js +++ b/maxBy.js @@ -17,7 +17,7 @@ import gt from './gt'; * * var objects = [{ 'n': 1 }, { 'n': 2 }]; * - * _.maxBy(objects, function(o) { return o.a; }); + * _.maxBy(objects, function(o) { return o.n; }); * // => { 'n': 2 } * * // using the `_.property` iteratee shorthand diff --git a/merge.js b/merge.js index 31ed9c8cc..355fccd90 100644 --- a/merge.js +++ b/merge.js @@ -30,8 +30,8 @@ import createAssigner from './internal/createAssigner'; * _.merge(users, ages); * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] } */ -var merge = createAssigner(function(object, source) { - baseMerge(object, source); +var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); }); export default merge; diff --git a/mergeWith.js b/mergeWith.js index d03a955e0..69a584891 100644 --- a/mergeWith.js +++ b/mergeWith.js @@ -36,8 +36,8 @@ import createAssigner from './internal/createAssigner'; * _.mergeWith(object, other, customizer); * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] } */ -var mergeWith = createAssigner(function(object, source, customizer) { - baseMerge(object, source, customizer); +var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { + baseMerge(object, source, srcIndex, customizer); }); export default mergeWith; diff --git a/minBy.js b/minBy.js index 695b573de..7e21fec56 100644 --- a/minBy.js +++ b/minBy.js @@ -17,7 +17,7 @@ import lt from './lt'; * * var objects = [{ 'n': 1 }, { 'n': 2 }]; * - * _.minBy(objects, function(o) { return o.a; }); + * _.minBy(objects, function(o) { return o.n; }); * // => { 'n': 1 } * * // using the `_.property` iteratee shorthand diff --git a/object.default.js b/object.default.js index fcc640a14..b4c6411e6 100644 --- a/object.default.js +++ b/object.default.js @@ -5,6 +5,8 @@ import assignWith from './assignWith'; import create from './create'; import defaults from './defaults'; import defaultsDeep from './defaultsDeep'; +import extend from './extend'; +import extendWith from './extendWith'; import findKey from './findKey'; import findLastKey from './findLastKey'; import forIn from './forIn'; @@ -40,11 +42,12 @@ import valuesIn from './valuesIn'; export default { assign, assignIn, assignInWith, assignWith, create, - defaults, defaultsDeep, 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 + 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 }; diff --git a/object.js b/object.js index a95f299e3..79bb6ef76 100644 --- a/object.js +++ b/object.js @@ -5,6 +5,8 @@ export { default as assignWith } from './assignWith'; export { default as create } from './create'; export { default as defaults } from './defaults'; export { default as defaultsDeep } from './defaultsDeep'; +export { default as extend } from './extend'; +export { default as extendWith } from './extendWith'; export { default as findKey } from './findKey'; export { default as findLastKey } from './findLastKey'; export { default as forIn } from './forIn'; diff --git a/omitBy.js b/omitBy.js index f41111a7a..56179f798 100644 --- a/omitBy.js +++ b/omitBy.js @@ -20,9 +20,9 @@ import basePickBy from './internal/basePickBy'; * // => { 'b': '2' } */ function omitBy(object, predicate) { - predicate = baseIteratee(predicate); - return basePickBy(object, function(value) { - return !predicate(value); + predicate = baseIteratee(predicate, 2); + return basePickBy(object, function(value, key) { + return !predicate(value, key); }); } diff --git a/package.json b/package.json index 0376f6def..333c422dc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lodash-es", - "version": "4.0.0", + "version": "4.0.1", "description": "Lodash exported as ES modules.", "homepage": "https://lodash.com/custom-builds", "license": "MIT", diff --git a/parseInt.js b/parseInt.js index 793d8ece4..62363f2a2 100644 --- a/parseInt.js +++ b/parseInt.js @@ -15,7 +15,7 @@ var nativeParseInt = root.parseInt; * `undefined` or `0`, a `radix` of `10` is used unless `value` is a hexadecimal, * in which case a `radix` of `16` is used. * - * **Note:** This method aligns with the [ES5 implementation](https://es5.github.io/#E) + * **Note:** This method aligns with the [ES5 implementation](https://es5.github.io/#x15.1.2.2) * of `parseInt`. * * @static diff --git a/partition.js b/partition.js index 732de6144..ec503d92a 100644 --- a/partition.js +++ b/partition.js @@ -2,9 +2,9 @@ import createAggregator from './internal/createAggregator'; /** * Creates an array of elements split into two groups, the first of which - * contains elements `predicate` returns truthy for, while the second of which - * contains elements `predicate` returns falsey for. The predicate is invoked - * with three arguments: (value, index|key, collection). + * contains elements `predicate` returns truthy for, the second of which + * contains elements `predicate` returns falsey for. The predicate is + * invoked with one argument: (value). * * @static * @memberOf _ diff --git a/pickBy.js b/pickBy.js index 6e8202fe6..86f7bf2c3 100644 --- a/pickBy.js +++ b/pickBy.js @@ -19,7 +19,7 @@ import basePickBy from './internal/basePickBy'; * // => { 'a': 1, 'c': 3 } */ function pickBy(object, predicate) { - return object == null ? {} : basePickBy(object, baseIteratee(predicate)); + return object == null ? {} : basePickBy(object, baseIteratee(predicate, 2)); } export default pickBy; diff --git a/pullAll.js b/pullAll.js index d1e2bbba9..eaa1d1fdd 100644 --- a/pullAll.js +++ b/pullAll.js @@ -15,7 +15,7 @@ import basePullAll from './internal/basePullAll'; * * var array = [1, 2, 3, 1, 2, 3]; * - * _.pull(array, [2, 3]); + * _.pullAll(array, [2, 3]); * console.log(array); * // => [1, 1] */ diff --git a/range.js b/range.js index a2b349943..2883bfd82 100644 --- a/range.js +++ b/range.js @@ -4,8 +4,7 @@ import createRange from './internal/createRange'; * Creates an array of numbers (positive and/or negative) progressing from * `start` up to, but not including, `end`. A step of `-1` is used if a negative * `start` is specified without an `end` or `step`. If `end` is not specified - * it's set to `start` with `start` then set to `0`. If `end` is less than - * `start` a zero-length range is created unless a negative `step` is specified. + * it's set to `start` with `start` then set to `0`. * * **Note:** JavaScript follows the IEEE-754 standard for resolving * floating-point values which can produce unexpected results. diff --git a/reduce.js b/reduce.js index e0acf968e..578f46d9f 100644 --- a/reduce.js +++ b/reduce.js @@ -41,9 +41,9 @@ import isArray from './isArray'; */ function reduce(collection, iteratee, accumulator) { var func = isArray(collection) ? arrayReduce : baseReduce, - initFromCollection = arguments.length < 3; + initAccum = arguments.length < 3; - return func(collection, baseIteratee(iteratee, 4), accumulator, initFromCollection, baseEach); + return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach); } export default reduce; diff --git a/reduceRight.js b/reduceRight.js index 3a79f1770..baf846c4c 100644 --- a/reduceRight.js +++ b/reduceRight.js @@ -26,9 +26,9 @@ import isArray from './isArray'; */ function reduceRight(collection, iteratee, accumulator) { var func = isArray(collection) ? arrayReduceRight : baseReduce, - initFromCollection = arguments.length < 3; + initAccum = arguments.length < 3; - return func(collection, baseIteratee(iteratee, 4), accumulator, initFromCollection, baseEachRight); + return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); } export default reduceRight; diff --git a/reverse.js b/reverse.js index c482b5e22..73b8678f3 100644 --- a/reverse.js +++ b/reverse.js @@ -11,6 +11,7 @@ var nativeReverse = arrayProto.reverse; * **Note:** This method mutates `array` and is based on * [`Array#reverse`](https://mdn.io/Array/reverse). * + * @static * @memberOf _ * @category Array * @returns {Array} Returns `array`. diff --git a/sampleSize.js b/sampleSize.js index cdcfb322c..bf6ef1d50 100644 --- a/sampleSize.js +++ b/sampleSize.js @@ -4,7 +4,8 @@ import toArray from './toArray'; import toInteger from './toInteger'; /** - * Gets `n` random elements from `collection`. + * Gets `n` random elements at unique keys from `collection` up to the + * size of `collection`. * * @static * @memberOf _ @@ -14,8 +15,11 @@ import toInteger from './toInteger'; * @returns {Array} Returns the random elements. * @example * - * _.sampleSize([1, 2, 3, 4], 2); + * _.sampleSize([1, 2, 3], 2); * // => [3, 1] + * + * _.sampleSize([1, 2, 3], 4); + * // => [2, 3, 1] */ function sampleSize(collection, n) { var index = -1, diff --git a/toArray.js b/toArray.js index 4b3edd2fa..1da77f963 100644 --- a/toArray.js +++ b/toArray.js @@ -1,4 +1,4 @@ -import _Symbol from './internal/_Symbol'; +import Symbol from './internal/Symbol'; import copyArray from './internal/copyArray'; import getTag from './internal/getTag'; import isArrayLike from './isArrayLike'; @@ -14,7 +14,7 @@ var mapTag = '[object Map]', setTag = '[object Set]'; /** Built-in value references. */ -var iteratorSymbol = typeof (iteratorSymbol = _Symbol && _Symbol.iterator) == 'symbol' ? iteratorSymbol : undefined; +var iteratorSymbol = typeof (iteratorSymbol = Symbol && Symbol.iterator) == 'symbol' ? iteratorSymbol : undefined; /** * Converts `value` to an array. diff --git a/toLength.js b/toLength.js index 82b240026..d48044f60 100644 --- a/toLength.js +++ b/toLength.js @@ -14,7 +14,7 @@ var MAX_ARRAY_LENGTH = 4294967295; * @memberOf _ * @category Lang * @param {*} value The value to convert. - * @return {number} Returns the converted integer. + * @returns {number} Returns the converted integer. * @example * * _.toLength(3); diff --git a/toString.js b/toString.js index b0ea461d1..fe0eebf68 100644 --- a/toString.js +++ b/toString.js @@ -1,12 +1,12 @@ -import _Symbol from './internal/_Symbol'; +import Symbol from './internal/Symbol'; import isSymbol from './isSymbol'; /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0; /** Used to convert symbols to primitives and strings. */ -var symbolProto = _Symbol ? _Symbol.prototype : undefined, - symbolToString = _Symbol ? symbolProto.toString : undefined; +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = Symbol ? symbolProto.toString : undefined; /** * Converts `value` to a string if it's not one. An empty string is returned @@ -37,7 +37,7 @@ function toString(value) { return ''; } if (isSymbol(value)) { - return _Symbol ? symbolToString.call(value) : ''; + return Symbol ? symbolToString.call(value) : ''; } var result = (value + ''); return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; diff --git a/truncate.js b/truncate.js index 7cc181fb3..8b6e7690e 100644 --- a/truncate.js +++ b/truncate.js @@ -14,14 +14,15 @@ var reFlags = /\w*$/; /** Used to compose unicode character classes. */ var rsAstralRange = '\\ud800-\\udfff', - rsComboRange = '\\u0300-\\u036f\\ufe20-\\ufe23', + rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23', + rsComboSymbolsRange = '\\u20d0-\\u20f0', rsVarRange = '\\ufe0e\\ufe0f'; /** Used to compose unicode capture groups. */ var rsZWJ = '\\u200d'; /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ -var reHasComplexSymbol = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); +var reHasComplexSymbol = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']'); /** * Truncates `string` if it's longer than the given maximum string length. diff --git a/words.js b/words.js index f7e6ad6c7..110a8e7a4 100644 --- a/words.js +++ b/words.js @@ -2,6 +2,8 @@ import toString from './toString'; /** Used to compose unicode character classes. */ var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23', + rsComboSymbolsRange = '\\u20d0-\\u20f0', rsDingbatRange = '\\u2700-\\u27bf', rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', @@ -14,11 +16,13 @@ var rsAstralRange = '\\ud800-\\udfff', /** Used to compose unicode capture groups. */ var rsBreak = '[' + rsBreakRange + ']', + rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']', rsDigits = '\\d+', rsDingbat = '[' + rsDingbatRange + ']', rsLower = '[' + rsLowerRange + ']', rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', - rsModifier = '(?:\\ud83c[\\udffb-\\udfff])', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', rsNonAstral = '[^' + rsAstralRange + ']', rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', @@ -42,7 +46,8 @@ var reComplexWord = RegExp([ rsUpper + '?' + rsLower + '+(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', rsUpperMisc + '+(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')', rsUpper + '?' + rsLowerMisc + '+', - rsDigits + '(?:' + rsLowerMisc + '+)?', + rsUpper + '+', + rsDigits, rsEmoji ].join('|'), 'g'); diff --git a/wrapperFlatMap.js b/wrapperFlatMap.js index 0dd9eaa8d..aea6bd46b 100644 --- a/wrapperFlatMap.js +++ b/wrapperFlatMap.js @@ -1,7 +1,7 @@ /** * This method is the wrapper version of `_.flatMap`. * - * @static + * @name flatMap * @memberOf _ * @category Seq * @param {Function|Object|string} [iteratee=_.identity] The function invoked per iteration. diff --git a/wrapperLodash.js b/wrapperLodash.js index 90b91678e..10784a684 100644 --- a/wrapperLodash.js +++ b/wrapperLodash.js @@ -52,13 +52,12 @@ var hasOwnProperty = objectProto.hasOwnProperty; * The chainable wrapper methods are: * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, * `at`, `before`, `bind`, `bindAll`, `bindKey`, `chain`, `chunk`, `commit`, - * `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, `curry`, + * `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, `curry`, * `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, `difference`, - * `differenceBy`, `differenceWith`, `drop`, `dropRight`, `dropRightWhile`, + * `differenceBy`, `differenceWith`, `drop`, `dropRight`, `dropRightWhile`, * `dropWhile`, `fill`, `filter`, `flatten`, `flattenDeep`, `flip`, `flow`, - * `flowRight`, `forEach`, `forEachRight`, `forIn`, `forInRight`, `forOwn`, - * `forOwnRight`, `fromPairs`, `functions`, `functionsIn`, `groupBy`, `initial`, - * `intersection`, `intersectionBy`, `intersectionWith`, invert`, `invokeMap`, + * `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`, @@ -77,22 +76,23 @@ var hasOwnProperty = objectProto.hasOwnProperty; * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `deburr`, `endsWith`, `eq`, * `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, - * `findLast`, `findLastIndex`, `findLastKey`, `floor`, `get`, `gt`, `gte`, - * `has`, `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, - * `invoke`, `isArguments`, `isArray`, `isArrayLike`, `isArrayLikeObject`, - * `isBoolean`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isEqualWith`, - * `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, `isMatch`, - * `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, `isNumber`, - * `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, `isSafeInteger`, - * `isString`, `isUndefined`, `isTypedArray`, `join`, `kebabCase`, `last`, - * `lastIndexOf`, `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, - * `mean`, `min`, `minBy`, `noConflict`, `noop`, `now`, `pad`, `padEnd`, - * `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, `repeat`, - * `result`, `round`, `runInContext`, `sample`, `shift`, `size`, `snakeCase`, - * `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, `sortedLastIndexBy`, - * `startCase`, `startsWith`, `subtract`, `sum`, sumBy`, `template`, `times`, - * `toLower`, `toInteger`, `toLength`, `toNumber`, `toSafeInteger`, toString`, - * `toUpper`, `trim`, `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, + * `findLast`, `findLastIndex`, `findLastKey`, `floor`, `forEach`, `forEachRight`, + * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, + * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, + * `isArguments`, `isArray`, `isArrayLike`, `isArrayLikeObject`, `isBoolean`, + * `isDate`, `isElement`, `isEmpty`, `isEqual`, `isEqualWith`, `isError`, + * `isFinite`, `isFunction`, `isInteger`, `isLength`, `isMatch`, `isMatchWith`, + * `isNaN`, `isNative`, `isNil`, `isNull`, `isNumber`, `isObject`, `isObjectLike`, + * `isPlainObject`, `isRegExp`, `isSafeInteger`, `isString`, `isUndefined`, + * `isTypedArray`, `join`, `kebabCase`, `last`, `lastIndexOf`, `lowerCase`, + * `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `min`, `minBy`, + * `noConflict`, `noop`, `now`, `pad`, `padEnd`, `padStart`, `parseInt`, + * `pop`, `random`, `reduce`, `reduceRight`, `repeat`, `result`, `round`, + * `runInContext`, `sample`, `shift`, `size`, `snakeCase`, `some`, `sortedIndex`, + * `sortedIndexBy`, `sortedLastIndex`, `sortedLastIndexBy`, `startCase`, + * `startsWith`, `subtract`, `sum`, `sumBy`, `template`, `times`, `toLower`, + * `toInteger`, `toLength`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, + * `trim`, `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, * `upperCase`, `upperFirst`, `value`, and `words` * * @name _ diff --git a/wrapperValue.js b/wrapperValue.js index 47102c789..f6694d9af 100644 --- a/wrapperValue.js +++ b/wrapperValue.js @@ -5,7 +5,7 @@ import baseWrapperValue from './internal/baseWrapperValue'; * * @name value * @memberOf _ - * @alias run, toJSON, valueOf + * @alias toJSON, valueOf * @category Seq * @returns {*} Returns the resolved unwrapped value. * @example