Socket
Socket
Sign inDemoInstall

babel-plugin-minify-constant-folding

Package Overview
Dependencies
Maintainers
4
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.1.1 to 0.1.2

lib/replacements.js

67

lib/index.js
"use strict";
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
var evaluate = require("babel-helper-evaluate-path");
module.exports = function (_ref) {
var t = _ref.types,
traverse = _ref.traverse;
var _require = require("./replacements"),
FALLBACK_HANDLER = _require.FALLBACK_HANDLER;
function getName(member) {
if (member.computed) {
switch (member.property.type) {
case "StringLiteral":
case "NumericLiteral":
return member.property.value;
case "TemplateLiteral":
return;
}
} else {
return member.property.name;
}
}
function swap(path, member, handlers) {
var key = getName(member);
if (key === undefined) return;
var handler = handlers[key];
if (typeof handler !== "function") {
if (typeof handlers[FALLBACK_HANDLER] === "function") {
handler = handlers[FALLBACK_HANDLER].bind(member.object, key);
} else {
return false;
}
}
for (var _len = arguments.length, args = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
args[_key - 3] = arguments[_key];
}
var replacement = handler.apply(member.object, args);
if (replacement) {
path.replaceWith(replacement);
return true;
}
return false;
}
module.exports = function (babel) {
var replacements = require("./replacements.js")(babel);
var seen = Symbol("seen");
var t = babel.types,
traverse = babel.traverse;
return {

@@ -119,2 +163,19 @@ name: "minify-constant-folding",

}
},
CallExpression(path) {
var node = path.node;
var member = node.callee;
if (t.isMemberExpression(member)) {
var helpers = replacements[member.object.type];
if (!helpers || !helpers.calls) return;
swap.apply(undefined, [path, member, helpers.calls].concat(_toConsumableArray(node.arguments)));
}
},
MemberExpression(path) {
var member = path.node;
var helpers = replacements[member.object.type];
if (!helpers || !helpers.members) return;
swap(path, member, helpers.members);
}

@@ -121,0 +182,0 @@ }

2

package.json
{
"name": "babel-plugin-minify-constant-folding",
"version": "0.1.1",
"version": "0.1.2",
"description": "",

@@ -5,0 +5,0 @@ "homepage": "https://github.com/babel/babili#readme",

# babel-plugin-minify-constant-folding
Tries to evaluate expressions and inline the result. For now only deals with numbers and strings.
Tries to evaluate expressions and inline the result.

@@ -13,3 +13,18 @@ ## Example

4 | 3;
"b" + a + "c" + "d" + g + z + "f" + "h" + "z"
"b" + a + "c" + "d" + g + z + "f" + "h" + "i"
[a, b, c].concat([d, e], f, g, [h]);
["a", "b", "c"].join();
["a", "b", "c"].join('@');
[1, 2, 3].length;
[1, 2, 3][1];
[1, 2, 3].shift();
[1, 2, 3].slice(0, 2);
[a, b, c].pop();
[a, b, c].reverse();
"a,b,c".split(",");
"abc"[0];
"abc".charAt();
"abc".charAt(1);
"abc".length;
```

@@ -23,3 +38,19 @@

7;
"b" + a + "cd" + g + z + "fhz";
"b" + a + "cd" + g + z + "fhi";
[a, b, c, d, e, f, g, h];
"a,b,c";
"a@b@c";
3;
2;
2;
[1, 2];
c;
[c, b, a];
["a", "b", "c"];
"a";
"a";
"a";
"b";
3;
```

@@ -26,0 +57,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