369
zguM9>41PZt{AX~kzQ8aC=NryAj{-0fKeN<%f@Knhl@^0s!rTZ77?b8hX!xLMJ34rM
zY*oUL%qQ84XV?o2Vin#kV`G|ibhw3?PzwjQcZ++Cx<78Zw?Pm59=psT|M*i<#wBx8i!89zc)>5
zb-)#J9RU?-Hv%msRkOR5-bWGLEHbS5QP~yO?xcydcF9xVxr5}|BB|=LWk5Y!G#>_L
z;?)bbjt|(5=W|;_82v`CMrtjx@+35P*-F|nIjumXqgjelmefBNVKfy-vIt;(4a$0z
z+<{jSkHaJ=l&7H$zF7e(mj9nWy?*n3y*`zy%o+wJ9t{0}m$Ev#u<%{9$YJH4walM6
zsChbdrqGzM#159~>>;8mRBFk5{J3dEQz5@3kdhdx;FkGnls_z@$k?<~@?O}U#kjz!
zN$-p|oueFr2s}YrvTIZX7j4Ah58XPY>}aANnI?cH4t`C+R)Q0YAM>D?TqzgJL7hu-
zgmahxhz1+`E*JUjlVDyf=xLUvi+Mg2o6y`8>RWfPjB96Ve031Z(uz{d0xNNvhmjXs$P}t2T1N^rvXk)
z7XksvVi9&q6X*i_vm^k_Q#HkDYjX+Whe0oZ9Vp;jTyG7Z4_^@f_vmY1++2l|E120S
zYzx3ZiaZ5YhOva{3uuBUPy1pEo%$e}Uj6B1@ZduhwHtMA9HZWs;q3bQ?<6QiK}&NHFUU|YHcVn+M!c(
z8k_y=?9G|m3ZGfML0@<8_j@n*UTTYYirl@z8A$?Ke?Ht;NAt3d(zsn8`dYMp3uVa5
zfOjb3_9RGPXQqq{Iw7$P5=6HifGt%McO9|3P1JVoGR$(^`N$_VFw%!+LOJ`TEK2{}Ujghr9
zo4BdXH+;6J8L#Y=McE+vlBHV(xn-DMbIxEPmLfwF#jD4WGEQK3)-zZ!z_l2I=>f|I
z44Xj-#sk38fyH9`dwh5XR=H$@RiXBnzV5#?o-kFMoxDDBTbM#_f#mlz{SG!B8M=g-
z^xGuz27^e4xAU%#uP-{YPLJ7H;9$?PFg}ss`GT~t4CRdDxbq1F>RtFpo-*d
z>FQ{!LVE?SRna6gkQA=;1$hkPVDkAU$fh}aMMXG{*afiCdv$PfcvhAk6WcI(JjyCmRoQHaX_FoSRitN2S4Ufw9>yBc?1)+M
zEGnMK-voIVv~Buz0fJj!7exxL*EF1fww2rjqVDa{yMvR1v$xeXzf{#?9=cWcsQ2{#
z!f?PKsz<*Jv*+Pz#5{fqCaW+njuicyxxi6^BU;FOj=~+w;zmk#KW9Z$=)fa0i?(eA
zM(uIm23yWNW%ujTz91+0li1tahbMk0ji@qzy_%XytcKUH!Zfk-zRA36&yqs)xLLh|
zWd#_4+Z-I?vzfSzf*Gkvg|xD+_yC^5&_*aI(yXF2PoF=1q2*EXZ$I&VV?ccT_ETk#
z2sFaZ#Lyb0X^xTnEVf%UD8K6f%vjP^;z~|F!!9kD!3Gwlw*>P;Ylu{yElzw!V<{$#
zv?;;`hZoo%|NZXA!{f>->lE{(G~%e|eS_nLrfER-X;~EZF(^08mct>lqP69^_HnH0
z_ADDw^ROP#!-h6%rv)Ah(V7IyP7byULlR`rXeWyb&eJTQ5|-)d*@0(Z@R=1*?ZU7N
zwPnDS4<<+mrW2IKJEanQ-q6GpHxdIAYcTRHFE%m
zXH=+x^trQUP7~?5YhpX34BQ!=wLuHkkC)hy63#Y$r>FuF1WV&0OGGytf&ncws$LJ8
zAWeKIR_S3|B#S8WNaRiH9&cV966v{-#A`jMGK53hHPCWB)IlPrYt#1x9G3(z(Wlcl
zJva89uh4f6edl$3o1;-aHFVB>P45l7`=X|SMvAsANG5m|%`F(j0~)dz@f4b|DAm#&
zVyGP|l~FELweDiioF_YwFbFjtyL_}Z5r!?5wHDjc7EbT(_fG9Xlj|>5jX-
zVT|FyZrk)^#6)4tq!d>f*aM{G>~1a(vnc
z4zCG6?MSK>RkHQ_{Rspc_FrPiOuJCEfXWca+
z&0#sI4osow>?(V)t~cIp&`+tI@kM!jnk^;bnoAu!4Bk_Tr=0Q!K~ib6|hTbRZ7gYdZI>GudqrW
zgDq|Ucp%N_R>8I$*&|3B5ksu!2M^O!nOiIkv?;S_z{A@y^<$_n_hSHdj4u$-`oBn~
z@-j@o1qJfPeo@IS7+Hsa5VS*Ym7s%G=s`XBSc6Scn8(RNR(z6X{R&_sNcQ#t_w(Sa
zcQ-e~UZbU*xYJy5jVF2zZaFN(ej$*AbF)J_+u2ssSe?d=gj=Rocs)+l7)wiyv8dEo
zI|6=VD)k#vQMqw-)yF?$*m!*Q&>1*`vqjBNIHR7iH#I$tOjjh+F9udm?0U>Q22KfW
zFbKsycIKc^q;bY&RTVhj)lm7XPQTe~fnV5l)w7m;
z^ol#>EwHQ{dN0B{0Y9BB5Ik9bU7_~2B1Lwm7{1ie#}15Ad0PpXlB98V^P-W_ehCNS
z?3t>%k9)UDp^ATKKY34Bht=KVH5d}J%?khlu4s&gUEQFkcP8VS+OgevP-8T-@TrG}
z=6o~YDS)PXb8NO#+O^iro^ZRDFy+LyomSnkt`AhbR~?95KwNGVz@j=XgO0q-XjaSF
ztd6yYe_1O7o2~V@F9JVEVI58NttutL>`lMwqzlY+(~ZWp{k%~dP4}_dBNaCeNYPVd
z3)!pXq{F@%o;41~P!3G8+hhlSjtT2~0zVwQ_}GoYyr{#8<g=!#REbF*g)~h|
z<5YxXB}%ftkd$miT4qSd%%x&hEak9QzhBaa2r))3#^{k4cS{)MZPZ6>fGDK)n{8K;Q*AE>I9U$8Z-7ga
zzYccK0hY_4cMWi~6!Y$$1KfgH`#SBBxpXe+Y=-?Ckd=0A)EpsUIa90ZnnP`F$Uux6S2t*f;itR?Gr`zpwZYa0HfKIuk>A(eS0{St%!35jBB1cS9nb%_N>lOf>
zsB9>8g3R>ps^fSKNB7I}d=by}H9C`f%w6e_E{-!dC)0Q7LSxvNrm)@H5H~?m(7FGO
z6u6z^dvJCuJWX#XyFlN^ix=^5&D&ku*@4^EUAiy$#MP5(xXA2j>%nmU-5GVxcWR*A
ztsk4s2io=3s@%!}XvfCZ$D(V|uNaSJo7jv6Hd!tPeOO}x(s~Anof0eu4YbJ5ZGzu
z1%vG@L{~v;g;fzEQMGcX(^&`sUB6AUrk;dboJFN%8h-v8MNiR
zS#xsq>B7Z&u^g+L*;&r#G*}ay_EGpd-hzknyn@i!ugzyYJD+v)gMwGVIaCyVTK|=W
z=PcMr7I;}7r%H?&K*^Nbfu)(=p~o@yd8
zHbH^iB8zevOIkNxW^vFdK(ssMG_s>KFLZJmy;=Y~89M$t-rPkn&%VN>Z|bqz=9P_fMy1zRLMY
za%~X<9E94_t9~g_KCeuSDj;2hSOxGs32YTe%!jOp^I{SYPNrFyzc(2^T46xv?(ao7
zg~|5@c4gTs@cgehhEhE*lDOlyo`H>8poYW|k?Wi@w!1`yy{_)|CC}
z-XPgF1?Q!CW!K!k^{0O6i=)1X`vN+dn+TfCU!eG%*&^d)JnA`dG!t-gvIP(*E(7iF
zp^tk+iCuJ2O6+1mcN2@YdbYd{+uUGN@`cH*Wjato9W?ic-(v1T_iHPg){;s@KSPhXGMx1+%Trm7R#v@13mu-
zqsI``fgb(=!kr#)6P-xu`KM&s~tRMe!>~
zbuG&(TeG(Om4<}SKi-g3n>85{_cGJADfoY7NQ^RL*%7ajBS&-pBKzSTDy)jNaS#uG
zi#_r=;H2hYMOd0Bk2kV4?FhenplBmeHMaMCC93q^2`DYGzEIz%o!1g8
ze2aG++4wqzc;ENjhn>r^4_P_L@yP8BTL@3C_3n0308Nt1n#PEHU;PkOE+EAPW=
zIHNTbcj1eP@A(?m$a%+HFrQ0x?Gx-~93}&M*5YX6?UB{CBb~ZyDq~w2S1RX@-Bd3p
zw6%7K`<|lXdD|9-yzCnTyef2B*?)LZSBah)R&z|!sn=`+&D-&;3JlQ8rlcU5fHeT7
zp-qvr3&(Bj!y{8zC*AByj~fmL>JZL-gfU%@DI+YmH`$eI-nvf1Y_}|xrO@R7#TV4s
ztnV;v)HIC!hCHLldZmdv9yEtel)Zfux~_F+3mwvqppcc!)!Q=ZaI@3Lw?e0yH$r3BV3KIm~{cVp?tvv?|kBM+$>2m
zAQOZuhk^oF^oE}3Cb-M-l^$%G;Y(PE8F=+i>iu{pkWKeg`!Ev2motojx$lRa2RVk&
z)CKos<~DZ^5oiabEIHp2u|}@XugXFQv?>GfV)*UwJ8fN_vvBvQP{Gh)2NaZGUJSpZ
zFZlX41iuBDMUj}M9_so=mi69=M)&Ec-*hz?--HWG7L4i=Kj-)#*RXM8iz4ld0^kdP
zFXs3k4|*vVan0@{F7-x&UbX9Hz*vyD1j1@@c~sISztOy{5q*t4Z7~j0sR2CgxC9rP
zV3-EAUdG3Sb*7P%V-?z2OHI#oS>Y|BHSqhVd*8n(+I
z;uFNW``)FqWasv`I!l2rPhq32;XZ_549ul#KMap)4y8;v)%SyY%~+$%(Y^DAP)A@3
zZBLk<(nWBeCNp@4D5ld*ZVrkt$JcA%ag6@%ra9{}=Vn6Xti!pNpw93b(;wO{Ak-18
zj(pu=di2M^?J1FX$7j>tvoj8_T%*eC2IJq;&MRkLp4jZk(-Jw|UsP`=mSlpbS+2O4{#@)+J7In{o3kadksn#Wl2
ztkUalwb$L+UK_8zIT=((=&QpTe2wxANNQ+H&?Kzy^7}FO*E=?m3MTVw%DW|N7+%WU
z&CDqDJ7CqUPz(1m%h|k0sGK=;LK4hqfR-TpFhH$9mCE^T5$bnLbof_Htb-P;Qzpca
z+v96k6Z7&TXM=;TeiXu9QvGTI7|D8sjrH`VRFS%cTjhN?%QxPRb#56?yc7ciP8W#{
z&{a6QqU&yK`)Y1c7x=Tbnu8{n
zE^?E!iAc?ZFFvR1Do$t58#SN?dRj0u%{7SK7h~uNijtI5=Qn9MucX41pnplm>ytA-m@Mn=G0obpy_fAxfWutb==N$D0jhT?VE4N
z1U?>fgF6hY`ANO(jPKBQd(J-JF&_s<--`&-$(&2l+=7FMx)Fs-xndZ^bR%CO*1wtt
xrsPAfiw+oLaesY{`Rz6@P4TvcT%kW`_~n7xn7avI9@e1G{{ew7Wq_Jz004nDTzUWi
diff --git a/deps/npm/node_modules/semver/semver.js b/deps/npm/node_modules/semver/semver.js
index 9e9470d86f..a7385b41c5 100644
--- a/deps/npm/node_modules/semver/semver.js
+++ b/deps/npm/node_modules/semver/semver.js
@@ -258,6 +258,8 @@ function SemVer(version, loose) {
return version;
else
version = version.version;
+ } else if (typeof version !== 'string') {
+ throw new TypeError('Invalid Version: ' + version);
}
if (!(this instanceof SemVer))
@@ -330,7 +332,7 @@ SemVer.prototype.comparePre = function(other) {
return -1;
else if (!this.prerelease.length && other.prerelease.length)
return 1;
- else if (!this.prerelease.lenth && !other.prerelease.length)
+ else if (!this.prerelease.length && !other.prerelease.length)
return 0;
var i = 0;
@@ -351,19 +353,49 @@ SemVer.prototype.comparePre = function(other) {
} while (++i);
};
+// preminor will bump the version up to the next minor release, and immediately
+// down to pre-release. premajor and prepatch work the same way.
SemVer.prototype.inc = function(release) {
switch (release) {
+ case 'premajor':
+ this.inc('major');
+ this.inc('pre');
+ break;
+ case 'preminor':
+ this.inc('minor');
+ this.inc('pre');
+ break;
+ case 'prepatch':
+ this.inc('patch');
+ this.inc('pre');
+ break;
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+ case 'prerelease':
+ if (this.prerelease.length === 0)
+ this.inc('patch');
+ this.inc('pre');
+ break;
case 'major':
this.major++;
this.minor = -1;
case 'minor':
this.minor++;
- this.patch = -1;
+ this.patch = 0;
+ this.prerelease = [];
+ break;
case 'patch':
- this.patch++;
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0)
+ this.patch++;
this.prerelease = [];
break;
- case 'prerelease':
+ // This probably shouldn't be used publically.
+ // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
+ case 'pre':
if (this.prerelease.length === 0)
this.prerelease = [0];
else {
diff --git a/deps/npm/node_modules/semver/semver.min.js b/deps/npm/node_modules/semver/semver.min.js
index c2164c33ef..66e13b8633 100644
--- a/deps/npm/node_modules/semver/semver.min.js
+++ b/deps/npm/node_modules/semver/semver.min.js
@@ -1 +1 @@
-(function(e){if(typeof module==="object"&&module.exports===e)e=module.exports=H;e.SEMVER_SPEC_VERSION="2.0.0";var r=e.re=[];var t=e.src=[];var n=0;var i=n++;t[i]="0|[1-9]\\d*";var s=n++;t[s]="[0-9]+";var o=n++;t[o]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var a=n++;t[a]="("+t[i]+")\\."+"("+t[i]+")\\."+"("+t[i]+")";var f=n++;t[f]="("+t[s]+")\\."+"("+t[s]+")\\."+"("+t[s]+")";var u=n++;t[u]="(?:"+t[i]+"|"+t[o]+")";var l=n++;t[l]="(?:"+t[s]+"|"+t[o]+")";var c=n++;t[c]="(?:-("+t[u]+"(?:\\."+t[u]+")*))";var p=n++;t[p]="(?:-?("+t[l]+"(?:\\."+t[l]+")*))";var h=n++;t[h]="[0-9A-Za-z-]+";var v=n++;t[v]="(?:\\+("+t[h]+"(?:\\."+t[h]+")*))";var m=n++;var g="v?"+t[a]+t[c]+"?"+t[v]+"?";t[m]="^"+g+"$";var w="[v=\\s]*"+t[f]+t[p]+"?"+t[v]+"?";var d=n++;t[d]="^"+w+"$";var y=n++;t[y]="((?:<|>)?=?)";var $=n++;t[$]=t[s]+"|x|X|\\*";var j=n++;t[j]=t[i]+"|x|X|\\*";var b=n++;t[b]="[v=\\s]*("+t[j]+")"+"(?:\\.("+t[j]+")"+"(?:\\.("+t[j]+")"+"(?:("+t[c]+")"+")?)?)?";var E=n++;t[E]="[v=\\s]*("+t[$]+")"+"(?:\\.("+t[$]+")"+"(?:\\.("+t[$]+")"+"(?:("+t[p]+")"+")?)?)?";var k=n++;t[k]="^"+t[y]+"\\s*"+t[b]+"$";var x=n++;t[x]="^"+t[y]+"\\s*"+t[E]+"$";var R=n++;t[R]="(?:~>?)";var S=n++;t[S]="(\\s*)"+t[R]+"\\s+";r[S]=new RegExp(t[S],"g");var V="$1~";var I=n++;t[I]="^"+t[R]+t[b]+"$";var A=n++;t[A]="^"+t[R]+t[E]+"$";var C=n++;t[C]="(?:\\^)";var T=n++;t[T]="(\\s*)"+t[C]+"\\s+";r[T]=new RegExp(t[T],"g");var M="$1^";var z=n++;t[z]="^"+t[C]+t[b]+"$";var P=n++;t[P]="^"+t[C]+t[E]+"$";var Z=n++;t[Z]="^"+t[y]+"\\s*("+w+")$|^$";var q=n++;t[q]="^"+t[y]+"\\s*("+g+")$|^$";var L=n++;t[L]="(\\s*)"+t[y]+"\\s*("+w+"|"+t[b]+")";r[L]=new RegExp(t[L],"g");var X="$1$2$3";var _=n++;t[_]="^\\s*("+t[b]+")"+"\\s+-\\s+"+"("+t[b]+")"+"\\s*$";var N=n++;t[N]="^\\s*("+t[E]+")"+"\\s+-\\s+"+"("+t[E]+")"+"\\s*$";var O=n++;t[O]="(<|>)?=?\\s*\\*";for(var B=0;B'};H.prototype.toString=function(){return this.version};H.prototype.compare=function(e){if(!(e instanceof H))e=new H(e,this.loose);return this.compareMain(e)||this.comparePre(e)};H.prototype.compareMain=function(e){if(!(e instanceof H))e=new H(e,this.loose);return Q(this.major,e.major)||Q(this.minor,e.minor)||Q(this.patch,e.patch)};H.prototype.comparePre=function(e){if(!(e instanceof H))e=new H(e,this.loose);if(this.prerelease.length&&!e.prerelease.length)return-1;else if(!this.prerelease.length&&e.prerelease.length)return 1;else if(!this.prerelease.lenth&&!e.prerelease.length)return 0;var r=0;do{var t=this.prerelease[r];var n=e.prerelease[r];if(t===undefined&&n===undefined)return 0;else if(n===undefined)return 1;else if(t===undefined)return-1;else if(t===n)continue;else return Q(t,n)}while(++r)};H.prototype.inc=function(e){switch(e){case"major":this.major++;this.minor=-1;case"minor":this.minor++;this.patch=-1;case"patch":this.patch++;this.prerelease=[];break;case"prerelease":if(this.prerelease.length===0)this.prerelease=[0];else{var r=this.prerelease.length;while(--r>=0){if(typeof this.prerelease[r]==="number"){this.prerelease[r]++;r=-2}}if(r===-1)this.prerelease.push(0)}break;default:throw new Error("invalid increment argument: "+e)}this.format();return this};e.inc=J;function J(e,r,t){try{return new H(e,t).inc(r).version}catch(n){return null}}e.compareIdentifiers=Q;var K=/^[0-9]+$/;function Q(e,r){var t=K.test(e);var n=K.test(r);if(t&&n){e=+e;r=+r}return t&&!n?-1:n&&!t?1:er?1:0}e.rcompareIdentifiers=U;function U(e,r){return Q(r,e)}e.compare=W;function W(e,r,t){return new H(e,t).compare(r)}e.compareLoose=Y;function Y(e,r){return W(e,r,true)}e.rcompare=er;function er(e,r,t){return W(r,e,t)}e.sort=rr;function rr(r,t){return r.sort(function(r,n){return e.compare(r,n,t)})}e.rsort=tr;function tr(r,t){return r.sort(function(r,n){return e.rcompare(r,n,t)})}e.gt=nr;function nr(e,r,t){return W(e,r,t)>0}e.lt=ir;function ir(e,r,t){return W(e,r,t)<0}e.eq=sr;function sr(e,r,t){return W(e,r,t)===0}e.neq=or;function or(e,r,t){return W(e,r,t)!==0}e.gte=ar;function ar(e,r,t){return W(e,r,t)>=0}e.lte=fr;function fr(e,r,t){return W(e,r,t)<=0}e.cmp=ur;function ur(e,r,t,n){var i;switch(r){case"===":i=e===t;break;case"!==":i=e!==t;break;case"":case"=":case"==":i=sr(e,t,n);break;case"!=":i=or(e,t,n);break;case">":i=nr(e,t,n);break;case">=":i=ar(e,t,n);break;case"<":i=ir(e,t,n);break;case"<=":i=fr(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return i}e.Comparator=lr;function lr(e,r){if(e instanceof lr){if(e.loose===r)return e;else e=e.value}if(!(this instanceof lr))return new lr(e,r);this.loose=r;this.parse(e);if(this.semver===cr)this.value="";else this.value=this.operator+this.semver.version}var cr={};lr.prototype.parse=function(e){var t=this.loose?r[Z]:r[q];var n=e.match(t);if(!n)throw new TypeError("Invalid comparator: "+e);this.operator=n[1];if(!n[2])this.semver=cr;else{this.semver=new H(n[2],this.loose);if(this.operator==="<"&&!this.semver.prerelease.length){this.semver.prerelease=["0"];this.semver.format()}}};lr.prototype.inspect=function(){return''};lr.prototype.toString=function(){return this.value};lr.prototype.test=function(e){return this.semver===cr?true:ur(e,this.operator,this.semver,this.loose)};e.Range=pr;function pr(e,r){if(e instanceof pr&&e.loose===r)return e;if(!(this instanceof pr))return new pr(e,r);this.loose=r;this.raw=e;this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length});if(!this.set.length){throw new TypeError("Invalid SemVer Range: "+e)}this.format()}pr.prototype.inspect=function(){return''};pr.prototype.format=function(){this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim();return this.range};pr.prototype.toString=function(){return this.range};pr.prototype.parseRange=function(e){var t=this.loose;e=e.trim();var n=t?r[N]:r[_];e=e.replace(n,Er);e=e.replace(r[L],X);e=e.replace(r[S],V);e=e.replace(r[T],M);e=e.split(/\s+/).join(" ");var i=t?r[Z]:r[q];var s=e.split(" ").map(function(e){return vr(e,t)}).join(" ").split(/\s+/);if(this.loose){s=s.filter(function(e){return!!e.match(i)})}s=s.map(function(e){return new lr(e,t)});return s};e.toComparators=hr;function hr(e,r){return new pr(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})}function vr(e,r){e=dr(e,r);e=gr(e,r);e=$r(e,r);e=br(e,r);return e}function mr(e){return!e||e.toLowerCase()==="x"||e==="*"}function gr(e,r){return e.trim().split(/\s+/).map(function(e){return wr(e,r)}).join(" ")}function wr(e,t){var n=t?r[A]:r[I];return e.replace(n,function(e,r,t,n,i){var s;if(mr(r))s="";else if(mr(t))s=">="+r+".0.0-0 <"+(+r+1)+".0.0-0";else if(mr(n))s=">="+r+"."+t+".0-0 <"+r+"."+(+t+1)+".0-0";else if(i){if(i.charAt(0)!=="-")i="-"+i;s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0-0"}else s=">="+r+"."+t+"."+n+"-0"+" <"+r+"."+(+t+1)+".0-0";return s})}function dr(e,r){return e.trim().split(/\s+/).map(function(e){return yr(e,r)}).join(" ")}function yr(e,t){var n=t?r[P]:r[z];return e.replace(n,function(e,r,t,n,i){var s;if(mr(r))s="";else if(mr(t))s=">="+r+".0.0-0 <"+(+r+1)+".0.0-0";else if(mr(n)){if(r==="0")s=">="+r+"."+t+".0-0 <"+r+"."+(+t+1)+".0-0";else s=">="+r+"."+t+".0-0 <"+(+r+1)+".0.0-0"}else if(i){if(i.charAt(0)!=="-")i="-"+i;if(r==="0"){if(t==="0")s="="+r+"."+t+"."+n+i;else s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0-0"}else s=">="+r+"."+t+"."+n+i+" <"+(+r+1)+".0.0-0"}else{if(r==="0"){if(t==="0")s="="+r+"."+t+"."+n;else s=">="+r+"."+t+"."+n+"-0"+" <"+r+"."+(+t+1)+".0-0"}else s=">="+r+"."+t+"."+n+"-0"+" <"+(+r+1)+".0.0-0"}return s})}function $r(e,r){return e.split(/\s+/).map(function(e){return jr(e,r)}).join(" ")}function jr(e,t){e=e.trim();var n=t?r[x]:r[k];return e.replace(n,function(e,r,t,n,i,s){var o=mr(t);var a=o||mr(n);var f=a||mr(i);var u=f;if(r==="="&&u)r="";if(r&&u){if(o)t=0;if(a)n=0;if(f)i=0;if(r===">"){r=">=";if(o){}else if(a){t=+t+1;n=0;i=0}else if(f){n=+n+1;i=0}}e=r+t+"."+n+"."+i+"-0"}else if(o){e="*"}else if(a){e=">="+t+".0.0-0 <"+(+t+1)+".0.0-0"}else if(f){e=">="+t+"."+n+".0-0 <"+t+"."+(+n+1)+".0-0"}return e})}function br(e,t){return e.trim().replace(r[O],"")}function Er(e,r,t,n,i,s,o,a,f,u,l,c,p){if(mr(t))r="";else if(mr(n))r=">="+t+".0.0-0";else if(mr(i))r=">="+t+"."+n+".0-0";else r=">="+r;if(mr(f))a="";else if(mr(u))a="<"+(+f+1)+".0.0-0";else if(mr(l))a="<"+f+"."+(+u+1)+".0-0";else if(c)a="<="+f+"."+u+"."+l+"-"+c;else a="<="+a;return(r+" "+a).trim()}pr.prototype.test=function(e){if(!e)return false;for(var r=0;r",t)}e.outside=Ar;function Ar(e,r,t,n){e=new H(e,n);r=new pr(r,n);var i,s,o,a,f;switch(t){case">":i=nr;s=fr;o=ir;a=">";f=">=";break;case"<":i=ir;s=ar;o=nr;a="<";f="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(xr(e,r,n)){return false}for(var u=0;u)?=?)";var b=n++;t[b]=t[s]+"|x|X|\\*";var $=n++;t[$]=t[i]+"|x|X|\\*";var j=n++;t[j]="[v=\\s]*("+t[$]+")"+"(?:\\.("+t[$]+")"+"(?:\\.("+t[$]+")"+"(?:("+t[l]+")"+")?)?)?";var k=n++;t[k]="[v=\\s]*("+t[b]+")"+"(?:\\.("+t[b]+")"+"(?:\\.("+t[b]+")"+"(?:("+t[p]+")"+")?)?)?";var E=n++;t[E]="^"+t[y]+"\\s*"+t[j]+"$";var x=n++;t[x]="^"+t[y]+"\\s*"+t[k]+"$";var R=n++;t[R]="(?:~>?)";var S=n++;t[S]="(\\s*)"+t[R]+"\\s+";r[S]=new RegExp(t[S],"g");var V="$1~";var I=n++;t[I]="^"+t[R]+t[j]+"$";var T=n++;t[T]="^"+t[R]+t[k]+"$";var A=n++;t[A]="(?:\\^)";var C=n++;t[C]="(\\s*)"+t[A]+"\\s+";r[C]=new RegExp(t[C],"g");var M="$1^";var z=n++;t[z]="^"+t[A]+t[j]+"$";var P=n++;t[P]="^"+t[A]+t[k]+"$";var Z=n++;t[Z]="^"+t[y]+"\\s*("+w+")$|^$";var q=n++;t[q]="^"+t[y]+"\\s*("+g+")$|^$";var L=n++;t[L]="(\\s*)"+t[y]+"\\s*("+w+"|"+t[j]+")";r[L]=new RegExp(t[L],"g");var X="$1$2$3";var _=n++;t[_]="^\\s*("+t[j]+")"+"\\s+-\\s+"+"("+t[j]+")"+"\\s*$";var N=n++;t[N]="^\\s*("+t[k]+")"+"\\s+-\\s+"+"("+t[k]+")"+"\\s*$";var O=n++;t[O]="(<|>)?=?\\s*\\*";for(var B=0;B'};H.prototype.toString=function(){return this.version};H.prototype.compare=function(e){if(!(e instanceof H))e=new H(e,this.loose);return this.compareMain(e)||this.comparePre(e)};H.prototype.compareMain=function(e){if(!(e instanceof H))e=new H(e,this.loose);return Q(this.major,e.major)||Q(this.minor,e.minor)||Q(this.patch,e.patch)};H.prototype.comparePre=function(e){if(!(e instanceof H))e=new H(e,this.loose);if(this.prerelease.length&&!e.prerelease.length)return-1;else if(!this.prerelease.length&&e.prerelease.length)return 1;else if(!this.prerelease.length&&!e.prerelease.length)return 0;var r=0;do{var t=this.prerelease[r];var n=e.prerelease[r];if(t===undefined&&n===undefined)return 0;else if(n===undefined)return 1;else if(t===undefined)return-1;else if(t===n)continue;else return Q(t,n)}while(++r)};H.prototype.inc=function(e){switch(e){case"premajor":this.inc("major");this.inc("pre");break;case"preminor":this.inc("minor");this.inc("pre");break;case"prepatch":this.inc("patch");this.inc("pre");break;case"prerelease":if(this.prerelease.length===0)this.inc("patch");this.inc("pre");break;case"major":this.major++;this.minor=-1;case"minor":this.minor++;this.patch=0;this.prerelease=[];break;case"patch":if(this.prerelease.length===0)this.patch++;this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{var r=this.prerelease.length;while(--r>=0){if(typeof this.prerelease[r]==="number"){this.prerelease[r]++;r=-2}}if(r===-1)this.prerelease.push(0)}break;default:throw new Error("invalid increment argument: "+e)}this.format();return this};e.inc=J;function J(e,r,t){try{return new H(e,t).inc(r).version}catch(n){return null}}e.compareIdentifiers=Q;var K=/^[0-9]+$/;function Q(e,r){var t=K.test(e);var n=K.test(r);if(t&&n){e=+e;r=+r}return t&&!n?-1:n&&!t?1:er?1:0}e.rcompareIdentifiers=U;function U(e,r){return Q(r,e)}e.compare=W;function W(e,r,t){return new H(e,t).compare(r)}e.compareLoose=Y;function Y(e,r){return W(e,r,true)}e.rcompare=er;function er(e,r,t){return W(r,e,t)}e.sort=rr;function rr(r,t){return r.sort(function(r,n){return e.compare(r,n,t)})}e.rsort=tr;function tr(r,t){return r.sort(function(r,n){return e.rcompare(r,n,t)})}e.gt=nr;function nr(e,r,t){return W(e,r,t)>0}e.lt=ir;function ir(e,r,t){return W(e,r,t)<0}e.eq=sr;function sr(e,r,t){return W(e,r,t)===0}e.neq=ar;function ar(e,r,t){return W(e,r,t)!==0}e.gte=or;function or(e,r,t){return W(e,r,t)>=0}e.lte=fr;function fr(e,r,t){return W(e,r,t)<=0}e.cmp=ur;function ur(e,r,t,n){var i;switch(r){case"===":i=e===t;break;case"!==":i=e!==t;break;case"":case"=":case"==":i=sr(e,t,n);break;case"!=":i=ar(e,t,n);break;case">":i=nr(e,t,n);break;case">=":i=or(e,t,n);break;case"<":i=ir(e,t,n);break;case"<=":i=fr(e,t,n);break;default:throw new TypeError("Invalid operator: "+r)}return i}e.Comparator=cr;function cr(e,r){if(e instanceof cr){if(e.loose===r)return e;else e=e.value}if(!(this instanceof cr))return new cr(e,r);this.loose=r;this.parse(e);if(this.semver===lr)this.value="";else this.value=this.operator+this.semver.version}var lr={};cr.prototype.parse=function(e){var t=this.loose?r[Z]:r[q];var n=e.match(t);if(!n)throw new TypeError("Invalid comparator: "+e);this.operator=n[1];if(!n[2])this.semver=lr;else{this.semver=new H(n[2],this.loose);if(this.operator==="<"&&!this.semver.prerelease.length){this.semver.prerelease=["0"];this.semver.format()}}};cr.prototype.inspect=function(){return''};cr.prototype.toString=function(){return this.value};cr.prototype.test=function(e){return this.semver===lr?true:ur(e,this.operator,this.semver,this.loose)};e.Range=pr;function pr(e,r){if(e instanceof pr&&e.loose===r)return e;if(!(this instanceof pr))return new pr(e,r);this.loose=r;this.raw=e;this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length});if(!this.set.length){throw new TypeError("Invalid SemVer Range: "+e)}this.format()}pr.prototype.inspect=function(){return''};pr.prototype.format=function(){this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim();return this.range};pr.prototype.toString=function(){return this.range};pr.prototype.parseRange=function(e){var t=this.loose;e=e.trim();var n=t?r[N]:r[_];e=e.replace(n,kr);e=e.replace(r[L],X);e=e.replace(r[S],V);e=e.replace(r[C],M);e=e.split(/\s+/).join(" ");var i=t?r[Z]:r[q];var s=e.split(" ").map(function(e){return vr(e,t)}).join(" ").split(/\s+/);if(this.loose){s=s.filter(function(e){return!!e.match(i)})}s=s.map(function(e){return new cr(e,t)});return s};e.toComparators=hr;function hr(e,r){return new pr(e,r).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})}function vr(e,r){e=dr(e,r);e=gr(e,r);e=br(e,r);e=jr(e,r);return e}function mr(e){return!e||e.toLowerCase()==="x"||e==="*"}function gr(e,r){return e.trim().split(/\s+/).map(function(e){return wr(e,r)}).join(" ")}function wr(e,t){var n=t?r[T]:r[I];return e.replace(n,function(e,r,t,n,i){var s;if(mr(r))s="";else if(mr(t))s=">="+r+".0.0-0 <"+(+r+1)+".0.0-0";else if(mr(n))s=">="+r+"."+t+".0-0 <"+r+"."+(+t+1)+".0-0";else if(i){if(i.charAt(0)!=="-")i="-"+i;s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0-0"}else s=">="+r+"."+t+"."+n+"-0"+" <"+r+"."+(+t+1)+".0-0";return s})}function dr(e,r){return e.trim().split(/\s+/).map(function(e){return yr(e,r)}).join(" ")}function yr(e,t){var n=t?r[P]:r[z];return e.replace(n,function(e,r,t,n,i){var s;if(mr(r))s="";else if(mr(t))s=">="+r+".0.0-0 <"+(+r+1)+".0.0-0";else if(mr(n)){if(r==="0")s=">="+r+"."+t+".0-0 <"+r+"."+(+t+1)+".0-0";else s=">="+r+"."+t+".0-0 <"+(+r+1)+".0.0-0"}else if(i){if(i.charAt(0)!=="-")i="-"+i;if(r==="0"){if(t==="0")s="="+r+"."+t+"."+n+i;else s=">="+r+"."+t+"."+n+i+" <"+r+"."+(+t+1)+".0-0"}else s=">="+r+"."+t+"."+n+i+" <"+(+r+1)+".0.0-0"}else{if(r==="0"){if(t==="0")s="="+r+"."+t+"."+n;else s=">="+r+"."+t+"."+n+"-0"+" <"+r+"."+(+t+1)+".0-0"}else s=">="+r+"."+t+"."+n+"-0"+" <"+(+r+1)+".0.0-0"}return s})}function br(e,r){return e.split(/\s+/).map(function(e){return $r(e,r)}).join(" ")}function $r(e,t){e=e.trim();var n=t?r[x]:r[E];return e.replace(n,function(e,r,t,n,i,s){var a=mr(t);var o=a||mr(n);var f=o||mr(i);var u=f;if(r==="="&&u)r="";if(r&&u){if(a)t=0;if(o)n=0;if(f)i=0;if(r===">"){r=">=";if(a){}else if(o){t=+t+1;n=0;i=0}else if(f){n=+n+1;i=0}}e=r+t+"."+n+"."+i+"-0"}else if(a){e="*"}else if(o){e=">="+t+".0.0-0 <"+(+t+1)+".0.0-0"}else if(f){e=">="+t+"."+n+".0-0 <"+t+"."+(+n+1)+".0-0"}return e})}function jr(e,t){return e.trim().replace(r[O],"")}function kr(e,r,t,n,i,s,a,o,f,u,c,l,p){if(mr(t))r="";else if(mr(n))r=">="+t+".0.0-0";else if(mr(i))r=">="+t+"."+n+".0-0";else r=">="+r;if(mr(f))o="";else if(mr(u))o="<"+(+f+1)+".0.0-0";else if(mr(c))o="<"+f+"."+(+u+1)+".0-0";else if(l)o="<="+f+"."+u+"."+c+"-"+l;else o="<="+o;return(r+" "+o).trim()}pr.prototype.test=function(e){if(!e)return false;for(var r=0;r",t)}e.outside=Tr;function Tr(e,r,t,n){e=new H(e,n);r=new pr(r,n);var i,s,a,o,f;switch(t){case">":i=nr;s=fr;a=ir;o=">";f=">=";break;case"<":i=ir;s=or;a=nr;o="<";f="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(xr(e,r,n)){return false}for(var u=0;u;1H~F^SKG$&uNWN;u_D_sY43+?vG^pEHne#HrEQFpBg7gD
zgruxiJYu`Q{m$%;q?IfY(tfyybFg+^J2N{wJF`-EmPNh{;;75*MKJ5i`-I1{&UJjA
zg`6>F#b=k?m)6#n1`YUK5(}9EirbvkfUjIWINE=6vVZvb=>7iQXLvX|c=wiB&j-W7
z&~k4)(GiRf1ZR_}8c7(X!q0~h8>-)cMULajNib#Ba5>rT|95(Ndj3>PNC}w&axw&z
zqv0OGJ%A(i#Or^3(f`<=(gTq8rz9gL+8AiNmV+}nmVJ6Uu$%|Rns-LLvz#}r(Ke1X
zZ$`Ws@{UKjtu8cTQTJYXP@~fO|sRqq?Br&T`itvoUFQM%c3{
zBY)p5|6HD)Qp{`;dK1yX8v2sZm(x;9<%~_WV7Wsc0aD|T#`YNh^b}V##Z`TZvvqk7
zgVZ=_m|~x%*w?N@S2?hoQswZ=Y2nE`qPuINyDI4piSAGb$ltrUvyTXIga~A`k@HYX
zf#?#5iTG{jkYDWIC0(TKSr?YAxKEh1x&616bU>00a#aqeRb7vX;J89yDEWd2UgS~y
ziIm(U#9l?o7lx91H6`~9CEuWupR}Z}BP%
zBFZmB`K5vKqC)waC|_6Xs|sG`D{rH{uWR{fJ+mZ~@15
z!LPMLC-6=XrP7OhtOs6c&>)QC6w3l>lThyRFy$Q%$2iGeDL`3D@C~RUQYnH6!ek-m
zBEIdQAC3XNF9a-sbr2~xbWTXSj^%KBg$vP@^B}D%lFwZF(nTUtO;Q=b2QcGx*B)GZ
z(w}#YRk2+Z9NCZ8M9UZ6E#vy}+PjPebE3)ilmJ1b0nZ7L;H(JvVXCK_{5Z8WMsUGl
z)lyXgDPPs$NIXcBFpynqV4(>~*DTYt1D<`-wa@0WBD@?v;ww`3EDJ(71}FcSj`5!%
zZ!{q#A^gERU3>KkW{+iz3r0Xz%!f+`w6wUawBNDtY%i=Yhst)ex@OlPxq)@Jh674RC#55q{4EY`GE=j
z_!<%bXSKR{qrP9DI4&Zz2+yiPBV2x8F{lA?4L$_SV9@oF1Kn}+B
zL@@rAV70D2u78_Vd;iZJ(;6>ZTN}I~inJyDZ8uLh8*S|E+?_{oKQMV`NDa-gvpEQt8|)>dQ=%PDdV8_}f!vH{(%q9fanBN;>)CG9d8dXc@l
zod+TBI*zdGJIt@FX?h!AMujIIOtHW!6+YHTnGV!lO9LnoDF{%(_)Ku`$}QM1yee!8
z@GUkKekPj+e2a}-Z;e_54Lmfoze}uXxXy`=c^-iKHJM?k&XtaNN(|kGgTYi@8~g~p
z6=fm3Ri1d97fb;|eN-)Uyf<^YI)eIru?r%M%Y^kkffox=c74W$MdwQe4JLs1p0BV3
z5J21Cu4^<%vUJ`Z+AD1rguR!Aa#Wt_be;!vp2PYv5f-{GM_Z+dxje#5%jr-f92p;5kd&GAH4*9Nt!4NbO4J!R!
zYVf<(pvV?*G}xsb?2nT2kK94)&LL`0wPby*Dz?8${=X_Sku;I1>2f6*7bOE1wHg0F
z?O+THX)GiY2C)!blT;{*vak}pa;c$dC|H#dc2Fv
z6iOBt#6cVJ4ifV(EH#MJHe%fFKpp|TXV80X^c$M~LUI-x^l_`^Osfucfk8fN)m@SM
z*9prE@{GvQpXzqdr9(*2A%yv46fo79n5k}q;2Sl#HPUSPucA^u!a1rE5al(Yb`cXb
zViZ%{gxWz&(1=k?vl?nWvo&-pal(ZsV}UshHW>Ld08j3zm_r=%4Tt(d@3eZG=ZjjO
zCz|>^FU)vzcLw}sdq&fk{h7#5KIoylM%kD0Ye<|hV<@OWz*(4O87-0qsmI)6$6zip
zueuo(Y_W2EVH7gDZ#PRBqhwRsL6i6qo5U|=(MIj#qnbv)aJJbu=BhH)F6w6RIW>c1
zbtv@dYQl8xMAF7GxsVF6yJKNyHyp8Eur8X>Y+?;9>IMl}G=;00`@Y?2mBChPx+-$M
z*>$P#s`0=n$JSfmPCazScv_59x~O=mXAqk1#6$kji!L}zjNOs6?2bfWGtsa$8uvm{
z-3v+UUN9~eQm)>Is8;e
z^ZAX4c_7qj#nq%umDDQvzR*#E@~8oiz=&d}BBy#W^~OWR{~VM*|+RK-B&{WS(j-!
zkrOypi(Gvt-pFJDx|OetWW&kl|6=v-A6mWpwbgr%tM~Q)x_S$`1As#1`&Y7!p*H2}
zvCD4gvY<;f(rY~!-1as9M}b02O{y;*ub2A|Bk@rYT-U8Bde7?7`d20emsfQ#YTk_{0O
z+mU{lK|Bo$wp~~=q5SG9>O~QaF_bq97r|AG*cuaNW-lTJuHRPB6_k?YYQXOa2Fa&eGlCruHW#g`xRmk-u#3CtDA|q0YbIMqwOIo9P&MK>tchjC_uIiOA*QMw6
z;@+&6_55DgOO#)ALJ_qb6Dd%|vo0hxIquz1~#FD%4Pt>AYB
zz5L!6c}FfMV%pjFB=@lsk%Yr=Wc3-t5VnER~>Dd;^Abyv{rb;|?rI2fB6;)WQ3U
zUF(VZ0)dtp3z14-<$<0-pl3V6+(?d->0`ua3O>oE`Nw*&O8IAa_~>IpyYGP)%m52n
z2sOK#umpdw9)Y%=?k>Xo0Tl`vFLQiJlbAFK(C7|7H1CYy5UY%5HS>VJyO9(W%VkpG
zwzsxY@Jl{Z-8s2Z6{gwNmiGWpB>|N0j`RynJSTG(!6~bO1Mm9W){nTe?c#%z;tSRM
dNMvoIZUaUrRsk8v!{SUDK$8m001@&S!e(N
literal 3231
zcmV;Q3}EvgiwFSyL~T+61I1cxbK5o&{wp%a7K_DV7gBqg$AJu!xXs-~IBm=Olqb{H
zb#j?UoH6Dk7gs!x&d!b|_4r+y2$=zkyPVaCFNeH$di472=;YJsyQ9NT@Njzk_6>8M
z_xioQGraLdOEBIOoQ)^yO~P9y0`nTPzWNMV?0G{u4kyg%FUPyx|4h!$FP~}+88I_p
zj{Cs!G(91D0(3-={qEO;?uYJ#9st^%kPe@)K49C9ha-88dw$+?ya(R3?384uMmDQq
z8{f5TPO>@5js`~a5+9Nh77;8eVOaw#AXuPbT{T(`e0Wjg>o@nQO9Ckgq$Ds>5>Z7W
zsz}U9VouHmKY};A#^*Q0zR?QL&poAaUeP$OXuMV;_%vhA%?JVh#KTE=j(WRM51{lK
zlzw!)ndfY4(OahpiE)Yy6m(JY
zL~DWQ63B`9ZR>>3j_%SnB0J8^ah3ELbGCQ?)|!q<)3Gt-WKy;DfB**-fMw(%0S-+R
ze_cbHmTSmS{BR^_QUrEzfW5Z$1$ae&IR{>Z?ejvbyy2slp!rkrV
zM?!ufk#A@NXH{
zkJtWHBA6GCcPB&$V@-HYgcL_b!VeQY-1uJ;S91gx9K4;W(nU?WPDgMrOQTS>ot}eJ
zNZWRKr5*6>qpn%DpA})@@d00vxfgjD!SOZz_hf|sEPaD983|zv-f6q5moR!F6Rg>Y
z$cpjYg~HOJuyX#MgJ*Iv`|?%I9cNveS1;o6OwL_fpU0f85i5aLNf;|ri;%NKRzurd
z2#pl#O50v7^JGs4Wy^V@^m|X7{U=pfnVdq9#Itqb2L=q1YuLD))#}}?dYnU1TSRCP
zp4ADFs@HyqT9!+j_)c)3H4csV|8e-=+T}WSxc&qK3>nuG$@p24)w*`L{%khw-9LBC
z#(3G;+2RdRq-WCI)msP$+9bYNy7jR1H^y%DsSoK7FB8g?H7#Q?De_U3iqnPsm&ccU
z8pix`XD7B_%OQ+`jqK8X*}(2r*|8fWu?*v!a%~w4o!DL7&cleeJx{px4Hi_EG`kHk
zp~6!DQ*l)2I0Gv!cy>wz6EqCp3{0g9&rXyErrrpqo(otdYhDQMejY{XCL`@|>bGDx@gwqhv>^Bwozq0a}DhK_|E-rpG#~1As
zdKWq+z`k%7oOv9)=ZTe>3~bDJ)ZHD#@E}LK1HLElmG299>4Qb0!KB|y3x3xY6k7n&
zom{ZS(SFb-OG4xz!+QuLLoLjEe{|Ei2c+C;8~Ge$BlN&zlvBmRNb!8-_KiI7ZK
zU?JKzR47DQEQn6IR=l*g6Qeq1fzl`~jq-amiUyT4$zn@iygnWMzK_ckNfuh*a1(eB
z!Tbx$EO537jN2XHG2jympKQW!Y5Yub=397wqvcGS4riSOpKi2W!Gr6R!zDxw>G}vI|(-1s)sA3LzEV3LL3BA+mEk`73J%?!OIs7Q+%^e5G
z+bstTWA_}w9A(hYwXISn&jD&SM
z>mJfRpRGDXSqF{J2W))4l$8jzM2~8Og2LH$FJw$*ss+*w&U0#TXx4$yr>jlVxf7v{
zrC*^HVt3EM%x*biy$V}2v)S0`JJjJ2vuJcyHTQkHdnkjg)<{(Je6y2K;Z>7?Q;w~-
zb**~njPSG=sB}^BQpW?!-g>#E)m3rPl69H|&m7V1eAQH5&IqTHOoj#=T%Q%NbX9
z^Q!%PhBqcl_{*L?+tk;#%FU#v(KfBTyHeA1d(#kduV@lAv9Z#zZN|4E=7CVB6<32c
zRZ^?;`$9)4GEoB_fj5esilPk-x5Bex1{-{3dgYeml9yI4k(SGXR_QvG;+hTLir*%g
za)lnuKSN&J#SF`vtv8sGK1~!;@HFxR-i|v*5KA@%ZwWhp)@i4c&RL!Ie$siZX+@xU
z&)m{E^ktB&Wy7oxP#)aiV@yW$kH}if={z
zTJ``V=(xC+wIjGxu4}tas0A~O5ttg}Wi_G)XEFlvf_!q4j(HZojqXcx`yybq%E=
z5mzJ}Pa;Z7X+j%FTGo~fRrU{i!Q2-I5*kgcB)g6qsyjHSKkGUjFZM#u*`Rl&^fn4P
zz}_fVMzZDP%l~2Z?jKsc`?b}3hpYGX|GIh$x&weh<@;B1lR$0A)nk|4vSmRxMP%1{
zFbp@Z`9BI25^6Gi@p!w2|1c6C6~T4enxc2R9=(qV+pCAd_KL!`@$kIE2>$%Y2<~J$
zh7+cum4394ESD-2>30aedJSFrX~DDz3I=6(?g|WgB;gA#M&e4=M~d&p`e6$3)Gx&L
zVarkN=MKtlq^>R{)cK!3Uq?L!2`fj%=Jpj
z>PD1}yJA{_>p@6FQl!LIq!j0rwMG}TM)jOkRwZvI9mihPBVn&gC+YZ|X(#VQouHE{
zzv_e{YB?rWq{`GP{IJ3==0X@^3Cdwp*Y#`qb460lnr_Nkk-<#KJ9)zi6DSNbpj`cr
zJj^qJ1`*$<*lokEgG$>kir4hP4hd^|ZW@rO4+@K~Uhx)Q?9~eXp`b5fKMT{5%dwbr
zc+tgRZ?&=&uF6{KGwo_K1ctoaD{h9R`I489<;2`sR*YNOgFsU7WtdGvp0PWtV!IQS
z8(2mq8&cM;TPs?Hxi?*5`F3}zwBKV9e`2XWsozTR2im8?7D!6fYrjf*D^cVAWVy7z
zf!6)Nsb#<^d9ilCY^qY#SwO1-J2{|hiTdSoBn3OOG@jL`bf5_ko%)t^1_H;H!0{%5
zeG*7=nT3~}9ausK*8N=hjTK}}Yl$d-7JJ!T;Yqr}quVs7tfpd^;7zBGxp6qvsd4=Z
z4Uj$}V};yP$h`vj(7oA{*Lfzvs^kVH((+sLFiKjmBrWLLK~W3uFZP`$F5Yp`GGif9
z2`m%nIRtvXC+v;ndAUADBBto$d}4k$2CHO#5{8cvHnc}Rc)<>^fCW&q4^x)n2i7Cd
z*3;cZU>?w*fblZNmzdPXq=3;Keqi4j!68<8pVp=a`1V#>AePItBJJ+%WZ)MwQr$Vm
zsEW{ZXD4|;rjh{4?~e4hba+l07r`m3i9P@N($$Z+vt1)n{#w%fka9$%!Q+&U7OMeW
RDlNcw{{@FyvE;8Q005c_M5F)!
diff --git a/deps/npm/node_modules/semver/test/index.js b/deps/npm/node_modules/semver/test/index.js
index e6c9cefb0a..6285b693f9 100644
--- a/deps/npm/node_modules/semver/test/index.js
+++ b/deps/npm/node_modules/semver/test/index.js
@@ -302,8 +302,15 @@ test('\nincrement versions test', function(t) {
['1.2.3tag', 'major', '2.0.0', true],
['1.2.3-tag', 'major', '2.0.0'],
['1.2.3', 'fake', null],
+ ['1.2.0-0', 'patch', '1.2.0'],
['fake', 'major', null],
- ['1.2.3', 'prerelease', '1.2.3-0'],
+ ['1.2.3-4', 'major', '2.0.0'],
+ ['1.2.3-4', 'minor', '1.3.0'],
+ ['1.2.3-4', 'patch', '1.2.3'],
+ ['1.2.3-alpha.0.beta', 'major', '2.0.0'],
+ ['1.2.3-alpha.0.beta', 'minor', '1.3.0'],
+ ['1.2.3-alpha.0.beta', 'patch', '1.2.3'],
+ ['1.2.4', 'prerelease', '1.2.5-0'],
['1.2.3-0', 'prerelease', '1.2.3-1'],
['1.2.3-alpha.0', 'prerelease', '1.2.3-alpha.1'],
['1.2.3-alpha.1', 'prerelease', '1.2.3-alpha.2'],
@@ -319,7 +326,13 @@ test('\nincrement versions test', function(t) {
['1.2.3-alpha.10.beta.2', 'prerelease', '1.2.3-alpha.10.beta.3'],
['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-alpha.10.beta'],
['1.2.3-alpha.10.beta', 'prerelease', '1.2.3-alpha.11.beta'],
- ['1.2.3-alpha.11.beta', 'prerelease', '1.2.3-alpha.12.beta']
+ ['1.2.3-alpha.11.beta', 'prerelease', '1.2.3-alpha.12.beta'],
+ ['1.2.0', 'preminor', '1.3.0-0'],
+ ['1.2.0', 'premajor', '2.0.0-0'],
+ ['1.2.0', 'preminor', '1.3.0-0'],
+ ['1.2.0', 'premajor', '2.0.0-0']
+
+
].forEach(function(v) {
var pre = v[0];
var what = v[1];
@@ -500,6 +513,21 @@ test('\ncomparators test', function(t) {
t.end();
});
+test('\ninvalid version numbers', function(t) {
+ ['1.2.3.4',
+ 'NOT VALID',
+ 1.2,
+ null,
+ 'Infinity.NaN.Infinity'
+ ].forEach(function(v) {
+ t.throws(function() {
+ new SemVer(v);
+ }, {name:'TypeError', message:'Invalid Version: ' + v});
+ });
+
+ t.end();
+});
+
test('\nstrict vs loose version numbers', function(t) {
[['=1.2.3', '1.2.3'],
['01.02.03', '1.2.3'],
diff --git a/deps/npm/node_modules/uid-number/LICENCE b/deps/npm/node_modules/uid-number/LICENCE
deleted file mode 100644
index 74489e2e26..0000000000
--- a/deps/npm/node_modules/uid-number/LICENCE
+++ /dev/null
@@ -1,25 +0,0 @@
-Copyright (c) Isaac Z. Schlueter
-All rights reserved.
-
-The BSD License
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
-``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
diff --git a/deps/npm/node_modules/uid-number/package.json b/deps/npm/node_modules/uid-number/package.json
index 0b10753b15..643c36b466 100644
--- a/deps/npm/node_modules/uid-number/package.json
+++ b/deps/npm/node_modules/uid-number/package.json
@@ -19,12 +19,29 @@
"node": "*"
},
"license": "ISC",
- "readme": "Use this module to convert a username/groupname to a uid/gid number.\n\nUsage:\n\n```\nnpm install uid-number\n```\n\nThen, in your node program:\n\n```javascript\nvar uidNumber = require(\"uid-number\")\nuidNumber(\"isaacs\", function (er, uid, gid) {\n // gid is null because we didn't ask for a group name\n // uid === 24561 because that's my number.\n})\n```\n",
- "readmeFilename": "README.md",
"bugs": {
"url": "https://github.com/isaacs/uid-number/issues"
},
"homepage": "https://github.com/isaacs/uid-number",
"_id": "uid-number@0.0.5",
- "_from": "uid-number@latest"
+ "dist": {
+ "shasum": "5a3db23ef5dbd55b81fce0ec9a2ac6fccdebb81e",
+ "tarball": "http://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz"
+ },
+ "_from": "uid-number@latest",
+ "_npmVersion": "1.4.3",
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ }
+ ],
+ "directories": {},
+ "_shasum": "5a3db23ef5dbd55b81fce0ec9a2ac6fccdebb81e",
+ "_resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz",
+ "readme": "ERROR: No README data found!"
}
diff --git a/deps/npm/package.json b/deps/npm/package.json
index a2b0667ab4..e496acddcf 100644
--- a/deps/npm/package.json
+++ b/deps/npm/package.json
@@ -1,9 +1,6 @@
{
- "version": "1.4.10",
+ "version": "1.4.14",
"name": "npm",
- "publishConfig": {
- "proprietary-attribs": false
- },
"description": "A package manager for node",
"keywords": [
"package manager",
@@ -34,48 +31,51 @@
"main": "./lib/npm.js",
"bin": "./bin/npm-cli.js",
"dependencies": {
- "abbrev": "~1.0.4",
+ "abbrev": "~1.0.5",
"ansi": "~0.2.1",
"ansicolors": "~0.3.2",
"ansistyles": "~0.1.3",
"archy": "0",
"block-stream": "0.0.7",
+ "char-spinner": "~1.0.1",
"child-process-close": "~0.1.1",
"chmodr": "~0.1.0",
"chownr": "0",
"cmd-shim": "~1.1.1",
- "columnify": "0.1.2",
+ "columnify": "~0.1.2",
"editor": "0.0.5",
"fstream": "~0.1.25",
- "fstream-npm": "~0.1.6",
+ "fstream-npm": "~0.1.7",
"github-url-from-git": "1.1.1",
"github-url-from-username-repo": "~0.1.0",
- "glob": "~3.2.9",
+ "glob": "~3.2.10",
"graceful-fs": "~2.0.2",
- "ini": "~1.1.0",
- "init-package-json": "0.0.16",
+ "inflight": "~1.0.1",
+ "ini": "~1.2.0",
+ "init-package-json": "0.0.17",
"lockfile": "~0.4.0",
"lru-cache": "~2.5.0",
- "minimatch": "~0.2.14",
+ "minimatch": "~0.3.0",
"mkdirp": "~0.3.5",
"node-gyp": "~0.13.0",
"nopt": "~2.2.1",
+ "npm-cache-filename": "~1.0.1",
"npm-install-checks": "~1.0.0",
- "npm-registry-client": "~0.4.8",
- "npm-user-validate": "0.0.3",
- "npmconf": "~0.1.15",
+ "npm-registry-client": "~1.0.0",
+ "npm-user-validate": "~0.1.0",
+ "npmconf": "~1.0.1",
"npmlog": "0.0.6",
"once": "~1.3.0",
"opener": "~1.3.0",
"osenv": "0",
"path-is-inside": "~1.0.0",
"read": "~1.0.4",
- "read-installed": "~2.0.1",
+ "read-installed": "~2.0.4",
"read-package-json": "~1.1.9",
"request": "~2.30.0",
"retry": "~0.6.0",
"rimraf": "~2.2.5",
- "semver": "~2.2.1",
+ "semver": "~2.3.0",
"sha": "~1.2.1",
"slide": "~1.1.5",
"sorted-object": "~1.0.0",
@@ -91,6 +91,7 @@
"ansistyles",
"archy",
"block-stream",
+ "char-spinner",
"child-process-close",
"chmodr",
"chownr",
@@ -103,6 +104,7 @@
"github-url-from-username-repo",
"glob",
"graceful-fs",
+ "inflight",
"inherits",
"ini",
"init-package-json",
@@ -112,7 +114,7 @@
"mkdirp",
"node-gyp",
"nopt",
- "normalize-package-data",
+ "npm-cache-filename",
"npm-install-checks",
"npm-registry-client",
"npm-user-validate",
diff --git a/deps/npm/test/tap/00-verify-bundle-deps.js b/deps/npm/test/tap/00-verify-bundle-deps.js
new file mode 100644
index 0000000000..00291a6c48
--- /dev/null
+++ b/deps/npm/test/tap/00-verify-bundle-deps.js
@@ -0,0 +1,27 @@
+var fs = require("fs")
+var path = require("path")
+var test = require("tap").test
+
+var manifest = require("../../package.json")
+var deps = Object.keys(manifest.dependencies)
+var dev = Object.keys(manifest.devDependencies)
+var bundled = manifest.bundleDependencies
+
+test("all deps are bundled deps or dev deps", function (t) {
+ deps.forEach(function (name) {
+ t.assert(
+ bundled.indexOf(name) !== -1,
+ name + " is in bundledDependencies"
+ )
+ })
+
+ t.same(
+ fs.readdirSync(path.resolve(__dirname, '../../node_modules')).filter(function (name) {
+ return (dev.indexOf(name) === -1) && (name !== ".bin")
+ }).sort(),
+ bundled.sort(),
+ "bundleDependencies matches what's in node_modules"
+ )
+
+ t.end()
+})
diff --git a/deps/npm/test/tap/cache-shasum.js b/deps/npm/test/tap/cache-shasum.js
index 460f2ee3ff..2139d8fb79 100644
--- a/deps/npm/test/tap/cache-shasum.js
+++ b/deps/npm/test/tap/cache-shasum.js
@@ -43,7 +43,7 @@ test("npm cache add request", function(t) {
test("compare", function(t) {
var d = path.resolve(__dirname, "cache-shasum/request")
var p = path.resolve(d, "2.27.0/package.tgz")
- var r = require(path.resolve(d, ".cache.json"))
+ var r = require("./cache-shasum/localhost_1337/request/.cache.json")
var rshasum = r.versions['2.27.0'].dist.shasum
sha.get(p, function (er, pshasum) {
if (er)
diff --git a/deps/npm/test/tap/config-meta.js b/deps/npm/test/tap/config-meta.js
index 63cdd61c4f..75a66604cf 100644
--- a/deps/npm/test/tap/config-meta.js
+++ b/deps/npm/test/tap/config-meta.js
@@ -31,7 +31,12 @@ test("get files", function (t) {
return path.resolve(lib, f)
})
files.forEach(function (f) {
- if (fs.statSync(f).isDirectory())
+ try {
+ var s = fs.statSync(f)
+ } catch (er) {
+ return
+ }
+ if (s.isDirectory())
walk(f)
else if (f.match(/\.js$/))
FILES.push(f)
diff --git a/deps/npm/test/tap/install-save-prefix.js b/deps/npm/test/tap/install-save-prefix.js
index 753150924a..bbdeddf3fe 100644
--- a/deps/npm/test/tap/install-save-prefix.js
+++ b/deps/npm/test/tap/install-save-prefix.js
@@ -22,6 +22,7 @@ test('"npm install --save with default save-prefix should install local pkg vers
npm.load({
cache: pkg + "/cache",
loglevel: 'silent',
+ 'save-prefix': '^',
registry: common.registry }, function(err) {
t.ifError(err)
npm.config.set('save', true)
@@ -47,6 +48,7 @@ test('"npm install --save-dev with default save-prefix should install local pkg
npm.load({
cache: pkg + "/cache",
loglevel: 'silent',
+ 'save-prefix': '^',
registry: common.registry }, function(err) {
t.ifError(err)
npm.config.set('save-dev', true)
diff --git a/deps/npm/test/tap/ls-depth-unmet.js b/deps/npm/test/tap/ls-depth-unmet.js
new file mode 100644
index 0000000000..1ac85efc94
--- /dev/null
+++ b/deps/npm/test/tap/ls-depth-unmet.js
@@ -0,0 +1,97 @@
+var common = require('../common-tap')
+ , test = require('tap').test
+ , path = require('path')
+ , rimraf = require('rimraf')
+ , osenv = require('osenv')
+ , mkdirp = require('mkdirp')
+ , pkg = __dirname + '/ls-depth-unmet'
+ , cache = pkg + '/cache'
+ , tmp = pkg + '/tmp'
+ , node = process.execPath
+ , npm = path.resolve(__dirname, '../../cli.js')
+ , mr = require('npm-registry-mock')
+ , opts = {cwd: pkg}
+
+
+function cleanup () {
+ process.chdir(osenv.tmpdir())
+ rimraf.sync(pkg + '/cache')
+ rimraf.sync(pkg + '/tmp')
+ rimraf.sync(pkg + '/node_modules')
+}
+
+test('setup', function (t) {
+ cleanup()
+ mkdirp.sync(pkg + '/cache')
+ mkdirp.sync(pkg + '/tmp')
+ mr(common.port, function (s) {
+ var cmd = ['install', 'underscore@1.3.1', 'mkdirp', 'test-package-with-one-dep', '--registry=' + common.registry]
+ common.npm(cmd, opts, function (er, c) {
+ if (er) throw er
+ t.equal(c, 0)
+ s.close()
+ t.end()
+ })
+ })
+})
+
+test('npm ls --depth=0', function (t) {
+ common.npm(['ls', '--depth=0'], opts, function (er, c, out) {
+ if (er) throw er
+ t.equal(c, 1)
+ t.has(out, /UNMET DEPENDENCY optimist@0\.6\.0/
+ , "output contains optimist@0.6.0 and labeled as unmet dependency")
+ t.has(out, /mkdirp@0\.3\.5 extraneous/
+ , "output contains mkdirp@0.3.5 and labeled as extraneous")
+ t.has(out, /underscore@1\.3\.1 invalid/
+ , "output contains underscore@1.3.1 and labeled as invalid")
+ t.has(out, /test-package-with-one-dep@0\.0\.0\n/
+ , "output contains test-package-with-one-dep@0.0.0 and has no labels")
+ t.doesNotHave(out, /test-package@0\.0\.0/
+ , "output does not contain test-package@0.0.0 which is at depth=1")
+ t.end()
+ })
+})
+
+test('npm ls --depth=1', function (t) {
+ common.npm(['ls', '--depth=1'], opts, function (er, c, out) {
+ if (er) throw er
+ t.equal(c, 1)
+ t.has(out, /UNMET DEPENDENCY optimist@0\.6\.0/
+ , "output contains optimist@0.6.0 and labeled as unmet dependency")
+ t.has(out, /mkdirp@0\.3\.5 extraneous/
+ , "output contains mkdirp@0.3.5 and labeled as extraneous")
+ t.has(out, /underscore@1\.3\.1 invalid/
+ , "output contains underscore@1.3.1 and labeled as invalid")
+ t.has(out, /test-package-with-one-dep@0\.0\.0\n/
+ , "output contains test-package-with-one-dep@0.0.0 and has no labels")
+ t.has(out, /test-package@0\.0\.0/
+ , "output contains test-package@0.0.0 which is at depth=1")
+ t.end()
+ })
+})
+
+test('npm ls --depth=Infinity', function (t) {
+ // travis has a preconfigured depth=0, in general we can not depend
+ // on the default value in all environments, so explictly set it here
+ common.npm(['ls', '--depth=Infinity'], opts, function (er, c, out) {
+ if (er) throw er
+ t.equal(c, 1)
+ t.has(out, /UNMET DEPENDENCY optimist@0\.6\.0/
+ , "output contains optimist@0.6.0 and labeled as unmet dependency")
+ t.has(out, /mkdirp@0\.3\.5 extraneous/
+ , "output contains mkdirp@0.3.5 and labeled as extraneous")
+ t.has(out, /underscore@1\.3\.1 invalid/
+ , "output contains underscore@1.3.1 and labeled as invalid")
+ t.has(out, /test-package-with-one-dep@0\.0\.0\n/
+ , "output contains test-package-with-one-dep@0.0.0 and has no labels")
+ t.has(out, /test-package@0\.0\.0/
+ , "output contains test-package@0.0.0 which is at depth=1")
+ t.end()
+ })
+})
+
+test('cleanup', function (t) {
+ cleanup()
+ t.end()
+})
diff --git a/deps/npm/test/tap/ls-depth-unmet/package.json b/deps/npm/test/tap/ls-depth-unmet/package.json
new file mode 100644
index 0000000000..391fa8d5b3
--- /dev/null
+++ b/deps/npm/test/tap/ls-depth-unmet/package.json
@@ -0,0 +1,10 @@
+{
+ "name": "ls-depth-umnet",
+ "author": "Evan You",
+ "version": "0.0.0",
+ "dependencies": {
+ "test-package-with-one-dep": "0.0.0",
+ "underscore": "1.5.1",
+ "optimist": "0.6.0"
+ }
+}
\ No newline at end of file
diff --git a/deps/npm/test/tap/maybe-github.js b/deps/npm/test/tap/maybe-github.js
new file mode 100644
index 0000000000..8b7105e6ea
--- /dev/null
+++ b/deps/npm/test/tap/maybe-github.js
@@ -0,0 +1,76 @@
+require("../common-tap.js")
+var test = require("tap").test
+var npm = require("../../lib/npm.js")
+
+// this is the narrowest way to replace a function in the module cache
+var found = true
+var remoteGitPath = require.resolve('../../lib/cache/add-remote-git.js')
+require("module")._cache[remoteGitPath] = {
+ id: remoteGitPath,
+ exports: function stub(_, error, __, cb) {
+ if (found) {
+ cb(null, {})
+ }
+ else {
+ cb(error)
+ }
+ }
+}
+
+// only load maybeGithub now, so it gets the stub from cache
+var maybeGithub = require("../../lib/cache/maybe-github.js")
+
+test("should throw with no parameters", function (t) {
+ t.plan(1)
+
+ t.throws(function () {
+ maybeGithub();
+ }, "throws when called without parameters")
+})
+
+test("should throw with wrong parameter types", function (t) {
+ t.plan(3)
+
+ t.throws(function () {
+ maybeGithub({}, new Error(), function () {})
+ }, "expects only a package name")
+
+ t.throws(function () {
+ maybeGithub("npm/xxx-noexist", null, function () {})
+ }, "expects to be called after a previous check already failed")
+
+ t.throws(function () {
+ maybeGithub("npm/xxx-noexist", new Error(), "ham")
+ }, "is always async")
+})
+
+test("should find an existing package on Github", function (t) {
+ found = true
+ npm.load({}, function (error) {
+ t.notOk(error, "bootstrapping succeeds")
+ t.doesNotThrow(function () {
+ maybeGithub("npm/npm", new Error("not on filesystem"), function (error, data) {
+ t.notOk(error, "no issues in looking things up")
+ t.ok(data, "received metadata from Github")
+ t.end()
+ })
+ })
+ })
+})
+
+test("shouldn't find a nonexistent package on Github", function (t) {
+ found = false
+ npm.load({}, function () {
+ t.doesNotThrow(function () {
+ maybeGithub("npm/xxx-noexist", new Error("not on filesystem"), function (error, data) {
+ t.equal(
+ error.message,
+ "not on filesystem",
+ "passed through original error message"
+ )
+ t.notOk(data, "didn't pass any metadata")
+ t.end()
+ })
+ })
+ })
+})
diff --git a/deps/npm/test/tap/noargs-install-config-save.js b/deps/npm/test/tap/noargs-install-config-save.js
index ceff77bd4d..c821000c2f 100644
--- a/deps/npm/test/tap/noargs-install-config-save.js
+++ b/deps/npm/test/tap/noargs-install-config-save.js
@@ -1,7 +1,6 @@
var common = require("../common-tap.js")
var test = require("tap").test
var npm = require.resolve("../../bin/npm-cli.js")
-var osenv = require("osenv")
var path = require("path")
var fs = require("fs")
var rimraf = require("rimraf")
@@ -9,7 +8,6 @@ var mkdirp = require("mkdirp")
var mr = require("npm-registry-mock")
-var child
var spawn = require("child_process").spawn
var node = process.execPath
@@ -56,7 +54,7 @@ test("does not update the package.json with empty arguments", function (t) {
mr(common.port, function (s) {
var child = createChild([npm, "install"])
- child.on("close", function (m) {
+ child.on("close", function () {
var text = JSON.stringify(fs.readFileSync(pkg + "/package.json", "utf8"))
t.ok(text.indexOf('"dependencies') === -1)
s.close()
@@ -71,7 +69,7 @@ test("updates the package.json (adds dependencies) with an argument", function (
mr(common.port, function (s) {
var child = createChild([npm, "install", "underscore"])
- child.on("close", function (m) {
+ child.on("close", function () {
var text = JSON.stringify(fs.readFileSync(pkg + "/package.json", "utf8"))
t.ok(text.indexOf('"dependencies') !== -1)
s.close()
diff --git a/deps/npm/test/tap/repo.js b/deps/npm/test/tap/repo.js
index 44671e7d51..bf7b574f86 100644
--- a/deps/npm/test/tap/repo.js
+++ b/deps/npm/test/tap/repo.js
@@ -12,6 +12,10 @@ var node = process.execPath
var rimraf = require("rimraf")
var spawn = require("child_process").spawn
var fs = require("fs")
+var path = require('path')
+var outFile = path.join(__dirname, '/_output')
+
+var opts = { cwd: __dirname }
test("setup", function (t) {
var s = "#!/usr/bin/env bash\n" +
@@ -24,21 +28,105 @@ test("setup", function (t) {
test("npm repo underscore", function (t) {
mr(common.port, function (s) {
- var c = spawn(node, [
- npm, "repo", "underscore",
- "--registry=" + common.registry,
- "--loglevel=silent",
- "--browser=" + __dirname + "/_script.sh",
- ])
- c.stdout.on("data", function(d) {
- t.fail("Should not get data on stdout: " + d)
- })
- c.stderr.pipe(process.stderr)
- c.on("close", function(code) {
- t.equal(code, 0, "exit ok")
- var res = fs.readFileSync(__dirname + "/_output", "ascii")
+ common.npm([
+ 'repo', 'underscore',
+ '--registry=' + common.registry,
+ '--loglevel=silent',
+ '--browser=' + __dirname + '/_script.sh'
+ ], opts, function(err, code, stdout, stderr) {
+ t.equal(code, 0, 'exit ok')
+ var res = fs.readFileSync(outFile, 'ascii')
s.close()
t.equal(res, "https://github.com/jashkenas/underscore\n")
+ rimraf.sync(outFile)
+ t.end()
+ })
+ })
+})
+
+
+test('npm repo optimist - github (https://)', function (t) {
+ mr(common.port, function (s) {
+ common.npm([
+ 'repo', 'optimist',
+ '--registry=' + common.registry,
+ '--loglevel=silent',
+ '--browser=' + __dirname + '/_script.sh'
+ ], opts, function(err, code, stdout, stderr) {
+ t.equal(code, 0, 'exit ok')
+ var res = fs.readFileSync(outFile, 'ascii')
+ s.close()
+ t.equal(res, "https://github.com/substack/node-optimist\n")
+ rimraf.sync(outFile)
+ t.end()
+ })
+ })
+})
+
+test("npm repo npm-test-peer-deps - no repo", function (t) {
+ mr(common.port, function (s) {
+ common.npm([
+ 'repo', 'npm-test-peer-deps',
+ '--registry=' + common.registry,
+ '--loglevel=silent',
+ '--browser=' + __dirname + '/_script.sh'
+ ], opts, function(err, code, stdout, stderr) {
+ t.equal(code, 1, 'exit not ok')
+ s.close()
+ t.end()
+ })
+ })
+})
+
+test("npm repo test-repo-url-http - non-github (http://)", function (t) {
+ mr(common.port, function (s) {
+ common.npm([
+ 'repo', 'test-repo-url-http',
+ '--registry=' + common.registry,
+ '--loglevel=silent',
+ '--browser=' + __dirname + '/_script.sh'
+ ], opts, function(err, code, stdout, stderr) {
+ t.equal(code, 0, 'exit ok')
+ var res = fs.readFileSync(outFile, 'ascii')
+ s.close()
+ t.equal(res, "http://gitlab.com/evanlucas/test-repo-url-http\n")
+ rimraf.sync(outFile)
+ t.end()
+ })
+ })
+})
+
+test("npm repo test-repo-url-https - non-github (https://)", function (t) {
+ mr(common.port, function (s) {
+ common.npm([
+ 'repo', 'test-repo-url-https',
+ '--registry=' + common.registry,
+ '--loglevel=silent',
+ '--browser=' + __dirname + '/_script.sh'
+ ], opts, function(err, code, stdout, stderr) {
+ t.equal(code, 0, 'exit ok')
+ var res = fs.readFileSync(outFile, 'ascii')
+ s.close()
+ t.equal(res, "https://gitlab.com/evanlucas/test-repo-url-https\n")
+ rimraf.sync(outFile)
+ t.end()
+ })
+ })
+})
+
+test("npm repo test-repo-url-ssh - non-github (ssh://)", function (t) {
+ mr(common.port, function (s) {
+ common.npm([
+ 'repo', 'test-repo-url-ssh',
+ '--registry=' + common.registry,
+ '--loglevel=silent',
+ '--browser=' + __dirname + '/_script.sh'
+ ], opts, function(err, code, stdout, stderr) {
+ t.equal(code, 0, 'exit ok')
+ var res = fs.readFileSync(outFile, 'ascii')
+ s.close()
+ t.equal(res, "http://gitlab.com/evanlucas/test-repo-url-ssh\n")
+ rimraf.sync(outFile)
t.end()
})
})
@@ -46,7 +134,6 @@ test("npm repo underscore", function (t) {
test("cleanup", function (t) {
fs.unlinkSync(__dirname + "/_script.sh")
- fs.unlinkSync(__dirname + "/_output")
t.pass("cleaned up")
t.end()
})
diff --git a/deps/npm/test/tap/update-save.js b/deps/npm/test/tap/update-save.js
new file mode 100644
index 0000000000..6323ef8515
--- /dev/null
+++ b/deps/npm/test/tap/update-save.js
@@ -0,0 +1,160 @@
+var common = require("../common-tap.js")
+var test = require("tap").test
+var npm = require("../../")
+var mkdirp = require("mkdirp")
+var rimraf = require("rimraf")
+var fs = require('fs')
+var path = require('path')
+var mr = require("npm-registry-mock")
+
+var PKG_DIR = path.resolve(__dirname, "update-save")
+var PKG = path.resolve(PKG_DIR, "package.json")
+var CACHE_DIR = path.resolve(PKG_DIR, "cache")
+var MODULES_DIR = path.resolve(PKG_DIR, "node_modules")
+
+var EXEC_OPTS = {
+ cwd: PKG_DIR,
+ stdio: 'ignore',
+ env: {
+ npm_config_registry: common.registry,
+ npm_config_loglevel: 'verbose'
+ }
+}
+
+var DEFAULT_PKG = {
+ "name": "update-save-example",
+ "version": "1.2.3",
+ "dependencies": {
+ "mkdirp": "~0.3.0"
+ },
+ "devDependencies": {
+ "underscore": "~1.3.1"
+ }
+}
+
+var s = undefined // mock server reference
+
+test('setup', function (t) {
+ resetPackage()
+
+ mr(common.port, function (server) {
+ npm.load({cache: CACHE_DIR, registry: common.registry}, function (err) {
+ t.ifError(err)
+ s = server
+ t.end()
+ })
+ })
+})
+
+test("update regular dependencies only", function (t) {
+ resetPackage()
+
+ common.npm(['update', '--save'], EXEC_OPTS, function (err, code) {
+ t.ifError(err)
+ t.equal(code, 0)
+
+ var pkgdata = JSON.parse(fs.readFileSync(PKG, 'utf8'))
+ t.deepEqual(pkgdata.dependencies, {mkdirp: '^0.3.5'}, 'only dependencies updated')
+ t.deepEqual(pkgdata.devDependencies, DEFAULT_PKG.devDependencies, 'dev dependencies should be untouched')
+ t.deepEqual(pkgdata.optionalDependencies, DEFAULT_PKG.optionalDependencies, 'optional dependencies should be untouched')
+ t.end()
+ })
+})
+
+test("update devDependencies only", function (t) {
+ resetPackage()
+
+ common.npm(['update', '--save-dev'], EXEC_OPTS, function (err, code, stdout, stderr) {
+ t.ifError(err)
+ t.equal(code, 0)
+
+ var pkgdata = JSON.parse(fs.readFileSync(PKG, 'utf8'))
+ t.deepEqual(pkgdata.dependencies, DEFAULT_PKG.dependencies, 'dependencies should be untouched')
+ t.deepEqual(pkgdata.devDependencies, {underscore: '^1.3.3'}, 'dev dependencies should be updated')
+ t.deepEqual(pkgdata.optionalDependencies, DEFAULT_PKG.optionalDependencies, 'optional dependencies should be untouched')
+ t.end()
+ })
+})
+
+test("update optionalDependencies only", function (t) {
+ resetPackage({
+ "optionalDependencies": {
+ "underscore": "~1.3.1"
+ }
+ })
+
+ common.npm(['update', '--save-optional'], EXEC_OPTS, function (err, code) {
+ t.ifError(err)
+ t.equal(code, 0)
+
+ var pkgdata = JSON.parse(fs.readFileSync(PKG, 'utf8'))
+ t.deepEqual(pkgdata.dependencies, DEFAULT_PKG.dependencies, 'dependencies should be untouched')
+ t.deepEqual(pkgdata.devDependencies, DEFAULT_PKG.devDependencies, 'dev dependencies should be untouched')
+ t.deepEqual(pkgdata.optionalDependencies, {underscore: '^1.3.3'}, 'optional dependencies should be updated')
+ t.end()
+ })
+})
+
+test("optionalDependencies are merged into dependencies during --save", function (t) {
+ var pkg = resetPackage({
+ "optionalDependencies": {
+ "underscore": "~1.3.1"
+ }
+ })
+
+ common.npm(['update', '--save'], EXEC_OPTS, function (err, code) {
+ t.ifError(err)
+ t.equal(code, 0)
+
+ var pkgdata = JSON.parse(fs.readFileSync(PKG, 'utf8'))
+ t.deepEqual(pkgdata.dependencies, {mkdirp: '^0.3.5'}, 'dependencies should not include optional dependencies')
+ t.deepEqual(pkgdata.devDependencies, pkg.devDependencies, 'dev dependencies should be untouched')
+ t.deepEqual(pkgdata.optionalDependencies, pkg.optionalDependencies, 'optional dependencies should be untouched')
+ t.end()
+ })
+})
+
+test("semver prefix is replaced with configured save-prefix", function (t) {
+ resetPackage()
+
+ common.npm(['update', '--save', '--save-prefix', '~'], EXEC_OPTS, function (err, code) {
+ t.ifError(err)
+ t.equal(code, 0)
+
+ var pkgdata = JSON.parse(fs.readFileSync(PKG, 'utf8'))
+ t.deepEqual(pkgdata.dependencies, {
+ mkdirp: '~0.3.5'
+ }, 'dependencies should be updated')
+ t.deepEqual(pkgdata.devDependencies, DEFAULT_PKG.devDependencies, 'dev dependencies should be untouched')
+ t.deepEqual(pkgdata.optionalDependencies, DEFAULT_PKG.optionalDependencies, 'optional dependencies should be updated')
+ t.end()
+ })
+})
+
+function resetPackage(extendWith) {
+ rimraf.sync(CACHE_DIR)
+ rimraf.sync(MODULES_DIR)
+ mkdirp.sync(CACHE_DIR)
+ var pkg = clone(DEFAULT_PKG)
+ extend(pkg, extendWith)
+ for (key in extend) { pkg[key] = extend[key]}
+ fs.writeFileSync(PKG, JSON.stringify(pkg, null, 2), 'ascii')
+ return pkg
+}
+
+test("cleanup", function (t) {
+ s.close()
+ resetPackage() // restore package.json
+ rimraf.sync(CACHE_DIR)
+ rimraf.sync(MODULES_DIR)
+ t.end()
+})
+
+function clone(a) {
+ return extend({}, a)
+}
+
+function extend(a, b) {
+ for (key in b) { a[key] = b[key]}
+ return a
+}
diff --git a/deps/npm/test/tap/update-save/README.md b/deps/npm/test/tap/update-save/README.md
new file mode 100644
index 0000000000..aca67ff17d
--- /dev/null
+++ b/deps/npm/test/tap/update-save/README.md
@@ -0,0 +1 @@
+# just a test
diff --git a/deps/npm/test/tap/update-save/index.js b/deps/npm/test/tap/update-save/index.js
new file mode 100644
index 0000000000..33c1891f81
--- /dev/null
+++ b/deps/npm/test/tap/update-save/index.js
@@ -0,0 +1 @@
+module.exports = true
diff --git a/deps/npm/test/tap/update-save/package.json b/deps/npm/test/tap/update-save/package.json
new file mode 100644
index 0000000000..cb41e88cfe
--- /dev/null
+++ b/deps/npm/test/tap/update-save/package.json
@@ -0,0 +1,10 @@
+{
+ "name": "update-save-example",
+ "version": "1.2.3",
+ "dependencies": {
+ "mkdirp": "~0.3.0"
+ },
+ "devDependencies": {
+ "underscore": "~1.3.1"
+ }
+}
\ No newline at end of file
diff --git a/deps/npm/test/tap/url-dependencies.js b/deps/npm/test/tap/url-dependencies.js
index c3e1fa2a32..7f8cc78644 100644
--- a/deps/npm/test/tap/url-dependencies.js
+++ b/deps/npm/test/tap/url-dependencies.js
@@ -56,6 +56,7 @@ function performInstall (cb) {
npm_config_registry: common.registry,
npm_config_cache_lock_stale: 1000,
npm_config_cache_lock_wait: 1000,
+ npm_config_loglevel: "http",
HOME: process.env.HOME,
Path: process.env.PATH,
PATH: process.env.PATH