6to5-core
Advanced tools
Comparing version 3.5.0 to 3.5.1
@@ -39,6 +39,9 @@ "use strict"; | ||
var method = node.value; | ||
if (state.selfReference) { | ||
// todo: support generators | ||
node.value = util.template("property-method-assignment-wrapper", { | ||
FUNCTION: node.value, | ||
var templateName = "property-method-assignment-wrapper"; | ||
if (method.generator) templateName += "-generator"; | ||
node.value = util.template(templateName, { | ||
FUNCTION: method, | ||
FUNCTION_ID: key, | ||
@@ -49,4 +52,4 @@ FUNCTION_KEY: scope.generateUidIdentifier(id), | ||
} else { | ||
node.value.id = key; | ||
method.id = key; | ||
} | ||
}; |
@@ -115,2 +115,8 @@ "use strict"; | ||
if (pattern.properties.length > 1 && t.isMemberExpression(parentId)) { | ||
var temp = this.scope.generateUidBasedOnNode(parentId, this.file); | ||
this.nodes.push(this.buildVariableDeclaration(temp, parentId)); | ||
parentId = temp; | ||
} | ||
for (var i = 0; i < pattern.properties.length; i++) { | ||
@@ -117,0 +123,0 @@ var prop = pattern.properties[i]; |
@@ -30,4 +30,5 @@ "use strict"; | ||
block.body = block.body.concat(node.body.body); | ||
block._declarations = node.body._declarations; | ||
t.inherits(loop, node); | ||
// todo: find out why this is necessary? #538 | ||
@@ -34,0 +35,0 @@ loop._scopeInfo = node._scopeInfo; |
@@ -5,6 +5,2 @@ "use strict"; | ||
function returnBlock(expr) { | ||
return t.blockStatement([t.returnStatement(expr)]); | ||
} | ||
function transformExpression(node, scope, state) { | ||
@@ -16,48 +12,18 @@ if (!node) return; | ||
case "ConditionalExpression": | ||
var callConsequent = subTransform(node.consequent); | ||
var callAlternate = subTransform(node.alternate); | ||
if (!callConsequent && !callAlternate) { | ||
return; | ||
} | ||
// any value of ternary operator can be final one | ||
subTransform(node.consequent); | ||
subTransform(node.alternate); | ||
break; | ||
// if ternary operator had tail recursion in value, convert to optimized if-statement | ||
node.type = "IfStatement"; | ||
node.consequent = callConsequent ? t.toBlock(callConsequent) : returnBlock(node.consequent); | ||
if (callAlternate) { | ||
node.alternate = t.isIfStatement(callAlternate) ? callAlternate : t.toBlock(callAlternate); | ||
} else { | ||
node.alternate = returnBlock(node.alternate); | ||
} | ||
return [node]; | ||
case "LogicalExpression": | ||
// only call in right-value of can be optimized | ||
var callRight = subTransform(node.right); | ||
if (!callRight) { | ||
return; | ||
} | ||
// only right expression can be final and so optimized | ||
subTransform(node.right); | ||
break; | ||
var test = state.wrapSideEffect(node.left); | ||
if (node.operator === "&&") { | ||
test.expr = t.unaryExpression("!", test.expr); | ||
} | ||
return [t.ifStatement(test.expr, returnBlock(test.ref))].concat(callRight); | ||
case "SequenceExpression": | ||
// only last element of sequence can be optimized | ||
var seq = node.expressions; | ||
subTransform(seq[seq.length - 1]); | ||
break; | ||
// only last element can be optimized | ||
var lastCall = subTransform(seq[seq.length - 1]); | ||
if (!lastCall) { | ||
return; | ||
} | ||
// remove converted expression from sequence | ||
// and convert to regular expression if needed | ||
if (--seq.length === 1) { | ||
node = seq[0]; | ||
} | ||
return [t.expressionStatement(node)].concat(lastCall); | ||
case "CallExpression": | ||
@@ -82,6 +48,5 @@ var callee = node.callee, thisBinding; | ||
return [t.returnStatement(t.callExpression( | ||
state.getHelperRef(), | ||
args | ||
))]; | ||
node.callee = state.getHelperRef(); | ||
node.arguments = args; | ||
break; | ||
} | ||
@@ -98,15 +63,13 @@ })(node); | ||
// it contains tail recursion | ||
return transformExpression(node.argument, scope, state); | ||
transformExpression(node.argument, scope, state); | ||
} else if (t.isFunction(node)) { | ||
return this.skip(); | ||
// inner function's bodies are irrelevant | ||
this.skip(); | ||
} else if (t.isTryStatement(parent)) { | ||
if (node === parent.block) { | ||
return this.skip(); | ||
} else if (node === parent.finalizer) { | ||
return; | ||
} else { | ||
if (parent.finalizer) { | ||
this.skip(); | ||
} | ||
return; | ||
// `try`-blocks can't be optimized | ||
this.skip(); | ||
} else if (parent.finalizer && node !== parent.finalizer) { | ||
// `catch` clause followed by `finally` can't be optimized | ||
this.skip(); | ||
} | ||
@@ -113,0 +76,0 @@ } |
@@ -95,3 +95,5 @@ module.exports = { | ||
"minification.deadCodeElimination": require("./minification/dead-code-elimination"), | ||
"minification.renameLocalVariables": require("./minification/rename-local-variables") | ||
"minification.renameLocalVariables": require("./minification/rename-local-variables"), | ||
_cleanUp: require("./internal/cleanup") | ||
}; |
@@ -693,6 +693,8 @@ "use strict"; | ||
t.inherits = function (child, parent) { | ||
child.range = parent.range; | ||
child.start = parent.start; | ||
child.loc = parent.loc; | ||
child.end = parent.end; | ||
child._declarations = parent._declarations; | ||
child._scopeInfo = parent._scopeInfo; | ||
child.range = parent.range; | ||
child.start = parent.start; | ||
child.loc = parent.loc; | ||
child.end = parent.end; | ||
t.inheritsComments(child, parent); | ||
@@ -699,0 +701,0 @@ return child; |
{ | ||
"name": "6to5-core", | ||
"description": "Turn ES6 code into readable vanilla ES5 with source maps", | ||
"version": "3.5.0", | ||
"version": "3.5.1", | ||
"author": "Sebastian McKenzie <sebmck@gmail.com>", | ||
@@ -25,3 +25,3 @@ "homepage": "https://6to5.org/", | ||
"dependencies": { | ||
"acorn-6to5": "0.11.1-27", | ||
"acorn-6to5": "0.11.1-28", | ||
"ast-types": "~0.6.1", | ||
@@ -28,0 +28,0 @@ "chalk": "^0.5.1", |
@@ -1,1 +0,1 @@ | ||
(function(global){var to5Runtime=global.to5Runtime={};to5Runtime.inherits=function(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass)}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)subClass.__proto__=superClass};to5Runtime.defaults=function(obj,defaults){for(var key in defaults){if(obj[key]===undefined){obj[key]=defaults[key]}}return obj};to5Runtime.prototypeProperties=function(child,staticProps,instanceProps){if(staticProps)Object.defineProperties(child,staticProps);if(instanceProps)Object.defineProperties(child.prototype,instanceProps)};to5Runtime.applyConstructor=function(Constructor,args){var instance=Object.create(Constructor.prototype);var result=Constructor.apply(instance,args);return result!=null&&(typeof result=="object"||typeof result=="function")?result:instance};to5Runtime.taggedTemplateLiteral=function(strings,raw){return Object.freeze(Object.defineProperties(strings,{raw:{value:Object.freeze(raw)}}))};to5Runtime.taggedTemplateLiteralLoose=function(strings,raw){strings.raw=raw;return strings};to5Runtime.interopRequire=function(obj){return obj&&obj.__esModule?obj.default:obj};to5Runtime.toArray=function(arr){return Array.isArray(arr)?arr:Array.from(arr)};to5Runtime.slicedToArray=function(arr,i){if(Array.isArray(arr)){return arr}else{var _arr=[];for(var _iterator=arr[Symbol.iterator](),_step;!(_step=_iterator.next()).done;){_arr.push(_step.value);if(i&&_arr.length===i)break}return _arr}};to5Runtime.objectWithoutProperties=function(obj,keys){var target={};for(var i in obj){if(keys.indexOf(i)>=0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i]=obj[i]}return target};to5Runtime.hasOwn=Object.prototype.hasOwnProperty;to5Runtime.slice=Array.prototype.slice;to5Runtime.bind=Function.prototype.bind;to5Runtime.defineProperty=function(obj,key,value){return Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})};to5Runtime.asyncToGenerator=function(fn){return function(){var gen=fn.apply(this,arguments);return new Promise(function(resolve,reject){var callNext=step.bind(null,"next");var callThrow=step.bind(null,"throw");function step(key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(callNext,callThrow)}}callNext()})}};to5Runtime.interopRequireWildcard=function(obj){return obj&&obj.__esModule?obj:{"default":obj}};to5Runtime._typeof=function(obj){return obj&&obj.constructor===Symbol?"symbol":typeof obj};to5Runtime._extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};to5Runtime.get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(desc===undefined){var parent=Object.getPrototypeOf(object);if(parent===null){return undefined}else{return get(parent,property,receiver)}}else if("value"in desc&&desc.writable){return desc.value}else{var getter=desc.get;if(getter===undefined){return undefined}return getter.call(receiver)}};to5Runtime.set=function set(object,property,value,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(desc===undefined){var parent=Object.getPrototypeOf(object);if(parent===null){return}else{return set(parent,property,value,receiver)}}else if("value"in desc&&desc.writable){desc.value=value;return}else{var setter=desc.set;if(setter===undefined){return}return setter.call(receiver,value)}};to5Runtime.classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}};to5Runtime.objectDestructuringEmpty=function(obj){if(obj==null)throw new TypeError("Cannot destructure undefined")};to5Runtime.temporalUndefined={};to5Runtime.temporalAssertDefined=function(val,name,undef){if(val===undef){throw new ReferenceError(name+" is not defined - temporal dead zone")}return true};to5Runtime.tailCall=function(){function Tail(func,args,context){this.func=func;this.args=args;this.context=context}var isRunning=false;return function(func,args,context){var result=new Tail(func,args,context);if(!isRunning){isRunning=true;do{result=result.func.apply(result.context,result.args)}while(result instanceof Tail);isRunning=false}return result}}()})(typeof global==="undefined"?self:global); | ||
(function(global){var to5Runtime=global.to5Runtime={};to5Runtime.inherits=function(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function, not "+typeof superClass)}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)subClass.__proto__=superClass};to5Runtime.defaults=function(obj,defaults){for(var key in defaults){if(obj[key]===undefined){obj[key]=defaults[key]}}return obj};to5Runtime.prototypeProperties=function(child,staticProps,instanceProps){if(staticProps)Object.defineProperties(child,staticProps);if(instanceProps)Object.defineProperties(child.prototype,instanceProps)};to5Runtime.applyConstructor=function(Constructor,args){var instance=Object.create(Constructor.prototype);var result=Constructor.apply(instance,args);return result!=null&&(typeof result=="object"||typeof result=="function")?result:instance};to5Runtime.taggedTemplateLiteral=function(strings,raw){return Object.freeze(Object.defineProperties(strings,{raw:{value:Object.freeze(raw)}}))};to5Runtime.taggedTemplateLiteralLoose=function(strings,raw){strings.raw=raw;return strings};to5Runtime.interopRequire=function(obj){return obj&&obj.__esModule?obj.default:obj};to5Runtime.toArray=function(arr){return Array.isArray(arr)?arr:Array.from(arr)};to5Runtime.slicedToArray=function(arr,i){if(Array.isArray(arr)){return arr}else{var _arr=[];for(var _iterator=arr[Symbol.iterator](),_step;!(_step=_iterator.next()).done;){_arr.push(_step.value);if(i&&_arr.length===i)break}return _arr}};to5Runtime.objectWithoutProperties=function(obj,keys){var target={};for(var i in obj){if(keys.indexOf(i)>=0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i]=obj[i]}return target};to5Runtime.hasOwn=Object.prototype.hasOwnProperty;to5Runtime.slice=Array.prototype.slice;to5Runtime.bind=Function.prototype.bind;to5Runtime.defineProperty=function(obj,key,value){return Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})};to5Runtime.asyncToGenerator=function(fn){return function(){var gen=fn.apply(this,arguments);return new Promise(function(resolve,reject){var callNext=step.bind(null,"next");var callThrow=step.bind(null,"throw");function step(key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(callNext,callThrow)}}callNext()})}};to5Runtime.interopRequireWildcard=function(obj){return obj&&obj.__esModule?obj:{"default":obj}};to5Runtime._typeof=function(obj){return obj&&obj.constructor===Symbol?"symbol":typeof obj};to5Runtime._extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};to5Runtime.get=function get(object,property,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(desc===undefined){var parent=Object.getPrototypeOf(object);if(parent===null){return undefined}else{return get(parent,property,receiver)}}else if("value"in desc&&desc.writable){return desc.value}else{var getter=desc.get;if(getter===undefined){return undefined}return getter.call(receiver)}};to5Runtime.set=function set(object,property,value,receiver){var desc=Object.getOwnPropertyDescriptor(object,property);if(desc===undefined){var parent=Object.getPrototypeOf(object);if(parent!==null){return set(parent,property,value,receiver)}}else if("value"in desc&&desc.writable){return desc.value=value}else{var setter=desc.set;if(setter!==undefined){return setter.call(receiver,value)}}};to5Runtime.classCallCheck=function(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}};to5Runtime.objectDestructuringEmpty=function(obj){if(obj==null)throw new TypeError("Cannot destructure undefined")};to5Runtime.temporalUndefined={};to5Runtime.temporalAssertDefined=function(val,name,undef){if(val===undef){throw new ReferenceError(name+" is not defined - temporal dead zone")}return true};to5Runtime.tailCall=function(){function Tail(func,args,context){this.func=func;this.args=args;this.context=context}Tail.prototype._isTailDescriptor=true;var isRunning=false;return function(func,args,context){var result=new Tail(func,args,context);if(!isRunning){isRunning=true;do{result=result.func.apply(result.context,result.args)}while(result instanceof Tail||result&&result._isTailDescriptor);isRunning=false}return result}}()})(typeof global==="undefined"?self:global); |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
1489382
156
12600
+ Addedacorn-6to5@0.11.1-28(transitive)
- Removedacorn-6to5@0.11.1-27(transitive)
Updatedacorn-6to5@0.11.1-28