ut2 1.5.6 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/dist/ut2.js +239 -101
- package/dist/ut2.js.map +1 -1
- package/dist/ut2.min.js +1 -1
- package/dist/ut2.min.js.map +1 -1
- package/es/countBy.js +11 -13
- package/es/difference.js +2 -0
- package/es/every.js +16 -0
- package/es/filter.js +15 -0
- package/es/find.js +16 -0
- package/es/forEach.js +6 -0
- package/es/forEachRight.js +6 -0
- package/es/groupBy.js +13 -13
- package/es/index.js +11 -0
- package/es/internals/createExtremum.js +8 -18
- package/es/internals/createForEach.js +23 -0
- package/es/internals/createReduce.js +29 -0
- package/es/internals/helpers.js +1 -1
- package/es/intersection.js +2 -0
- package/es/isEmpty.js +1 -1
- package/es/keyBy.js +8 -8
- package/es/keys.js +11 -0
- package/es/map.js +13 -0
- package/es/merge.js +32 -22
- package/es/orderBy.js +9 -9
- package/es/partition.js +7 -7
- package/es/range.js +28 -0
- package/es/reduce.js +6 -0
- package/es/reduceRight.js +6 -0
- package/es/some.js +16 -0
- package/es/toString.js +1 -1
- package/es/uniq.js +5 -13
- package/es/xor.js +2 -0
- package/lib/countBy.js +11 -13
- package/lib/difference.js +2 -0
- package/lib/every.js +18 -0
- package/lib/filter.js +17 -0
- package/lib/find.js +18 -0
- package/lib/forEach.js +8 -0
- package/lib/forEachRight.js +8 -0
- package/lib/groupBy.js +13 -13
- package/lib/index.js +22 -0
- package/lib/internals/createExtremum.js +8 -18
- package/lib/internals/createForEach.js +25 -0
- package/lib/internals/createReduce.js +31 -0
- package/lib/internals/helpers.js +1 -1
- package/lib/intersection.js +2 -0
- package/lib/isEmpty.js +2 -2
- package/lib/keyBy.js +8 -8
- package/lib/keys.js +13 -0
- package/lib/map.js +15 -0
- package/lib/merge.js +32 -22
- package/lib/orderBy.js +9 -9
- package/lib/partition.js +7 -7
- package/lib/range.js +30 -0
- package/lib/reduce.js +8 -0
- package/lib/reduceRight.js +8 -0
- package/lib/some.js +18 -0
- package/lib/toString.js +1 -1
- package/lib/uniq.js +5 -13
- package/lib/xor.js +2 -0
- package/package.json +1 -1
- package/types/allKeys.d.ts +1 -1
- package/types/allKeysIn.d.ts +1 -1
- package/types/conformsTo.d.ts +2 -1
- package/types/countBy.d.ts +3 -24
- package/types/difference.d.ts +3 -2
- package/types/every.d.ts +6 -0
- package/types/filter.d.ts +6 -0
- package/types/find.d.ts +6 -0
- package/types/forEach.d.ts +36 -0
- package/types/forEachRight.d.ts +36 -0
- package/types/groupBy.d.ts +3 -24
- package/types/index.d.ts +11 -0
- package/types/internals/compare.d.ts +2 -1
- package/types/internals/createExtremum.d.ts +2 -1
- package/types/internals/createForEach.d.ts +15 -0
- package/types/internals/createIteratee.d.ts +2 -2
- package/types/internals/createReduce.d.ts +19 -0
- package/types/intersection.d.ts +3 -2
- package/types/isArrayBuffer.d.ts +1 -1
- package/types/isArrayLike.d.ts +1 -1
- package/types/isError.d.ts +1 -1
- package/types/isWeakMap.d.ts +1 -1
- package/types/isWeakSet.d.ts +1 -1
- package/types/keyBy.d.ts +3 -24
- package/types/keys.d.ts +24 -0
- package/types/keysIn.d.ts +1 -1
- package/types/map.d.ts +6 -0
- package/types/max.d.ts +3 -2
- package/types/merge.d.ts +6 -2
- package/types/min.d.ts +3 -2
- package/types/orderBy.d.ts +3 -39
- package/types/partition.d.ts +3 -34
- package/types/range.d.ts +4 -0
- package/types/reduce.d.ts +38 -0
- package/types/reduceRight.d.ts +38 -0
- package/types/some.d.ts +6 -0
- package/types/union.d.ts +2 -1
- package/types/uniq.d.ts +2 -1
- package/types/xor.d.ts +3 -2
- /package/es/internals/{keys.js → specialKeys.js} +0 -0
- /package/lib/internals/{keys.js → specialKeys.js} +0 -0
- /package/types/internals/{keys.d.ts → specialKeys.d.ts} +0 -0
package/lib/difference.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var eq = require('./eq.js');
|
|
4
|
+
var identity = require('./identity.js');
|
|
4
5
|
var createIteratee = require('./internals/createIteratee.js');
|
|
5
6
|
var isArray = require('./isArray.js');
|
|
6
7
|
|
|
7
8
|
function difference(array, values, iteratee, strictCheck) {
|
|
9
|
+
if (iteratee === void 0) { iteratee = identity; }
|
|
8
10
|
if (strictCheck === void 0) { strictCheck = false; }
|
|
9
11
|
if (!isArray(array)) {
|
|
10
12
|
return [];
|
package/lib/every.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var forEach = require('./forEach.js');
|
|
4
|
+
var identity = require('./identity.js');
|
|
5
|
+
|
|
6
|
+
function every(collection, predicate) {
|
|
7
|
+
if (predicate === void 0) { predicate = identity; }
|
|
8
|
+
var result = true;
|
|
9
|
+
forEach(collection, function (item, index, arr) {
|
|
10
|
+
if (!predicate(item, index, arr)) {
|
|
11
|
+
result = false;
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
module.exports = every;
|
package/lib/filter.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var forEach = require('./forEach.js');
|
|
4
|
+
var identity = require('./identity.js');
|
|
5
|
+
|
|
6
|
+
function filter(array, predicate) {
|
|
7
|
+
if (predicate === void 0) { predicate = identity; }
|
|
8
|
+
var results = [];
|
|
9
|
+
forEach(array, function (item, index) {
|
|
10
|
+
if (predicate(item, index, array)) {
|
|
11
|
+
results.push(item);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
return results;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
module.exports = filter;
|
package/lib/find.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var forEach = require('./forEach.js');
|
|
4
|
+
var identity = require('./identity.js');
|
|
5
|
+
|
|
6
|
+
function find(collection, predicate) {
|
|
7
|
+
if (predicate === void 0) { predicate = identity; }
|
|
8
|
+
var result;
|
|
9
|
+
forEach(collection, function (item, index, arr) {
|
|
10
|
+
if (predicate(item, index, arr)) {
|
|
11
|
+
result = item;
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
module.exports = find;
|
package/lib/forEach.js
ADDED
package/lib/groupBy.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var forEach = require('./forEach.js');
|
|
4
|
+
var identity = require('./identity.js');
|
|
3
5
|
var createIteratee = require('./internals/createIteratee.js');
|
|
4
|
-
var isArray = require('./isArray.js');
|
|
5
6
|
|
|
6
7
|
function groupBy(collection, iteratee) {
|
|
8
|
+
if (iteratee === void 0) { iteratee = identity; }
|
|
7
9
|
var result = {};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
});
|
|
19
|
-
}
|
|
10
|
+
var internalIteratee = createIteratee(iteratee);
|
|
11
|
+
forEach(collection, function (item) {
|
|
12
|
+
var key = internalIteratee(item);
|
|
13
|
+
if (key in result) {
|
|
14
|
+
result[key].push(item);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
result[key] = [item];
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
20
|
return result;
|
|
21
21
|
}
|
|
22
22
|
|
package/lib/index.js
CHANGED
|
@@ -13,10 +13,19 @@ var unzip = require('./unzip.js');
|
|
|
13
13
|
var xor = require('./xor.js');
|
|
14
14
|
var zip = require('./zip.js');
|
|
15
15
|
var countBy = require('./countBy.js');
|
|
16
|
+
var every = require('./every.js');
|
|
17
|
+
var find = require('./find.js');
|
|
18
|
+
var filter = require('./filter.js');
|
|
19
|
+
var forEach = require('./forEach.js');
|
|
20
|
+
var forEachRight = require('./forEachRight.js');
|
|
16
21
|
var groupBy = require('./groupBy.js');
|
|
17
22
|
var keyBy = require('./keyBy.js');
|
|
18
23
|
var orderBy = require('./orderBy.js');
|
|
24
|
+
var map = require('./map.js');
|
|
19
25
|
var partition = require('./partition.js');
|
|
26
|
+
var reduce = require('./reduce.js');
|
|
27
|
+
var reduceRight = require('./reduceRight.js');
|
|
28
|
+
var some = require('./some.js');
|
|
20
29
|
var after = require('./after.js');
|
|
21
30
|
var before = require('./before.js');
|
|
22
31
|
var debounce = require('./debounce.js');
|
|
@@ -73,6 +82,7 @@ var random = require('./random.js');
|
|
|
73
82
|
var randomInt = require('./randomInt.js');
|
|
74
83
|
var allKeys = require('./allKeys.js');
|
|
75
84
|
var allKeysIn = require('./allKeysIn.js');
|
|
85
|
+
var keys = require('./keys.js');
|
|
76
86
|
var keysIn = require('./keysIn.js');
|
|
77
87
|
var merge = require('./merge.js');
|
|
78
88
|
var omit = require('./omit.js');
|
|
@@ -104,6 +114,7 @@ var lt = require('./lt.js');
|
|
|
104
114
|
var lte = require('./lte.js');
|
|
105
115
|
var noop = require('./noop.js');
|
|
106
116
|
var nthArg = require('./nthArg.js');
|
|
117
|
+
var range = require('./range.js');
|
|
107
118
|
var sleep = require('./sleep.js');
|
|
108
119
|
var times = require('./times.js');
|
|
109
120
|
var toFinite = require('./toFinite.js');
|
|
@@ -131,10 +142,19 @@ exports.unzip = unzip;
|
|
|
131
142
|
exports.xor = xor;
|
|
132
143
|
exports.zip = zip;
|
|
133
144
|
exports.countBy = countBy;
|
|
145
|
+
exports.every = every;
|
|
146
|
+
exports.find = find;
|
|
147
|
+
exports.filter = filter;
|
|
148
|
+
exports.forEach = forEach;
|
|
149
|
+
exports.forEachRight = forEachRight;
|
|
134
150
|
exports.groupBy = groupBy;
|
|
135
151
|
exports.keyBy = keyBy;
|
|
136
152
|
exports.orderBy = orderBy;
|
|
153
|
+
exports.map = map;
|
|
137
154
|
exports.partition = partition;
|
|
155
|
+
exports.reduce = reduce;
|
|
156
|
+
exports.reduceRight = reduceRight;
|
|
157
|
+
exports.some = some;
|
|
138
158
|
exports.after = after;
|
|
139
159
|
exports.before = before;
|
|
140
160
|
exports.debounce = debounce;
|
|
@@ -191,6 +211,7 @@ exports.random = random;
|
|
|
191
211
|
exports.randomInt = randomInt;
|
|
192
212
|
exports.allKeys = allKeys;
|
|
193
213
|
exports.allKeysIn = allKeysIn;
|
|
214
|
+
exports.keys = keys;
|
|
194
215
|
exports.keysIn = keysIn;
|
|
195
216
|
exports.merge = merge;
|
|
196
217
|
exports.omit = omit;
|
|
@@ -222,6 +243,7 @@ exports.lt = lt;
|
|
|
222
243
|
exports.lte = lte;
|
|
223
244
|
exports.noop = noop;
|
|
224
245
|
exports.nthArg = nthArg;
|
|
246
|
+
exports.range = range;
|
|
225
247
|
exports.sleep = sleep;
|
|
226
248
|
exports.times = times;
|
|
227
249
|
exports.toFinite = toFinite;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
var isArray = require('../isArray.js');
|
|
4
4
|
var isSymbol = require('../isSymbol.js');
|
|
5
|
-
var isUndefined = require('../isUndefined.js');
|
|
6
5
|
var createIteratee = require('./createIteratee.js');
|
|
7
6
|
|
|
8
7
|
function createExtremum(array, comparator, iteratee) {
|
|
@@ -10,23 +9,14 @@ function createExtremum(array, comparator, iteratee) {
|
|
|
10
9
|
return;
|
|
11
10
|
}
|
|
12
11
|
var result, computed;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
var internalIteratee_1 = createIteratee(iteratee);
|
|
22
|
-
array.forEach(function (value) {
|
|
23
|
-
var current = internalIteratee_1(value);
|
|
24
|
-
if (current != null && (computed === undefined ? current === current && !isSymbol(current) : comparator(current, computed))) {
|
|
25
|
-
computed = current;
|
|
26
|
-
result = value;
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
12
|
+
var internalIteratee = createIteratee(iteratee);
|
|
13
|
+
array.forEach(function (value) {
|
|
14
|
+
var current = internalIteratee(value);
|
|
15
|
+
if (current != null && (computed === undefined ? current === current && !isSymbol(current) : comparator(current, computed))) {
|
|
16
|
+
computed = current;
|
|
17
|
+
result = value;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
30
20
|
return result;
|
|
31
21
|
}
|
|
32
22
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var identity = require('../identity.js');
|
|
4
|
+
var isArrayLike = require('../isArrayLike.js');
|
|
5
|
+
var keys = require('../keys.js');
|
|
6
|
+
|
|
7
|
+
function createForEach(dir) {
|
|
8
|
+
function forEach(collection, iteratee) {
|
|
9
|
+
if (iteratee === void 0) { iteratee = identity; }
|
|
10
|
+
var _keys = !isArrayLike(collection) && keys(collection);
|
|
11
|
+
var len = (_keys || collection).length;
|
|
12
|
+
var i = dir > 0 ? 0 : len - 1;
|
|
13
|
+
while (i >= 0 && i < len) {
|
|
14
|
+
var currentKey = _keys ? _keys[i] : i;
|
|
15
|
+
if (iteratee(collection[currentKey], currentKey, collection) === false) {
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
i += dir;
|
|
19
|
+
}
|
|
20
|
+
return collection;
|
|
21
|
+
}
|
|
22
|
+
return forEach;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
module.exports = createForEach;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var identity = require('../identity.js');
|
|
4
|
+
var isArrayLike = require('../isArrayLike.js');
|
|
5
|
+
var keys = require('../keys.js');
|
|
6
|
+
|
|
7
|
+
function createReduce(dir) {
|
|
8
|
+
function reducer(collection, iteratee, memo, initial) {
|
|
9
|
+
var _keys = !isArrayLike(collection) && keys(collection);
|
|
10
|
+
var len = (_keys || collection).length;
|
|
11
|
+
var i = dir > 0 ? 0 : len - 1;
|
|
12
|
+
if (!initial && len > 0) {
|
|
13
|
+
memo = collection[_keys ? _keys[i] : i];
|
|
14
|
+
i += dir;
|
|
15
|
+
}
|
|
16
|
+
while (i >= 0 && i < len) {
|
|
17
|
+
var currentKey = _keys ? _keys[i] : i;
|
|
18
|
+
memo = iteratee(memo, collection[currentKey], currentKey, collection);
|
|
19
|
+
i += dir;
|
|
20
|
+
}
|
|
21
|
+
return memo;
|
|
22
|
+
}
|
|
23
|
+
function reduce(collection, iteratee, initialValue) {
|
|
24
|
+
if (iteratee === void 0) { iteratee = identity; }
|
|
25
|
+
var initial = arguments.length >= 3;
|
|
26
|
+
return reducer(collection, iteratee, initialValue, initial);
|
|
27
|
+
}
|
|
28
|
+
return reduce;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
module.exports = createReduce;
|
package/lib/internals/helpers.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var getTag = require('./getTag.js');
|
|
4
4
|
var native = require('./native.js');
|
|
5
5
|
|
|
6
|
-
exports.VERSION = "1.
|
|
6
|
+
exports.VERSION = "1.7.0";
|
|
7
7
|
exports.supportedArgumentsType = getTag((function () { return arguments; })()) === native.argumentsTag;
|
|
8
8
|
exports.FUNC_ERROR_TEXT = 'Expected a function';
|
|
9
9
|
function toSource(func) {
|
package/lib/intersection.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var eq = require('./eq.js');
|
|
4
|
+
var identity = require('./identity.js');
|
|
4
5
|
var createIteratee = require('./internals/createIteratee.js');
|
|
5
6
|
var isArray = require('./isArray.js');
|
|
6
7
|
|
|
7
8
|
function intersection(array, other, iteratee, strictCheck) {
|
|
9
|
+
if (iteratee === void 0) { iteratee = identity; }
|
|
8
10
|
if (strictCheck === void 0) { strictCheck = false; }
|
|
9
11
|
if (!isArray(array) || !isArray(other)) {
|
|
10
12
|
return [];
|
package/lib/isEmpty.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var getTag = require('./internals/getTag.js');
|
|
4
|
-
var
|
|
4
|
+
var specialKeys = require('./internals/specialKeys.js');
|
|
5
5
|
var native = require('./internals/native.js');
|
|
6
6
|
var isArrayLike = require('./isArrayLike.js');
|
|
7
7
|
var isNil = require('./isNil.js');
|
|
@@ -16,7 +16,7 @@ function isEmpty(value) {
|
|
|
16
16
|
return !value.size;
|
|
17
17
|
}
|
|
18
18
|
if (isObjectLike(value)) {
|
|
19
|
-
return !
|
|
19
|
+
return !specialKeys(value).length;
|
|
20
20
|
}
|
|
21
21
|
if (isArrayLike(value)) {
|
|
22
22
|
return !value.length;
|
package/lib/keyBy.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var forEach = require('./forEach.js');
|
|
4
|
+
var identity = require('./identity.js');
|
|
3
5
|
var createIteratee = require('./internals/createIteratee.js');
|
|
4
|
-
var isArray = require('./isArray.js');
|
|
5
6
|
|
|
6
7
|
function keyBy(collection, iteratee) {
|
|
8
|
+
if (iteratee === void 0) { iteratee = identity; }
|
|
7
9
|
var result = {};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
});
|
|
14
|
-
}
|
|
10
|
+
var internalIteratee = createIteratee(iteratee);
|
|
11
|
+
forEach(collection, function (item) {
|
|
12
|
+
var key = internalIteratee(item);
|
|
13
|
+
result[key] = item;
|
|
14
|
+
});
|
|
15
15
|
return result;
|
|
16
16
|
}
|
|
17
17
|
|
package/lib/keys.js
ADDED
package/lib/map.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var forEach = require('./forEach.js');
|
|
4
|
+
var identity = require('./identity.js');
|
|
5
|
+
|
|
6
|
+
function map(collection, iteratee) {
|
|
7
|
+
if (iteratee === void 0) { iteratee = identity; }
|
|
8
|
+
var result = [];
|
|
9
|
+
forEach(collection, function (item, index, arr) {
|
|
10
|
+
result.push(iteratee(item, index, arr));
|
|
11
|
+
});
|
|
12
|
+
return result;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
module.exports = map;
|
package/lib/merge.js
CHANGED
|
@@ -1,46 +1,56 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var keysIn = require('./keysIn.js');
|
|
4
4
|
var isArray = require('./isArray.js');
|
|
5
5
|
var isObject = require('./isObject.js');
|
|
6
6
|
var isObjectLike = require('./isObjectLike.js');
|
|
7
7
|
var isPlainObject = require('./isPlainObject.js');
|
|
8
8
|
|
|
9
|
-
function baseMerge(object, source, customizer,
|
|
10
|
-
if (
|
|
9
|
+
function baseMerge(object, source, getKeys, customizer, stack) {
|
|
10
|
+
if (stack === void 0) { stack = new WeakMap(); }
|
|
11
11
|
var obj = Object(object);
|
|
12
12
|
if (!isObject(source) || obj === source) {
|
|
13
13
|
return obj;
|
|
14
14
|
}
|
|
15
|
-
var keys =
|
|
15
|
+
var keys = getKeys(source);
|
|
16
|
+
var hasCustomizer = typeof customizer === 'function';
|
|
16
17
|
keys.forEach(function (key) {
|
|
17
18
|
var srcValue = source[key];
|
|
18
|
-
var
|
|
19
|
-
if (
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
if (isObjectLike(newValue) && !storage.has(newValue)) {
|
|
23
|
-
storage.set(newValue, true);
|
|
24
|
-
var objValue = obj[key];
|
|
25
|
-
var newObjValue = void 0;
|
|
26
|
-
if (isArray(newValue)) {
|
|
27
|
-
newObjValue = isArray(objValue) ? objValue : [];
|
|
28
|
-
}
|
|
29
|
-
else if (isPlainObject(newValue)) {
|
|
30
|
-
newObjValue = isPlainObject(objValue) ? objValue : {};
|
|
31
|
-
}
|
|
32
|
-
obj[key] = newObjValue ? baseMerge(newObjValue, newValue, customizer, storage) : newValue;
|
|
19
|
+
var srcIsObj = isObject(srcValue);
|
|
20
|
+
if (srcIsObj && stack.has(srcValue)) {
|
|
21
|
+
obj[key] = srcValue;
|
|
33
22
|
}
|
|
34
23
|
else {
|
|
35
|
-
|
|
24
|
+
var newValue = hasCustomizer ? customizer(obj[key], srcValue, key, obj, source) : undefined;
|
|
25
|
+
if (newValue !== undefined) {
|
|
36
26
|
obj[key] = newValue;
|
|
37
27
|
}
|
|
28
|
+
else {
|
|
29
|
+
var objValue = obj[key];
|
|
30
|
+
var newObjValue = void 0;
|
|
31
|
+
if (srcIsObj) {
|
|
32
|
+
stack.set(srcValue, true);
|
|
33
|
+
if (isArray(srcValue)) {
|
|
34
|
+
newObjValue = isArray(objValue) ? objValue : [];
|
|
35
|
+
}
|
|
36
|
+
else if (isPlainObject(srcValue)) {
|
|
37
|
+
newObjValue = isObjectLike(objValue) ? objValue : {};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (newObjValue) {
|
|
41
|
+
obj[key] = baseMerge(newObjValue, srcValue, getKeys, customizer, stack);
|
|
42
|
+
}
|
|
43
|
+
else if (srcValue !== undefined || !(key in obj)) {
|
|
44
|
+
obj[key] = srcValue;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
38
47
|
}
|
|
39
48
|
});
|
|
40
49
|
return obj;
|
|
41
50
|
}
|
|
42
|
-
function merge(object, source, customizer) {
|
|
43
|
-
|
|
51
|
+
function merge(object, source, customizer, getKeys) {
|
|
52
|
+
if (getKeys === void 0) { getKeys = keysIn; }
|
|
53
|
+
return baseMerge(object, source, getKeys, customizer);
|
|
44
54
|
}
|
|
45
55
|
|
|
46
56
|
module.exports = merge;
|
package/lib/orderBy.js
CHANGED
|
@@ -4,21 +4,21 @@ var identity = require('./identity.js');
|
|
|
4
4
|
var createIteratee = require('./internals/createIteratee.js');
|
|
5
5
|
var compare = require('./internals/compare.js');
|
|
6
6
|
var isArray = require('./isArray.js');
|
|
7
|
+
var forEach = require('./forEach.js');
|
|
7
8
|
|
|
8
9
|
function orderBy(collection, iteratees, orders) {
|
|
9
10
|
var result = [];
|
|
10
11
|
iteratees = (isArray(iteratees) ? iteratees : iteratees !== undefined ? [iteratees] : [identity]);
|
|
11
12
|
orders = (isArray(orders) ? orders : orders !== undefined ? [orders] : []);
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
});
|
|
13
|
+
var index = -1;
|
|
14
|
+
forEach(collection, function (item) {
|
|
15
|
+
var criteria = iteratees.map(function (iteratee) { return createIteratee(iteratee)(item); });
|
|
16
|
+
result.push({
|
|
17
|
+
criteria: criteria,
|
|
18
|
+
index: ++index,
|
|
19
|
+
value: item
|
|
20
20
|
});
|
|
21
|
-
}
|
|
21
|
+
});
|
|
22
22
|
return result.sort(function (a, b) { return compare.compareMultiple(a, b, orders); }).map(function (item) { return item.value; });
|
|
23
23
|
}
|
|
24
24
|
|
package/lib/partition.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var forEach = require('./forEach.js');
|
|
4
|
+
var identity = require('./identity.js');
|
|
3
5
|
var createIteratee = require('./internals/createIteratee.js');
|
|
4
|
-
var isArray = require('./isArray.js');
|
|
5
6
|
|
|
6
7
|
function partition(collection, predicate) {
|
|
8
|
+
if (predicate === void 0) { predicate = identity; }
|
|
7
9
|
var result = [[], []];
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
});
|
|
13
|
-
}
|
|
10
|
+
var internalIteratee = createIteratee(predicate);
|
|
11
|
+
forEach(collection, function (item) {
|
|
12
|
+
result[internalIteratee(item) ? 0 : 1].push(item);
|
|
13
|
+
});
|
|
14
14
|
return result;
|
|
15
15
|
}
|
|
16
16
|
|
package/lib/range.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var native = require('./internals/native.js');
|
|
4
|
+
var isNil = require('./isNil.js');
|
|
5
|
+
var toFinite = require('./toFinite.js');
|
|
6
|
+
|
|
7
|
+
function range(start, end, step) {
|
|
8
|
+
start = toFinite(start);
|
|
9
|
+
if (isNil(end)) {
|
|
10
|
+
end = start;
|
|
11
|
+
start = 0;
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
end = toFinite(end);
|
|
15
|
+
}
|
|
16
|
+
step = toFinite(step);
|
|
17
|
+
if (!step) {
|
|
18
|
+
step = start < end ? 1 : -1;
|
|
19
|
+
}
|
|
20
|
+
var index = -1;
|
|
21
|
+
var length = native.mathMax(native.mathCeil((end - start) / step), 0);
|
|
22
|
+
var result = Array(length);
|
|
23
|
+
while (length--) {
|
|
24
|
+
result[++index] = start;
|
|
25
|
+
start += step;
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
module.exports = range;
|
package/lib/reduce.js
ADDED
package/lib/some.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var forEach = require('./forEach.js');
|
|
4
|
+
var identity = require('./identity.js');
|
|
5
|
+
|
|
6
|
+
function some(collection, predicate) {
|
|
7
|
+
if (predicate === void 0) { predicate = identity; }
|
|
8
|
+
var result = false;
|
|
9
|
+
forEach(collection, function (item, index, arr) {
|
|
10
|
+
if (predicate(item, index, arr)) {
|
|
11
|
+
result = true;
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
module.exports = some;
|
package/lib/toString.js
CHANGED
package/lib/uniq.js
CHANGED
|
@@ -3,25 +3,17 @@
|
|
|
3
3
|
var eq = require('./eq.js');
|
|
4
4
|
var createIteratee = require('./internals/createIteratee.js');
|
|
5
5
|
var isArray = require('./isArray.js');
|
|
6
|
-
var isUndefined = require('./isUndefined.js');
|
|
7
6
|
|
|
8
7
|
function uniq(array, iteratee, strickCheck) {
|
|
9
8
|
if (strickCheck === void 0) { strickCheck = false; }
|
|
10
9
|
if (!isArray(array)) {
|
|
11
10
|
return [];
|
|
12
11
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
var internalIteratee_1 = createIteratee(iteratee);
|
|
20
|
-
return array.filter(function (value, index, arr) {
|
|
21
|
-
var current = internalIteratee_1(value);
|
|
22
|
-
return arr.findIndex(function (item) { return eq(internalIteratee_1(item), current, strickCheck); }) === index;
|
|
23
|
-
});
|
|
24
|
-
}
|
|
12
|
+
var internalIteratee = createIteratee(iteratee);
|
|
13
|
+
return array.filter(function (value, index, arr) {
|
|
14
|
+
var current = internalIteratee(value);
|
|
15
|
+
return arr.findIndex(function (item) { return eq(internalIteratee(item), current, strickCheck); }) === index;
|
|
16
|
+
});
|
|
25
17
|
}
|
|
26
18
|
|
|
27
19
|
module.exports = uniq;
|
package/lib/xor.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var difference = require('./difference.js');
|
|
4
|
+
var identity = require('./identity.js');
|
|
4
5
|
var createIteratee = require('./internals/createIteratee.js');
|
|
5
6
|
var intersection = require('./intersection.js');
|
|
6
7
|
var isArray = require('./isArray.js');
|
|
@@ -9,6 +10,7 @@ var uniq = require('./uniq.js');
|
|
|
9
10
|
|
|
10
11
|
function xor(array, other, iteratee, strickCheck) {
|
|
11
12
|
if (other === void 0) { other = []; }
|
|
13
|
+
if (iteratee === void 0) { iteratee = identity; }
|
|
12
14
|
if (strickCheck === void 0) { strickCheck = false; }
|
|
13
15
|
if (!isArray(array) && !isArray(other)) {
|
|
14
16
|
return [];
|