Skip to content

Commit 54aba11

Browse files
committed
encapsulate some more built-ins
1 parent 476fd3b commit 54aba11

22 files changed

+87
-58
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
'use strict';
2+
var call = require('../internals/function-call');
23
var aCallable = require('../internals/a-callable');
34
var anObject = require('../internals/an-object');
45

@@ -7,7 +8,7 @@ module.exports = function addAll(/* ...elements */) {
78
var set = anObject(this);
89
var adder = aCallable(set.add);
910
for (var k = 0, len = arguments.length; k < len; k++) {
10-
adder.call(set, arguments[k]);
11+
call(adder, set, arguments[k]);
1112
}
1213
return set;
1314
};

packages/core-js/internals/collection-delete-all.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
'use strict';
2+
var call = require('../internals/function-call');
23
var aCallable = require('../internals/a-callable');
34
var anObject = require('../internals/an-object');
45

@@ -9,7 +10,7 @@ module.exports = function deleteAll(/* ...elements */) {
910
var allDeleted = true;
1011
var wasDeleted;
1112
for (var k = 0, len = arguments.length; k < len; k++) {
12-
wasDeleted = remover.call(collection, arguments[k]);
13+
wasDeleted = call(remover, collection, arguments[k]);
1314
allDeleted = allDeleted && wasDeleted;
1415
}
1516
return !!allDeleted;

packages/core-js/internals/collection-from.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
'use strict';
22
// https://tc39.github.io/proposal-setmap-offrom/
3-
var uncurryThis = require('../internals/function-uncurry-this');
3+
var bind = require('../internals/function-bind-context');
4+
var call = require('../internals/function-call');
45
var aCallable = require('../internals/a-callable');
56
var aConstructor = require('../internals/a-constructor');
6-
var bind = require('../internals/function-bind-context');
77
var iterate = require('../internals/iterate');
88

9-
var push = uncurryThis([].push);
9+
var push = [].push;
1010

1111
module.exports = function from(source /* , mapFn, thisArg */) {
1212
var length = arguments.length;
@@ -21,10 +21,10 @@ module.exports = function from(source /* , mapFn, thisArg */) {
2121
n = 0;
2222
boundFunction = bind(mapFn, length > 2 ? arguments[2] : undefined);
2323
iterate(source, function (nextItem) {
24-
push(array, boundFunction(nextItem, n++));
24+
call(push, array, boundFunction(nextItem, n++));
2525
});
2626
} else {
27-
iterate(source, array.push, { that: array });
27+
iterate(source, push, { that: array });
2828
}
2929
return new this(array);
3030
};
+2-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
11
'use strict';
2-
var global = require('../internals/global');
3-
4-
var Array = global.Array;
2+
var arraySlice = require('../internals/array-slice');
53

64
// https://tc39.github.io/proposal-setmap-offrom/
75
module.exports = function of() {
8-
var length = arguments.length;
9-
var A = Array(length);
10-
while (length--) A[length] = arguments[length];
11-
return new this(A);
6+
return new this(arraySlice(arguments));
127
};
+8-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
'use strict';
2+
var call = require('../internals/function-call');
3+
var aCallable = require('../internals/a-callable');
24
var anObject = require('../internals/an-object');
35

46
// `Map.prototype.emplace` method
57
// https://github.com/thumbsupep/proposal-upsert
68
module.exports = function emplace(key, handler) {
79
var map = anObject(this);
8-
var value = (map.has(key) && 'update' in handler)
9-
? handler.update(map.get(key), key, map)
10+
var get = aCallable(map.get);
11+
var has = aCallable(map.has);
12+
var set = aCallable(map.set);
13+
var value = (call(has, map, key) && 'update' in handler)
14+
? handler.update(call(get, map, key), key, map)
1015
: handler.insert(key, map);
11-
map.set(key, value);
16+
call(set, map, key, value);
1217
return value;
1318
};
+9-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
'use strict';
22
var global = require('../internals/global');
3+
var call = require('../internals/function-call');
4+
var aCallable = require('../internals/a-callable');
35
var isCallable = require('../internals/is-callable');
46
var anObject = require('../internals/an-object');
57

@@ -9,19 +11,22 @@ var TypeError = global.TypeError;
911
// https://github.com/thumbsupep/proposal-upsert
1012
module.exports = function upsert(key, updateFn /* , insertFn */) {
1113
var map = anObject(this);
14+
var get = aCallable(map.get);
15+
var has = aCallable(map.has);
16+
var set = aCallable(map.set);
1217
var insertFn = arguments.length > 2 ? arguments[2] : undefined;
1318
var value;
1419
if (!isCallable(updateFn) && !isCallable(insertFn)) {
1520
throw TypeError('At least one callback required');
1621
}
17-
if (map.has(key)) {
18-
value = map.get(key);
22+
if (call(has, map, key)) {
23+
value = call(get, map, key);
1924
if (isCallable(updateFn)) {
2025
value = updateFn(value);
21-
map.set(key, value);
26+
call(set, map, key, value);
2227
}
2328
} else if (isCallable(insertFn)) {
2429
value = insertFn();
25-
map.set(key, value);
30+
call(set, map, key, value);
2631
} return value;
2732
};

packages/core-js/modules/esnext.map.filter.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
'use strict';
2-
var $ = require('../internals/export');
32
var IS_PURE = require('../internals/is-pure');
3+
var $ = require('../internals/export');
44
var getBuiltIn = require('../internals/get-built-in');
5+
var bind = require('../internals/function-bind-context');
6+
var call = require('../internals/function-call');
57
var aCallable = require('../internals/a-callable');
68
var anObject = require('../internals/an-object');
7-
var bind = require('../internals/function-bind-context');
89
var speciesConstructor = require('../internals/species-constructor');
910
var getMapIterator = require('../internals/get-map-iterator');
1011
var iterate = require('../internals/iterate');
@@ -19,7 +20,7 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
1920
var newMap = new (speciesConstructor(map, getBuiltIn('Map')))();
2021
var setter = aCallable(newMap.set);
2122
iterate(iterator, function (key, value) {
22-
if (boundFunction(value, key, map)) setter.call(newMap, key, value);
23+
if (boundFunction(value, key, map)) call(setter, newMap, key, value);
2324
}, { AS_ENTRIES: true, IS_ITERATOR: true });
2425
return newMap;
2526
}

packages/core-js/modules/esnext.map.group-by.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
'use strict';
22
var $ = require('../internals/export');
3+
var call = require('../internals/function-call');
4+
var uncurryThis = require('../internals/function-uncurry-this');
35
var aCallable = require('../internals/a-callable');
46
var getIterator = require('../internals/get-iterator');
57
var iterate = require('../internals/iterate');
68

9+
var push = uncurryThis([].push);
10+
711
// `Map.groupBy` method
812
// https://github.com/tc39/proposal-collection-methods
913
$({ target: 'Map', stat: true }, {
@@ -16,8 +20,8 @@ $({ target: 'Map', stat: true }, {
1620
var set = aCallable(newMap.set);
1721
iterate(iterator, function (element) {
1822
var derivedKey = keyDerivative(element);
19-
if (!has.call(newMap, derivedKey)) set.call(newMap, derivedKey, [element]);
20-
else get.call(newMap, derivedKey).push(element);
23+
if (!call(has, newMap, derivedKey)) call(set, newMap, derivedKey, [element]);
24+
else push(call(get, newMap, derivedKey), element);
2125
}, { IS_ITERATOR: true });
2226
return newMap;
2327
}

packages/core-js/modules/esnext.map.includes.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict';
2-
var $ = require('../internals/export');
32
var IS_PURE = require('../internals/is-pure');
3+
var $ = require('../internals/export');
44
var anObject = require('../internals/an-object');
55
var getMapIterator = require('../internals/get-map-iterator');
66
var sameValueZero = require('../internals/same-value-zero');

packages/core-js/modules/esnext.map.key-by.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict';
22
var $ = require('../internals/export');
3+
var call = require('../internals/function-call');
34
var iterate = require('../internals/iterate');
45
var aCallable = require('../internals/a-callable');
56

@@ -11,7 +12,7 @@ $({ target: 'Map', stat: true }, {
1112
aCallable(keyDerivative);
1213
var setter = aCallable(newMap.set);
1314
iterate(iterable, function (element) {
14-
setter.call(newMap, keyDerivative(element), element);
15+
call(setter, newMap, keyDerivative(element), element);
1516
});
1617
return newMap;
1718
}

packages/core-js/modules/esnext.map.map-keys.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
'use strict';
2-
var $ = require('../internals/export');
32
var IS_PURE = require('../internals/is-pure');
3+
var $ = require('../internals/export');
44
var getBuiltIn = require('../internals/get-built-in');
5+
var bind = require('../internals/function-bind-context');
6+
var call = require('../internals/function-call');
57
var aCallable = require('../internals/a-callable');
68
var anObject = require('../internals/an-object');
7-
var bind = require('../internals/function-bind-context');
89
var speciesConstructor = require('../internals/species-constructor');
910
var getMapIterator = require('../internals/get-map-iterator');
1011
var iterate = require('../internals/iterate');
@@ -19,7 +20,7 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
1920
var newMap = new (speciesConstructor(map, getBuiltIn('Map')))();
2021
var setter = aCallable(newMap.set);
2122
iterate(iterator, function (key, value) {
22-
setter.call(newMap, boundFunction(value, key, map), value);
23+
call(setter, newMap, boundFunction(value, key, map), value);
2324
}, { AS_ENTRIES: true, IS_ITERATOR: true });
2425
return newMap;
2526
}

packages/core-js/modules/esnext.map.map-values.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
'use strict';
2-
var $ = require('../internals/export');
32
var IS_PURE = require('../internals/is-pure');
3+
var $ = require('../internals/export');
44
var getBuiltIn = require('../internals/get-built-in');
5+
var bind = require('../internals/function-bind-context');
6+
var call = require('../internals/function-call');
57
var aCallable = require('../internals/a-callable');
68
var anObject = require('../internals/an-object');
7-
var bind = require('../internals/function-bind-context');
89
var speciesConstructor = require('../internals/species-constructor');
910
var getMapIterator = require('../internals/get-map-iterator');
1011
var iterate = require('../internals/iterate');
@@ -19,7 +20,7 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
1920
var newMap = new (speciesConstructor(map, getBuiltIn('Map')))();
2021
var setter = aCallable(newMap.set);
2122
iterate(iterator, function (key, value) {
22-
setter.call(newMap, key, boundFunction(value, key, map));
23+
call(setter, newMap, key, boundFunction(value, key, map));
2324
}, { AS_ENTRIES: true, IS_ITERATOR: true });
2425
return newMap;
2526
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
'use strict';
2+
var IS_PURE = require('../internals/is-pure');
23
var $ = require('../internals/export');
34
var global = require('../internals/global');
4-
var IS_PURE = require('../internals/is-pure');
5+
var call = require('../internals/function-call');
56
var anObject = require('../internals/an-object');
67
var aCallable = require('../internals/a-callable');
78

@@ -12,14 +13,17 @@ var TypeError = global.TypeError;
1213
$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
1314
update: function update(key, callback /* , thunk */) {
1415
var map = anObject(this);
16+
var get = aCallable(map.get);
17+
var has = aCallable(map.has);
18+
var set = aCallable(map.set);
1519
var length = arguments.length;
1620
aCallable(callback);
17-
var isPresentInMap = map.has(key);
21+
var isPresentInMap = call(has, map, key);
1822
if (!isPresentInMap && length < 3) {
1923
throw TypeError('Updating absent value');
2024
}
21-
var value = isPresentInMap ? map.get(key) : aCallable(length > 2 ? arguments[2] : undefined)(key, map);
22-
map.set(key, callback(value, key, map));
25+
var value = isPresentInMap ? call(get, map, key) : aCallable(length > 2 ? arguments[2] : undefined)(key, map);
26+
call(set, map, key, callback(value, key, map));
2327
return map;
2428
}
2529
});

packages/core-js/modules/esnext.set.difference.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
'use strict';
2-
var $ = require('../internals/export');
32
var IS_PURE = require('../internals/is-pure');
3+
var $ = require('../internals/export');
44
var getBuiltIn = require('../internals/get-built-in');
5+
var call = require('../internals/function-call');
56
var aCallable = require('../internals/a-callable');
67
var anObject = require('../internals/an-object');
78
var speciesConstructor = require('../internals/species-constructor');
@@ -15,7 +16,7 @@ $({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {
1516
var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(set);
1617
var remover = aCallable(newSet['delete']);
1718
iterate(iterable, function (value) {
18-
remover.call(newSet, value);
19+
call(remover, newSet, value);
1920
});
2021
return newSet;
2122
}

packages/core-js/modules/esnext.set.filter.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
'use strict';
2-
var $ = require('../internals/export');
32
var IS_PURE = require('../internals/is-pure');
3+
var $ = require('../internals/export');
44
var getBuiltIn = require('../internals/get-built-in');
5+
var call = require('../internals/function-call');
56
var aCallable = require('../internals/a-callable');
67
var anObject = require('../internals/an-object');
78
var bind = require('../internals/function-bind-context');
@@ -19,7 +20,7 @@ $({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {
1920
var newSet = new (speciesConstructor(set, getBuiltIn('Set')))();
2021
var adder = aCallable(newSet.add);
2122
iterate(iterator, function (value) {
22-
if (boundFunction(value, value, set)) adder.call(newSet, value);
23+
if (boundFunction(value, value, set)) call(adder, newSet, value);
2324
}, { IS_ITERATOR: true });
2425
return newSet;
2526
}

packages/core-js/modules/esnext.set.intersection.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
'use strict';
2-
var $ = require('../internals/export');
32
var IS_PURE = require('../internals/is-pure');
3+
var $ = require('../internals/export');
44
var getBuiltIn = require('../internals/get-built-in');
5+
var call = require('../internals/function-call');
56
var aCallable = require('../internals/a-callable');
67
var anObject = require('../internals/an-object');
78
var speciesConstructor = require('../internals/species-constructor');
@@ -16,7 +17,7 @@ $({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {
1617
var hasCheck = aCallable(set.has);
1718
var adder = aCallable(newSet.add);
1819
iterate(iterable, function (value) {
19-
if (hasCheck.call(set, value)) adder.call(newSet, value);
20+
if (call(hasCheck, set, value)) call(adder, newSet, value);
2021
});
2122
return newSet;
2223
}

packages/core-js/modules/esnext.set.is-disjoint-from.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use strict';
2-
var $ = require('../internals/export');
32
var IS_PURE = require('../internals/is-pure');
3+
var $ = require('../internals/export');
4+
var call = require('../internals/function-call');
45
var aCallable = require('../internals/a-callable');
56
var anObject = require('../internals/an-object');
67
var iterate = require('../internals/iterate');
@@ -12,7 +13,7 @@ $({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {
1213
var set = anObject(this);
1314
var hasCheck = aCallable(set.has);
1415
return !iterate(iterable, function (value, stop) {
15-
if (hasCheck.call(set, value) === true) return stop();
16+
if (call(hasCheck, set, value) === true) return stop();
1617
}, { INTERRUPTED: true }).stopped;
1718
}
1819
});

packages/core-js/modules/esnext.set.is-subset-of.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
'use strict';
2-
var $ = require('../internals/export');
32
var IS_PURE = require('../internals/is-pure');
3+
var $ = require('../internals/export');
44
var getBuiltIn = require('../internals/get-built-in');
5+
var call = require('../internals/function-call');
56
var aCallable = require('../internals/a-callable');
67
var isCallable = require('../internals/is-callable');
78
var anObject = require('../internals/an-object');
@@ -20,7 +21,7 @@ $({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {
2021
hasCheck = aCallable(otherSet.has);
2122
}
2223
return !iterate(iterator, function (value, stop) {
23-
if (hasCheck.call(otherSet, value) === false) return stop();
24+
if (call(hasCheck, otherSet, value) === false) return stop();
2425
}, { IS_ITERATOR: true, INTERRUPTED: true }).stopped;
2526
}
2627
});

packages/core-js/modules/esnext.set.is-superset-of.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use strict';
2-
var $ = require('../internals/export');
32
var IS_PURE = require('../internals/is-pure');
3+
var $ = require('../internals/export');
4+
var call = require('../internals/function-call');
45
var aCallable = require('../internals/a-callable');
56
var anObject = require('../internals/an-object');
67
var iterate = require('../internals/iterate');
@@ -12,7 +13,7 @@ $({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {
1213
var set = anObject(this);
1314
var hasCheck = aCallable(set.has);
1415
return !iterate(iterable, function (value, stop) {
15-
if (hasCheck.call(set, value) === false) return stop();
16+
if (call(hasCheck, set, value) === false) return stop();
1617
}, { INTERRUPTED: true }).stopped;
1718
}
1819
});

0 commit comments

Comments
 (0)