Skip to content

Commit

Permalink
[Refactor] use split-up es-abstract (68% bundle size decrease)
Browse files Browse the repository at this point in the history
  • Loading branch information
ljharb committed Dec 11, 2019
1 parent f87ad51 commit c7fd1a0
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 20 deletions.
2 changes: 1 addition & 1 deletion .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"id-length": [2, { "min": 1, "max": 26 }],
"max-statements": [2, 14],
"max-lines-per-function": 0,
"new-cap": [2, { capIsNewExceptions: ["ToObject", "ToInteger", "ToLength", "SameValueZero", "RequireObjectCoercible"] }],
"new-cap": [2, { capIsNewExceptions: ["GetIntrinsic", "ToObject", "ToInteger", "ToLength", "SameValueZero", "RequireObjectCoercible"] }],
"no-magic-numbers": [0],
"no-useless-call": [1]
}
Expand Down
30 changes: 16 additions & 14 deletions implementation.js
Original file line number Diff line number Diff line change
@@ -1,28 +1,30 @@
'use strict';

var ES = require('es-abstract/es6');
var $isNaN = Number.isNaN || function isNaN(a) {
return a !== a;
};
var $isFinite = Number.isFinite || function isFinite(n) {
return typeof n === 'number' && global.isFinite(n);
};
var indexOf = Array.prototype.indexOf;
var ToInteger = require('es-abstract/2018/ToInteger');
var ToLength = require('es-abstract/2018/ToLength');
var ToObject = require('es-abstract/2018/ToObject');
var SameValueZero = require('es-abstract/2018/SameValueZero');
var $isNaN = require('es-abstract/helpers/isNaN');
var $isFinite = require('es-abstract/helpers/isFinite');
var GetIntrinsic = require('es-abstract/GetIntrinsic');
var callBind = require('es-abstract/helpers/callBind');

var $indexOf = callBind.apply(GetIntrinsic('%Array.prototype.indexOf%'));

module.exports = function includes(searchElement) {
var fromIndex = arguments.length > 1 ? ES.ToInteger(arguments[1]) : 0;
if (indexOf && !$isNaN(searchElement) && $isFinite(fromIndex) && typeof searchElement !== 'undefined') {
return indexOf.apply(this, arguments) > -1;
var fromIndex = arguments.length > 1 ? ToInteger(arguments[1]) : 0;
if ($indexOf && !$isNaN(searchElement) && $isFinite(fromIndex) && typeof searchElement !== 'undefined') {
return $indexOf(this, arguments) > -1;
}

var O = ES.ToObject(this);
var length = ES.ToLength(O.length);
var O = ToObject(this);
var length = ToLength(O.length);
if (length === 0) {
return false;
}
var k = fromIndex >= 0 ? fromIndex : Math.max(0, length + fromIndex);
while (k < length) {
if (ES.SameValueZero(searchElement, O[k])) {
if (SameValueZero(searchElement, O[k])) {
return true;
}
k += 1;
Expand Down
9 changes: 5 additions & 4 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
'use strict';

var define = require('define-properties');
var ES = require('es-abstract/es6');
var RequireObjectCoercible = require('es-abstract/2018/RequireObjectCoercible');
var callBound = require('es-abstract/helpers/callBound');

var implementation = require('./implementation');
var getPolyfill = require('./polyfill');
var polyfill = getPolyfill();
var shim = require('./shim');

var slice = Array.prototype.slice;
var $slice = callBound('Array.prototype.slice');

/* eslint-disable no-unused-vars */
var boundIncludesShim = function includes(array, searchElement) {
/* eslint-enable no-unused-vars */
ES.RequireObjectCoercible(array);
return polyfill.apply(array, slice.call(arguments, 1));
RequireObjectCoercible(array);
return polyfill.apply(array, $slice(arguments, 1));
};
define(boundIncludesShim, {
getPolyfill: getPolyfill,
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
],
"dependencies": {
"define-properties": "^1.1.3",
"es-abstract": "^1.13.0"
"es-abstract": "^1.17.0-next.0"
},
"devDependencies": {
"@es-shims/api": "^2.1.2",
Expand Down

0 comments on commit c7fd1a0

Please sign in to comment.