lodash._basedifference
Advanced tools
Comparing version 3.0.3 to 4.4.0
205
index.js
/** | ||
* lodash 3.0.3 (Custom Build) <https://lodash.com/> | ||
* Build: `lodash modern modularize exports="npm" -o ./` | ||
* Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/> | ||
* lodash 4.4.0 (Custom Build) <https://lodash.com/> | ||
* Build: `lodash modularize exports="npm" -o ./` | ||
* Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/> | ||
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> | ||
* Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors | ||
* Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors | ||
* Available under MIT license <https://lodash.com/license> | ||
*/ | ||
var baseIndexOf = require('lodash._baseindexof'), | ||
cacheIndexOf = require('lodash._cacheindexof'), | ||
createCache = require('lodash._createcache'); | ||
var SetCache = require('lodash._setcache'); | ||
@@ -16,14 +14,156 @@ /** Used as the size to enable large array optimizations. */ | ||
/** Used to stand-in for `undefined` hash values. */ | ||
var HASH_UNDEFINED = '__lodash_hash_undefined__'; | ||
/** | ||
* The base implementation of `_.difference` which accepts a single array | ||
* of values to exclude. | ||
* A specialized version of `_.includes` for arrays without support for | ||
* specifying an index to search from. | ||
* | ||
* @private | ||
* @param {Array} array The array to search. | ||
* @param {*} target The value to search for. | ||
* @returns {boolean} Returns `true` if `target` is found, else `false`. | ||
*/ | ||
function arrayIncludes(array, value) { | ||
return !!array.length && baseIndexOf(array, value, 0) > -1; | ||
} | ||
/** | ||
* A specialized version of `_.includesWith` for arrays without support for | ||
* specifying an index to search from. | ||
* | ||
* @private | ||
* @param {Array} array The array to search. | ||
* @param {*} target The value to search for. | ||
* @param {Function} comparator The comparator invoked per element. | ||
* @returns {boolean} Returns `true` if `target` is found, else `false`. | ||
*/ | ||
function arrayIncludesWith(array, value, comparator) { | ||
var index = -1, | ||
length = array.length; | ||
while (++index < length) { | ||
if (comparator(value, array[index])) { | ||
return true; | ||
} | ||
} | ||
return false; | ||
} | ||
/** | ||
* A specialized version of `_.map` for arrays without support for iteratee | ||
* shorthands. | ||
* | ||
* @private | ||
* @param {Array} array The array to iterate over. | ||
* @param {Function} iteratee The function invoked per iteration. | ||
* @returns {Array} Returns the new mapped array. | ||
*/ | ||
function arrayMap(array, iteratee) { | ||
var index = -1, | ||
length = array.length, | ||
result = Array(length); | ||
while (++index < length) { | ||
result[index] = iteratee(array[index], index, array); | ||
} | ||
return result; | ||
} | ||
/** | ||
* The base implementation of `_.indexOf` without `fromIndex` bounds checks. | ||
* | ||
* @private | ||
* @param {Array} array The array to search. | ||
* @param {*} value The value to search for. | ||
* @param {number} fromIndex The index to search from. | ||
* @returns {number} Returns the index of the matched value, else `-1`. | ||
*/ | ||
function baseIndexOf(array, value, fromIndex) { | ||
if (value !== value) { | ||
return indexOfNaN(array, fromIndex); | ||
} | ||
var index = fromIndex - 1, | ||
length = array.length; | ||
while (++index < length) { | ||
if (array[index] === value) { | ||
return index; | ||
} | ||
} | ||
return -1; | ||
} | ||
/** | ||
* The base implementation of `_.unary` without support for storing wrapper metadata. | ||
* | ||
* @private | ||
* @param {Function} func The function to cap arguments for. | ||
* @returns {Function} Returns the new function. | ||
*/ | ||
function baseUnary(func) { | ||
return function(value) { | ||
return func(value); | ||
}; | ||
} | ||
/** | ||
* Gets the index at which the first occurrence of `NaN` is found in `array`. | ||
* | ||
* @private | ||
* @param {Array} array The array to search. | ||
* @param {number} fromIndex The index to search from. | ||
* @param {boolean} [fromRight] Specify iterating from right to left. | ||
* @returns {number} Returns the index of the matched `NaN`, else `-1`. | ||
*/ | ||
function indexOfNaN(array, fromIndex, fromRight) { | ||
var length = array.length, | ||
index = fromIndex + (fromRight ? 0 : -1); | ||
while ((fromRight ? index-- : ++index < length)) { | ||
var other = array[index]; | ||
if (other !== other) { | ||
return index; | ||
} | ||
} | ||
return -1; | ||
} | ||
/** | ||
* Checks if `value` is in `cache`. | ||
* | ||
* @private | ||
* @param {Object} cache The set cache to search. | ||
* @param {*} value The value to search for. | ||
* @returns {number} Returns `true` if `value` is found, else `false`. | ||
*/ | ||
function cacheHas(cache, value) { | ||
var map = cache.__data__; | ||
if (isKeyable(value)) { | ||
var data = map.__data__, | ||
hash = typeof value == 'string' ? data.string : data.hash; | ||
return hash[value] === HASH_UNDEFINED; | ||
} | ||
return map.has(value); | ||
} | ||
/** | ||
* The base implementation of methods like `_.difference` without support for | ||
* excluding multiple arrays or iteratee shorthands. | ||
* | ||
* @private | ||
* @param {Array} array The array to inspect. | ||
* @param {Array} values The values to exclude. | ||
* @param {Function} [iteratee] The iteratee invoked per element. | ||
* @param {Function} [comparator] The comparator invoked per element. | ||
* @returns {Array} Returns the new array of filtered values. | ||
*/ | ||
function baseDifference(array, values) { | ||
var length = array ? array.length : 0, | ||
result = []; | ||
function baseDifference(array, values, iteratee, comparator) { | ||
var index = -1, | ||
includes = arrayIncludes, | ||
isCommon = true, | ||
length = array.length, | ||
result = [], | ||
valuesLength = values.length; | ||
@@ -33,21 +173,23 @@ if (!length) { | ||
} | ||
var index = -1, | ||
indexOf = baseIndexOf, | ||
isCommon = true, | ||
cache = (isCommon && values.length >= LARGE_ARRAY_SIZE) ? createCache(values) : null, | ||
valuesLength = values.length; | ||
if (cache) { | ||
indexOf = cacheIndexOf; | ||
if (iteratee) { | ||
values = arrayMap(values, baseUnary(iteratee)); | ||
} | ||
if (comparator) { | ||
includes = arrayIncludesWith; | ||
isCommon = false; | ||
values = cache; | ||
} | ||
else if (values.length >= LARGE_ARRAY_SIZE) { | ||
includes = cacheHas; | ||
isCommon = false; | ||
values = new SetCache(values); | ||
} | ||
outer: | ||
while (++index < length) { | ||
var value = array[index]; | ||
var value = array[index], | ||
computed = iteratee ? iteratee(value) : value; | ||
if (isCommon && value === value) { | ||
if (isCommon && computed === computed) { | ||
var valuesIndex = valuesLength; | ||
while (valuesIndex--) { | ||
if (values[valuesIndex] === value) { | ||
if (values[valuesIndex] === computed) { | ||
continue outer; | ||
@@ -58,3 +200,3 @@ } | ||
} | ||
else if (indexOf(values, value, 0) < 0) { | ||
else if (!includes(values, computed, comparator)) { | ||
result.push(value); | ||
@@ -66,2 +208,15 @@ } | ||
/** | ||
* Checks if `value` is suitable for use as unique object key. | ||
* | ||
* @private | ||
* @param {*} value The value to check. | ||
* @returns {boolean} Returns `true` if `value` is suitable, else `false`. | ||
*/ | ||
function isKeyable(value) { | ||
var type = typeof value; | ||
return type == 'number' || type == 'boolean' || | ||
(type == 'string' && value != '__proto__') || value == null; | ||
} | ||
module.exports = baseDifference; |
{ | ||
"name": "lodash._basedifference", | ||
"version": "3.0.3", | ||
"description": "The modern build of lodash’s internal `baseDifference` as a module.", | ||
"version": "4.4.0", | ||
"description": "The internal lodash function `baseDifference` exported as a module.", | ||
"homepage": "https://lodash.com/", | ||
@@ -11,5 +11,3 @@ "icon": "https://lodash.com/icon.svg", | ||
"John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)", | ||
"Benjamin Tan <demoneaux@gmail.com> (https://d10.github.io/)", | ||
"Blaine Bublitz <blaine@iceddev.com> (http://www.iceddev.com/)", | ||
"Kit Cambridge <github@kitcambridge.be> (http://kitcambridge.be/)", | ||
"Blaine Bublitz <blaine@iceddev.com> (https://github.com/phated)", | ||
"Mathias Bynens <mathias@qiwi.be> (https://mathiasbynens.be/)" | ||
@@ -20,6 +18,4 @@ ], | ||
"dependencies": { | ||
"lodash._baseindexof": "^3.0.0", | ||
"lodash._cacheindexof": "^3.0.0", | ||
"lodash._createcache": "^3.0.0" | ||
"lodash._setcache": "^4.0.0" | ||
} | ||
} |
@@ -1,4 +0,4 @@ | ||
# lodash._basedifference v3.0.3 | ||
# lodash._basedifference v4.4.0 | ||
The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash’s](https://lodash.com/) internal `baseDifference` exported as a [Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) module. | ||
The internal [lodash](https://lodash.com/) function `baseDifference` exported as a [Node.js](https://nodejs.org/) module. | ||
@@ -8,3 +8,2 @@ ## Installation | ||
Using npm: | ||
```bash | ||
@@ -15,4 +14,3 @@ $ {sudo -H} npm i -g npm | ||
In Node.js/io.js: | ||
In Node.js: | ||
```js | ||
@@ -22,2 +20,2 @@ var baseDifference = require('lodash._basedifference'); | ||
See the [package source](https://github.com/lodash/lodash/blob/3.0.3-npm-packages/lodash._basedifference) for more details. | ||
See the [package source](https://github.com/lodash/lodash/blob/4.4.0-npm-packages/lodash._basedifference) for more details. |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
8534
1
199
19
1
+ Addedlodash._setcache@^4.0.0
+ Addedlodash._setcache@4.1.3(transitive)
- Removedlodash._baseindexof@^3.0.0
- Removedlodash._cacheindexof@^3.0.0
- Removedlodash._createcache@^3.0.0
- Removedlodash._baseindexof@3.1.0(transitive)
- Removedlodash._cacheindexof@3.0.2(transitive)
- Removedlodash._createcache@3.1.2(transitive)
- Removedlodash._getnative@3.9.1(transitive)