wp/wp-includes/js/dist/vendor/lodash.js
changeset 16 a86126ab1dd4
parent 9 177826044cd9
child 18 be944660c56a
equal deleted inserted replaced
15:3d4e9c994f10 16:a86126ab1dd4
     1 /**
     1 /**
     2  * @license
     2  * @license
     3  * Lodash <https://lodash.com/>
     3  * Lodash <https://lodash.com/>
     4  * Copyright JS Foundation and other contributors <https://js.foundation/>
     4  * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
     5  * Released under MIT license <https://lodash.com/license>
     5  * Released under MIT license <https://lodash.com/license>
     6  * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
     6  * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
     7  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
     7  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
     8  */
     8  */
     9 ;(function() {
     9 ;(function() {
    10 
    10 
    11   /** Used as a safe reference for `undefined` in pre-ES5 environments. */
    11   /** Used as a safe reference for `undefined` in pre-ES5 environments. */
    12   var undefined;
    12   var undefined;
    13 
    13 
    14   /** Used as the semantic version number. */
    14   /** Used as the semantic version number. */
    15   var VERSION = '4.17.11';
    15   var VERSION = '4.17.19';
    16 
    16 
    17   /** Used as the size to enable large array optimizations. */
    17   /** Used as the size to enable large array optimizations. */
    18   var LARGE_ARRAY_SIZE = 200;
    18   var LARGE_ARRAY_SIZE = 200;
    19 
    19 
    20   /** Error message constants. */
    20   /** Error message constants. */
  2669 
  2669 
  2670       if (isSet(value)) {
  2670       if (isSet(value)) {
  2671         value.forEach(function(subValue) {
  2671         value.forEach(function(subValue) {
  2672           result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
  2672           result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
  2673         });
  2673         });
  2674 
  2674       } else if (isMap(value)) {
  2675         return result;
       
  2676       }
       
  2677 
       
  2678       if (isMap(value)) {
       
  2679         value.forEach(function(subValue, key) {
  2675         value.forEach(function(subValue, key) {
  2680           result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
  2676           result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
  2681         });
  2677         });
  2682 
       
  2683         return result;
       
  2684       }
  2678       }
  2685 
  2679 
  2686       var keysFunc = isFull
  2680       var keysFunc = isFull
  2687         ? (isFlat ? getAllKeysIn : getAllKeys)
  2681         ? (isFlat ? getAllKeysIn : getAllKeys)
  2688         : (isFlat ? keysIn : keys);
  2682         : (isFlat ? keysIn : keys);
  3602     function baseMerge(object, source, srcIndex, customizer, stack) {
  3596     function baseMerge(object, source, srcIndex, customizer, stack) {
  3603       if (object === source) {
  3597       if (object === source) {
  3604         return;
  3598         return;
  3605       }
  3599       }
  3606       baseFor(source, function(srcValue, key) {
  3600       baseFor(source, function(srcValue, key) {
       
  3601         stack || (stack = new Stack);
  3607         if (isObject(srcValue)) {
  3602         if (isObject(srcValue)) {
  3608           stack || (stack = new Stack);
       
  3609           baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
  3603           baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
  3610         }
  3604         }
  3611         else {
  3605         else {
  3612           var newValue = customizer
  3606           var newValue = customizer
  3613             ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
  3607             ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
  3723      * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
  3717      * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
  3724      * @param {string[]} orders The sort orders of `iteratees`.
  3718      * @param {string[]} orders The sort orders of `iteratees`.
  3725      * @returns {Array} Returns the new sorted array.
  3719      * @returns {Array} Returns the new sorted array.
  3726      */
  3720      */
  3727     function baseOrderBy(collection, iteratees, orders) {
  3721     function baseOrderBy(collection, iteratees, orders) {
       
  3722       if (iteratees.length) {
       
  3723         iteratees = arrayMap(iteratees, function(iteratee) {
       
  3724           if (isArray(iteratee)) {
       
  3725             return function(value) {
       
  3726               return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);
       
  3727             }
       
  3728           }
       
  3729           return iteratee;
       
  3730         });
       
  3731       } else {
       
  3732         iteratees = [identity];
       
  3733       }
       
  3734 
  3728       var index = -1;
  3735       var index = -1;
  3729       iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));
  3736       iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
  3730 
  3737 
  3731       var result = baseMap(collection, function(value, key, collection) {
  3738       var result = baseMap(collection, function(value, key, collection) {
  3732         var criteria = arrayMap(iteratees, function(iteratee) {
  3739         var criteria = arrayMap(iteratees, function(iteratee) {
  3733           return iteratee(value);
  3740           return iteratee(value);
  3734         });
  3741         });
  3981 
  3988 
  3982       while (nested != null && ++index < length) {
  3989       while (nested != null && ++index < length) {
  3983         var key = toKey(path[index]),
  3990         var key = toKey(path[index]),
  3984             newValue = value;
  3991             newValue = value;
  3985 
  3992 
       
  3993         if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
       
  3994           return object;
       
  3995         }
       
  3996 
  3986         if (index != lastIndex) {
  3997         if (index != lastIndex) {
  3987           var objValue = nested[key];
  3998           var objValue = nested[key];
  3988           newValue = customizer ? customizer(objValue, key, nested) : undefined;
  3999           newValue = customizer ? customizer(objValue, key, nested) : undefined;
  3989           if (newValue === undefined) {
  4000           if (newValue === undefined) {
  3990             newValue = isObject(objValue)
  4001             newValue = isObject(objValue)
  4133      * @param {boolean} [retHighest] Specify returning the highest qualified index.
  4144      * @param {boolean} [retHighest] Specify returning the highest qualified index.
  4134      * @returns {number} Returns the index at which `value` should be inserted
  4145      * @returns {number} Returns the index at which `value` should be inserted
  4135      *  into `array`.
  4146      *  into `array`.
  4136      */
  4147      */
  4137     function baseSortedIndexBy(array, value, iteratee, retHighest) {
  4148     function baseSortedIndexBy(array, value, iteratee, retHighest) {
       
  4149       var low = 0,
       
  4150           high = array == null ? 0 : array.length;
       
  4151       if (high === 0) {
       
  4152         return 0;
       
  4153       }
       
  4154 
  4138       value = iteratee(value);
  4155       value = iteratee(value);
  4139 
  4156       var valIsNaN = value !== value,
  4140       var low = 0,
       
  4141           high = array == null ? 0 : array.length,
       
  4142           valIsNaN = value !== value,
       
  4143           valIsNull = value === null,
  4157           valIsNull = value === null,
  4144           valIsSymbol = isSymbol(value),
  4158           valIsSymbol = isSymbol(value),
  4145           valIsUndefined = value === undefined;
  4159           valIsUndefined = value === undefined;
  4146 
  4160 
  4147       while (low < high) {
  4161       while (low < high) {
  5420     function createRound(methodName) {
  5434     function createRound(methodName) {
  5421       var func = Math[methodName];
  5435       var func = Math[methodName];
  5422       return function(number, precision) {
  5436       return function(number, precision) {
  5423         number = toNumber(number);
  5437         number = toNumber(number);
  5424         precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
  5438         precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
  5425         if (precision) {
  5439         if (precision && nativeIsFinite(number)) {
  5426           // Shift with exponential notation to avoid floating-point issues.
  5440           // Shift with exponential notation to avoid floating-point issues.
  5427           // See [MDN](https://mdn.io/round#Examples) for more details.
  5441           // See [MDN](https://mdn.io/round#Examples) for more details.
  5428           var pair = (toString(number) + 'e').split('e'),
  5442           var pair = (toString(number) + 'e').split('e'),
  5429               value = func(pair[0] + 'e' + (+pair[1] + precision));
  5443               value = func(pair[0] + 'e' + (+pair[1] + precision));
  5430 
  5444 
  5622           othLength = other.length;
  5636           othLength = other.length;
  5623 
  5637 
  5624       if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
  5638       if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
  5625         return false;
  5639         return false;
  5626       }
  5640       }
  5627       // Assume cyclic values are equal.
  5641       // Check that cyclic values are equal.
  5628       var stacked = stack.get(array);
  5642       var arrStacked = stack.get(array);
  5629       if (stacked && stack.get(other)) {
  5643       var othStacked = stack.get(other);
  5630         return stacked == other;
  5644       if (arrStacked && othStacked) {
       
  5645         return arrStacked == other && othStacked == array;
  5631       }
  5646       }
  5632       var index = -1,
  5647       var index = -1,
  5633           result = true,
  5648           result = true,
  5634           seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
  5649           seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
  5635 
  5650 
  5787         var key = objProps[index];
  5802         var key = objProps[index];
  5788         if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
  5803         if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
  5789           return false;
  5804           return false;
  5790         }
  5805         }
  5791       }
  5806       }
  5792       // Assume cyclic values are equal.
  5807       // Check that cyclic values are equal.
  5793       var stacked = stack.get(object);
  5808       var objStacked = stack.get(object);
  5794       if (stacked && stack.get(other)) {
  5809       var othStacked = stack.get(other);
  5795         return stacked == other;
  5810       if (objStacked && othStacked) {
       
  5811         return objStacked == other && othStacked == object;
  5796       }
  5812       }
  5797       var result = true;
  5813       var result = true;
  5798       stack.set(object, other);
  5814       stack.set(object, other);
  5799       stack.set(other, object);
  5815       stack.set(other, object);
  5800 
  5816 
  6603       }
  6619       }
  6604       return array;
  6620       return array;
  6605     }
  6621     }
  6606 
  6622 
  6607     /**
  6623     /**
  6608      * Gets the value at `key`, unless `key` is "__proto__".
  6624      * Gets the value at `key`, unless `key` is "__proto__" or "constructor".
  6609      *
  6625      *
  6610      * @private
  6626      * @private
  6611      * @param {Object} object The object to query.
  6627      * @param {Object} object The object to query.
  6612      * @param {string} key The key of the property to get.
  6628      * @param {string} key The key of the property to get.
  6613      * @returns {*} Returns the property value.
  6629      * @returns {*} Returns the property value.
  6614      */
  6630      */
  6615     function safeGet(object, key) {
  6631     function safeGet(object, key) {
       
  6632       if (key === 'constructor' && typeof object[key] === 'function') {
       
  6633         return;
       
  6634       }
       
  6635 
  6616       if (key == '__proto__') {
  6636       if (key == '__proto__') {
  6617         return;
  6637         return;
  6618       }
  6638       }
  6619 
  6639 
  6620       return object[key];
  6640       return object[key];
  9167      * // => objects for ['fred']
  9187      * // => objects for ['fred']
  9168      *
  9188      *
  9169      * // The `_.property` iteratee shorthand.
  9189      * // The `_.property` iteratee shorthand.
  9170      * _.filter(users, 'active');
  9190      * _.filter(users, 'active');
  9171      * // => objects for ['barney']
  9191      * // => objects for ['barney']
       
  9192      *
       
  9193      * // Combining several predicates using `_.overEvery` or `_.overSome`.
       
  9194      * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));
       
  9195      * // => objects for ['fred', 'barney']
  9172      */
  9196      */
  9173     function filter(collection, predicate) {
  9197     function filter(collection, predicate) {
  9174       var func = isArray(collection) ? arrayFilter : baseFilter;
  9198       var func = isArray(collection) ? arrayFilter : baseFilter;
  9175       return func(collection, getIteratee(predicate, 3));
  9199       return func(collection, getIteratee(predicate, 3));
  9176     }
  9200     }
  9916      * @example
  9940      * @example
  9917      *
  9941      *
  9918      * var users = [
  9942      * var users = [
  9919      *   { 'user': 'fred',   'age': 48 },
  9943      *   { 'user': 'fred',   'age': 48 },
  9920      *   { 'user': 'barney', 'age': 36 },
  9944      *   { 'user': 'barney', 'age': 36 },
  9921      *   { 'user': 'fred',   'age': 40 },
  9945      *   { 'user': 'fred',   'age': 30 },
  9922      *   { 'user': 'barney', 'age': 34 }
  9946      *   { 'user': 'barney', 'age': 34 }
  9923      * ];
  9947      * ];
  9924      *
  9948      *
  9925      * _.sortBy(users, [function(o) { return o.user; }]);
  9949      * _.sortBy(users, [function(o) { return o.user; }]);
  9926      * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
  9950      * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]
  9927      *
  9951      *
  9928      * _.sortBy(users, ['user', 'age']);
  9952      * _.sortBy(users, ['user', 'age']);
  9929      * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]
  9953      * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]
  9930      */
  9954      */
  9931     var sortBy = baseRest(function(collection, iteratees) {
  9955     var sortBy = baseRest(function(collection, iteratees) {
  9932       if (collection == null) {
  9956       if (collection == null) {
  9933         return [];
  9957         return [];
  9934       }
  9958       }
 10411           if (timerId === undefined) {
 10435           if (timerId === undefined) {
 10412             return leadingEdge(lastCallTime);
 10436             return leadingEdge(lastCallTime);
 10413           }
 10437           }
 10414           if (maxing) {
 10438           if (maxing) {
 10415             // Handle invocations in a tight loop.
 10439             // Handle invocations in a tight loop.
       
 10440             clearTimeout(timerId);
 10416             timerId = setTimeout(timerExpired, wait);
 10441             timerId = setTimeout(timerExpired, wait);
 10417             return invokeFunc(lastCallTime);
 10442             return invokeFunc(lastCallTime);
 10418           }
 10443           }
 10419         }
 10444         }
 10420         if (timerId === undefined) {
 10445         if (timerId === undefined) {
 14797         (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +
 14822         (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +
 14798         (options.evaluate || reNoMatch).source + '|$'
 14823         (options.evaluate || reNoMatch).source + '|$'
 14799       , 'g');
 14824       , 'g');
 14800 
 14825 
 14801       // Use a sourceURL for easier debugging.
 14826       // Use a sourceURL for easier debugging.
       
 14827       // The sourceURL gets injected into the source that's eval-ed, so be careful
       
 14828       // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in
       
 14829       // and escape the comment, thus injecting code that gets evaled.
 14802       var sourceURL = '//# sourceURL=' +
 14830       var sourceURL = '//# sourceURL=' +
 14803         ('sourceURL' in options
 14831         (hasOwnProperty.call(options, 'sourceURL')
 14804           ? options.sourceURL
 14832           ? (options.sourceURL + '').replace(/\s/g, ' ')
 14805           : ('lodash.templateSources[' + (++templateCounter) + ']')
 14833           : ('lodash.templateSources[' + (++templateCounter) + ']')
 14806         ) + '\n';
 14834         ) + '\n';
 14807 
 14835 
 14808       string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
 14836       string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
 14809         interpolateValue || (interpolateValue = esTemplateValue);
 14837         interpolateValue || (interpolateValue = esTemplateValue);
 14832 
 14860 
 14833       source += "';\n";
 14861       source += "';\n";
 14834 
 14862 
 14835       // If `variable` is not specified wrap a with-statement around the generated
 14863       // If `variable` is not specified wrap a with-statement around the generated
 14836       // code to add the data object to the top of the scope chain.
 14864       // code to add the data object to the top of the scope chain.
 14837       var variable = options.variable;
 14865       var variable = hasOwnProperty.call(options, 'variable') && options.variable;
 14838       if (!variable) {
 14866       if (!variable) {
 14839         source = 'with (obj) {\n' + source + '\n}\n';
 14867         source = 'with (obj) {\n' + source + '\n}\n';
 14840       }
 14868       }
 14841       // Cleanup code by stripping empty strings.
 14869       // Cleanup code by stripping empty strings.
 14842       source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)
 14870       source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)
 15538      *
 15566      *
 15539      * Partial comparisons will match empty array and empty object `source`
 15567      * Partial comparisons will match empty array and empty object `source`
 15540      * values against any array or object value, respectively. See `_.isEqual`
 15568      * values against any array or object value, respectively. See `_.isEqual`
 15541      * for a list of supported value comparisons.
 15569      * for a list of supported value comparisons.
 15542      *
 15570      *
       
 15571      * **Note:** Multiple values can be checked by combining several matchers
       
 15572      * using `_.overSome`
       
 15573      *
 15543      * @static
 15574      * @static
 15544      * @memberOf _
 15575      * @memberOf _
 15545      * @since 3.0.0
 15576      * @since 3.0.0
 15546      * @category Util
 15577      * @category Util
 15547      * @param {Object} source The object of property values to match.
 15578      * @param {Object} source The object of property values to match.
 15553      *   { 'a': 4, 'b': 5, 'c': 6 }
 15584      *   { 'a': 4, 'b': 5, 'c': 6 }
 15554      * ];
 15585      * ];
 15555      *
 15586      *
 15556      * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
 15587      * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
 15557      * // => [{ 'a': 4, 'b': 5, 'c': 6 }]
 15588      * // => [{ 'a': 4, 'b': 5, 'c': 6 }]
       
 15589      *
       
 15590      * // Checking for several possible values
       
 15591      * _.filter(users, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));
       
 15592      * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
 15558      */
 15593      */
 15559     function matches(source) {
 15594     function matches(source) {
 15560       return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
 15595       return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
 15561     }
 15596     }
 15562 
 15597 
 15566      * object value is equivalent, else `false`.
 15601      * object value is equivalent, else `false`.
 15567      *
 15602      *
 15568      * **Note:** Partial comparisons will match empty array and empty object
 15603      * **Note:** Partial comparisons will match empty array and empty object
 15569      * `srcValue` values against any array or object value, respectively. See
 15604      * `srcValue` values against any array or object value, respectively. See
 15570      * `_.isEqual` for a list of supported value comparisons.
 15605      * `_.isEqual` for a list of supported value comparisons.
       
 15606      *
       
 15607      * **Note:** Multiple values can be checked by combining several matchers
       
 15608      * using `_.overSome`
 15571      *
 15609      *
 15572      * @static
 15610      * @static
 15573      * @memberOf _
 15611      * @memberOf _
 15574      * @since 3.2.0
 15612      * @since 3.2.0
 15575      * @category Util
 15613      * @category Util
 15583      *   { 'a': 4, 'b': 5, 'c': 6 }
 15621      *   { 'a': 4, 'b': 5, 'c': 6 }
 15584      * ];
 15622      * ];
 15585      *
 15623      *
 15586      * _.find(objects, _.matchesProperty('a', 4));
 15624      * _.find(objects, _.matchesProperty('a', 4));
 15587      * // => { 'a': 4, 'b': 5, 'c': 6 }
 15625      * // => { 'a': 4, 'b': 5, 'c': 6 }
       
 15626      *
       
 15627      * // Checking for several possible values
       
 15628      * _.filter(users, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));
       
 15629      * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
 15588      */
 15630      */
 15589     function matchesProperty(path, srcValue) {
 15631     function matchesProperty(path, srcValue) {
 15590       return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
 15632       return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
 15591     }
 15633     }
 15592 
 15634 
 15806 
 15848 
 15807     /**
 15849     /**
 15808      * Creates a function that checks if **all** of the `predicates` return
 15850      * Creates a function that checks if **all** of the `predicates` return
 15809      * truthy when invoked with the arguments it receives.
 15851      * truthy when invoked with the arguments it receives.
 15810      *
 15852      *
       
 15853      * Following shorthands are possible for providing predicates.
       
 15854      * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.
       
 15855      * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.
       
 15856      *
 15811      * @static
 15857      * @static
 15812      * @memberOf _
 15858      * @memberOf _
 15813      * @since 4.0.0
 15859      * @since 4.0.0
 15814      * @category Util
 15860      * @category Util
 15815      * @param {...(Function|Function[])} [predicates=[_.identity]]
 15861      * @param {...(Function|Function[])} [predicates=[_.identity]]
 15832 
 15878 
 15833     /**
 15879     /**
 15834      * Creates a function that checks if **any** of the `predicates` return
 15880      * Creates a function that checks if **any** of the `predicates` return
 15835      * truthy when invoked with the arguments it receives.
 15881      * truthy when invoked with the arguments it receives.
 15836      *
 15882      *
       
 15883      * Following shorthands are possible for providing predicates.
       
 15884      * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.
       
 15885      * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.
       
 15886      *
 15837      * @static
 15887      * @static
 15838      * @memberOf _
 15888      * @memberOf _
 15839      * @since 4.0.0
 15889      * @since 4.0.0
 15840      * @category Util
 15890      * @category Util
 15841      * @param {...(Function|Function[])} [predicates=[_.identity]]
 15891      * @param {...(Function|Function[])} [predicates=[_.identity]]
 15851      * func(null);
 15901      * func(null);
 15852      * // => true
 15902      * // => true
 15853      *
 15903      *
 15854      * func(NaN);
 15904      * func(NaN);
 15855      * // => false
 15905      * // => false
       
 15906      *
       
 15907      * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])
       
 15908      * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])
 15856      */
 15909      */
 15857     var overSome = createOver(arraySome);
 15910     var overSome = createOver(arraySome);
 15858 
 15911 
 15859     /**
 15912     /**
 15860      * Creates a function that returns the value at `path` of a given object.
 15913      * Creates a function that returns the value at `path` of a given object.
 17037 
 17090 
 17038     // Map minified method names to their real names.
 17091     // Map minified method names to their real names.
 17039     baseForOwn(LazyWrapper.prototype, function(func, methodName) {
 17092     baseForOwn(LazyWrapper.prototype, function(func, methodName) {
 17040       var lodashFunc = lodash[methodName];
 17093       var lodashFunc = lodash[methodName];
 17041       if (lodashFunc) {
 17094       if (lodashFunc) {
 17042         var key = (lodashFunc.name + ''),
 17095         var key = lodashFunc.name + '';
 17043             names = realNames[key] || (realNames[key] = []);
 17096         if (!hasOwnProperty.call(realNames, key)) {
 17044 
 17097           realNames[key] = [];
 17045         names.push({ 'name': methodName, 'func': lodashFunc });
 17098         }
       
 17099         realNames[key].push({ 'name': methodName, 'func': lodashFunc });
 17046       }
 17100       }
 17047     });
 17101     });
 17048 
 17102 
 17049     realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{
 17103     realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{
 17050       'name': 'wrapper',
 17104       'name': 'wrapper',