babel-plugin-minify-simplify
Advanced tools
Comparing version 0.4.1 to 0.4.2
"use strict"; | ||
const VOID_0 = t => t.unaryExpression("void", t.numericLiteral(0), true); // Types as Symbols - for comparing types | ||
const VOID_0 = t => t.unaryExpression("void", t.numericLiteral(0), true); | ||
const evaluate = require("babel-helper-evaluate-path"); // Types as Symbols - for comparing types | ||
const types = {}; // This is a test key which is used to avoid Object.keys check | ||
@@ -42,3 +44,3 @@ // Object.keys() check is really expensive | ||
if (isNodeOfType(t, inputPath.node, patternValue)) return true; | ||
const evalResult = inputPath.evaluate(); | ||
const evalResult = evaluate(inputPath); | ||
if (!evalResult.confident || !inputPath.isPure()) return false; | ||
@@ -45,0 +47,0 @@ return evalResult.value === patternValue; |
@@ -117,2 +117,10 @@ "use strict"; | ||
}, | ||
BinaryExpression(path) { | ||
if (["!=", "=="].indexOf(path.node.operator) !== -1) { | ||
undefinedToNull(path.get("left")); | ||
undefinedToNull(path.get("right")); | ||
} | ||
}, | ||
LogicalExpression: { | ||
@@ -1148,2 +1156,20 @@ exit: logicalExpression.simplifyPatterns | ||
} | ||
function isPureVoid(path) { | ||
return path.isUnaryExpression({ | ||
operator: "void" | ||
}) && path.isPure(); | ||
} | ||
function isGlobalUndefined(path) { | ||
return path.isIdentifier({ | ||
name: "undefined" | ||
}) && !path.scope.getBinding("undefined"); | ||
} | ||
function undefinedToNull(path) { | ||
if (isGlobalUndefined(path) || isPureVoid(path)) { | ||
path.replaceWith(t.nullLiteral()); | ||
} | ||
} | ||
}; |
@@ -7,2 +7,4 @@ "use strict"; | ||
const evaluate = require("babel-helper-evaluate-path"); | ||
module.exports = t => { | ||
@@ -14,3 +16,3 @@ const OP_AND = input => input === "&&"; | ||
function simplifyPatterns(path) { | ||
// cache of path.evaluate() | ||
// cache of evaluate(path) | ||
const evaluateMemo = new Map(); | ||
@@ -27,3 +29,3 @@ | ||
const evalResult = input.evaluate(); | ||
const evalResult = evaluate(input); | ||
evaluateMemo.set(input, evalResult); | ||
@@ -42,3 +44,3 @@ return evalResult.confident && input.isPure() && evalResult.value; | ||
const evalResult = input.evaluate(); | ||
const evalResult = evaluate(input); | ||
evaluateMemo.set(input, evalResult); | ||
@@ -67,3 +69,3 @@ return evalResult.confident && input.isPure() && !evalResult.value; | ||
} else { | ||
value = left.evaluate().value; | ||
value = evaluate(left).value; | ||
} | ||
@@ -70,0 +72,0 @@ |
{ | ||
"name": "babel-plugin-minify-simplify", | ||
"version": "0.4.1", | ||
"version": "0.4.2", | ||
"description": "", | ||
@@ -15,6 +15,6 @@ "keywords": [ | ||
"dependencies": { | ||
"babel-helper-flip-expressions": "^0.4.1", | ||
"babel-helper-flip-expressions": "^0.4.2", | ||
"babel-helper-is-nodes-equiv": "^0.0.1", | ||
"babel-helper-to-multiple-sequence-expressions": "^0.4.1" | ||
"babel-helper-to-multiple-sequence-expressions": "^0.4.2" | ||
} | ||
} |
@@ -54,3 +54,3 @@ # babel-plugin-minify-simplify | ||
```sh | ||
npm install babel-plugin-minify-simplify | ||
npm install babel-plugin-minify-simplify --save-dev | ||
``` | ||
@@ -57,0 +57,0 @@ |
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
58521
1480