Socket
Socket
Sign inDemoInstall

babel-plugin-minify-constant-folding

Package Overview
Dependencies
Maintainers
5
Versions
81
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

babel-plugin-minify-constant-folding - npm Package Compare versions

Comparing version 0.5.0-alpha.55276695 to 0.5.0-alpha.18dcfe13

84

lib/index.js
"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.55276695",
"version": "0.5.0-alpha.18dcfe13",
"description": "",

@@ -15,4 +15,4 @@ "keywords": [

"dependencies": {
"babel-helper-evaluate-path": "^0.5.0-alpha.55276695"
"babel-helper-evaluate-path": "^0.5.0-alpha.18dcfe13"
}
}

@@ -59,3 +59,3 @@ # babel-plugin-minify-constant-folding

```sh
npm install babel-plugin-minify-constant-folding
npm install babel-plugin-minify-constant-folding --save-dev
```

@@ -62,0 +62,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc