babel-plugin-minify-constant-folding
Advanced tools
Comparing version 0.5.0-alpha.b5bafaeb to 0.5.0-alpha.e86a44f1
"use strict"; | ||
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } | ||
const evaluate = require("babel-helper-evaluate-path"); | ||
var evaluate = require("babel-helper-evaluate-path"); | ||
const _require = require("./replacements"), | ||
FALLBACK_HANDLER = _require.FALLBACK_HANDLER; | ||
var _require = require("./replacements"), | ||
FALLBACK_HANDLER = _require.FALLBACK_HANDLER; | ||
function getName(member) { | ||
@@ -25,6 +23,6 @@ if (member.computed) { | ||
function swap(path, member, handlers) { | ||
var key = getName(member.node); | ||
function swap(path, member, handlers, ...args) { | ||
const key = getName(member.node); | ||
if (key === void 0) return false; | ||
var handler; | ||
let handler; | ||
@@ -39,8 +37,4 @@ if (hop(handlers, key) && typeof handlers[key] === "function") { | ||
for (var _len = arguments.length, args = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { | ||
args[_key - 3] = arguments[_key]; | ||
} | ||
const replacement = handler.apply(member.get("object"), args); | ||
var replacement = handler.apply(member.get("object"), args); | ||
if (replacement) { | ||
@@ -54,7 +48,7 @@ path.replaceWith(replacement); | ||
module.exports = function (babel) { | ||
var replacements = require("./replacements.js")(babel); | ||
module.exports = babel => { | ||
const replacements = require("./replacements.js")(babel); | ||
var seen = Symbol("seen"); | ||
var t = babel.types; | ||
const seen = Symbol("seen"); | ||
const t = babel.types; | ||
return { | ||
@@ -73,5 +67,5 @@ name: "minify-constant-folding", | ||
var literal, bin; | ||
var left = path.get("left"); | ||
var right = path.get("right"); | ||
let literal, bin; | ||
const left = path.get("left"); | ||
const right = path.get("right"); | ||
@@ -102,3 +96,3 @@ if (right.isStringLiteral()) { | ||
var relevant = getLeaf(bin, literal.key); | ||
const relevant = getLeaf(bin, literal.key); | ||
@@ -109,3 +103,3 @@ if (!relevant) { | ||
var value = literal.key === "right" ? relevant.node.value + literal.node.value : literal.node.value + relevant.node.value; | ||
const value = literal.key === "right" ? relevant.node.value + literal.node.value : literal.node.value + relevant.node.value; | ||
relevant.replaceWith(t.stringLiteral(value)); | ||
@@ -126,8 +120,9 @@ path.replaceWith(bin.node); | ||
// TODO: look into evaluating binding too (could result in more code, but gzip?) | ||
Expression(path, _ref) { | ||
var _ref$opts = _ref.opts; | ||
_ref$opts = _ref$opts === void 0 ? {} : _ref$opts; | ||
var _ref$opts$tdz = _ref$opts.tdz, | ||
tdz = _ref$opts$tdz === void 0 ? false : _ref$opts$tdz; | ||
var node = path.node; | ||
Expression(path, { | ||
opts: { | ||
tdz = false | ||
} = {} | ||
}) { | ||
const node = path.node, | ||
parent = path.parent; | ||
@@ -144,2 +139,7 @@ if (node[seen]) { | ||
return; | ||
} // Avoid replacing the values for identifiers in exports | ||
if (t.isExportSpecifier(parent)) { | ||
return; | ||
} // -0 maybe compared via dividing and then checking against -Infinity | ||
@@ -173,3 +173,3 @@ // Also -X will always be -X. | ||
var res = evaluate(path, { | ||
const res = evaluate(path, { | ||
tdz | ||
@@ -188,6 +188,5 @@ }); | ||
if (1 / res.value === -Infinity) { | ||
var _node2 = t.unaryExpression("-", t.numericLiteral(0), true); | ||
_node2[seen] = true; | ||
path.replaceWith(_node2); | ||
const node = t.unaryExpression("-", t.numericLiteral(0), true); | ||
node[seen] = true; | ||
path.replaceWith(node); | ||
return; | ||
@@ -206,6 +205,5 @@ } | ||
var _node = t.valueToNode(res.value); | ||
_node[seen] = true; | ||
path.replaceWith(_node); | ||
const node = t.valueToNode(res.value); | ||
node[seen] = true; | ||
path.replaceWith(node); | ||
} | ||
@@ -215,7 +213,7 @@ }, | ||
CallExpression(path) { | ||
var node = path.node; | ||
var member = path.get("callee"); | ||
const node = path.node; | ||
const member = path.get("callee"); | ||
if (t.isMemberExpression(member)) { | ||
var helpers = replacements[member.node.object.type]; | ||
const helpers = replacements[member.node.object.type]; | ||
if (!helpers || !helpers.calls) return; // find if the input can be constant folded | ||
@@ -227,3 +225,3 @@ | ||
swap.apply(void 0, [path, member, helpers.calls].concat(_toConsumableArray(node.arguments))); | ||
swap(path, member, helpers.calls, ...node.arguments); | ||
} | ||
@@ -233,4 +231,4 @@ }, | ||
MemberExpression(path) { | ||
var node = path.node; | ||
var helpers = replacements[node.object.type]; | ||
const node = path.node; | ||
const helpers = replacements[node.object.type]; | ||
if (!helpers || !helpers.members) return; | ||
@@ -237,0 +235,0 @@ swap(path, path, helpers.members); |
@@ -1,7 +0,10 @@ | ||
var FALLBACK_HANDLER = Symbol("fallback handler"); | ||
"use strict"; | ||
module.exports = function (_ref) { | ||
var t = _ref.types; | ||
var undef = t.unaryExpression("void", t.numericLiteral(0)); | ||
const FALLBACK_HANDLER = Symbol("fallback handler"); | ||
module.exports = ({ | ||
types: t | ||
}) => { | ||
const undef = t.unaryExpression("void", t.numericLiteral(0)); | ||
function isUndef(ob) { | ||
@@ -16,11 +19,5 @@ return ob === undefined || t.isIdentifier(ob, { | ||
function defaultZero(cb) { | ||
return function () { | ||
var i = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : t.numericLiteral(0); | ||
return function (i = t.numericLiteral(0), ...args) { | ||
if (t.isNumericLiteral(i)) { | ||
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
args[_key - 1] = arguments[_key]; | ||
} | ||
return cb.call.apply(cb, [this.node, this.node, i.value].concat(args)); | ||
return cb.call(this.node, this.node, i.value, ...args); | ||
} | ||
@@ -31,5 +28,3 @@ }; | ||
function hasSpread(node) { | ||
return node.elements.some(function (el) { | ||
return t.isSpreadElement(el); | ||
}); | ||
return node.elements.some(el => t.isSpreadElement(el)); | ||
} | ||
@@ -64,8 +59,7 @@ | ||
calls: { | ||
join() { | ||
var sep = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : t.stringLiteral(","); | ||
join(sep = t.stringLiteral(",")) { | ||
if (!t.isStringLiteral(sep)) return; | ||
var bad = false; | ||
var str = this.get("elements").map(function (el) { | ||
var evaled = el.evaluate(); | ||
let bad = false; | ||
const str = this.get("elements").map(el => { | ||
const evaled = el.evaluate(); | ||
@@ -82,4 +76,4 @@ if (!evaled.confident) { | ||
push() { | ||
return t.numericLiteral(this.node.elements.length + arguments.length); | ||
push(...args) { | ||
return t.numericLiteral(this.node.elements.length + args.length); | ||
}, | ||
@@ -95,6 +89,3 @@ | ||
slice() { | ||
var start = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : t.numericLiteral(0); | ||
var end = arguments.length > 1 ? arguments[1] : undefined; | ||
slice(start = t.numericLiteral(0), end) { | ||
if (!t.isNumericLiteral(start) || end && !t.isNumericLiteral(end)) { | ||
@@ -115,5 +106,3 @@ return; | ||
splice(start, end) { | ||
var _node$elements$slice; | ||
splice(start, end, ...args) { | ||
if (!t.isNumericLiteral(start) || end && !t.isNumericLiteral(end)) { | ||
@@ -123,6 +112,2 @@ return; | ||
for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { | ||
args[_key2 - 2] = arguments[_key2]; | ||
} | ||
if (end) { | ||
@@ -132,3 +117,3 @@ args.unshift(end.value); | ||
return t.arrayExpression((_node$elements$slice = this.node.elements.slice()).splice.apply(_node$elements$slice, [start.value].concat(args))); | ||
return t.arrayExpression(this.node.elements.slice().splice(start.value, ...args)); | ||
} | ||
@@ -146,3 +131,3 @@ | ||
if (typeof i === "number" || i.match(/^\d+$/)) { | ||
var ch = this.node.value[i]; | ||
const ch = this.node.value[i]; | ||
return ch ? t.stringLiteral(ch) : undef; | ||
@@ -154,5 +139,4 @@ } | ||
calls: { | ||
split() { | ||
var sep = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undef; | ||
var realSep = null; | ||
split(sep = undef) { | ||
let realSep = null; | ||
@@ -168,20 +152,15 @@ if (t.isStringLiteral(sep)) { | ||
if (realSep !== null) { | ||
return t.arrayExpression(this.node.value.split(realSep).map(function (str) { | ||
return t.stringLiteral(str); | ||
})); | ||
return t.arrayExpression(this.node.value.split(realSep).map(str => t.stringLiteral(str))); | ||
} | ||
}, | ||
charAt: defaultZero(function (_ref2, i) { | ||
var value = _ref2.value; | ||
return t.stringLiteral(value.charAt(i)); | ||
}), | ||
charCodeAt: defaultZero(function (_ref3, i) { | ||
var value = _ref3.value; | ||
return t.numericLiteral(value.charCodeAt(i)); | ||
}), | ||
codePointAt: defaultZero(function (_ref4, i) { | ||
var value = _ref4.value; | ||
return t.numericLiteral(value.codePointAt(i)); | ||
}) | ||
charAt: defaultZero(({ | ||
value | ||
}, i) => t.stringLiteral(value.charAt(i))), | ||
charCodeAt: defaultZero(({ | ||
value | ||
}, i) => t.numericLiteral(value.charCodeAt(i))), | ||
codePointAt: defaultZero(({ | ||
value | ||
}, i) => t.numericLiteral(value.codePointAt(i))) | ||
} | ||
@@ -188,0 +167,0 @@ } |
{ | ||
"name": "babel-plugin-minify-constant-folding", | ||
"version": "0.5.0-alpha.b5bafaeb", | ||
"version": "0.5.0-alpha.e86a44f1", | ||
"description": "", | ||
@@ -15,4 +15,4 @@ "keywords": [ | ||
"dependencies": { | ||
"babel-helper-evaluate-path": "^0.5.0-alpha.b5bafaeb" | ||
"babel-helper-evaluate-path": "^0.5.0-alpha.e86a44f1" | ||
} | ||
} |
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
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
11604
312