lib/uglify.js in uglifier-0.5.1 vs lib/uglify.js in uglifier-0.5.2
- old
+ new
@@ -1,3013 +1,6026 @@
-(function(a){(function(){if(!this.require){var a={},b={},c=function(f,g){var h=b[f],i=d(g,f),j;if(h)return h;if(!(j=a[i]||a[i=d(i,"./index")]))throw"module '"+f+"' not found";h={id:f,exports:{}};try{b[f]=h.exports,j(h.exports,function(a){return c(a,e(i))},h);return b[f]=h.exports}catch(k){delete b[f];throw k}},d=function(a,b){var c=[],d,e;/^\.\.?(\/|$)/.test(b)?d=[a,b].join("/").split("/"):d=b.split("/");for(var f=0,g=d.length;f<g;f++)e=d[f],e==".."?c.pop():e!="."&&e!=""&&c.push(e);return c.join("/")},e=function(a){return a.split("/").slice(0,-1).join("/")};this.require=function(a){return c(a,"")},this.require.define=function(b){for(var c in b)a[c]=b[c]}}return this.require.define}).call(this)({"parse-js":function(a,b,c){function S(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function R(a,b){for(var c=b.length;--c>=0;)if(b[c]===a)return!0;return!1}function Q(a){return a.split("")}function P(a,b){return Array.prototype.slice.call(a,b==null?0:b)}function O(a){var b={};for(var c=0;c<a.length;++c)b[a[c]]=!0;return b}function N(a){a instanceof Function&&(a=a());for(var b=1,c=arguments.length;--c>0;++b)arguments[b]();return a}function M(a){var b=P(arguments,1);return function(){return a.apply(this,b.concat(P(arguments)))}}function L(a,b,c){function bl(a){try{++d.in_loop;return a()}finally{--d.in_loop}}function bk(a,b){arguments.length==0&&(a=!0);var c=bj(b);if(a&&e("punc",",")){g();return p("seq",c,bk(!0,b))}return c}function bj(a){var b=bh(a),c=d.token.value;if(e("operator")&&S(G,c)){if(bi(b)){g();return p("assign",G[c],b,bj(a))}i("Invalid assignment")}return b}function bi(a){if(!b)return!0;switch(a[0]){case"dot":case"sub":case"new":case"call":return!0;case"name":return a[1]!="this"}}function bh(a){var b=bg(a);if(e("operator","?")){g();var c=bk(!1);m(":");return p("conditional",b,c,bk(!1,a))}return b}function bg(a){return bf(Z(!0),0,a)}function bf(a,b,c){var f=e("operator")?d.token.value:null;f&&f=="in"&&c&&(f=null);var h=f!=null?H[f]:null;if(h!=null&&h>b){g();var i=bf(Z(!0),h,c);return bf(p("binary",f,a,i),b,c)}return a}function be(a,b,c){(b=="++"||b=="--")&&!bi(c)&&i("Invalid use of "+b+" operator");return p(a,b,c)}function bd(a,b){if(e("punc",".")){g();return bd(p("dot",a,bc()),b)}if(e("punc","[")){g();return bd(p("sub",a,N(bk,M(m,"]"))),b)}if(b&&e("punc","(")){g();return bd(p("call",a,$(")")),!0)}if(b&&e("operator")&&S(F,d.token.value))return N(M(be,"unary-postfix",d.token.value,a),g);return a}function bc(){switch(d.token.type){case"name":case"operator":case"keyword":case"atom":return N(d.token.value,g);default:k()}}function bb(){switch(d.token.type){case"num":case"string":return N(d.token.value,g)}return bc()}function ba(){var a=!0,c=[];while(!e("punc","}")){a?a=!1:m(",");if(!b&&e("punc","}"))break;var f=d.token.type,h=bb();f!="name"||h!="get"&&h!="set"||!!e("punc",":")?(m(":"),c.push([h,bk(!1)])):c.push([bc(),C(!1),h])}g();return p("object",c)}function _(){return p("array",$("]",!b,!0))}function $(a,b,c){var d=!0,f=[];while(!e("punc",a)){d?d=!1:m(",");if(b&&e("punc",a))break;e("punc",",")&&c?f.push(["atom","undefined"]):f.push(bk(!1))}g();return f}function Z(a){if(e("operator","new")){g();return Y()}if(e("operator")&&S(E,d.token.value))return be("unary-prefix",N(d.token.value,g),Z(a));if(e("punc")){switch(d.token.value){case"(":g();return bd(N(bk,M(m,")")),a);case"[":g();return bd(_(),a);case"{":g();return bd(ba(),a)}k()}if(e("keyword","function")){g();return bd(C(!1),a)}if(S(J,d.token.type)){var b=d.token.type=="regexp"?p("regexp",d.token.value[0],d.token.value[1]):p(d.token.type,d.token.value);return bd(N(b,g),a)}k()}function Y(){var a=Z(!1),b;e("punc","(")?(g(),b=$(")")):b=[];return bd(p("new",a,b),!0)}function X(){return p("const",V())}function W(a){return p("var",V(a))}function V(a){var b=[];for(;;){e("name")||k();var c=d.token.value;g(),e("operator","=")?(g(),b.push([c,bk(!1,a)])):b.push([c]);if(!e("punc",","))break;g()}return b}function U(){var a=Q(),b,c;if(e("keyword","catch")){g(),m("("),e("name")||i("Name expected");var f=d.token.value;g(),m(")"),b=[f,Q()]}e("keyword","finally")&&(g(),c=Q()),!b&&!c&&i("Missing catch/finally blocks");return p("try",a,b,c)}function Q(){m("{");var a=[];while(!e("punc","}"))e("eof")&&k(),a.push(s());g();return a}function O(){var a=q(),b=s(),c;e("keyword","else")&&(g(),c=s());return p("if",a,b,c)}function L(a){var b=e("name")?N(d.token.value,g):null;a&&!b&&k(),m("(");return p(a?"defun":"function",b,function(a,b){while(!e("punc",")"))a?a=!1:m(","),e("name")||k(),b.push(d.token.value),g();g();return b}(!0,[]),function(){++d.in_function;var a=d.in_loop;d.in_loop=0;var b=Q();--d.in_function,d.in_loop=a;return b}())}function z(a){var b=a[0]=="var"?p("name",a[1][0]):a;g();var c=bk();m(")");return p("for-in",a,b,c,bl(s))}function y(a){m(";");var b=e("punc",";")?null:bk();m(";");var c=e("punc",")")?null:bk();m(")");return p("for",a,b,c,bl(s))}function x(){m("(");var a=null;if(!e("punc",";")){a=e("keyword","var")?(g(),W(!0)):bk(!0,!0);if(e("operator","in"))return z(a)}return y(a)}function w(a){var b=e("name")?d.token.value:null;b!=null?(g(),R(b,d.labels)||i("Label "+b+" without matching loop or statement")):d.in_loop==0&&i(a+" not inside a loop or switch"),o();return p(a,b)}function v(){return p("stat",N(bk,o))}function u(a){d.labels.push(a);var c=d.token,e=s();b&&!S(I,e[0])&&k(c),d.labels.pop();return p("label",a,e)}function t(){e("operator","/")&&(d.peeked=null,d.token=d.input(!0));switch(d.token.type){case"num":case"string":case"regexp":case"operator":case"atom":return v();case"name":return B(f(),"punc",":")?u(N(d.token.value,g,g)):v();case"punc":switch(d.token.value){case"{":return p("block",Q());case"[":case"(":return v();case";":g();return p("block");default:k()};case"keyword":switch(N(d.token.value,g)){case"break":return w("break");case"continue":return w("continue");case"debugger":o();return p("debugger");case"do":return function(a){l("keyword","while");return p("do",N(q,o),a)}(bl(s));case"for":return x();case"function":return C(!0);case"if":return O();case"return":d.in_function==0&&i("'return' outside of function");return p("return",e("punc",";")?(g(),null):n()?null:N(bk,o));case"switch":return p("switch",q(),T());case"throw":return p("throw",N(bk,o));case"try":return U();case"var":return N(W,o);case"const":return N(X,o);case"while":return p("while",q(),bl(s));case"with":return p("with",q(),s());default:k()}}}function r(a,b,c){return a instanceof K?a:new K(a,b,c)}function q(){m("(");var a=bk();m(")");return a}function p(){return P(arguments)}function o(){e("punc",";")?g():n()||k()}function n(){return!b&&(d.token.nlb||e("eof")||e("punc","}"))}function m(a){return l("punc",a)}function l(a,b){if(e(a,b))return g();j(d.token,"Unexpected token "+d.token.type+", expected "+a)}function k(a){a==null&&(a=d.token),j(a,"Unexpected token: "+a.type+" ("+a.value+")")}function j(a,b){i(b,a.line,a.col)}function i(a,b,c,e){var f=d.input.context();A(a,b!=null?b:f.tokline,c!=null?c:f.tokcol,e!=null?e:f.tokpos)}function h(){return d.prev}function g(){d.prev=d.token,d.peeked?(d.token=d.peeked,d.peeked=null):d.token=d.input();return d.token}function f(){return d.peeked||(d.peeked=d.input())}function e(a,b){return B(d.token,a,b)}var d={input:typeof a=="string"?D(a,!0):a,token:null,prev:null,peeked:null,in_function:0,in_loop:0,labels:[]};d.token=g();var s=c?function(){var a=d.token,b=t.apply(this,arguments);b[0]=r(b[0],a,h());return b}:t,C=c?function(){var a=h(),b=L.apply(this,arguments);b[0]=r(b[0],a,h());return b}:L,T=M(bl,function(){m("{");var a=[],b=null;while(!e("punc","}"))e("eof")&&k(),e("keyword","case")?(g(),b=[],a.push([bk(),b]),m(":")):e("keyword","default")?(g(),m(":"),b=[],a.push([null,b])):(b||k(),b.push(s()));g();return a});return p("toplevel",function(a){while(!e("eof"))a.push(s());return a}([]))}function K(a,b,c){this.name=a,this.start=b,this.end=c}function D(a){function O(a){if(a)return I();q(),k();var b=c();if(!b)return p("eof");if(s(b))return v();if(b=='"'||b=="'")return D();if(S(o,b))return p("punc",e());if(b==".")return L();if(b=="/")return K();if(S(h,b))return J();if(b=="\\"||w(b))return M();u("Unexpected character '"+b+"'")}function N(a,b){try{return b()}catch(c){if(c===C)u(a);else throw c}}function M(){var a=H();return S(d,a)?S(l,a)?p("operator",a):S(g,a)?p("atom",a):p("keyword",a):p("name",a)}function L(){e();return s(c())?v("."):p("punc",".")}function K(){e();var a=b.regex_allowed;switch(c()){case"/":b.comments_before.push(E()),b.regex_allowed=a;return O();case"*":b.comments_before.push(G()),b.regex_allowed=a;return O()}return b.regex_allowed?I():J("/")}function J(a){function b(a){if(!c())return a;var d=a+c();if(S(l,d)){e();return b(d)}return a}return p("operator",b(a||e()))}function I(){return N("Unterminated regular expression",function(){var a=!1,b="",c,d=!1;while(c=e(!0))if(a)b+="\\"+c,a=!1;else if(c=="[")d=!0,b+=c;else if(c=="]"&&d)d=!1,b+=c;else{if(c=="/"&&!d)break;c=="\\"?a=!0:b+=c}var f=H();return p("regexp",[b,f])})}function H(){var a=!1,b="",d;while((d=c())!=null)if(!a)if(d=="\\")a=!0,e();else if(x(d))b+=e();else break;else d!="u"&&u("Expecting UnicodeEscapeSequence -- uXXXX"),d=z(),x(d)||u("Unicode char: "+d.charCodeAt(0)+" is not valid in identifier"),b+=d,a=!1;return b}function G(){e();return N("Unterminated multiline comment",function(){var a=j("*/",!0),c=b.text.substring(b.pos,a),d=p("comment2",c,!0);b.pos=a+2,b.line+=c.split("\n").length-1,b.newline_before=c.indexOf("\n")>=0,/^@cc_on/i.test(c)&&(T("WARNING: at line "+b.line),T('*** Found "conditional comment": '+c),T("*** UglifyJS DISCARDS ALL COMMENTS. This means your code might no longer work properly in Internet Explorer."));return d})}function E(){e();var a=j("\n"),c;a==-1?(c=b.text.substr(b.pos),b.pos=b.text.length):(c=b.text.substring(b.pos,a),b.pos=a);return p("comment1",c,!0)}function D(){return N("Unterminated string constant",function(){var a=e(),b="";for(;;){var c=e(!0);if(c=="\\")c=z();else if(c==a)break;b+=c}return p("string",b)})}function B(a){var b=0;for(;a>0;--a){var c=parseInt(e(!0),16);isNaN(c)&&u("Invalid hex-character pattern in string"),b=b<<4|c}return b}function z(){var a=e(!0);switch(a){case"n":return"\n";case"r":return"\r";case"t":return"\t";case"b":return"\b";case"v":return"";case"f":return"\f";case"0":return"