From 517e1feae8fcfbef7830177a6ce256f32bc09d8b Mon Sep 17 00:00:00 2001 From: Antoine Vandecreme Date: Sun, 24 Dec 2017 10:57:29 +0100 Subject: [PATCH 001/109] Fix getTileAtPoint epsilon precision Fix #1362 --- src/tilesource.js | 2 +- test/modules/tilesource.js | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/tilesource.js b/src/tilesource.js index 84aa5a82..66badc9c 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -360,7 +360,7 @@ $.TileSource.prototype = { if (point.x >= 1) { x = this.getNumTiles(level).x - 1; } - var EPSILON = 1e-16; + var EPSILON = 1e-15; if (point.y >= 1 / this.aspectRatio - EPSILON) { y = this.getNumTiles(level).y - 1; } diff --git a/test/modules/tilesource.js b/test/modules/tilesource.js index bac637c8..2c1a0f42 100644 --- a/test/modules/tilesource.js +++ b/test/modules/tilesource.js @@ -107,6 +107,17 @@ maxLevel: 0, }); assertTileAtPoint(0, new OpenSeadragon.Point(1, 1239 / 4036), new OpenSeadragon.Point(0, 0)); + + // Test for issue #1362 + tileSource = new OpenSeadragon.TileSource({ + width: 2000, + height: 3033, + tileWidth: 2000, + tileHeight: 3033, + tileOverlap: 0, + maxLevel: 0, + }); + assertTileAtPoint(0, new OpenSeadragon.Point(1, 3033 / 2000), new OpenSeadragon.Point(0, 0)); }); }()); From 8e06e5eb39107195378a3f028dc5d0a9f9fb245d Mon Sep 17 00:00:00 2001 From: Zsolt Ero Date: Fri, 16 Feb 2018 21:09:56 +0100 Subject: [PATCH 002/109] fixed IIIF options.maxLevel --- src/iiiftilesource.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/iiiftilesource.js b/src/iiiftilesource.js index 0af45c8b..c80a3f2d 100644 --- a/src/iiiftilesource.js +++ b/src/iiiftilesource.js @@ -127,7 +127,8 @@ $.IIIFTileSource = function( options ){ if (!this.scale_factors) { options.maxLevel = Number(Math.ceil(Math.log(Math.max(this.width, this.height), 2))); } else { - options.maxLevel = Math.floor(Math.pow(Math.max.apply(null, this.scale_factors), 0.5)); + var maxScaleFactor = Math.max.apply(null, this.scale_factors); + options.maxLevel = Math.round(Math.log(maxScaleFactor) * Math.LOG2E); } } From d44e907910e4bb8a8003a905997b07a364f9ff3a Mon Sep 17 00:00:00 2001 From: Zsolt Ero Date: Fri, 16 Feb 2018 21:14:28 +0100 Subject: [PATCH 003/109] added tests for scaleFactors [1] --- .../0,0,256,256/256,/0/default.jpg | Bin 0 -> 19787 bytes .../0,256,256,256/256,/0/default.jpg | Bin 0 -> 27594 bytes .../0,512,256,256/256,/0/default.jpg | Bin 0 -> 27462 bytes .../0,768,256,256/256,/0/default.jpg | Bin 0 -> 11433 bytes .../256,0,256,256/256,/0/default.jpg | Bin 0 -> 23477 bytes .../256,256,256,256/256,/0/default.jpg | Bin 0 -> 37166 bytes .../256,512,256,256/256,/0/default.jpg | Bin 0 -> 35471 bytes .../256,768,256,256/256,/0/default.jpg | Bin 0 -> 15538 bytes .../512,0,256,256/256,/0/default.jpg | Bin 0 -> 15352 bytes .../512,256,256,256/256,/0/default.jpg | Bin 0 -> 19967 bytes .../512,512,256,256/256,/0/default.jpg | Bin 0 -> 19674 bytes .../512,768,256,256/256,/0/default.jpg | Bin 0 -> 11549 bytes .../768,0,7,256/7,/0/default.jpg | Bin 0 -> 717 bytes .../768,256,7,256/7,/0/default.jpg | Bin 0 -> 716 bytes .../768,512,7,256/7,/0/default.jpg | Bin 0 -> 717 bytes .../768,768,7,256/7,/0/default.jpg | Bin 0 -> 712 bytes test/data/iiif_2_0_tiled_sf1/info.json | 31 ++++++++++++++++ .../temp/0,0,512,512/256,/0/default.jpg | Bin 0 -> 32573 bytes .../temp/0,0,775,1024/194,/0/default.jpg | Bin 0 -> 22995 bytes .../temp/0,512,512,512/256,/0/default.jpg | Bin 0 -> 27710 bytes .../temp/512,0,263,512/132,/0/default.jpg | Bin 0 -> 11244 bytes .../temp/512,512,263,512/132,/0/default.jpg | Bin 0 -> 10140 bytes test/demo/iiif-tiled-sf1.html | 34 ++++++++++++++++++ test/modules/formats.js | 5 +++ 24 files changed, 70 insertions(+) create mode 100644 test/data/iiif_2_0_tiled_sf1/0,0,256,256/256,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/0,256,256,256/256,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/0,512,256,256/256,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/0,768,256,256/256,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/256,0,256,256/256,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/256,256,256,256/256,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/256,512,256,256/256,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/256,768,256,256/256,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/512,0,256,256/256,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/512,256,256,256/256,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/512,512,256,256/256,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/512,768,256,256/256,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/768,0,7,256/7,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/768,256,7,256/7,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/768,512,7,256/7,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/768,768,7,256/7,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/info.json create mode 100644 test/data/iiif_2_0_tiled_sf1/temp/0,0,512,512/256,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/temp/0,0,775,1024/194,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/temp/0,512,512,512/256,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/temp/512,0,263,512/132,/0/default.jpg create mode 100644 test/data/iiif_2_0_tiled_sf1/temp/512,512,263,512/132,/0/default.jpg create mode 100644 test/demo/iiif-tiled-sf1.html diff --git a/test/data/iiif_2_0_tiled_sf1/0,0,256,256/256,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/0,0,256,256/256,/0/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a29c556846485ecd2e21edbd014889c1f7ac7e97 GIT binary patch literal 19787 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 literal 0 HcmV?d00001 diff --git a/test/data/iiif_2_0_tiled_sf1/0,256,256,256/256,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/0,256,256,256/256,/0/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb38ba74c203b632d08710801c8f2e64b9d94571 GIT binary patch literal 27594 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 Sa>E31>5Nr2?RG0AssGu%>fUMq literal 0 HcmV?d00001 diff --git a/test/data/iiif_2_0_tiled_sf1/0,768,256,256/256,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/0,768,256,256/256,/0/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8cf078fa900f40166dc21ccb35c3997e4e5f1324 GIT binary patch literal 11433 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 literal 0 HcmV?d00001 diff --git a/test/data/iiif_2_0_tiled_sf1/256,256,256,256/256,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/256,256,256,256/256,/0/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b57469a8b78e054b1cfe554e23320af6221468c4 GIT binary patch literal 37166 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 literal 0 HcmV?d00001 diff --git a/test/data/iiif_2_0_tiled_sf1/256,512,256,256/256,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/256,512,256,256/256,/0/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7fd76a7881fa6c71aac8dfe31ab5fb8253592315 GIT binary patch literal 35471 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 ISgp_h*&t0V#sB~S literal 0 HcmV?d00001 diff --git a/test/data/iiif_2_0_tiled_sf1/256,768,256,256/256,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/256,768,256,256/256,/0/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cf96a40527277f3f199cec2b2e60ae415e0b041d GIT binary patch literal 15538 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 literal 0 HcmV?d00001 diff --git a/test/data/iiif_2_0_tiled_sf1/512,0,256,256/256,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/512,0,256,256/256,/0/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ca605428aa9405d0a7a4686b6bfa1676146a9a32 GIT binary patch literal 15352 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�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 U2iR2T=Ir$k0yT(#__zGO0PyAgRsaA1 literal 0 HcmV?d00001 diff --git a/test/data/iiif_2_0_tiled_sf1/512,256,256,256/256,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/512,256,256,256/256,/0/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..41dd14bb8cf0d3c8af3d117177a5bc51588a1f29 GIT binary patch literal 19967 zcmbSybyyV9|Lzh3N_Vp~($e8lDlH)hNP~1sFR-+9gMyMGEhSw`$ASn*H!MrX!Y;Xl zc=`TrJ(4mP8fQ^NNgN=*xpHV;b4t{6{;F3S0U=vZoqkLnH&+bVj z8lF~2!11E4ms)QU#VPjQE8_7J8d^Gf1}<)%r@VaP5|UEVGO{mUDXXZescY!JH83=K zXKZ3)YiIA^=;Z9}54-5{$hDUx)P0!5E%`Yr2Z6G$cws&^-_7BjfXXh7}SD5RY|KR!$&i@(z9oYYY zi~Io>HZCp>F8+UTVPX3}9602-kJv=;D3spdTYFNni-r?Wy+|vp>wU~2riY?_?=|^^ zhEsfl3;iEx|Ap-T4p_wh7qb5a?0@500ubR~J-j>|a)1KhX4TCnHtCZedjIl-kPi9Y zAd#Ax`ThA7p|Plird^F@i9(E<8%U7JR&MS5?VE-G8Cv-4|KB;LaGFPwc_}TT|L?v$2OIrq*r&_UpV^~=RZnm4D_h8%@OIq73A2!j9 zP(i4Bkxt+1|^rcfBpmP=i}8s6Ua`` z@4e*YT8T_;crpE>l5q{ibwTBh1#)8AU40+mH7gH_}k}ev0-cT`52G_ z{N$*bUw2Bplbeyo+P`eLxq{A^hhCsKF&eVTe7HS<1>u{97{g(WO&v4K1Jf=yr5SFX z%(n$XgL$tee3Y&~u_t1O*z?IC*F&cBDW<w# zNkO-M18fcJ-Qc$Pyw$!tP zsMFD;g=GrfewLEXN`2TG(;uH%%sNfN^CgumS+}wD< zyQlKA8U5M(W;pU+%QU?O5QpBTs$J@ztkm%J6i*CleS}HgnQELmF1gfCTsB}Y56~Y2 zp6lpb#Do=}Wmr;Sc6;T4^_Fo+nzmqX-;GrTos9l0{X-9~0XJ4+p3K26D@`Ayd0s&z zh#8R*zs5OTd*Kr6rW4~cW->3^A1V2rLoihng6u=j_zm)CEHyuIn7k2}m5NKsiudg% zT5@df?4XJW*0Po&kA5?BKM?V@Vv9`KN0ub~JJ?g`{p9(mmLN~+82e%myRq4YO&FF0 zS|JAVya>G8{|^9Y)FE4!7|JQvsVJ?$%|cRwq896S{Ye<{1GaW+C60jg77fK?kV4E zTU(zR8x_#q%r`RmYn-XO6!0 zT?%|vCqxs*;r>YK!;rHc)}gL?lPPuvcGGWOR?g6>!!d_;TX)XdPAB!pu2vN4J%jeE zD;_CyqZEqx``KgJgK5RDj_uswr|O4>g862iNd+d+zgTUIMpTFBm5pEd(h+oocIGqxN^soqaN|xe|o4o)WenI zRuolHr|wpz2m_j&cE>MC-L-KW;bs$Ex)Ox9Kw%suXHIK^xjyNM>!tSO`E8-#x2p=s_kx?Nsu?|`!mXDS~54m0+=E}CogQ+rCH z?_oDm7~9OkT*U)B37z={NY@wf_#S<+Q?NmoWuQRnZjZ*Rpq|OcnK3{9K4YfF727<1 zM?QhyGL`ZDBq&DqC}=mjivo-@K<<1~m5-C4);`A}nVpneNMLAHZ0m|!Te#BcIUm2$ zig^idv+W3g@{~dS4fh>B6gV*2$4M)*eAz4mk!oDmZmi{1g8PTo2?T2)b~Vd{1%%A% z&8tbj4|({+a;w4sJzH>3bC1Cs)5?>$d#Rt6PK|*S+(^LbV2*0H^JDvk>ItU&q<6{~IlWv{X()5V`N=q6sE% zNR1V$-3g_lsbwS zS37=E+>>!-fW;^?9@2#T2dH0{)_AK+SL-NHdK9K~7BwmyymcyK_UbphJXnZ*{+lj!^=FbL{xqZVU?y-6k4U-T} z)aP>RbXKIgYb|Y7)zIk}sQ?VJ@~01+y^*G$2yA-x3q3DE^{0Rjo<@WWcT3&jWMk0tej!Z zmrYyirZg-0p~a)}i60o#{x0EL(s+rjU=D;}X@PsUyFIrI6P^I6o`1$(F#lxZI`P3e zRaJ;E_}tvQ_djJx(Yj#C0BdrQzxXZP)Cz6%#fF?dY4 zj{@E**nYZSGVYuC*zSsP^Nz9I_)9Sd&gAFk)Vn4VN7ZmSLM1fueDob7UPG0o^0ui{ zOUne)v$_MDkh)~A;1BqLaHubBl23PRmq5cb#1bJw8wC>a2y*kX)ru5R$mOEzheoM9 z-eNi%^kV`10lnEsS!~dq{f=&~^sQKPEYkg%xk34RdO^jO?OlYK7>lOuU%mjY?q_XT zHe&FJp4NM6$E>B86exWmR8khw=cc!IpqY~sB_kT0a9qBec6tiFsu|q~?G^sGbQRqg zN`~?8Pms_1kTK>W2v2>jXBM+kyi3PPbWVMCE-BC2*n-+lN=cTuRfFhkFiwyicuqXc zltUvKya2opD5#YT)OCG+|~2vtasjo2E|oVoBi4hibKnEue%b#jRr zS&)AS&$Lyr?8UKLzJe_NH60O}9i7x)So;KZ5-ZP!In=~BId;j2=`Lh!g zI7WS`EMI!Ipo?`N12ZWq1WybGDnvrwkknQk1S0Rc#G6qo*-4F~PHZg(22YtHY)B8F zyPOwenjhOcRf_Y={`e~Zy672W%q&(jw_ZVcbVft5JH)32-aBWAzEt!M$ zM{+KyQoLEMWsud5Ir$N#351-5Z?ch2e6-b9hjgW>vvvVl^M?8pjc)*LjGmV^nA4~c zqdy=U8t+=tRhNA5bRb%W;*uuXz&b+SaF@+^_YX_5YiWaX?4>P zB2MJiTkcCoYS$}pW*9U7s)9YSzcE^>H;Gnn-k0|xXE~BTr{m{$t-@bF(z}D`K(}+g zR#TlYTJKrY=s}sFx2`Jx05A9Td}_S)l*@3!U%zbs)C{ER@w7?iO~!#m&R28D&l4VM zFONGBSdS)3&E+%laK~J$=xBeMgqfsr;^S3@+Vw1@JL9RpMh{rMr68x*Q{pUp0Y027 zEd$6-S@E+PEYC9^uz%Tl+fmPJG?g0fPmV(gL`dW~w&qx1 z&IzkWj`~r$&@)F0@DER<~ zZ_23zGW4M%GQOL0;6Pu&lJod~rYkS}GNnHVuFONf4;@H9akxW;ZmWN0K8ECN4(gYP zo}C$61^XeoWI#9<5|^QgFPZr`Z5g$GSa%gxZt~&_DYOrSH0^D7KX6@w<>MPq;iFj; zV%s-wNuaK@+MoDuk7fmyx{Zup?j3aNf!rtdferFmh?K{e@AE@s7AEV5H(NKkl}?bJ z7lpr;H}TyeKOYZ+3Y^apgyR$_k)v9kh}PW{Z8QSxTjVB()f)XWwdGF21#d=k zt<|_)_-CK#Fc=&OhVn)qljY!lDLz%)^PbtIF7!aTC{N1MIp-5iKU%%a@uw} z{3UcsF)fIp0z@t4;z7RbboO)~gI#lNz-6agct;aIuYs>+`_VJYb-E#9A$5t?wxXs4 zOTthG5Ax;15Sq4m@liLLiT*jGZ29kuy6O8(v1P-;vofS0AS3AyhKpr#`Y7d*e08*K*9?}NBv~==MH_1$&QxIt8=0q3` zD@bYQGU*q{oqT|5R^IY}wZut@7fhYAkx4so{1bR34v>8@P>c_(hBn~9C{_0D&B;*# zT+r1eanmTO$z}K?cd%RyR525LuIHICu8w=^8GpJ?1Tn;vAn4^8LkIP(pMWd-uCi)7 zH1Us4urr`{>*6uVDpcNsFN?uf2#*0`e)xDEFli_)2r=q1T2YG>FbZsB`UWW|U?uAT zka)-E8?PgnHy1Ad0f_G>SV&MmFm(bpGx8&dcT>+7Sndsn7Wc-N_1M-9JIp)fV6a^?1T= zvh_XMTEQ?fEQZtuNsIhX zPQkh)b!7_F-%jt`VwyY(l1#Ye!w4&<^t-wFS657e&fNG8NQmN|J^!@%{cgnum?E)u z$Ahu6My2$9*kf>8z4)8!HNrPiuG!gRlUEc5V2Qk$|7~J91dLs>j0DkmK)kVEBK|5P zt>!L>#eBzdu?5H2zYV=r^W)`6#iB-bH}DKF+aQ2pCpErfiq3&aQRmIXqKk}HwWng5VjQ57d1Nt+4f19Mg4I`{hxG6wGCVD{+LkBGJAEBVJnj6yHuUJ`GoA1^vu3{BA0^$QzKn4bl0bBE=_N z&y^3}23zlI?}y=ko&C&r3)&xvIc73fFJ}X)eJPFvM~I3IdE)He6tCp_eR=17UK9S+ zm1cbV!O==*aDB0@6}(y65YBQI?yFC z9U|ny!qqtAGu*TQ#d52nR}L2ucZmTvXKsAiav$m0<2#XCW=9_d;dS2f?K2c%nwAGG z*jr)-TFBPaNplkgkKenEe0WT6kBb$V%r|&-w2++@dwh{F!RRuNZ#1c$QZ?{hf+3Ua z$7_rkwy5?W*?WlzM+F*4D1OfbJ?8LDmfBp`2vuNomVo35E}m$-y<(^7s7<5DMtqBO z)ff-rWH4CXO;u%vG)BTr8Nvx?qjb-UBXO`x)|;Rro{^)yHRobYXUP(V^1!Z)C4bd zByeCjp7j)X*x_m8LG!5(dKZg4JLdbQvRwnJ$>#l!}lf1_PvYMrsCG&N*9Az%4L~eiuKu$)e zL6(JARoar|)A;!LE}u~fNJ2EfS>(pp_FC4)@~8r>9I9D~Gfgdtz+ZQT>>FRyNq!l1 zR?+?BI<;^Y)e<=KbiTh?GJB}rXH?K|f93C&ukXY(3E)FtmPou*LD_y4cYS&Za+w@uX*mx*+CZtC}010-LfvB2Wk?7FuZ2 z^znHu-%F0KMgl*K9#img1$&PL)kcF1N}XGfB@){oWshhk%~toDvsi4FPjpq8)kY3f z&q{8&x3uiJp19fw!&Aa`i*&4L4hQFmhCsTe2jp{kjk&u+keFCWY^C=d1ocLrHsw3&+^4s@W zS18|V2b91sUuhGk+R9}lN%G8JFH!o&&`XH1Km^l>RkT39BzgauAJLKTkf&-X(*3oz z8Tz_>i6%Fg!z=XUJ3qpuv(91->+0jU0(#RT)AT_ddsiDJc1}B3&@el;)=}w9yG|Z5 z=vImGlcTtH{}wGKlV~k6j3t(?c-?kroLzg=R$+1AXOc8AP_?8}WV*+YMzarGa#dY> zx6a8c_a*Um9{9th0TP7H>iKIrAkRE~+=w)KJ#(_Ibw(IaNF5sOx=)z+wTh@y8sQD)xReYqk1s#5`qRs z`RWj^g!WlFfdbtlAkPD++I980T7D}T;}^r8h5`x9*Vdj(@LHTtGSbd91GcVYaF6eMFG{Ulam-1!@Sj_V^O*Im~rR7`hfS5=Ea}7*M7rlpQ zEJ>=NVzfz(i}UL9Lro=BH}-p{Rb~R+lG?@%jUQwUI>iu=lDY?lDVj@11!1BajTc1GH;AEokO*_KClYzZ14s5=p$?VjIy7_rOdFHw%^|EvfgG zj?*e2GPCw5#6j9##(JnTC!_maPnW*9ZEEq^=`KfPeBF15?w@<=MKJ6IYCgQy-UjjX z?m6zW1MSl_Gmy;6)UeK{XKH2+X)g@etE6m95j;m@n?M>fh=!yE=j32kLQS;H{9`Ihf)R@GSbWbNaO8$@j zmfmFaSII1}YiV0cn{l=MSM?S4djYJ-j8v~@&V1gLWj|F`NiAe-<~i0ru~NY@1Vjd< zWuzy(<9Eb4i_1q-`=@eEsTJijO2nH`UW>O^iN;Qe%?nw{>2g`K@);~bBGp{CT$9Pbn{uaB0Kp<8|eA0H`w)YH)6G{Ju zyXbmg3D+O(!;+i{gRpZM{wHc@;B+dU_Yv?e8*$9NL_*&4AOl z#${mKaLCUcM`iJ@lGoXZc;X90i+i2)-RA?y#ArZmqI;Tl30Nnf0C+W7TMv5ehY8h^ z^O~x?2hE~uiUyIJfv-0oe)tjx+smU{b_tmG!H4jZ#Y0#KOTk9TN?>#Rd^X*Uo3<~HYfEg@>CG5~dEjtQ$< zIc&aXM_tCZ{Bfqu?wvzYti2%FWIz%j6Kx$FM=BFCw}Q&tHar$jU@U|&J(V6+dsk)s z{_SzU4-PB{iy~mmL+VSi6nNVFHa(Vv@?3Y~7!#1lH=T{c=gV?BNbUU}?lj2|RnUPm6Uf*{|a>^jaqv)+1MQ? z&y{_vJyQ+U{G0Q*ej3T?5)Izct^3A_+|v%=;V5y&z~EWQ@~ms%2kq-6bTa1!IzQ5m zh*bCsw-T9oT=ICpD2q%@_W-box+bm=^Xo>3z=d1qiRJS0TCee{7-IP#Bd$LBaB5F zO$o+KNJdYAv-&elo~?35j;22XARmEcCU}xRPv41Q95#dT5g*rh<`n7%tLGw}N*Zb0 z*W1$9kHZN1ZPPV<&TDLR{#MzeO8Om5=EHp(Q`9xZvkzn_9B8IqNKUYhj6TN+dpx{# zRdcv84;#4)*u8f}=O#FG2=@Gqr>v!#v?4Mkeqr%+| z4=MaK#(&@jmycaBHFwRgja6RkN%8x6&uiXz-p3wb~usR3RjOJy_is@hlFs46Uy^ z@*B(oxr35je&2J2{K;NV3SnGTwJSc9rwM zanC}a4o#Ei@qT`3WgZpFNyH?z#)toE_}Y7fIm!!pYrAg&Y@HE&p#I007&VvY*Hv7f z5vuRDbm=*~NNFWq%f9sleI)(|7|acpjaSs< z%w=%FKKQ!(VT|s&P8(-*qVo~yn+fsfWYVQEV;t(?YOh~%*x%BpZW|sp00B$f zpJ%}n7H5yO#G!erSf!+CCb)>D6M**kZ3Xyuxxbl zY+P-a$;(;LA0aqYjR+Q9gz6xGPcSM#5}r77r2g-=M6r~#;(mHvUeG@PDJc8EquZsH zXxV9miorjQc)D*&BuCTg&tMDThxN4-PaKZg636Q!2gm$i4|r&jiBMCSODaZ6yR|^^ zkHQ9{WcoU`N0Ie!G#MB+`k=G^ob7sy=?NK?XF~=_(t-icGoMeze9&36Io>J$SKHx_du_<{@jHH%kABRpo zDl5-Ps4V!$*QMhnvoDF}N+Kkq;SwK-V-4NYn08?gJbw&+BK z>h#rXonITVhVQ}5m43nrQ#FN~F=(l{rfLr5CNxOauz)+y8ML4jOU`JmP3w)VzWozl zrts_%H*FM?u+cJ521Vz!gBhMDFrH8^VG=3J%Rc*4kmV~~3}YpSoXEMzpKLe`l%E$c zEGxlv>sByb6J{-q^&LqzypM(S1U9{ZpWJ)4&TGFz*wD0U^QsA44YLwCn}zo4Z<^W~ zpY9!0EpNQQ(Xax>YMs33GxnmGqeRndQ=_f;PYAT#K*4fOZ?fjS9oAGn~yjyau9H`H= zQ#PKTFzv}RLT8Q~P>s4TQiQ(x#9wK$Z{n77vudwHm8?in^IyP~m;F;d{{XmqmliDD zo%2vFpHz-@bEh$^9o_V8JSvUnJRCdpJDu|zvjuVA>t<@8nxU7O?a+X#Y7;JF*KZ1b z^u}O&=HPbQIq#k3^74{D2ea5uM+8F@Ch>W2@hxP%meY-I;zhKr$rIfcNWX zBS+liXMyi)+qV!uM#vvU!XrY=0^f$4o39xRsc{0dwAym9gZ{+7jokCr!%`&6?0+9a zUk2hz8NF&)pUU48gXsh+zP0Y9{tX@v&er;s5x&)ZT9fHN@TKM@f|P-IIRze@abBJ| z2s4EI10W3fH>yGB+}Ntqf|eBGVXNbR6B9%AE!{AUp@YI@X?HZ*uv6*Um@l?KFP*~& zzs64;=i@+X5z1moh!L}s5KfR|O2#+T8j^gyuZmKNZvk>n_w}dz4 zX>ROPGdIdJyWzdlJLRbNMaXbJisl$z!Mc=-@y1CQYRNX7Ub&`F zD^7(wxUX34R@}Cgk}g&DFZri536maXPLwXZdTD$}CZpc8iYXtPtn6yvhdae`}Us=gssuH{)Fw?2Lcw8A$$mlj>*9Va4DsiL9n#eJCy69dOZJ!-guB|yvv{UgSC}s*Pq+^nF6z! z%37Yb*{qzN5P%h6*%qHsRqAlli%??lk5khxP|VDilGSFVkv`&G!TX6$e_+Fr{4>-8 z--R;nTd<)7$3NTsaISaZt)@?d#{xeo=ht=s?mA`0`3uoTNa4ag3&7-^b&-iWf|=n4 zwM-qYMBInmxN9xgN$Wj&pI6C%vVh;%F{QWLjD_ z)9!+d{()CF&T;JtL>*mvBPY6Z{P<#Vt0`3!*_y^K(x{<61b=bSvs)bi>lefs$kv+Z zH4Qp>boi5*R&N%v&l%-cInr9LAoZ(j7jTn(c?(SFCV}u&>@AVx`8D^Ow`9F*4pO79 z-ZA7_y$Vy=VM~@v_S9PlnN}dKT~{Lm=L41+Mb$laILaC2PrHE}o_+aR8lT!(Jypm2 z4coU1diKu`3mzTPWEaHTnPn&Scb405>Ui#aLGY&!D$&D6bD8F6S#T#odLW}(mz(@9 z_dAhF0ez=z&dcvIM@qUHZAU6<9J%>HZ~cHQP~u9kiVl^D%Zp9TmaL0&O!~t1xjC;~who51{hHuTB#`Q~KYLtz=;sP56qs56hx~0g!~THp{+BU` zCLK}nZNaXk!=0%$ON8R)-$$@*W{6cT``<@_ZGKZBF_Qe?g7?lAOz6ZeCd`P91Dx1v zQNm}sDdDNzTLnJXRr=oRl52HVhtxpI*O-_xOv9VmE;iFejPSsRLl(~a(OI7+n%K!m z=O0rI&4|L7D;*xX+MkURWF`lf%`NTb@UFTJbJWU!e?R*r>puV=YMuOkGJ7`;V&Je* zi`Q>mB3V?uvPb58b#O)0&=;Ps!)fIvhc9#BTqGlxDqS3K6<>9yBwvl#sz+JI@nj6# z6E@d3IUOn5x9Xj~c3?&7r)$gRhCTAOc>1Tw%|UfuC1<0X?vTt9W2tj$H;epQqLK`! z_w4v=0Q*&x>ww+4xe)_9Ty*vQgub{;DR~ea4o1HXhI;US?0^nwW5I=Ad(V|(DsGjH z9YY?^m7z+TO4l(l>N8e#(D);oQ{xqWGN?Ppyfl1jC*AL7n@w8`xMOHLz12S0RZ)%MM;JGwx?^+K*K68}QjY5D zR2>BNIl5HkZ5{!ItvVYl^%w8lQSVT*_l;|OKht5Fsl5SSb~vsp6yI!kWTc0@Blp!S z?m|#P3Eb(^;7ZLT2^!0WmL(kC6;b;5ExyeTE4{?*JtMwjFmQlz^n@Iffsh!B`FN)! zZoz?KZj^-GN>@In-I1AijkBCD5hwG=9(4PgJY?94rJDQA zOV=GREJJ+}8W+NYG3s4<8#vceW8$=AiwO#<;QTcPV-y)hPcT>hmIx(+h(6q^735k# zcJbKbrOaeMwc~C0 ziBC4KrVEJk+?F)wo-@@1&VPhR<)7(HbrC}E>F4Or*J%!1r0>VAyjk7iy=0SCG1odJ z!NQ2zSVM-82#!B@ZVy&M)1ZOrlGZt{vngHxpN*X%ku4`coudtD&bdwwQYh~C@wKFK zdZT5V7Tn4hWe~L#1K~eh6;E?j*f*N-%+jkY{koEHFPI)a}RqY0`+d z^Ty;U*1_{r*)x5symIv4^ectb+y@cvJuWsB2NYM;H;3$a?tQMQgkDqyvNffq`8vY2h{L}A#zOxl%(m(4O&RR zutPPQm7VYIpIPaPZHG(QX&2C0XHofRezC|1Sg@BJU5mvnF@|BaTeT|j9}!=_|%8n>qLnn zmQ*^^9+B&0)yRpc5aw0K_OX;$!E;8_3ZhGa<^ycNFH1T@y1l?mmZS;6-f%<%{daZSPI8UrvI|ngsZeg~u|U%ZVj{(ld^1Qs{J0}I|nCO%5(`=}%Yz`MA+4Fh+#(^?GAQO|9I-KYU z(jDZxQ7-JW$2Bj$Ak-wCH26cVkKbG+jN+H~8Gx9iI7{d7=GCdt?ubcQf_Ny6=H>+1 zeo1oFgCHRv6U=ih>Q!Z4kS$$;2i{TzuwRdAMpzzIDhs-8R(88<%TjPm&FI3TGQPhz@Od(W_N553#*}aKklIJyiLFn zSDMW<^J%dNN;B#glf^wB-jz;f-ps}H2mO6<+fUY9^vwipZsV5vZvX1BI6DYi@(93- zo2pta=kzvjE}Yt?!o0_)EEi)Wb1v zQ2U7o`1!JcGGqN-EwHOQ12dC;-E&s$K_X- z2%9`j8%z%#(v&;K)&>uyvHXqNDJ4biBRiJE@2SyE?dg$no|g7^Mv?N2bMHty%eMad z5zPrf*c+x#j4Bn&0(?T6nR~*|tqmWu(!t93V;WxCUFb(Fo6J~Z`CImwSFc)N6HEcP2tf?Zs$dm3i-g|Ha!w%zwnL#_+oIfT{^ zX%0a7a+4#5t!rS|XAN-(X6L!1%@}FBd6V!?B9RwUuHWB71>!ypu0vJ*3)7 zB@+P_{o7|C%}ZxgO2m>nv<$(ME3PvuPytMar8-!^zClip}FNz*^iY) z2o)+nuaME9bEf8a&B7@+m z3d+(0MJe~`@uw5g<;A(*<%b~%I>5K^3(&pzj%z8HIDh8L6K6^KvbvodH9Q}xqO@Gw zKs`0$SLXe!zz@kzSVE!N_l=1wo*K*GK~*+3QQ4g^jXuMWJAF=8^DZ9hJCB83EqEsM>ib#67_j7w-k8yR(jz)GeP|@FN!Rw(#qyFS7>P zZ0-lofS$r7pP#F!Gm2Q!_I}orldd%q#@L-c8@N-uX`b(=ljPxTF67asj(L!^2~)n4FD*k5G?L zr;5WR;^d+L$G6L?ue)VkITO^2*81E z)lwh);KH^;`M)d}Tq=t?s@{x0L2?Ia0!80=vM#sU97j&yLgy6vfp`yfsHhTVJ=n(Y zCECRcO0TqoIW0o*0c>L|P?@&;aghG*)a83mhlzAEX3LGM{>L?$=BC>1Xq6JYN)Mq@ z>tv+ur`V0p2@XtnD_#JWi_X&V`um}KLBp(D$&(jz4m97VbyHjNnEKzlPq5-)8GzZ8 zYKxmZ!b5OoeV$jdANF1HmaVKxY^bFc1^iZWFvRE2#e&fx>hFai)b;4~zK4hSWY5Ge z>$^<443hiQZxHu~3eXvzxtx}PnF&(sU^`v7?l(qpM^-$T7!y5e)>lRxHq?9%HRB|l zaO)266u!g|kMs>f1+)C3fozA1; zl|+2>3=NjAVsV(goX!TZU!MXAir4LaMjsByeyR>e)th!iGknY)ukxHhCt8tKyMZZY zYoW&QuQkH8?%X*KwcyiLb-ytI?T1Cv<3?q#=R;BVw;RC0buyS+DVV`Q(}lJ<`t(o- zT%ApQO)&1+Y8zgVqmUFR*V028GuJ{xN*j$dd{~#!_>nW6sPAos5o1>fp;xe$W_f0k zNO{9HQc5LfzygSQUUKlvd1*VkvTm3>sy?sO+8*nydM{2Cm`k$T`D&-QD(2U*8;4!MkNW40w|>|K zYZX+vR#Op+TZUY9eO!7XI^$T(DdLgXY1yeUdU|+>ytz~&&>u#^coH!cQ76DcG;_nB z#3>Yl+=%%5Oka@(RyYw1UaGI#{CbPFol9 z+zVEpJ+6|va(yzSF$E48^4$*UJAf@zlI~m53@Ije&7g6k?quBXQ4(M8-7Kl#Pp$VJ z4CM#g>yG`@e{M-N(9wk(!uXi_Df5>`bI6nw%2$I!-`}L;xx#fu$^QQwoRlsA^DW+7wiq!NV8@7J_wOsy-{ z2(L{TE2sva(fx+pb?VR^JAc0)2NFv>^$q3G@(?;crr)KRuYb=UOG>xpV=5E zZOUz2R?+u#Mfo5Bwzh&a!gxw$#hX`atMlklT)Fm5JJ-H&|S z*`|&>54gk`xZvGGK~J?yvyChF^KZv(MKh}~#oI+5>`tTJ^@i@SMlJi(%e7$rH$jzR z%oVLr?@QAFstWSfeya%2j#BB$Y}KP)xE7xvuEcl++hpn2?@q#BUslC%OAbBj%K4xZ zQks+N;VrLj0gJ@=oeX4JJVDual!G&d2#diDCh4QbWNK9of^ComlE;Z+xQe1!Tk)5c zVOiPHWvKa~K$gPLYG^wbaxPccmp^uGhqYWI3g;N9+qR;u&Liob=b9^v_TkC9FDu$WH}#u zJm=e`S@186yhE>e6XCXrsp>lBvv=Z4omK|9OXRb81R;VaoCe^a0@%kn>&7e6d?oul zcn0dj!`E7Vt*dJGx;4$iM(KZn^PDtH5RIUJvx0ffa%$9{vR{N+(?yC6OI?99yQyv? zXs<~uvNl>Z{{WtTo0A6_&T~gR8~*@+HyKApc&CN@ec~(M1pGA6?tE3R+efY4YIb*X z>G6r~(P1P)vA)uCl?q2vGEN11{{Za4;$2V0p9Zw~3# z`V_i8vEmIL-%7Za>+CRJw#%s`Ah~jR0&bGT!rD}{@aUP6nx!AzWCMtP&{1$fvq>S-J)OgfB?b4m}Hf_wC% zQeBA4Gs}{8jAt|nS;ldSm6K@XXWEz!TcBTINrEDo0grHUubzUP2_?F4dwNqPA3aG1 zOJH@VD4YW}zFbgwV(2qeem*{_G@K3vlj{`+I| zHS1;D%j98;=zgGh_r+SKm+@P`dOelm#ir_p(OBM8=wy6l^}nr~a*Z7lY7HarIcZDZOHjRVRnUHqvdSW|oTfY4qrP=ccvZui&4FO{d&yHddNerycrVORI*SCxtLU zJ!LLeuS{SLMRa}})iwPl&*0vuo*~vIo5eTGby%*h%&}Y#n;27_gB?J{dj9~!?}Gjn z@RoyVraqHld8o&095>f8ATM;olF}*n$r}o|7Mt-8!n#9vYHLk??dHC+w}$DB zy_&=@W!M{F+;PH=bM08DG?TyebI_JHoo;wWEv;V5Rm*O#Yp!pW*E}~^zSMLZ4;y&f zPQJa>{(|K0w7xC_d4UTbv$m?CliasLvlS#AqzV<#O)HZ0ZV{d09;R{DQ z?Jt9X0-T;cwd>md0Ku;YYg=wF^jk;~Clk20W`-vq{H)*|q=S>1W%t5A1m8c1KGkL= zU1Y7^r5u+{wYCAaU7-AcW2pC|l1p#vb3d=ppDUbOwYn#wantTk?>tB1pNM=-FONJy z8&9cRT4`2#W~8^4GWif`@Td|`laK>Tf}kAr$4dHZ!8-T+CB7BYb)jc*V3+VM!rI;7 zOBi908ysf1om=78!)-H3xYh6DjvXrPQRI-{N@2a(f{e?%_oM(Z*NB5yarkAz4EjsqU{1(p3V09!e z+;BxfHL+yM_027X%r};h+}g;p+D?lkPNd+e0FJ*}u&m+m2Nka8jb@#hSXrv`jmOZ` z@kZXe2lqukJKK)F^zg(I4l+F{Sqqqr(~gwY`2|kLBAc^yAh^i@lWu#CX+o;)$MDl8 zRz>-G=8i$2TaJ=SuPd^qT~JsRJAfun~4s*Zaq<22$$f_&MU2?kNMPU>E63mDI2#@N?EhO0g0G^Hi0HGTDlUZRGhi!Lo zvD!-Df8SN`^8&!Pb|jz9y?ndv9Qd`d`YrGR?$%Ek{8&p=gUO3p%wpNI8pg_S6fepL z1o7OORnxKk8yuksnEHpT|S}V4-IRvEsgG(rQO98t1sDvNwp*c z0g8@?1miube-2s4rOT*9kR`K6aL$1U17qN+0CXKk)Kw~cuIzZMcejI#G`-u~tGV*` z#qCo@?9#{+SGZw9%srHL>>6*D>vcqmvzt|GRzmiuT$n&v$44*=tw44wr?A#XIM+q50E>)zg8 zUy1UTopUYLf$(nU!@eZ4n_9CITX`D9*op}TcNXjr50no40b3pr@h#Lpv;P3Zy*^a8 zmTNo7WB$>JK#J;lpXS&H7#_WFYv{dO!P-8*XLY6D>6RCIEYa+e+DmmGF+RWmJMqqH zyL>ayBJkWk9fRafcZV%*ZXtr!4K-nxO$uaXn||*wP23Pi%Z~Nl!y|m`#gvX0(Su zV}XJBQUnUXa%*IgS{?;zj6YILF>1qIf3$AKk_M^*q!v(5snbBy~g2)~%y& zCmpyoQ9ei6pQ-h$YC3yTLSjnXk52VYSNQ=WBmgm1r8Q1d^H9V?9P>Q5E44AuQn5JX zXV}z%i*N@t6d>Wc(gKs6ry0*)YmE4g{{ZnJnSD+xxRN2hxNnIH7fO@;;Zn_Ex#ONJ zkIT^F3_wM)lRWzx_-D*;xc9HP{B{TSAT87EkNM%T{Hx*IkPdxM^RHhn`(GmrUqk=d Dt;)C= literal 0 HcmV?d00001 diff --git a/test/data/iiif_2_0_tiled_sf1/512,512,256,256/256,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/512,512,256,256/256,/0/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1b42d53c17b5ebbec8c1561b97df69baf9cb1576 GIT binary patch literal 19674 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 V^xO~pbXTF5=~em}V)TMP|Jhox9e)4- literal 0 HcmV?d00001 diff --git a/test/data/iiif_2_0_tiled_sf1/512,768,256,256/256,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/512,768,256,256/256,/0/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b3e0f5cbdc52ac5ea857c09c61366c7d54bd2789 GIT binary patch literal 11549 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

019ALj1et_h1#lW=(%CquYX#ms^4O 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 literal 0 HcmV?d00001 diff --git a/test/data/iiif_2_0_tiled_sf1/temp/512,0,263,512/132,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/temp/512,0,263,512/132,/0/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ca48f792b01d69de594ec25ea4c253fe9644d618 GIT binary patch literal 11244 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 literal 0 HcmV?d00001 diff --git a/test/data/iiif_2_0_tiled_sf1/temp/512,512,263,512/132,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/temp/512,512,263,512/132,/0/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..baa4ee5db9eb1a2962d27cdd376da9b09239647c GIT binary patch literal 10140 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 Qycr5n{G~lnI9`_i2aX`S0RR91 literal 0 HcmV?d00001 diff --git a/test/demo/iiif-tiled-sf1.html b/test/demo/iiif-tiled-sf1.html new file mode 100644 index 00000000..d1931e44 --- /dev/null +++ b/test/demo/iiif-tiled-sf1.html @@ -0,0 +1,34 @@ + + + + OpenSeadragon Demo - IIIF Tiled scaleFactors [1] + + + + + +

+
+ + + diff --git a/test/modules/formats.js b/test/modules/formats.js index e883d53c..b14a5680 100644 --- a/test/modules/formats.js +++ b/test/modules/formats.js @@ -113,6 +113,11 @@ testOpenUrl('iiif_2_0_tiled/info.json', assert); }); + // ---------- + QUnit.test('IIIF 2.0 JSON scaleFactors [1]', function(assert) { + testOpenUrl('iiif_2_0_tiled_sf1/info.json', assert); + }); + // ---------- QUnit.test('IIIF 2.0 JSON, sizes array only', function(assert) { testOpenUrl('iiif_2_0_sizes/info.json', assert); From 59f15508b90d60af1142996820d54a9b58390f30 Mon Sep 17 00:00:00 2001 From: Zsolt Ero Date: Fri, 16 Feb 2018 21:17:52 +0100 Subject: [PATCH 004/109] removed old files from test --- .../temp/0,0,512,512/256,/0/default.jpg | Bin 32573 -> 0 bytes .../temp/0,0,775,1024/194,/0/default.jpg | Bin 22995 -> 0 bytes .../temp/0,512,512,512/256,/0/default.jpg | Bin 27710 -> 0 bytes .../temp/512,0,263,512/132,/0/default.jpg | Bin 11244 -> 0 bytes .../temp/512,512,263,512/132,/0/default.jpg | Bin 10140 -> 0 bytes 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test/data/iiif_2_0_tiled_sf1/temp/0,0,512,512/256,/0/default.jpg delete mode 100644 test/data/iiif_2_0_tiled_sf1/temp/0,0,775,1024/194,/0/default.jpg delete mode 100644 test/data/iiif_2_0_tiled_sf1/temp/0,512,512,512/256,/0/default.jpg delete mode 100644 test/data/iiif_2_0_tiled_sf1/temp/512,0,263,512/132,/0/default.jpg delete mode 100644 test/data/iiif_2_0_tiled_sf1/temp/512,512,263,512/132,/0/default.jpg diff --git a/test/data/iiif_2_0_tiled_sf1/temp/0,0,512,512/256,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/temp/0,0,512,512/256,/0/default.jpg deleted file mode 100644 index edb856cc66fbee062afee354d799da936cdf1307..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32573 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 diff --git a/test/data/iiif_2_0_tiled_sf1/temp/0,0,775,1024/194,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/temp/0,0,775,1024/194,/0/default.jpg deleted file mode 100644 index be76af0632dfc5efb12185404bc69ea1b67dfae2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22995 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 diff --git a/test/data/iiif_2_0_tiled_sf1/temp/0,512,512,512/256,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/temp/0,512,512,512/256,/0/default.jpg deleted file mode 100644 index 250e76d1aaef75020885451f1180cde0b983f351..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27710 zcmbT6WmFu|^QH%PcMA?7xI-YgySoM*Y=T38;O;gAPar^Wox$DRb#M*NKmtP`Wb^y4 zowJ{I_wC!C`gWgs`ktc4@8 ziH3%XiiVAWfsTobjf;zeje~=SPfUo1PlS(yLr6|YL_$hNMutm3K}k+ZNlZ#c`k#j& zq5QiC6%7jw4T}^H2aojsS%3QgM411v2?dD>fJ}shLWJ~p2tfbOPBf(d65xLb3HhIm z=opw-*f{?tKnMZINGK@Cs3`xj`rqu3f7b!1L}cd>0dFK=N}OGF)}JTCN?fUAtN&@8=UhwH?O4hTUmL<_sXiK<`xLFwXMBlU~p)7WOQtN zVqtMc4~iA6!KLxR6m%QBX1d z!-a(G|L;U0LPcZbM<zI1AvQy^l$M{hyc=nbI=Qc26*$%7(v$IhLkmrDhsH8pmD@IvcQh5$z6&z;B#LvEFgE=T4IVietoIo z%@-T5s{oYDVl}&99=Q2wb02HmV=K|beD`y5wqfS65yNf-0w)aLO9f^vQk=W#(}Rxi z>Tqnz@mpAfnGD^1u@qKo_k44O!A$!(*W~sCCaV2v-RW1&Ns?KV`U5NGo9h0&lh|OB zT9J}U+k0DPKS@*I!G3`HW=F@FJskasA?^X@H|PFj#W^{|Fe zU>~E+>334>h~27z;4Mjk*Erc}7c9hE9u*Wrm+C`;{qEk?rodPOPuiQ1xNw4EADyHK zn2dsE!4g2WiXhh-Sz5V0V&hI=ROTCg2O_fca2+Ml*W8~a11okA2m9G& zi9cF%OcuGXzRlNbkkA;i>%{0E{i)-t88KJpCJn0_QyoOD678XYzw`#We?=56nyg;f z7R_x=3fC4u1ynLjD+;O71-uhi-h7NGTg}W_{1Ss;*G0r0fCzqkgfzRf8d11=+;;ij zm%d?N)Yy&AWInP~L1pIb1>(%H74Fd|uKczv&>yYmN;7A)C2s`XO+fuHjimzm1Qfs9 zK~D|i&?3v?OA)o-p~;>ffBz)zT~E4&nVk*ziGf23DBgLkFz0Ob@)S7%Jty6~xGQQssL;h4n8#v%}RmgCH%|gsRlJ z?z{G@jHtHPQnQSXpZT#zmNyH)+S!qNS})ZXW_cDD%9 zH(O$UGG*uKWD)7h_;kY(+$~Gy9P2L_Qa|hKrApPr62b2>{?la6ZUZ z*p3%(u7JFIS7OcdLZ!#E&Ec9MMuP}<(>%BBL}Oh zKqg&r@XY2tuCBJXX_DpUOMrB~cBJV_w^<5PzqRDhj>Q8uv0UF~{RL1M`hIp(j%W5- z4Ryl9%a!G5T`FQoB7M0?F9-PB2)?bv6o~`#SKVF`oP3mc+rzvp^%`M3Xlw@k${TN^uC5U1kfHgms~v!C@?FgKa|pgdZvP$r z$G-pq^JiHIe5Ongjwu^I6*TE$gH+{l^?OX$U`*>W*b1 zP6fleaiV@|_gYH2O#R?e!f^G%XZ%_1GI)N%?0y94EmobaLAwpJ4$YVVCqWi3_z~M~ z;;DDgJeAN2!Kqq21T9%L0B=x)Oa-s7v9OlOQ)7PHG!b&a)DvU>qSxI)MmLij&(3l( zmoNk`THM2Pw@+q?GSxD*@7I5VG7u^eFh9f1n~>kquD(0C8SFRP#;y)Yu`;=b&7S6s zd-!mQWJ;01t*SkDJHKltUk-N>kcf=_IcpuKKEWGh%`Ywo)Vky7ESan4>nt%xe=&57 zk;pfRY-B&09Zz4gDSGKL@C*p-(%k1p*A}515@{l$jSlmF(`f*}|0sUiC%;pn3a7gi z+Cq1I?U2DSnoj))EV#}r=O5d^8aN62=vi2$rdN2xEnQbpm|P(z7Oj*->|Xu+#GGAh zp7A<&`%XJ%m)s6FPs3*9laWSKy<8O3v!D*(Q8H8Q89;36)YR;nqqnm17vL0qq@vF{ z_;MPfgKQ$m#`m!xp_-&06+TF<=VgEn!GwlkXObKe`pXxve7>m zUZJva=EHj!bK6i!>tO8GXOreXVp1m`97fJ83_~b!mVSkGcOSlg?Mch8N+M

019ALj1et_h1#lW=(%CquYX#ms^4O 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 diff --git a/test/data/iiif_2_0_tiled_sf1/temp/512,0,263,512/132,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/temp/512,0,263,512/132,/0/default.jpg deleted file mode 100644 index ca48f792b01d69de594ec25ea4c253fe9644d618..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11244 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 diff --git a/test/data/iiif_2_0_tiled_sf1/temp/512,512,263,512/132,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/temp/512,512,263,512/132,/0/default.jpg deleted file mode 100644 index baa4ee5db9eb1a2962d27cdd376da9b09239647c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10140 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 Qycr5n{G~lnI9`_i2aX`S0RR91 From 784f470744e044b60c319464cd7921259f1674dd Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Mon, 26 Feb 2018 13:37:08 -0800 Subject: [PATCH 005/109] Changelog for #1401 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 94723489..7415e56d 100644 --- a/changelog.txt +++ b/changelog.txt @@ -8,6 +8,7 @@ OPENSEADRAGON CHANGELOG * Fixed: Opacity 0 images were causing unnecessary redraws (#1319) * The "page" event is now fired after the page index has been updated (#1330) * Added option pixelsPerArrowPress that sets the speed of arrow keys (#1364) +* Improved IIIF options.maxLevel calculation (#1401) 2.3.1: From 2b878cbdbf20bc0854f2b81315826f9815c463c8 Mon Sep 17 00:00:00 2001 From: Francesco Cretti Date: Tue, 6 Mar 2018 15:51:22 +0100 Subject: [PATCH 006/109] keyboard handlers patch --- src/viewer.js | 87 +++++++++++++++++++++++++++++++++++---------------- 1 file changed, 60 insertions(+), 27 deletions(-) diff --git a/src/viewer.js b/src/viewer.js index 51b22756..baecef38 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -2477,31 +2477,48 @@ function onBlur(){ } function onCanvasKeyDown( event ) { - if ( !event.preventDefaultAction && !event.ctrl && !event.alt && !event.meta ) { + var canvasKeyDownEventArgs = { + originalEvent: event.originalEvent, + preventDefaultAction: event.preventDefaultAction, + preventVerticalPan: event.preventVerticalPan, + preventHorizontalPan: event.preventHorizontalPan + }; + + this.raiseEvent( 'canvas-key-down', canvasKeyDownEventArgs); + + if ( !canvasKeyDownEventArgs.preventDefaultAction && !event.ctrl && !event.alt && !event.meta ) { switch( event.keyCode ){ case 38://up arrow - if ( event.shift ) { + if (!canvasKeyDownEventArgs.preventVerticalPan) { + if ( event.shift ) { this.viewport.zoomBy(1.1); - } else { + } else { this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(0, -this.pixelsPerArrowPress))); + } + this.viewport.applyConstraints(); } - this.viewport.applyConstraints(); return false; case 40://down arrow - if ( event.shift ) { + if (!canvasKeyDownEventArgs.preventVerticalPan) { + if ( event.shift ) { this.viewport.zoomBy(0.9); - } else { + } else { this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(0, this.pixelsPerArrowPress))); + } + this.viewport.applyConstraints(); } - this.viewport.applyConstraints(); return false; case 37://left arrow - this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(-this.pixelsPerArrowPress, 0))); - this.viewport.applyConstraints(); + if (!canvasKeyDownEventArgs.preventHorizontalPan) { + this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(-this.pixelsPerArrowPress, 0))); + this.viewport.applyConstraints(); + } return false; case 39://right arrow - this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(this.pixelsPerArrowPress, 0))); - this.viewport.applyConstraints(); + if (!canvasKeyDownEventArgs.preventHorizontalPan) { + this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(this.pixelsPerArrowPress, 0))); + this.viewport.applyConstraints(); + } return false; default: //console.log( 'navigator keycode %s', event.keyCode ); @@ -2511,9 +2528,17 @@ function onCanvasKeyDown( event ) { return true; } } - function onCanvasKeyPress( event ) { - if ( !event.preventDefaultAction && !event.ctrl && !event.alt && !event.meta ) { + var canvasKeyPressEventArgs = { + originalEvent: event.originalEvent, + preventDefaultAction: event.preventDefaultAction, + preventVerticalPan: event.preventVerticalPan, + preventHorizontalPan: event.preventHorizontalPan + }; + + this.raiseEvent( 'canvas-key-down', canvasKeyPressEventArgs); + + if ( !canvasKeyPressEventArgs.preventDefaultAction && !event.ctrl && !event.alt && !event.meta ) { switch( event.keyCode ){ case 43://=|+ case 61://=|+ @@ -2530,29 +2555,37 @@ function onCanvasKeyPress( event ) { return false; case 119://w case 87://W - if ( event.shift ) { - this.viewport.zoomBy(1.1); - } else { - this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(0, -40))); - } - this.viewport.applyConstraints(); - return false; + if (!canvasKeyPressEventArgs.preventVerticalPan) { + if ( event.shift ) { + this.viewport.zoomBy(1.1); + } else { + this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(0, -40))); + } + this.viewport.applyConstraints(); + } + return false; case 115://s case 83://S - if ( event.shift ) { + if (!canvasKeyPressEventArgs.preventVerticalPan) { + if ( event.shift ) { this.viewport.zoomBy(0.9); - } else { + } else { this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(0, 40))); + } + this.viewport.applyConstraints(); } - this.viewport.applyConstraints(); return false; case 97://a - this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(-40, 0))); - this.viewport.applyConstraints(); + if (!canvasKeyPressEventArgs.preventHorizontalPan) { + this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(-40, 0))); + this.viewport.applyConstraints(); + } return false; case 100://d - this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(40, 0))); - this.viewport.applyConstraints(); + if (!canvasKeyPressEventArgs.preventHorizontalPan) { + this.viewport.panBy(this.viewport.deltaPointsFromPixels(new $.Point(40, 0))); + this.viewport.applyConstraints(); + } return false; default: //console.log( 'navigator keycode %s', event.keyCode ); From 34f691df2851bc79944b77117b2139624f6179ea Mon Sep 17 00:00:00 2001 From: Francesco Cretti Date: Wed, 7 Mar 2018 10:32:31 +0100 Subject: [PATCH 007/109] Event name and documentation --- src/viewer.js | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/src/viewer.js b/src/viewer.js index baecef38..086ace7c 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -2484,7 +2484,22 @@ function onCanvasKeyDown( event ) { preventHorizontalPan: event.preventHorizontalPan }; - this.raiseEvent( 'canvas-key-down', canvasKeyDownEventArgs); + /** + * Raised when a keyboard key is pressed and the focus is on the {@link OpenSeadragon.Viewer#canvas} element. + * + * @event canvas-key + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {Object} originalEvent - The original DOM event. + * @property {Boolean} preventDefaultAction - Set to true to prevent default keyboard behaviour. Default: false. + * @property {Boolean} preventVerticalPan - Set to true to prevent keyboard vertical panning. Default: false. + * @property {Boolean} preventHorizontalPan - Set to true to prevent keyboard horizontal panning. Default: false. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + + + this.raiseEvent( 'canvas-key', canvasKeyDownEventArgs); if ( !canvasKeyDownEventArgs.preventDefaultAction && !event.ctrl && !event.alt && !event.meta ) { switch( event.keyCode ){ @@ -2535,8 +2550,21 @@ function onCanvasKeyPress( event ) { preventVerticalPan: event.preventVerticalPan, preventHorizontalPan: event.preventHorizontalPan }; - - this.raiseEvent( 'canvas-key-down', canvasKeyPressEventArgs); + + /** + * Raised when a keyboard key is pressed and the focus is on the {@link OpenSeadragon.Viewer#canvas} element. + * + * @event canvas-key + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {Object} originalEvent - The original DOM event. + * @property {Boolean} preventDefaultAction - Set to true to prevent default keyboard behaviour. Default: false. + * @property {Boolean} preventVerticalPan - Set to true to prevent keyboard vertical panning. Default: false. + * @property {Boolean} preventHorizontalPan - Set to true to prevent keyboard horizontal panning. Default: false. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent( 'canvas-key', canvasKeyPressEventArgs); if ( !canvasKeyPressEventArgs.preventDefaultAction && !event.ctrl && !event.alt && !event.meta ) { switch( event.keyCode ){ From 44ca4a79b8cce6ed43ff72abe58ec976b7ea7270 Mon Sep 17 00:00:00 2001 From: Francesco Cretti Date: Wed, 7 Mar 2018 11:07:29 +0100 Subject: [PATCH 008/109] trailing spaces removed --- src/viewer.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/viewer.js b/src/viewer.js index 086ace7c..fbceaf4f 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -2483,7 +2483,6 @@ function onCanvasKeyDown( event ) { preventVerticalPan: event.preventVerticalPan, preventHorizontalPan: event.preventHorizontalPan }; - /** * Raised when a keyboard key is pressed and the focus is on the {@link OpenSeadragon.Viewer#canvas} element. * @@ -2498,8 +2497,7 @@ function onCanvasKeyDown( event ) { * @property {?Object} userData - Arbitrary subscriber-defined object. */ - - this.raiseEvent( 'canvas-key', canvasKeyDownEventArgs); + this.raiseEvent('canvas-key', canvasKeyDownEventArgs); if ( !canvasKeyDownEventArgs.preventDefaultAction && !event.ctrl && !event.alt && !event.meta ) { switch( event.keyCode ){ @@ -2550,7 +2548,6 @@ function onCanvasKeyPress( event ) { preventVerticalPan: event.preventVerticalPan, preventHorizontalPan: event.preventHorizontalPan }; - /** * Raised when a keyboard key is pressed and the focus is on the {@link OpenSeadragon.Viewer#canvas} element. * @@ -2564,7 +2561,8 @@ function onCanvasKeyPress( event ) { * @property {Boolean} preventHorizontalPan - Set to true to prevent keyboard horizontal panning. Default: false. * @property {?Object} userData - Arbitrary subscriber-defined object. */ - this.raiseEvent( 'canvas-key', canvasKeyPressEventArgs); + + this.raiseEvent('canvas-key', canvasKeyPressEventArgs); if ( !canvasKeyPressEventArgs.preventDefaultAction && !event.ctrl && !event.alt && !event.meta ) { switch( event.keyCode ){ From 027dac0d8e46e937e0309d6aa8da6d6e7314aeb3 Mon Sep 17 00:00:00 2001 From: Francesco Cretti Date: Wed, 7 Mar 2018 11:25:33 +0100 Subject: [PATCH 009/109] navigato minimap onClick vertical/horizontal pan fix --- src/navigator.js | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/navigator.js b/src/navigator.js index 4c9848cf..45b56b6c 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -405,10 +405,26 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* * @function */ function onCanvasClick( event ) { - if ( event.quick && this.viewer.viewport ) { - this.viewer.viewport.panTo(this.viewport.pointFromPixel(event.position)); - this.viewer.viewport.applyConstraints(); + if (event.quick && this.viewer.viewport && (this.panVertical || this.panHorizontal)) { + var target, + posX, + posY; + if (!this.panVertical) { + // perform only horizonal pan + posX = this.viewport.pointFromPixel(event.position).x; + posY = this.viewport.getCenter().y; + target = new $.Point(posX, posY); + } else if (!this.panHorizontal) { + // perform only vertical pan + posX = this.viewport.getCenter().x; + posY = this.viewport.pointFromPixel(event.position).y; + target = new $.Point(posX, posY); + } else { + target = this.viewport.pointFromPixel(event.position); } + this.viewer.viewport.panTo(target); + this.viewer.viewport.applyConstraints(); + } } /** From c915a5966f80a81c391f5bb515843ca1d2f8a80c Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Wed, 7 Mar 2018 09:28:20 -0800 Subject: [PATCH 010/109] Changelog for #1414 plus documentation tweak --- changelog.txt | 1 + src/viewer.js | 15 ++------------- 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/changelog.txt b/changelog.txt index 7415e56d..0d2a7464 100644 --- a/changelog.txt +++ b/changelog.txt @@ -9,6 +9,7 @@ OPENSEADRAGON CHANGELOG * The "page" event is now fired after the page index has been updated (#1330) * Added option pixelsPerArrowPress that sets the speed of arrow keys (#1364) * Improved IIIF options.maxLevel calculation (#1401) +* Added canvas-key events, along with the ability to cancel key actions (#1414) 2.3.1: diff --git a/src/viewer.js b/src/viewer.js index fbceaf4f..bffb18ad 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -2483,6 +2483,7 @@ function onCanvasKeyDown( event ) { preventVerticalPan: event.preventVerticalPan, preventHorizontalPan: event.preventHorizontalPan }; + /** * Raised when a keyboard key is pressed and the focus is on the {@link OpenSeadragon.Viewer#canvas} element. * @@ -2548,20 +2549,8 @@ function onCanvasKeyPress( event ) { preventVerticalPan: event.preventVerticalPan, preventHorizontalPan: event.preventHorizontalPan }; - /** - * Raised when a keyboard key is pressed and the focus is on the {@link OpenSeadragon.Viewer#canvas} element. - * - * @event canvas-key - * @memberof OpenSeadragon.Viewer - * @type {object} - * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. - * @property {Object} originalEvent - The original DOM event. - * @property {Boolean} preventDefaultAction - Set to true to prevent default keyboard behaviour. Default: false. - * @property {Boolean} preventVerticalPan - Set to true to prevent keyboard vertical panning. Default: false. - * @property {Boolean} preventHorizontalPan - Set to true to prevent keyboard horizontal panning. Default: false. - * @property {?Object} userData - Arbitrary subscriber-defined object. - */ + // This event is documented in onCanvasKeyDown this.raiseEvent('canvas-key', canvasKeyPressEventArgs); if ( !canvasKeyPressEventArgs.preventDefaultAction && !event.ctrl && !event.alt && !event.meta ) { From 12be95c8c3526f99717dba728a347826da613fcd Mon Sep 17 00:00:00 2001 From: Francesco Cretti Date: Sun, 11 Mar 2018 13:05:19 +0100 Subject: [PATCH 011/109] getCenter fixed when clicking on minimap --- src/navigator.js | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/navigator.js b/src/navigator.js index 45b56b6c..84e3ad51 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -406,21 +406,13 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* */ function onCanvasClick( event ) { if (event.quick && this.viewer.viewport && (this.panVertical || this.panHorizontal)) { - var target, - posX, - posY; + var target = this.viewport.pointFromPixel(event.position); if (!this.panVertical) { // perform only horizonal pan - posX = this.viewport.pointFromPixel(event.position).x; - posY = this.viewport.getCenter().y; - target = new $.Point(posX, posY); + target.y = this.viewer.viewport.getCenter(true).y; } else if (!this.panHorizontal) { // perform only vertical pan - posX = this.viewport.getCenter().x; - posY = this.viewport.pointFromPixel(event.position).y; - target = new $.Point(posX, posY); - } else { - target = this.viewport.pointFromPixel(event.position); + target.x = this.viewer.viewport.getCenter(true).x; } this.viewer.viewport.panTo(target); this.viewer.viewport.applyConstraints(); From 57654cf1cf768a3171ff95e614647b66965dbf4d Mon Sep 17 00:00:00 2001 From: Francesco Cretti Date: Sun, 11 Mar 2018 13:24:29 +0100 Subject: [PATCH 012/109] raise event for navigator click --- src/navigator.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/navigator.js b/src/navigator.js index 84e3ad51..392d9e15 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -417,6 +417,27 @@ function onCanvasClick( event ) { this.viewer.viewport.panTo(target); this.viewer.viewport.applyConstraints(); } + /** + * Raised when a click event occurs on the {@link OpenSeadragon.Viewer#navigator} element. + * + * @event navigator-click + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised this event. + * @property {OpenSeadragon.MouseTracker} tracker - A reference to the MouseTracker which originated this event. + * @property {OpenSeadragon.Point} position - The position of the event relative to the tracked element. + * @property {Boolean} quick - True only if the clickDistThreshold and clickTimeThreshold are both passed. Useful for differentiating between clicks and drags. + * @property {Boolean} shift - True if the shift key was pressed during this event. + * @property {Object} originalEvent - The original DOM event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.viewer.raiseEvent('navigator-click', { + tracker: event.eventSource, + position: event.position, + quick: event.quick, + shift: event.shift, + originalEvent: event.originalEvent + }); } /** From 85d8d9ee3295196405220296e63ba7cee61a3b4d Mon Sep 17 00:00:00 2001 From: "schueffp@mskcc.org" Date: Fri, 16 Mar 2018 11:29:16 +0100 Subject: [PATCH 013/109] Added option zoomToRefPoint for all gestureSettings This is an option for different applications or user preferences: If zoomToRefPoint in a gesture setting is true (default), the zoom is centered at the pointer position. Otherwise, the zoom is centered at the canvas center. --- src/openseadragon.js | 12 ++++++++++++ src/viewer.js | 10 ++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/openseadragon.js b/src/openseadragon.js index fd3fe809..d0dbe754 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -314,6 +314,8 @@ * @property {Boolean} [gestureSettingsMouse.dblClickToZoom=false] - Zoom on double-click gesture. Note: If set to true * then clickToZoom should be set to false to prevent multiple zooms. * @property {Boolean} [gestureSettingsMouse.pinchToZoom=false] - Zoom on pinch gesture + * @property {Boolean} [gestureSettingsMouse.zoomToRefPoint=true] - If zoomToRefPoint is true, the zoom is centered at the pointer position. Otherwise, + * the zoom is centered at the canvas center. * @property {Boolean} [gestureSettingsMouse.flickEnabled=false] - Enable flick gesture * @property {Number} [gestureSettingsMouse.flickMinSpeed=120] - If flickEnabled is true, the minimum speed to initiate a flick gesture (pixels-per-second) * @property {Number} [gestureSettingsMouse.flickMomentum=0.25] - If flickEnabled is true, the momentum factor for the flick gesture @@ -326,6 +328,8 @@ * @property {Boolean} [gestureSettingsTouch.dblClickToZoom=true] - Zoom on double-click gesture. Note: If set to true * then clickToZoom should be set to false to prevent multiple zooms. * @property {Boolean} [gestureSettingsTouch.pinchToZoom=true] - Zoom on pinch gesture + * @property {Boolean} [gestureSettingsTouch.zoomToRefPoint=true] - If zoomToRefPoint is true, the zoom is centered at the pointer position. Otherwise, + * the zoom is centered at the canvas center. * @property {Boolean} [gestureSettingsTouch.flickEnabled=true] - Enable flick gesture * @property {Number} [gestureSettingsTouch.flickMinSpeed=120] - If flickEnabled is true, the minimum speed to initiate a flick gesture (pixels-per-second) * @property {Number} [gestureSettingsTouch.flickMomentum=0.25] - If flickEnabled is true, the momentum factor for the flick gesture @@ -338,6 +342,8 @@ * @property {Boolean} [gestureSettingsPen.dblClickToZoom=false] - Zoom on double-click gesture. Note: If set to true * then clickToZoom should be set to false to prevent multiple zooms. * @property {Boolean} [gestureSettingsPen.pinchToZoom=false] - Zoom on pinch gesture + * @property {Boolean} [gestureSettingsPan.zoomToRefPoint=true] - If zoomToRefPoint is true, the zoom is centered at the pointer position. Otherwise, + * the zoom is centered at the canvas center. * @property {Boolean} [gestureSettingsPen.flickEnabled=false] - Enable flick gesture * @property {Number} [gestureSettingsPen.flickMinSpeed=120] - If flickEnabled is true, the minimum speed to initiate a flick gesture (pixels-per-second) * @property {Number} [gestureSettingsPen.flickMomentum=0.25] - If flickEnabled is true, the momentum factor for the flick gesture @@ -350,6 +356,8 @@ * @property {Boolean} [gestureSettingsUnknown.dblClickToZoom=true] - Zoom on double-click gesture. Note: If set to true * then clickToZoom should be set to false to prevent multiple zooms. * @property {Boolean} [gestureSettingsUnknown.pinchToZoom=true] - Zoom on pinch gesture + * @property {Boolean} [gestureSettingsUnknown.zoomToRefPoint=true] - If zoomToRefPoint is true, the zoom is centered at the pointer position. Otherwise, + * the zoom is centered at the canvas center. * @property {Boolean} [gestureSettingsUnknown.flickEnabled=true] - Enable flick gesture * @property {Number} [gestureSettingsUnknown.flickMinSpeed=120] - If flickEnabled is true, the minimum speed to initiate a flick gesture (pixels-per-second) * @property {Number} [gestureSettingsUnknown.flickMomentum=0.25] - If flickEnabled is true, the momentum factor for the flick gesture @@ -1044,6 +1052,7 @@ function OpenSeadragon( options ){ clickToZoom: true, dblClickToZoom: false, pinchToZoom: false, + zoomToRefPoint: true, flickEnabled: false, flickMinSpeed: 120, flickMomentum: 0.25, @@ -1054,6 +1063,7 @@ function OpenSeadragon( options ){ clickToZoom: false, dblClickToZoom: true, pinchToZoom: true, + zoomToRefPoint: true, flickEnabled: true, flickMinSpeed: 120, flickMomentum: 0.25, @@ -1064,6 +1074,7 @@ function OpenSeadragon( options ){ clickToZoom: true, dblClickToZoom: false, pinchToZoom: false, + zoomToRefPoint: true, flickEnabled: false, flickMinSpeed: 120, flickMomentum: 0.25, @@ -1074,6 +1085,7 @@ function OpenSeadragon( options ){ clickToZoom: false, dblClickToZoom: true, pinchToZoom: true, + zoomToRefPoint: true, flickEnabled: true, flickMinSpeed: 120, flickMomentum: 0.25, diff --git a/src/viewer.js b/src/viewer.js index bffb18ad..341e3d49 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -2652,7 +2652,7 @@ function onCanvasClick( event ) { if ( gestureSettings.clickToZoom ) { this.viewport.zoomBy( event.shift ? 1.0 / this.zoomPerClick : this.zoomPerClick, - this.viewport.pointFromPixel( event.position, true ) + gestureSettings.zoomToRefPoint ? this.viewport.pointFromPixel( event.position, true ) : null ); this.viewport.applyConstraints(); } @@ -2691,7 +2691,7 @@ function onCanvasDblClick( event ) { if ( gestureSettings.dblClickToZoom ) { this.viewport.zoomBy( event.shift ? 1.0 / this.zoomPerClick : this.zoomPerClick, - this.viewport.pointFromPixel( event.position, true ) + gestureSettings.zoomToRefPoint ? this.viewport.pointFromPixel( event.position, true ) : null ); this.viewport.applyConstraints(); } @@ -3005,7 +3005,9 @@ function onCanvasPinch( event ) { panByPt.y = 0; } this.viewport.zoomBy( event.distance / event.lastDistance, centerPt, true ); - this.viewport.panBy( panByPt, true ); + if ( gestureSettings.zoomToRefPoint ) { + this.viewport.panBy(panByPt, true); + } this.viewport.applyConstraints(); } if ( gestureSettings.pinchRotate ) { @@ -3068,7 +3070,7 @@ function onCanvasScroll( event ) { factor = Math.pow( this.zoomPerScroll, event.scroll ); this.viewport.zoomBy( factor, - this.viewport.pointFromPixel( event.position, true ) + gestureSettings.zoomToRefPoint ? this.viewport.pointFromPixel( event.position, true ) : null ); this.viewport.applyConstraints(); } From 4889d63534191c67b9e70844d82057ed9a507f23 Mon Sep 17 00:00:00 2001 From: "schueffp@mskcc.org" Date: Fri, 16 Mar 2018 11:44:42 +0100 Subject: [PATCH 014/109] removed trailing spaces error --- src/openseadragon.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/openseadragon.js b/src/openseadragon.js index d0dbe754..4cb36dd3 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -314,7 +314,7 @@ * @property {Boolean} [gestureSettingsMouse.dblClickToZoom=false] - Zoom on double-click gesture. Note: If set to true * then clickToZoom should be set to false to prevent multiple zooms. * @property {Boolean} [gestureSettingsMouse.pinchToZoom=false] - Zoom on pinch gesture - * @property {Boolean} [gestureSettingsMouse.zoomToRefPoint=true] - If zoomToRefPoint is true, the zoom is centered at the pointer position. Otherwise, + * @property {Boolean} [gestureSettingsMouse.zoomToRefPoint=true] - If zoomToRefPoint is true, the zoom is centered at the pointer position. Otherwise, * the zoom is centered at the canvas center. * @property {Boolean} [gestureSettingsMouse.flickEnabled=false] - Enable flick gesture * @property {Number} [gestureSettingsMouse.flickMinSpeed=120] - If flickEnabled is true, the minimum speed to initiate a flick gesture (pixels-per-second) @@ -328,7 +328,7 @@ * @property {Boolean} [gestureSettingsTouch.dblClickToZoom=true] - Zoom on double-click gesture. Note: If set to true * then clickToZoom should be set to false to prevent multiple zooms. * @property {Boolean} [gestureSettingsTouch.pinchToZoom=true] - Zoom on pinch gesture - * @property {Boolean} [gestureSettingsTouch.zoomToRefPoint=true] - If zoomToRefPoint is true, the zoom is centered at the pointer position. Otherwise, + * @property {Boolean} [gestureSettingsTouch.zoomToRefPoint=true] - If zoomToRefPoint is true, the zoom is centered at the pointer position. Otherwise, * the zoom is centered at the canvas center. * @property {Boolean} [gestureSettingsTouch.flickEnabled=true] - Enable flick gesture * @property {Number} [gestureSettingsTouch.flickMinSpeed=120] - If flickEnabled is true, the minimum speed to initiate a flick gesture (pixels-per-second) @@ -342,7 +342,7 @@ * @property {Boolean} [gestureSettingsPen.dblClickToZoom=false] - Zoom on double-click gesture. Note: If set to true * then clickToZoom should be set to false to prevent multiple zooms. * @property {Boolean} [gestureSettingsPen.pinchToZoom=false] - Zoom on pinch gesture - * @property {Boolean} [gestureSettingsPan.zoomToRefPoint=true] - If zoomToRefPoint is true, the zoom is centered at the pointer position. Otherwise, + * @property {Boolean} [gestureSettingsPan.zoomToRefPoint=true] - If zoomToRefPoint is true, the zoom is centered at the pointer position. Otherwise, * the zoom is centered at the canvas center. * @property {Boolean} [gestureSettingsPen.flickEnabled=false] - Enable flick gesture * @property {Number} [gestureSettingsPen.flickMinSpeed=120] - If flickEnabled is true, the minimum speed to initiate a flick gesture (pixels-per-second) @@ -356,7 +356,7 @@ * @property {Boolean} [gestureSettingsUnknown.dblClickToZoom=true] - Zoom on double-click gesture. Note: If set to true * then clickToZoom should be set to false to prevent multiple zooms. * @property {Boolean} [gestureSettingsUnknown.pinchToZoom=true] - Zoom on pinch gesture - * @property {Boolean} [gestureSettingsUnknown.zoomToRefPoint=true] - If zoomToRefPoint is true, the zoom is centered at the pointer position. Otherwise, + * @property {Boolean} [gestureSettingsUnknown.zoomToRefPoint=true] - If zoomToRefPoint is true, the zoom is centered at the pointer position. Otherwise, * the zoom is centered at the canvas center. * @property {Boolean} [gestureSettingsUnknown.flickEnabled=true] - Enable flick gesture * @property {Number} [gestureSettingsUnknown.flickMinSpeed=120] - If flickEnabled is true, the minimum speed to initiate a flick gesture (pixels-per-second) From dccd038f6c5c6db6d8a3c6d37089acb2722d456a Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Mon, 19 Mar 2018 10:21:19 -0700 Subject: [PATCH 015/109] Changelog for #1423 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 0d2a7464..ca52de67 100644 --- a/changelog.txt +++ b/changelog.txt @@ -10,6 +10,7 @@ OPENSEADRAGON CHANGELOG * Added option pixelsPerArrowPress that sets the speed of arrow keys (#1364) * Improved IIIF options.maxLevel calculation (#1401) * Added canvas-key events, along with the ability to cancel key actions (#1414) +* Added optional zoom in the middle of the image instead of pointer position (#1423) 2.3.1: From 075a37ce8c7f82651f823d7f0c0bebce4214f058 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Wed, 21 Mar 2018 14:07:00 -0700 Subject: [PATCH 016/109] Now supporting square edge tiles with padding --- package-lock.json | 5862 +++++++++++++++++++++++++++++++++++++++++++++ src/tile.js | 26 +- src/tiledimage.js | 5 +- src/tilesource.js | 12 +- 4 files changed, 5897 insertions(+), 8 deletions(-) create mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..19e6c8c2 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5862 @@ +{ + "name": "openseadragon", + "version": "2.3.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "dev": true, + "requires": { + "mime-types": "2.1.17", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "https://registry.npmjs.org/acorn/-/acorn-4.0.4.tgz", + "integrity": "sha1-F6jWp6bE71OLgU7Jq6wneSk78wo=", + "dev": true + }, + "acorn-jsx": { + "version": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz" + }, + "dependencies": { + "acorn": { + "version": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "https://registry.npmjs.org/ajv/-/ajv-4.10.4.tgz", + "integrity": "sha1-wJdN0As0ZJhIktYBCqnCyUWTMlQ=", + "dev": true, + "requires": { + "co": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "json-stable-stringify": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" + } + }, + "ajv-keywords": { + "version": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.0.tgz", + "integrity": "sha1-wR5oWer/+D4Nr8QWkpRy7KlGqiw=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-escapes": { + "version": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-regex": { + "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" + } + }, + "archiver": { + "version": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", + "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", + "dev": true, + "requires": { + "archiver-utils": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", + "async": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "buffer-crc32": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", + "tar-stream": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz", + "walkdir": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", + "zip-stream": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz" + }, + "dependencies": { + "async": { + "version": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha1-hDGQ/WtzV6C54clW7d3V7IRitU0=", + "dev": true, + "requires": { + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" + } + } + } + }, + "archiver-utils": { + "version": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", + "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", + "dev": true, + "requires": { + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "lazystream": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "normalize-path": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz" + } + }, + "argparse": { + "version": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-find-index": { + "version": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-union": { + "version": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" + } + }, + "array-uniq": { + "version": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel-code-frame": { + "version": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.20.0.tgz", + "integrity": "sha1-uWj4OQkPmovG1Bk4+5bLhPc4eyY=", + "dev": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "js-tokens": "https://registry.npmjs.org/js-tokens/-/js-tokens-2.0.0.tgz" + } + }, + "balanced-match": { + "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + }, + "basic-auth": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", + "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "binary-extensions": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", + "dev": true + }, + "bl": { + "version": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", + "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "dev": true, + "requires": { + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz" + } + }, + "body-parser": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz", + "integrity": "sha1-EBXLH+LEQ4WCWVgdtTMy+NDPUPk=", + "dev": true, + "requires": { + "bytes": "2.2.0", + "content-type": "1.0.4", + "debug": "2.2.0", + "depd": "1.1.1", + "http-errors": "1.3.1", + "iconv-lite": "0.4.13", + "on-finished": "2.3.0", + "qs": "5.2.0", + "raw-body": "2.1.7", + "type-is": "1.6.15" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "http-errors": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=", + "dev": true, + "requires": { + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "statuses": "1.3.1" + } + }, + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "qs": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz", + "integrity": "sha1-qfMRQq9GjLcrJbMBNrokVoNJFr4=", + "dev": true + } + } + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + }, + "brace-expansion": { + "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", + "integrity": "sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=", + "dev": true, + "requires": { + "balanced-match": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "concat-map": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "dev": true, + "requires": { + "pako": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz" + } + }, + "buffer-crc32": { + "version": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-shims": { + "version": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "builtin-modules": { + "version": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "bytes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz", + "integrity": "sha1-/TVGSkA/b5EXwt42Cez/nK4ABYg=", + "dev": true + }, + "caller-path": { + "version": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz" + } + }, + "callsites": { + "version": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "map-obj": "1.0.1" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + } + }, + "chokidar": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.6.1.tgz", + "integrity": "sha1-L0RHq16W5Q+z14n9kNTHLg5McMI=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "readdirp": "2.1.0" + } + }, + "circular-json": { + "version": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", + "integrity": "sha1-vos2rvzN6LPKeqLWr8B6NyQsDS0=", + "dev": true + }, + "cli-cursor": { + "version": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz" + } + }, + "cli-width": { + "version": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", + "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } + } + }, + "co": { + "version": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "coffee-script": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.10.0.tgz", + "integrity": "sha1-EpOLz5vhlI+gBvkuDEyegXBRCMA=", + "dev": true + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", + "dev": true + }, + "compress-commons": { + "version": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.0.tgz", + "integrity": "sha1-WFhwku8g03y1i68AARLJJ4/3O58=", + "dev": true, + "requires": { + "buffer-crc32": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "crc32-stream": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", + "normalize-path": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz" + } + }, + "concat-map": { + "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", + "typedarray": "0.0.6" + } + }, + "connect": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.5.tgz", + "integrity": "sha1-+43ee6B2OHfQ7J352sC0tA5yx9o=", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.0.6", + "parseurl": "1.3.2", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "connect-livereload": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz", + "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "core-util-is": { + "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "crc": { + "version": "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz", + "integrity": "sha1-naHpgOO9RPxck79as9ozeNheRms=", + "dev": true + }, + "crc32-stream": { + "version": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", + "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "dev": true, + "requires": { + "crc": "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "currently-unhandled": { + "version": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz" + } + }, + "d": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz", + "integrity": "sha1-2hhMU10Y2O57oqoim5FACfrhEwk=", + "dev": true, + "requires": { + "es5-ext": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "dev": true, + "requires": { + "get-stdin": "4.0.1", + "meow": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz" + } + }, + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", + "integrity": "sha1-vFlryr52F/Edn6FTYe3tVgi4SZs=", + "dev": true, + "requires": { + "ms": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "del": { + "version": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "is-path-cwd": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "is-path-in-cwd": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-file": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", + "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", + "dev": true, + "requires": { + "fs-exists-sync": "0.1.0" + } + }, + "doctrine": { + "version": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "encodeurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", + "dev": true + }, + "end-of-stream": { + "version": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", + "dev": true, + "requires": { + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + } + }, + "ensure-posix-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ensure-posix-path/-/ensure-posix-path-1.0.2.tgz", + "integrity": "sha1-pls+QtC3HPxYXrd0+ZQ8jZuRsMI=", + "dev": true + }, + "error-ex": { + "version": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz", + "integrity": "sha1-5ntD8+gsluo6WE/+4Ln8MyXYAtk=", + "dev": true, + "requires": { + "is-arrayish": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + } + }, + "es5-ext": { + "version": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz", + "integrity": "sha1-qoRkHU23a2Krul5F/YBey6sUAEc=", + "dev": true, + "requires": { + "es6-iterator": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz", + "es6-symbol": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz" + } + }, + "es6-iterator": { + "version": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz", + "integrity": "sha1-vZaFZ9YWNeM8C4BydhPJy0sJa6w=", + "dev": true, + "requires": { + "d": "0.1.1", + "es5-ext": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz", + "es6-symbol": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz" + } + }, + "es6-map": { + "version": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.4.tgz", + "integrity": "sha1-o0sUe+IkdzpNfagHJ5TO+jYyuJc=", + "dev": true, + "requires": { + "d": "0.1.1", + "es5-ext": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz", + "es6-iterator": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz", + "es6-set": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.4.tgz", + "es6-symbol": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz", + "event-emitter": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.4.tgz" + } + }, + "es6-promise": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.2.tgz", + "integrity": "sha512-LSas5vsuA6Q4nEdf9wokY5/AJYXry98i0IzXsv49rYsgDGDNDPbqAYR1Pe23iFxygfbGZNR/5VrHXBCh2BhvUQ==", + "dev": true + }, + "es6-set": { + "version": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.4.tgz", + "integrity": "sha1-lRa2dhwpZLkv9HlFYjOiR9xwfOg=", + "dev": true, + "requires": { + "d": "0.1.1", + "es5-ext": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz", + "es6-iterator": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz", + "es6-symbol": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz", + "event-emitter": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.4.tgz" + } + }, + "es6-symbol": { + "version": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz", + "integrity": "sha1-lEgcZV56fK2C66gy2X1UM0ltf/o=", + "dev": true, + "requires": { + "d": "0.1.1", + "es5-ext": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz" + } + }, + "es6-weak-map": { + "version": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.1.tgz", + "integrity": "sha1-DSu9iCfrX7S6j5f7/qUNQ9sh6oE=", + "dev": true, + "requires": { + "d": "0.1.1", + "es5-ext": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz", + "es6-iterator": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz", + "es6-symbol": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "requires": { + "esprima": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "estraverse": "1.9.3", + "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "optionator": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "source-map": "0.2.0" + }, + "dependencies": { + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "escope": { + "version": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.4.tgz", + "es6-weak-map": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.1.tgz", + "esrecurse": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", + "estraverse": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz" + } + }, + "eslint": { + "version": "https://registry.npmjs.org/eslint/-/eslint-3.13.1.tgz", + "integrity": "sha1-Vk0mRrXv3thd+WmFMy7dkaI7/yU=", + "dev": true, + "requires": { + "babel-code-frame": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.20.0.tgz", + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "concat-stream": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", + "doctrine": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "escope": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "espree": "https://registry.npmjs.org/espree/-/espree-3.3.2.tgz", + "estraverse": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "file-entry-cache": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "globals": "https://registry.npmjs.org/globals/-/globals-9.14.0.tgz", + "ignore": "https://registry.npmjs.org/ignore/-/ignore-3.2.0.tgz", + "imurmurhash": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "inquirer": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "is-my-json-valid": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz", + "is-resolvable": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", + "js-yaml": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "json-stable-stringify": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "levn": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "natural-compare": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "optionator": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "path-is-inside": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "pluralize": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "progress": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "require-uncached": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "shelljs": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.6.tgz", + "strip-bom": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "strip-json-comments": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "table": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "text-table": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "user-home": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz" + }, + "dependencies": { + "strip-bom": { + "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "espree": { + "version": "https://registry.npmjs.org/espree/-/espree-3.3.2.tgz", + "integrity": "sha1-2/P63rTstNR3gwPlAQOz02yIuJw=", + "dev": true, + "requires": { + "acorn": "https://registry.npmjs.org/acorn/-/acorn-4.0.4.tgz", + "acorn-jsx": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz" + } + }, + "esprima": { + "version": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "esrecurse": { + "version": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", + "integrity": "sha1-RxO2U2rffyrE8yfVWed1a/9kgiA=", + "dev": true, + "requires": { + "estraverse": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.1.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + }, + "dependencies": { + "estraverse": { + "version": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.1.tgz", + "integrity": "sha1-9srKcokzqFDvkGYdDheYK6RxEaI=", + "dev": true + } + } + }, + "estraverse": { + "version": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-emitter": { + "version": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.4.tgz", + "integrity": "sha1-jWPd+0z+H647MsomXExyAiIIC7U=", + "dev": true, + "requires": { + "d": "0.1.1", + "es5-ext": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz" + } + }, + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", + "dev": true + }, + "exists-stat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/exists-stat/-/exists-stat-1.0.0.tgz", + "integrity": "sha1-BmDjUlouidnkRhKUQMJy7foktSk=", + "dev": true + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "exit-hook": { + "version": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "dev": true, + "requires": { + "os-homedir": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extract-zip": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", + "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", + "dev": true, + "requires": { + "concat-stream": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "debug": "2.6.9", + "mkdirp": "0.5.0", + "yauzl": "2.4.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "1.2.0" + } + }, + "figures": { + "version": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + } + }, + "file-entry-cache": { + "version": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", + "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-up": { + "version": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "dev": true, + "requires": { + "glob": "5.0.15" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + } + } + } + }, + "flat-cache": { + "version": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", + "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", + "dev": true, + "requires": { + "circular-json": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", + "del": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "write": "https://registry.npmjs.org/write/-/write-0.2.1.tgz" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-exists-sync": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", + "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", + "dev": true + }, + "fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "jsonfile": "2.4.0", + "klaw": "1.3.1" + } + }, + "fs.realpath": { + "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "gaze": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "dev": true, + "requires": { + "globule": "1.2.0" + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "getobject": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", + "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "dev": true, + "requires": { + "fs.realpath": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "dev": true, + "requires": { + "global-prefix": "0.1.5", + "is-windows": "0.2.0" + } + }, + "global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1", + "ini": "1.3.5", + "is-windows": "0.2.0", + "which": "1.2.14" + } + }, + "globals": { + "version": "https://registry.npmjs.org/globals/-/globals-9.14.0.tgz", + "integrity": "sha1-iFmTavADh0EmMFOznQ52yiQeQDQ=", + "dev": true + }, + "globby": { + "version": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "arrify": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "globule": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", + "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "dev": true, + "requires": { + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz" + } + }, + "graceful-fs": { + "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "grunt": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.1.tgz", + "integrity": "sha1-6HeHZOlEsY8yuw8QuQeEdcnftWs=", + "dev": true, + "requires": { + "coffee-script": "1.10.0", + "dateformat": "1.0.12", + "eventemitter2": "0.4.14", + "exit": "0.1.2", + "findup-sync": "0.3.0", + "glob": "7.0.6", + "grunt-cli": "1.2.0", + "grunt-known-options": "1.1.0", + "grunt-legacy-log": "1.0.0", + "grunt-legacy-util": "1.0.0", + "iconv-lite": "0.4.19", + "js-yaml": "3.5.5", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "nopt": "3.0.6", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "rimraf": "2.2.8" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + } + }, + "grunt-cli": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", + "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", + "dev": true, + "requires": { + "findup-sync": "0.3.0", + "grunt-known-options": "1.1.0", + "nopt": "3.0.6", + "resolve": "1.1.7" + } + }, + "js-yaml": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz", + "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=", + "dev": true, + "requires": { + "argparse": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "esprima": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + } + } + }, + "grunt-contrib-clean": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-1.1.0.tgz", + "integrity": "sha1-Vkq/LQN4qYOhW54/MO51tzjEBjg=", + "dev": true, + "requires": { + "async": "1.5.2", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz" + } + }, + "grunt-contrib-compress": { + "version": "https://registry.npmjs.org/grunt-contrib-compress/-/grunt-contrib-compress-1.4.3.tgz", + "integrity": "sha1-Ac7/ucY39S5wgfRjdQmD0KOw+nM=", + "dev": true, + "requires": { + "archiver": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "iltorb": "https://registry.npmjs.org/iltorb/-/iltorb-1.3.4.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "pretty-bytes": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "stream-buffers": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz" + }, + "dependencies": { + "pretty-bytes": { + "version": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", + "dev": true + } + } + }, + "grunt-contrib-concat": { + "version": "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-1.0.1.tgz", + "integrity": "sha1-YVCYYwhOhx1+ht5IwBUlntl3Rb0=", + "dev": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" + } + }, + "grunt-contrib-connect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz", + "integrity": "sha1-XPkzuRpnOGBEJzwLJERgPNmIebo=", + "dev": true, + "requires": { + "async": "1.5.2", + "connect": "3.6.5", + "connect-livereload": "0.5.4", + "http2": "3.3.7", + "morgan": "1.9.0", + "opn": "4.0.2", + "portscanner": "1.2.0", + "serve-index": "1.9.1", + "serve-static": "1.13.1" + } + }, + "grunt-contrib-qunit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-qunit/-/grunt-contrib-qunit-2.0.0.tgz", + "integrity": "sha1-VKUbSyyE/uYsO34AFFySjR7Ct+w=", + "dev": true, + "requires": { + "grunt-lib-phantomjs": "1.1.0" + } + }, + "grunt-contrib-uglify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-3.3.0.tgz", + "integrity": "sha512-W9O7lJE3PlD8VCc5fyaf98QV7f5wEDiU4PBIh0+/6UBbk2LhgzEFS0/p+taH5UD3+PlEn7QPN0o06Z0To6SqXw==", + "dev": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "maxmin": "1.1.0", + "uglify-js": "3.3.4", + "uri-path": "1.0.0" + } + }, + "grunt-contrib-watch": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.0.0.tgz", + "integrity": "sha1-hKGnodar0m7VaEE0lscxM+mQAY8=", + "dev": true, + "requires": { + "async": "1.5.2", + "gaze": "1.1.2", + "lodash": "3.10.1", + "tiny-lr": "0.2.1" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "grunt-eslint": { + "version": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-19.0.0.tgz", + "integrity": "sha1-u3TDeQYVmc7B9mFp3vKonYYthhs=", + "dev": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "eslint": "https://registry.npmjs.org/eslint/-/eslint-3.13.1.tgz" + } + }, + "grunt-git-describe": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/grunt-git-describe/-/grunt-git-describe-2.4.2.tgz", + "integrity": "sha1-kvi0mWqAuhHOlcok/zZ6THJ89Qg=", + "dev": true, + "requires": { + "grunt-util-args": "0.0.3", + "grunt-util-options": "0.0.3", + "grunt-util-process": "0.0.2", + "grunt-util-spawn": "0.0.2" + } + }, + "grunt-istanbul": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/grunt-istanbul/-/grunt-istanbul-0.8.0.tgz", + "integrity": "sha512-grqY1WEo4C1N0wSN8J1ha+YCcDF1OwFHSRemmOCHna+yasvnpAjuthsYIY+0RPH3GEpz+sjG1N95wHIqhBkfkQ==", + "dev": true, + "requires": { + "chalk": "1.1.1", + "istanbul": "0.4.5", + "nue": "0.7.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", + "integrity": "sha1-UJr7ZwZudJn36zU1x3RFdyri0Bk=", + "dev": true, + "requires": { + "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + } + } + } + }, + "grunt-known-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz", + "integrity": "sha1-pCdO6zL6dl2lp6OxcSYXzjsUQUk=", + "dev": true + }, + "grunt-legacy-log": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.0.tgz", + "integrity": "sha1-+4bxgJhHvAfcR4Q/ns1srLYt8tU=", + "dev": true, + "requires": { + "colors": "1.1.2", + "grunt-legacy-log-utils": "1.0.0", + "hooker": "0.2.3", + "lodash": "3.10.1", + "underscore.string": "3.2.3" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "grunt-legacy-log-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz", + "integrity": "sha1-p7ji0Ps1taUPSvmG/BEnSevJbz0=", + "dev": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "lodash": "4.3.0" + }, + "dependencies": { + "lodash": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", + "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=", + "dev": true + } + } + }, + "grunt-legacy-util": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz", + "integrity": "sha1-OGqnjcbtUJhsKxiVcmWxtIq7m4Y=", + "dev": true, + "requires": { + "async": "1.5.2", + "exit": "0.1.2", + "getobject": "0.1.0", + "hooker": "0.2.3", + "lodash": "4.3.0", + "underscore.string": "3.2.3", + "which": "1.2.14" + }, + "dependencies": { + "lodash": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", + "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=", + "dev": true + } + } + }, + "grunt-lib-phantomjs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-lib-phantomjs/-/grunt-lib-phantomjs-1.1.0.tgz", + "integrity": "sha1-np7c3Z/S3UDgwYHJQ3HVcqpe6tI=", + "dev": true, + "requires": { + "eventemitter2": "0.4.14", + "phantomjs-prebuilt": "2.1.16", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "semver": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "temporary": "0.0.8" + } + }, + "grunt-text-replace": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/grunt-text-replace/-/grunt-text-replace-0.4.0.tgz", + "integrity": "sha1-252c5Z4v5J2id+nbwZXD4Rz7FsI=", + "dev": true + }, + "grunt-util-args": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/grunt-util-args/-/grunt-util-args-0.0.3.tgz", + "integrity": "sha1-1PxMaDB2a2uOnfDNZnLhuxcuAFI=", + "dev": true + }, + "grunt-util-options": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/grunt-util-options/-/grunt-util-options-0.0.3.tgz", + "integrity": "sha1-fB0pJQtMMxY3a05mGWjGrM4/XoU=", + "dev": true, + "requires": { + "grunt-util-property": "0.0.1" + } + }, + "grunt-util-process": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/grunt-util-process/-/grunt-util-process-0.0.2.tgz", + "integrity": "sha1-qErZOnN3V+6q8Pgtimz0Uj7jcYY=", + "dev": true + }, + "grunt-util-property": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/grunt-util-property/-/grunt-util-property-0.0.1.tgz", + "integrity": "sha1-O+p5hyIl/J+iA0aOsqEknKrWcR4=", + "dev": true + }, + "grunt-util-spawn": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/grunt-util-spawn/-/grunt-util-spawn-0.0.2.tgz", + "integrity": "sha1-FfILcvaNOZYaQQ7MkmjovOczHuc=", + "dev": true + }, + "gzip-size": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-1.0.0.tgz", + "integrity": "sha1-Zs+LEBBHInuVus5uodoMF37Vwi8=", + "dev": true, + "requires": { + "browserify-zlib": "0.1.4", + "concat-stream": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz" + } + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + } + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + } + } + }, + "has-ansi": { + "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "hasha": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", + "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", + "dev": true, + "requires": { + "is-stream": "1.1.0", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" + } + }, + "hoek": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", + "dev": true + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "1.0.0" + } + }, + "hooker": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", + "dev": true + }, + "hosted-git-info": { + "version": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.5.tgz", + "integrity": "sha1-C6gdkNouJas0ozLm7HeTbhWYEYs=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + } + }, + "http-parser-js": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", + "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "http2": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/http2/-/http2-3.3.7.tgz", + "integrity": "sha512-puSi8M8WNlFJm9Pk4c/Mbz9Gwparuj3gO9/RRO5zv6piQ0FY+9Qywp0PdWshYgsMJSalixFY7eC6oPu0zRxLAQ==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "ignore": { + "version": "https://registry.npmjs.org/ignore/-/ignore-3.2.0.tgz", + "integrity": "sha1-jYjwPDACoKxSEU2yXSxnOwvx5DU=", + "dev": true + }, + "iltorb": { + "version": "https://registry.npmjs.org/iltorb/-/iltorb-1.3.4.tgz", + "integrity": "sha1-y+f3OqXpNSfavesZu0+ND73wSo8=", + "dev": true, + "optional": true, + "requires": { + "nan": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "node-pre-gyp": "0.6.36" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "aproba": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.2.tgz", + "integrity": "sha512-ZpYajIfO0j2cOFTO955KUMIKNmj6zhX8kVztMAxFsDaMwz+9Z9SV0uou2pC9HJqcfpffOsjnbrDMvkNy+9RXPw==", + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.1" + } + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.2", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.1" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true, + "optional": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz", + "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=", + "dev": true, + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", + "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.1.tgz", + "integrity": "sha512-u6cxIvtbZcjq2HH71Zc/SRBUl7vbv62szIqmqqGpK3HY5J1c0kR/LUzKUpeoFgMzapvVAlBD+QY56ilWmHi4Nw==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.2", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "optional": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", + "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", + "dev": true + } + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", + "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.3.1", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } + }, + "imurmurhash": { + "version": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz" + } + }, + "inflight": { + "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + }, + "inherits": { + "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, + "requires": { + "ansi-escapes": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "cli-cursor": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "cli-width": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", + "figures": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "readline2": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "run-async": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "rx-lite": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "through": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + } + }, + "interpret": { + "version": "https://registry.npmjs.org/interpret/-/interpret-1.0.1.tgz", + "integrity": "sha1-1Xn7f2k7hYAElHrzn6DbSfeVYCw=", + "dev": true + }, + "is-arrayish": { + "version": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "1.11.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + } + }, + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-my-json-valid": { + "version": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz", + "integrity": "sha1-k27do8o8IR/ZjzstPgjaQ/eykVs=", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "xtend": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-path-cwd": { + "version": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-resolvable": { + "version": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", + "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "dev": true, + "requires": { + "tryit": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "dev": true + }, + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", + "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", + "dev": true, + "requires": { + "abbrev": "1.0.9", + "async": "1.5.2", + "escodegen": "1.8.1", + "esprima": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "glob": "5.0.15", + "handlebars": "4.0.11", + "js-yaml": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "nopt": "3.0.6", + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "resolve": "1.1.7", + "supports-color": "3.2.3", + "which": "1.2.14", + "wordwrap": "1.0.0" + }, + "dependencies": { + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "dev": true + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "js-reporters": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/js-reporters/-/js-reporters-1.2.0.tgz", + "integrity": "sha1-fPLLaYGWaEeQNQ0MTKB/Su2ewX4=", + "dev": true + }, + "js-tokens": { + "version": "https://registry.npmjs.org/js-tokens/-/js-tokens-2.0.0.tgz", + "integrity": "sha1-eZA/VWPud4zBFi5tzxoAJ8l/nLU=", + "dev": true + }, + "js-yaml": { + "version": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "dev": true, + "requires": { + "argparse": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "esprima": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonpointer": { + "version": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kew": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", + "integrity": "sha1-edk9LTM2PW/dKXCzNdkUGtWR15s=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lazystream": { + "version": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz" + } + }, + "levn": { + "version": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" + } + }, + "livereload-js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.2.2.tgz", + "integrity": "sha1-bIclfmSKtHW8JOoldFftzB+NC8I=", + "dev": true + }, + "load-json-file": { + "version": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "parse-json": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "strip-bom": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" + } + }, + "lodash": { + "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loud-rejection": { + "version": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "signal-exit": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "matcher-collection": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-1.0.5.tgz", + "integrity": "sha512-nUCmzKipcJEwYsBVAFh5P+d7JBuhJaW1xs85Hara9xuMLqtCVUrW6DSC0JVIkluxEH2W45nPBM/wjHtBXa/tYA==", + "dev": true, + "requires": { + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz" + } + }, + "maxmin": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-1.1.0.tgz", + "integrity": "sha1-cTZehKmd2Piz99X94vANHn9zvmE=", + "dev": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "figures": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "gzip-size": "1.0.0", + "pretty-bytes": "1.0.4" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "meow": { + "version": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "decamelize": "1.2.0", + "loud-rejection": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "map-obj": "1.0.1", + "minimist": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "normalize-package-data": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "read-pkg-up": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "redent": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "trim-newlines": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "minimatch": { + "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", + "dev": true, + "requires": { + "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz" + } + }, + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mkdirp": { + "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + }, + "dependencies": { + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "morgan": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", + "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", + "dev": true, + "requires": { + "basic-auth": "2.0.0", + "debug": "2.6.9", + "depd": "1.1.1", + "on-finished": "2.3.0", + "on-headers": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "mute-stream": { + "version": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "dev": true + }, + "nan": { + "version": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", + "dev": true, + "optional": true + }, + "natural-compare": { + "version": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1.1.1" + } + }, + "normalize-package-data": { + "version": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz", + "integrity": "sha1-jZJPFClg4Xd+f/4XBUNjHMfLAt8=", + "dev": true, + "requires": { + "hosted-git-info": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.5.tgz", + "is-builtin-module": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "semver": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "validate-npm-package-license": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz" + } + }, + "normalize-path": { + "version": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz" + } + }, + "nue": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/nue/-/nue-0.7.1.tgz", + "integrity": "sha1-M1I73wnJjiSf1C1Mko6MxsdlBz8=", + "dev": true + }, + "number-is-nan": { + "version": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + }, + "onetime": { + "version": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "opn": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "dev": true, + "requires": { + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.10", + "wordwrap": "0.0.3" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "optionator": { + "version": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "levn": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "prelude-ls": "1.1.2", + "type-check": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" + }, + "dependencies": { + "wordwrap": { + "version": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "os-homedir": { + "version": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "package": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package/-/package-1.0.1.tgz", + "integrity": "sha1-0lofmeJQbcsn1nBLg9yooxLk7cw=", + "dev": true + }, + "pako": { + "version": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "path-exists": { + "version": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "path-is-absolute": { + "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "phantomjs-prebuilt": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.16.tgz", + "integrity": "sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=", + "dev": true, + "requires": { + "es6-promise": "4.2.2", + "extract-zip": "1.6.6", + "fs-extra": "1.0.0", + "hasha": "2.2.0", + "kew": "0.7.0", + "progress": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "request": "2.83.0", + "request-progress": "2.0.1", + "which": "1.2.14" + } + }, + "pify": { + "version": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + } + }, + "pluralize": { + "version": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "portscanner": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.2.0.tgz", + "integrity": "sha1-sUu9olfRTDEPqcwJaCrwLUCWGAI=", + "dev": true, + "requires": { + "async": "1.5.2" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-bytes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", + "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", + "dev": true, + "requires": { + "get-stdin": "4.0.1", + "meow": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz" + } + }, + "process-nextick-args": { + "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "progress": { + "version": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "qunitjs": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/qunitjs/-/qunitjs-2.4.1.tgz", + "integrity": "sha512-by/2zYvsNdS6Q6Ev6UJ3qJK+OYVlTzWlQ4afaeYMhVh1dd2K3N1ZZKCrCm3WSWPnz5ELMT8WyJRcVy5PXT2y+Q==", + "dev": true, + "requires": { + "chokidar": "1.6.1", + "commander": "2.9.0", + "exists-stat": "1.0.0", + "findup-sync": "0.4.3", + "js-reporters": "1.2.0", + "resolve": "1.3.2", + "walk-sync": "0.3.1" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "findup-sync": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", + "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", + "dev": true, + "requires": { + "detect-file": "0.1.0", + "is-glob": "2.0.1", + "micromatch": "2.3.11", + "resolve-dir": "0.1.1" + } + }, + "resolve": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.2.tgz", + "integrity": "sha1-HwRCyeDLuBNuh7kwX5MvRsfygjU=", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + } + } + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", + "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=", + "dev": true, + "requires": { + "bytes": "2.4.0", + "iconv-lite": "0.4.13", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", + "dev": true + } + } + }, + "read-pkg": { + "version": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "normalize-package-data": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz", + "path-type": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" + } + }, + "read-pkg-up": { + "version": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "read-pkg": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" + } + }, + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", + "integrity": "sha1-qeb+w8fdqF+LsbO6cChgRVb8gl4=", + "dev": true, + "requires": { + "buffer-shims": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "string_decoder": "0.10.31", + "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", + "set-immediate-shim": "1.0.1" + } + }, + "readline2": { + "version": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true, + "requires": { + "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "mute-stream": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz" + } + }, + "rechoir": { + "version": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "https://registry.npmjs.org/resolve/-/resolve-1.2.0.tgz" + } + }, + "redent": { + "version": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "strip-indent": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz" + } + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "request-progress": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-2.0.1.tgz", + "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", + "dev": true, + "requires": { + "throttleit": "1.0.0" + } + }, + "require-uncached": { + "version": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "resolve-from": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz" + } + }, + "resolve": { + "version": "https://registry.npmjs.org/resolve/-/resolve-1.2.0.tgz", + "integrity": "sha1-lYnD8vYUnRQXpAvswWY9tuxrwmw=", + "dev": true + }, + "resolve-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", + "dev": true, + "requires": { + "expand-tilde": "1.2.2", + "global-modules": "0.2.3" + } + }, + "resolve-from": { + "version": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "restore-cursor": { + "version": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "onetime": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz" + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "integrity": "sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=", + "dev": true, + "requires": { + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz" + } + }, + "run-async": { + "version": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true, + "requires": { + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + } + }, + "rx-lite": { + "version": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "semver": { + "version": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + }, + "send": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "1.1.1", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "1.0.3", + "http-errors": "1.6.2", + "mime-types": "2.1.17", + "parseurl": "1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "serve-static": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "dev": true, + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.1" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + }, + "shelljs": { + "version": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.6.tgz", + "integrity": "sha1-N5zM+1a5HIYB5HkzVutTgpJN6a0=", + "dev": true, + "requires": { + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "interpret": "https://registry.npmjs.org/interpret/-/interpret-1.0.1.tgz", + "rechoir": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" + } + }, + "signal-exit": { + "version": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slice-ansi": { + "version": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + }, + "source-map": { + "version": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "spdx-correct": { + "version": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz" + } + }, + "spdx-expression-parse": { + "version": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "sprintf-js": { + "version": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "stream-buffers": { + "version": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=", + "dev": true + }, + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + } + }, + "strip-bom": { + "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" + } + }, + "strip-indent": { + "version": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "strip-json-comments": { + "version": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "table": { + "version": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "requires": { + "ajv": "https://registry.npmjs.org/ajv/-/ajv-4.10.4.tgz", + "ajv-keywords": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.0.tgz", + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "slice-ansi": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "string-width": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", + "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", + "dev": true, + "requires": { + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + } + } + }, + "tar-stream": { + "version": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz", + "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=", + "dev": true, + "requires": { + "bl": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", + "end-of-stream": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", + "xtend": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" + } + }, + "temporary": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/temporary/-/temporary-0.0.8.tgz", + "integrity": "sha1-oYqYHSi6jKNgJ/s8MFOMPst0CsA=", + "dev": true, + "requires": { + "package": "1.0.1" + } + }, + "text-table": { + "version": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "throttleit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", + "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", + "dev": true + }, + "through": { + "version": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tiny-lr": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.2.1.tgz", + "integrity": "sha1-s/26gC5dVqM8L28QeUsy5Hescp0=", + "dev": true, + "requires": { + "body-parser": "1.14.2", + "debug": "2.2.0", + "faye-websocket": "0.10.0", + "livereload-js": "2.2.2", + "parseurl": "1.3.2", + "qs": "5.1.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "qs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz", + "integrity": "sha1-TZMuXH6kEcynajEtOaYGIA/VDNk=", + "dev": true + } + } + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "trim-newlines": { + "version": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "tryit": { + "version": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-is": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.17" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.4.tgz", + "integrity": "sha512-hfIwuAQI5dlXP30UtdmWoYF9k+ypVqBXIdmd6ZKBiaNHHvA8ty7ZloMe3+7S5AEKVkxHbjByl4DfRHQ7QpZquw==", + "dev": true, + "requires": { + "commander": "2.12.2", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "underscore.string": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.2.3.tgz", + "integrity": "sha1-gGmSYzZl1eX8tNsfs6hi62jp5to=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "uri-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/uri-path/-/uri-path-1.0.0.tgz", + "integrity": "sha1-l0fwGDWJM8Md4PzP2C0TjmcmLjI=", + "dev": true + }, + "user-home": { + "version": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true, + "requires": { + "os-homedir": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" + } + }, + "util-deprecate": { + "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true + }, + "validate-npm-package-license": { + "version": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "spdx-expression-parse": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "extsprintf": "1.3.0" + } + }, + "walk-sync": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-0.3.1.tgz", + "integrity": "sha1-VYoWrqyMDbWcAotzxm85doTs5GU=", + "dev": true, + "requires": { + "ensure-posix-path": "1.0.2", + "matcher-collection": "1.0.5" + } + }, + "walkdir": { + "version": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", + "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", + "dev": true + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": "0.4.9", + "websocket-extensions": "0.1.3" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrappy": { + "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" + } + }, + "xtend": { + "version": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + } + } + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "requires": { + "fd-slicer": "1.0.1" + } + }, + "zip-stream": { + "version": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", + "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", + "dev": true, + "requires": { + "archiver-utils": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", + "compress-commons": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.0.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz" + } + } + } +} diff --git a/src/tile.js b/src/tile.js index a0b29f4f..0cc836f0 100644 --- a/src/tile.js +++ b/src/tile.js @@ -40,7 +40,7 @@ * @param {Number} level The zoom level this tile belongs to. * @param {Number} x The vector component 'x'. * @param {Number} y The vector component 'y'. - * @param {OpenSeadragon.Point} bounds Where this tile fits, in normalized + * @param {OpenSeadragon.Rect} bounds Where this tile fits, in normalized * coordinates. * @param {Boolean} exists Is this tile a part of a sparse image? ( Also has * this tile failed to load? ) @@ -49,8 +49,11 @@ * is provided directly by the tile source. * @param {Boolean} loadWithAjax Whether this tile image should be loaded with an AJAX request . * @param {Object} ajaxHeaders The headers to send with this tile's AJAX request (if applicable). + * @param {OpenSeadragon.Rect} sourceBounds The portion of the tile to use as the source of the + * drawing operation, in pixels. Note that this only works when drawing with canvas; when drawing + * with HTML the entire tile is always used. */ -$.Tile = function(level, x, y, bounds, exists, url, context2D, loadWithAjax, ajaxHeaders) { +$.Tile = function(level, x, y, bounds, exists, url, context2D, loadWithAjax, ajaxHeaders, sourceBounds) { /** * The zoom level this tile belongs to. * @member {Number} level @@ -75,6 +78,13 @@ $.Tile = function(level, x, y, bounds, exists, url, context2D, loadWithAjax, aja * @memberof OpenSeadragon.Tile# */ this.bounds = bounds; + /** + * The portion of the tile to use as the source of the drawing operation, in pixels. Note that + * this only works when drawing with canvas; when drawing with HTML the entire tile is always used. + * @member {OpenSeadragon.Rect} sourceBounds + * @memberof OpenSeadragon.Tile# + */ + this.sourceBounds = sourceBounds; /** * Is this tile a part of a sparse image? Also has this tile failed to load? * @member {Boolean} exists @@ -357,12 +367,16 @@ $.Tile.prototype = { // changes as we are rendering the image drawingHandler({context: context, tile: this, rendered: rendered}); + if (!this.sourceBounds) { // Just in case + this.sourceBounds = new $.Rect(0, 0, rendered.canvas.width, rendered.canvas.height); + } + context.drawImage( rendered.canvas, - 0, - 0, - rendered.canvas.width, - rendered.canvas.height, + this.sourceBounds.x, + this.sourceBounds.y, + this.sourceBounds.width, + this.sourceBounds.height, position.x, position.y, size.x, diff --git a/src/tiledimage.js b/src/tiledimage.js index aa4ca876..49ebcb22 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -1372,6 +1372,7 @@ function getTile( var xMod, yMod, bounds, + sourceBounds, exists, url, ajaxHeaders, @@ -1389,6 +1390,7 @@ function getTile( xMod = ( numTiles.x + ( x % numTiles.x ) ) % numTiles.x; yMod = ( numTiles.y + ( y % numTiles.y ) ) % numTiles.y; bounds = tileSource.getTileBounds( level, xMod, yMod ); + sourceBounds = tileSource.getTileBounds( level, xMod, yMod, true ); exists = tileSource.tileExists( level, xMod, yMod ); url = tileSource.getTileUrl( level, xMod, yMod ); @@ -1418,7 +1420,8 @@ function getTile( url, context2D, tiledImage.loadTilesWithAjax, - ajaxHeaders + ajaxHeaders, + sourceBounds ); if (xMod === numTiles.x - 1) { diff --git a/src/tilesource.js b/src/tilesource.js index 84aa5a82..be5c1d5e 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -373,8 +373,12 @@ $.TileSource.prototype = { * @param {Number} level * @param {Number} x * @param {Number} y + * @param {Boolean} [isSource=false] Whether to return the source bounds of the tile. + * @returns {OpenSeadragon.Rect} Either where this tile fits (in normalized coordinates) or the + * portion of the tile to use as the source of the drawing operation (in pixels), depending on + * the isSource parameter. */ - getTileBounds: function( level, x, y ) { + getTileBounds: function( level, x, y, isSource ) { var dimensionsScaled = this.dimensions.times( this.getLevelScale( level ) ), tileWidth = this.getTileWidth(level), tileHeight = this.getTileHeight(level), @@ -387,6 +391,12 @@ $.TileSource.prototype = { sx = Math.min( sx, dimensionsScaled.x - px ); sy = Math.min( sy, dimensionsScaled.y - py ); + if (isSource) { + scale = 1; + px = 0; + py = 0; + } + return new $.Rect( px * scale, py * scale, sx * scale, sy * scale ); }, From e5355abafe2bb3ed773b4073565b80fcb8c56ef5 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Fri, 23 Mar 2018 09:22:45 -0700 Subject: [PATCH 017/109] Changelog for #1426 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index ca52de67..f895ff1e 100644 --- a/changelog.txt +++ b/changelog.txt @@ -11,6 +11,7 @@ OPENSEADRAGON CHANGELOG * Improved IIIF options.maxLevel calculation (#1401) * Added canvas-key events, along with the ability to cancel key actions (#1414) * Added optional zoom in the middle of the image instead of pointer position (#1423) +* Now supporting square edge tiles that are padded rather than cropped (#1426) 2.3.1: From 7ba516b30aa2db16e070cec76967110488d784b7 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Tue, 27 Mar 2018 09:48:18 -0700 Subject: [PATCH 018/109] Fixed issue with square tile code on IE --- src/tilesource.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/tilesource.js b/src/tilesource.js index be5c1d5e..cc48aeec 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -392,9 +392,7 @@ $.TileSource.prototype = { sy = Math.min( sy, dimensionsScaled.y - py ); if (isSource) { - scale = 1; - px = 0; - py = 0; + return new $.Rect(0, 0, Math.floor(sx), Math.floor(sy)); } return new $.Rect( px * scale, py * scale, sx * scale, sy * scale ); From 02a397638c7cb5a3a8485ab6f759d265bf4c4822 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Mon, 2 Apr 2018 11:09:23 -0700 Subject: [PATCH 019/109] Fixed test errors --- src/tile.js | 17 +++++++++++------ src/tilesource.js | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/tile.js b/src/tile.js index 0cc836f0..de1eb40d 100644 --- a/src/tile.js +++ b/src/tile.js @@ -367,16 +367,21 @@ $.Tile.prototype = { // changes as we are rendering the image drawingHandler({context: context, tile: this, rendered: rendered}); - if (!this.sourceBounds) { // Just in case - this.sourceBounds = new $.Rect(0, 0, rendered.canvas.width, rendered.canvas.height); + var sourceWidth, sourceHeight; + if (this.sourceBounds) { + sourceWidth = Math.min(this.sourceBounds.width, rendered.canvas.width); + sourceHeight = Math.min(this.sourceBounds.height, rendered.canvas.height); + } else { + sourceWidth = rendered.canvas.width; + sourceHeight = rendered.canvas.height; } context.drawImage( rendered.canvas, - this.sourceBounds.x, - this.sourceBounds.y, - this.sourceBounds.width, - this.sourceBounds.height, + 0, + 0, + sourceWidth, + sourceHeight, position.x, position.y, size.x, diff --git a/src/tilesource.js b/src/tilesource.js index cc48aeec..a5b3897b 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -392,7 +392,7 @@ $.TileSource.prototype = { sy = Math.min( sy, dimensionsScaled.y - py ); if (isSource) { - return new $.Rect(0, 0, Math.floor(sx), Math.floor(sy)); + return new $.Rect(0, 0, sx, sy); } return new $.Rect( px * scale, py * scale, sx * scale, sy * scale ); From 71fd747051e14d77bc096dacf5019c70ed0b4701 Mon Sep 17 00:00:00 2001 From: Nelson Campos Date: Wed, 4 Apr 2018 11:31:18 +0100 Subject: [PATCH 020/109] Adds flip/mirror slides feature. This commit adds full support for a new OpenSeaDragon(OSD) feature - Mirror/Flip. In order to fully support this new feature, the following OSD objects had to be modified: - drawer.js: - navigator - openseadragon - strings - tiledImage - viewer Additionally, a new flip button was created (similar to the existing ones). Flip Logic Whenever the state is flip button is pressed, flip state is toogled, inverting all the controls and displays (the rotation direction is inverted as well). This means that all viewer coordinates (including user inputs) must me inverted too. Summary of modifications - drawer.js: modified _offsetForRotation to invert rotation angle on flipped state. Added a _flip method to scale/mirror canvas context. - navigator.js: adds full flip support and inverts nagivator inputs. - openseadragon.js: new buttons, flip state variable and showFlipControl variable. - strings.js: flip tool help tips. - tiledImage.js: flips the actual drawing canvas. - viewer.js: Added keyboardshortcuts to rotate 90degrees (r/R) and flip image (f/F). flip button state is stored here and flip order is set. The flipped state is stored on viewer object. --- images/flip_grouphover.png | Bin 0 -> 2179 bytes images/flip_hover.png | Bin 0 -> 2340 bytes images/flip_pressed.png | Bin 0 -> 2307 bytes images/flip_rest.png | Bin 0 -> 2300 bytes src/drawer.js | 25 ++++++++- src/navigator.js | 64 +++++++++++++++++++++-- src/openseadragon.js | 20 +++++++ src/strings.js | 3 +- src/tiledimage.js | 10 +++- src/viewer.js | 104 ++++++++++++++++++++++++++++++++----- src/viewport.js | 1 - 11 files changed, 205 insertions(+), 22 deletions(-) create mode 100644 images/flip_grouphover.png create mode 100644 images/flip_hover.png create mode 100644 images/flip_pressed.png create mode 100644 images/flip_rest.png diff --git a/images/flip_grouphover.png b/images/flip_grouphover.png new file mode 100644 index 0000000000000000000000000000000000000000..014ead6a384c9b97f041f1c9b0dcc3b52e5c5bc6 GIT binary patch literal 2179 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

+ Simple demo page to show custom location for navigator. +
+ +
+ + + From 3bc3be5c1963c7f6150d2e5b039c926701cdd27f Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Fri, 10 Aug 2018 09:40:07 -0700 Subject: [PATCH 069/109] Changelog for #1507 --- changelog.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/changelog.txt b/changelog.txt index e935148a..4b13d526 100644 --- a/changelog.txt +++ b/changelog.txt @@ -3,6 +3,8 @@ OPENSEADRAGON CHANGELOG 2.4.1: (In progress) +* You can now turn off the default canvas image smoothing, if you want sharp pixels when zoomed in past 100% (#1507) + 2.4.0: * BREAKING CHANGE: Viewer's canvas-double-click event is now fired before it initiates the zoom (#1288) From 105801b6fa94c05c988374f9cbfd569a2043d90b Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Fri, 10 Aug 2018 09:51:15 -0700 Subject: [PATCH 070/109] Changelog for #1515. --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 4b13d526..a4de5e3c 100644 --- a/changelog.txt +++ b/changelog.txt @@ -4,6 +4,7 @@ OPENSEADRAGON CHANGELOG 2.4.1: (In progress) * You can now turn off the default canvas image smoothing, if you want sharp pixels when zoomed in past 100% (#1507) +* Fixed problem with navigator highlight rectangle when returning from full screen with a custom navigator location (#1515) 2.4.0: From 2dd8a65e632dab7aaf0da4710a341de83551a8c2 Mon Sep 17 00:00:00 2001 From: Jonathan Lake Date: Tue, 21 Aug 2018 17:39:46 -0400 Subject: [PATCH 071/109] Adds option to set rotation increment for nav buttons and keyboard; Issue 1518 --- src/openseadragon.js | 4 ++++ src/viewer.js | 27 ++++++++++----------------- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/openseadragon.js b/src/openseadragon.js index 77616346..74851e94 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -271,6 +271,9 @@ * events between different devices, causing the faster devices to slow down enough to make the zoom control * more manageable. * + * @property {Number} [rotationIncrement=90] + * The number of degrees to rotate right or left when the rotate buttons or keyboard shortcuts are activated. + * * @property {Number} [pixelsPerWheelLine=40] * For pixel-resolution scrolling devices, the number of pixels equal to one scroll line. * @@ -1137,6 +1140,7 @@ function OpenSeadragon( options ){ autoResize: true, preserveImageSizeOnResize: false, // requires autoResize=true minScrollDeltaTime: 50, + rotationIncrement: 90, //DEFAULT CONTROL SETTINGS showSequenceControl: true, //SEQUENCE diff --git a/src/viewer.js b/src/viewer.js index b91cfd7b..2adf8bb1 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -2640,19 +2640,19 @@ function onCanvasKeyPress( event ) { this.viewport.applyConstraints(); } return false; - case 114: //r - 90 degrees clockwise rotation + case 114: //r - clockwise rotation if(this.viewport.flipped){ - this.viewport.setRotation(this.viewport.degrees - 90); + this.viewport.setRotation($.positiveModulo(this.viewport.degrees - this.rotationIncrement, 360)); } else{ - this.viewport.setRotation(this.viewport.degrees + 90); + this.viewport.setRotation($.positiveModulo(this.viewport.degrees + this.rotationIncrement, 360)); } this.viewport.applyConstraints(); return false; - case 82: //R - 90 degrees counterclockwise rotation + case 82: //R - counterclockwise rotation if(this.viewport.flipped){ - this.viewport.setRotation(this.viewport.degrees + 90); + this.viewport.setRotation($.positiveModulo(this.viewport.degrees + this.rotationIncrement, 360)); } else{ - this.viewport.setRotation(this.viewport.degrees - 90); + this.viewport.setRotation($.positiveModulo(this.viewport.degrees - this.rotationIncrement, 360)); } this.viewport.applyConstraints(); return false; @@ -3490,38 +3490,31 @@ function onFullScreen() { } } -/** - * Note: The current rotation feature is limited to 90 degree turns. - */ function onRotateLeft() { if ( this.viewport ) { var currRotation = this.viewport.getRotation(); if ( this.viewport.flipped ){ - currRotation = $.positiveModulo(currRotation + 90, 360); + currRotation = $.positiveModulo(currRotation + this.rotationIncrement, 360); } else { - currRotation = $.positiveModulo(currRotation - 90, 360); + currRotation = $.positiveModulo(currRotation - this.rotationIncrement, 360); } this.viewport.setRotation(currRotation); } } -/** - * Note: The current rotation feature is limited to 90 degree turns. - */ function onRotateRight() { if ( this.viewport ) { var currRotation = this.viewport.getRotation(); if ( this.viewport.flipped ){ - currRotation = $.positiveModulo(currRotation - 90, 360); + currRotation = $.positiveModulo(currRotation - this.rotationIncrement, 360); } else { - currRotation = $.positiveModulo(currRotation + 90, 360); + currRotation = $.positiveModulo(currRotation + this.rotationIncrement, 360); } this.viewport.setRotation(currRotation); } } - /** * Note: When pressed flip control button */ From 00551e6c2b4c39751cb85f46172e0223002fd326 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Wed, 22 Aug 2018 09:26:12 -0700 Subject: [PATCH 072/109] Changelog for #1524 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index a4de5e3c..1c089c06 100644 --- a/changelog.txt +++ b/changelog.txt @@ -5,6 +5,7 @@ OPENSEADRAGON CHANGELOG * You can now turn off the default canvas image smoothing, if you want sharp pixels when zoomed in past 100% (#1507) * Fixed problem with navigator highlight rectangle when returning from full screen with a custom navigator location (#1515) +* Added option to set rotation increment for nav buttons and keyboard (#1524) 2.4.0: From 0e2f5d49efc58d42f90873b13e23ae8c4f12450d Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Sat, 1 Sep 2018 10:59:20 +0200 Subject: [PATCH 073/109] Fix some typos in comments (found by codespell) Signed-off-by: Stefan Weil --- src/buttongroup.js | 2 +- src/control.js | 2 +- src/drawer.js | 2 +- src/imagetilesource.js | 2 +- src/legacytilesource.js | 2 +- src/navigator.js | 4 ++-- src/openseadragon.js | 12 ++++++------ src/overlay.js | 2 +- src/point.js | 6 +++--- src/referencestrip.js | 2 +- src/tilesource.js | 4 ++-- src/viewer.js | 14 +++++++------- src/viewport.js | 2 +- 13 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/buttongroup.js b/src/buttongroup.js index daee211c..f8b9c3ab 100644 --- a/src/buttongroup.js +++ b/src/buttongroup.js @@ -83,7 +83,7 @@ $.ButtonGroup = function( options ) { $.setElementTouchActionNone( this.element ); /** - * Tracks mouse/touch/key events accross the group of buttons. + * Tracks mouse/touch/key events across the group of buttons. * @member {OpenSeadragon.MouseTracker} tracker * @memberof OpenSeadragon.ButtonGroup# */ diff --git a/src/control.js b/src/control.js index 5a63c517..d91e6b89 100644 --- a/src/control.js +++ b/src/control.js @@ -167,7 +167,7 @@ $.Control.prototype = { /** * Determines if the control is currently visible. * @function - * @return {Boolean} true if currenly visible, false otherwise. + * @return {Boolean} true if currently visible, false otherwise. */ isVisible: function() { return this.wrapper.style.display != "none"; diff --git a/src/drawer.js b/src/drawer.js index f3ecada4..7c4852cb 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -48,7 +48,7 @@ $.Drawer = function( options ) { $.console.assert( options.viewer, "[Drawer] options.viewer is required" ); - //backward compatibility for positional args while prefering more + //backward compatibility for positional args while preferring more //idiomatic javascript options object as the only argument var args = arguments; diff --git a/src/imagetilesource.js b/src/imagetilesource.js index 417243c6..e176576f 100644 --- a/src/imagetilesource.js +++ b/src/imagetilesource.js @@ -198,7 +198,7 @@ // private // - // Builds the differents levels of the pyramid if possible + // Builds the different levels of the pyramid if possible // (i.e. if canvas API enabled and no canvas tainting issue). _buildLevels: function () { var levels = [{ diff --git a/src/legacytilesource.js b/src/legacytilesource.js index e24dbbe6..3defe342 100644 --- a/src/legacytilesource.js +++ b/src/legacytilesource.js @@ -190,7 +190,7 @@ $.extend( $.LegacyTileSource.prototype, $.TileSource.prototype, /** @lends OpenS } ); /** - * This method removes any files from the Array which dont conform to our + * This method removes any files from the Array which don't conform to our * basic requirements for a 'level' in the LegacyTileSource. * @private * @inner diff --git a/src/navigator.js b/src/navigator.js index c1bfc6f1..115d052d 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -152,7 +152,7 @@ $.Navigator = function( options ){ style.border = borderWidth + 'px solid ' + options.displayRegionColor; style.margin = '0px'; style.padding = '0px'; - //TODO: IE doesnt like this property being set + //TODO: IE doesn't like this property being set //try{ style.outline = '2px auto #909'; }catch(e){/*ignore*/} style.background = 'transparent'; @@ -571,7 +571,7 @@ function onCanvasScroll( event ) { originalEvent: event.originalEvent }); - //dont scroll the page up and down if the user is scrolling + //don't scroll the page up and down if the user is scrolling //in the navigator return false; } diff --git a/src/openseadragon.js b/src/openseadragon.js index 74851e94..af2dfca2 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -247,7 +247,7 @@ * The maximum ratio to allow a zoom-in to affect the highest level pixel * ratio. This can be set to Infinity to allow 'infinite' zooming into the * image though it is less effective visually if the HTML5 Canvas is not - * availble on the viewing device. + * available on the viewing device. * * @property {Number} [smoothTileEdgesMinZoom=1.1] * A zoom percentage ( where 1 is 100% ) of the highest resolution level. @@ -441,7 +441,7 @@ * * @property {Number} [controlsFadeDelay=2000] * The number of milliseconds to wait once the user has stopped interacting - * with the interface before begining to fade the controls. Assumes + * with the interface before beginning to fade the controls. Assumes * showNavigationControl and autoHideControls are both true. * * @property {Number} [controlsFadeLength=1500] @@ -459,7 +459,7 @@ * @property {Number} [minPixelRatio=0.5] * The higher the minPixelRatio, the lower the quality of the image that * is considered sufficient to stop rendering a given zoom level. For - * example, if you are targeting mobile devices with less bandwith you may + * example, if you are targeting mobile devices with less bandwidth you may * try setting this to 1.5 or higher. * * @property {Boolean} [mouseNavEnabled=true] @@ -1343,7 +1343,7 @@ function OpenSeadragon( options ){ /** * Determines the position of the upper-left corner of the element. * @function - * @param {Element|String} element - the elemenet we want the position for. + * @param {Element|String} element - the element we want the position for. * @returns {OpenSeadragon.Point} - the position of the upper left corner of the element. */ getElementPosition: function( element ) { @@ -2086,7 +2086,7 @@ function OpenSeadragon( options ){ /** * Similar to OpenSeadragon.delegate, but it does not immediately call * the method on the object, returning a function which can be called - * repeatedly to delegate the method. It also allows additonal arguments + * repeatedly to delegate the method. It also allows additional arguments * to be passed during construction which will be added during each * invocation, and each invocation can add additional arguments as well. * @@ -2614,7 +2614,7 @@ function OpenSeadragon( options ){ //TODO: $.console is often used inside a try/catch block which generally // prevents allowings errors to occur with detection until a debugger // is attached. Although I've been guilty of the same anti-pattern - // I eventually was convinced that errors should naturally propogate in + // I eventually was convinced that errors should naturally propagate in // all but the most special cases. /** * A convenient alias for console when available, and a simple null diff --git a/src/overlay.js b/src/overlay.js index 9d9edd88..af22fa37 100644 --- a/src/overlay.js +++ b/src/overlay.js @@ -93,7 +93,7 @@ * Defines what part of the overlay should be at the specified options.location * @param {OpenSeadragon.Overlay.OnDrawCallback} [options.onDraw] * @param {Boolean} [options.checkResize=true] Set to false to avoid to - * check the size of the overlay everytime it is drawn in the directions + * check the size of the overlay every time it is drawn in the directions * which are not scaled. It will improve performances but will cause a * misalignment if the overlay size changes. * @param {Number} [options.width] The width of the overlay in viewport diff --git a/src/point.js b/src/point.js index 2d042416..7e55ec53 100644 --- a/src/point.js +++ b/src/point.js @@ -84,10 +84,10 @@ $.Point.prototype = { }, /** - * Substract another Point to this point and return a new Point. + * Subtract another Point to this point and return a new Point. * @function - * @param {OpenSeadragon.Point} point The point to substract vector components. - * @returns {OpenSeadragon.Point} A new point representing the substraction of the + * @param {OpenSeadragon.Point} point The point to subtract vector components. + * @returns {OpenSeadragon.Point} A new point representing the subtraction of the * vector components */ minus: function( point ) { diff --git a/src/referencestrip.js b/src/referencestrip.js index e1074572..62be61f8 100644 --- a/src/referencestrip.js +++ b/src/referencestrip.js @@ -53,7 +53,7 @@ var THIS = {}; * TODO: The difficult part of this feature is figuring out how to express * this functionality as a combination of the functionality already * provided by Drawer, Viewport, TileSource, and Navigator. It may - * require better abstraction at those points in order to effeciently + * require better abstraction at those points in order to efficiently * reuse those paradigms. */ /** diff --git a/src/tilesource.js b/src/tilesource.js index 3386675a..c568e480 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -113,7 +113,7 @@ $.TileSource = function( width, height, tileSize, tileOverlap, minLevel, maxLeve //by asynchronously fetching their configuration data. $.EventSource.call( this ); - //we allow options to override anything we dont treat as + //we allow options to override anything we don't treat as //required via idiomatic options or which is functionally //set depending on the state of the readiness of this tile //source @@ -172,7 +172,7 @@ $.TileSource = function( width, height, tileSize, tileOverlap, minLevel, maxLeve } if (this.url) { - //in case the getImageInfo method is overriden and/or implies an + //in case the getImageInfo method is overridden and/or implies an //async mechanism set some safe defaults first this.aspectRatio = 1; this.dimensions = new $.Point( 10, 10 ); diff --git a/src/viewer.js b/src/viewer.js index 2adf8bb1..9be3e7fa 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -69,7 +69,7 @@ $.Viewer = function( options ) { i; - //backward compatibility for positional args while prefering more + //backward compatibility for positional args while preferring more //idiomatic javascript options object as the only argument if( !$.isPlainObject( options ) ){ options = { @@ -912,7 +912,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, nodes, i; - //dont bother modifying the DOM if we are already in full page mode. + //don't bother modifying the DOM if we are already in full page mode. if ( fullPage == this.isFullPage() ) { return this; } @@ -967,7 +967,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, bodyStyle.height = "100%"; docStyle.height = "100%"; - //when entering full screen on the ipad it wasnt sufficient to leave + //when entering full screen on the ipad it wasn't sufficient to leave //the body intact as only only the top half of the screen would //respond to touch events on the canvas, while the bottom half treated //them as touch events on the document body. Thus we remove and store @@ -1906,11 +1906,11 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, * is closed which include when changing page. * @method * @param {Element|String|Object} element - A reference to an element or an id for - * the element which will be overlayed. Or an Object specifying the configuration for the overlay. + * the element which will be overlaid. Or an Object specifying the configuration for the overlay. * If using an object, see {@link OpenSeadragon.Overlay} for a list of * all available options. * @param {OpenSeadragon.Point|OpenSeadragon.Rect} location - The point or - * rectangle which will be overlayed. This is a viewport relative location. + * rectangle which will be overlaid. This is a viewport relative location. * @param {OpenSeadragon.Placement} placement - The position of the * viewport which the location coordinates will be treated as relative * to. @@ -1969,9 +1969,9 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, * element id moving it to the new location, relative to the new placement. * @method * @param {Element|String} element - A reference to an element or an id for - * the element which is overlayed. + * the element which is overlaid. * @param {OpenSeadragon.Point|OpenSeadragon.Rect} location - The point or - * rectangle which will be overlayed. This is a viewport relative location. + * rectangle which will be overlaid. This is a viewport relative location. * @param {OpenSeadragon.Placement} placement - The position of the * viewport which the location coordinates will be treated as relative * to. diff --git a/src/viewport.js b/src/viewport.js index dec8513f..3413dbc1 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -57,7 +57,7 @@ */ $.Viewport = function( options ) { - //backward compatibility for positional args while prefering more + //backward compatibility for positional args while preferring more //idiomatic javascript options object as the only argument var args = arguments; if (args.length && args[0] instanceof $.Point) { From e3775acbe03b51af63ed705c9d3fb832f5986550 Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Sat, 1 Sep 2018 14:34:14 +0200 Subject: [PATCH 074/109] Fix typo in comment Signed-off-by: Stefan Weil --- src/openseadragon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openseadragon.js b/src/openseadragon.js index af2dfca2..e3d9aed7 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -2120,7 +2120,7 @@ function OpenSeadragon( options ){ /** - * Retreives the value of a url parameter from the window.location string. + * Retrieves the value of a url parameter from the window.location string. * @function * @param {String} key * @returns {String} The value of the url parameter or null if no param matches. From 6ea7ec261d202a92ef2f141885b08bb0c4ac7322 Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Sat, 1 Sep 2018 14:36:31 +0200 Subject: [PATCH 075/109] Fix more similar typos in comments Signed-off-by: Stefan Weil --- src/dzitilesource.js | 2 +- src/imagetilesource.js | 2 +- src/legacytilesource.js | 2 +- src/osmtilesource.js | 2 +- src/tmstilesource.js | 2 +- src/zoomifytilesource.js | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/dzitilesource.js b/src/dzitilesource.js index ee862f0d..38d35b6c 100644 --- a/src/dzitilesource.js +++ b/src/dzitilesource.js @@ -123,7 +123,7 @@ $.extend( $.DziTileSource.prototype, $.TileSource.prototype, /** @lends OpenSead * * @function * @param {Object|XMLDocument} data - the raw configuration - * @param {String} url - the url the data was retreived from if any. + * @param {String} url - the url the data was retrieved from if any. * @return {Object} options - A dictionary of keyword arguments sufficient * to configure this tile sources constructor. */ diff --git a/src/imagetilesource.js b/src/imagetilesource.js index e176576f..375c65d6 100644 --- a/src/imagetilesource.js +++ b/src/imagetilesource.js @@ -88,7 +88,7 @@ * * @function * @param {Object} options - the options - * @param {String} dataUrl - the url the image was retreived from, if any. + * @param {String} dataUrl - the url the image was retrieved from, if any. * @return {Object} options - A dictionary of keyword arguments sufficient * to configure this tile sources constructor. */ diff --git a/src/legacytilesource.js b/src/legacytilesource.js index 3defe342..67572346 100644 --- a/src/legacytilesource.js +++ b/src/legacytilesource.js @@ -121,7 +121,7 @@ $.extend( $.LegacyTileSource.prototype, $.TileSource.prototype, /** @lends OpenS * * @function * @param {Object|XMLDocument} configuration - the raw configuration - * @param {String} dataUrl - the url the data was retreived from if any. + * @param {String} dataUrl - the url the data was retrieved from if any. * @return {Object} options - A dictionary of keyword arguments sufficient * to configure this tile sources constructor. */ diff --git a/src/osmtilesource.js b/src/osmtilesource.js index cc3286bc..555e0a9f 100644 --- a/src/osmtilesource.js +++ b/src/osmtilesource.js @@ -121,7 +121,7 @@ $.extend( $.OsmTileSource.prototype, $.TileSource.prototype, /** @lends OpenSead * * @function * @param {Object} data - the raw configuration - * @param {String} url - the url the data was retreived from if any. + * @param {String} url - the url the data was retrieved from if any. * @return {Object} options - A dictionary of keyword arguments sufficient * to configure this tile sources constructor. */ diff --git a/src/tmstilesource.js b/src/tmstilesource.js index e7640b15..66b7755c 100644 --- a/src/tmstilesource.js +++ b/src/tmstilesource.js @@ -110,7 +110,7 @@ $.extend( $.TmsTileSource.prototype, $.TileSource.prototype, /** @lends OpenSead * * @function * @param {Object} data - the raw configuration - * @param {String} url - the url the data was retreived from if any. + * @param {String} url - the url the data was retrieved from if any. * @return {Object} options - A dictionary of keyword arguments sufficient * to configure this tile sources constructor. */ diff --git a/src/zoomifytilesource.js b/src/zoomifytilesource.js index a9f44ac2..6009d0c1 100644 --- a/src/zoomifytilesource.js +++ b/src/zoomifytilesource.js @@ -114,7 +114,7 @@ * * @function * @param {Object} data - the raw configuration - * @param {String} url - the url the data was retreived from if any. + * @param {String} url - the url the data was retrieved from if any. * @return {Object} options - A dictionary of keyword arguments sufficient * to configure this tile sources constructor. */ From 42060a49b542b74e71eddba88245419a256df0e5 Mon Sep 17 00:00:00 2001 From: "Mark Allen Matney, Jr" Date: Mon, 10 Sep 2018 00:58:24 -0700 Subject: [PATCH 076/109] Added HTML tests for ImageJob timeout --- test/demo/timeout-certain.html | 35 +++++++++++++++++++++++++++++++++ test/demo/timeout-unlikely.html | 35 +++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 test/demo/timeout-certain.html create mode 100644 test/demo/timeout-unlikely.html diff --git a/test/demo/timeout-certain.html b/test/demo/timeout-certain.html new file mode 100644 index 00000000..9e177500 --- /dev/null +++ b/test/demo/timeout-certain.html @@ -0,0 +1,35 @@ + + + + OpenSeadragon Demo - Timeout Certain + + + + + +
+

The ImageLoader timeout is set to 0 ms, and the tile source is remote.

+

In any web browser on any network connection, OpenSeadragon should not load properly, and the browser console log should show tile loading errors.

+
+
+ + + diff --git a/test/demo/timeout-unlikely.html b/test/demo/timeout-unlikely.html new file mode 100644 index 00000000..284f4297 --- /dev/null +++ b/test/demo/timeout-unlikely.html @@ -0,0 +1,35 @@ + + + + OpenSeadragon Demo - Timeout Unlikely + + + + + +
+

The ImageLoader timeout is set to 24 hours, and the tile source is remote.

+

In any web browser on nearly any network connection, OpenSeadragon should load properly, and the browser console log should not show any tile loading errors.

+
+
+ + + From f94aa78cc68d335c8ee156874673f7679d787695 Mon Sep 17 00:00:00 2001 From: "Mark Allen Matney, Jr" Date: Mon, 10 Sep 2018 00:59:25 -0700 Subject: [PATCH 077/109] Improved ImageJob timeout error logging --- src/imageloader.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/imageloader.js b/src/imageloader.js index 14eb576b..faa1fac8 100644 --- a/src/imageloader.js +++ b/src/imageloader.js @@ -84,7 +84,7 @@ ImageJob.prototype = { }; this.jobId = window.setTimeout(function(){ - self.errorMsg = "Image load exceeded timeout"; + self.errorMsg = "Image load exceeded timeout (" + self.timeout + " ms)"; self.finish(false); }, this.timeout); From 49e3ef6885405f8485d0e7380bd5258540aff4c7 Mon Sep 17 00:00:00 2001 From: Nelson Campos Date: Mon, 1 Oct 2018 17:03:34 +0100 Subject: [PATCH 078/109] Code backup. Bug Semi-fix. --- src/openseadragon.js | 2 +- src/tiledimage.js | 49 +++++++++++++++++++++++++++++++++++++------- 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/src/openseadragon.js b/src/openseadragon.js index e3d9aed7..784d3e78 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -1140,7 +1140,7 @@ function OpenSeadragon( options ){ autoResize: true, preserveImageSizeOnResize: false, // requires autoResize=true minScrollDeltaTime: 50, - rotationIncrement: 90, + rotationIncrement: 10, //DEFAULT CONTROL SETTINGS showSequenceControl: true, //SEQUENCE diff --git a/src/tiledimage.js b/src/tiledimage.js index 52012071..d55656c9 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -52,6 +52,7 @@ * @param {Number} [options.y=0] - Top position, in viewport coordinates. * @param {Number} [options.width=1] - Width, in viewport coordinates. * @param {Number} [options.height] - Height, in viewport coordinates. + * @param {Boolean} [options.flipped=false] - Whether to draw tiled image flipped. * @param {OpenSeadragon.Rect} [options.fitBounds] The bounds in viewport coordinates * to fit the image into. If specified, x, y, width and height get ignored. * @param {OpenSeadragon.Placement} [options.fitBoundsPlacement=OpenSeadragon.Placement.CENTER] @@ -146,6 +147,9 @@ $.TiledImage = function( options ) { var degrees = options.degrees || 0; delete options.degrees; + // var flipped = options.flipped || false; + // delete options.flipped; + $.extend( true, this, { //internal state properties @@ -209,6 +213,9 @@ $.TiledImage = function( options ) { animationTime: this.animationTime }); + this.flipped = options.flipped; + delete options.flipped; + this._updateForScale(); if (fitBounds) { @@ -1879,24 +1886,35 @@ function drawTiles( tiledImage, lastDrawn ) { tiledImage.getClippedBounds(true)) .getIntegerBoundingBox() .times($.pixelDensityRatio); + + if(tiledImage._drawer.viewer.viewport.flipped || tiledImage.flipped ) { + // tiledImage._drawer._flip({}); + // bounds.width = bounds.width - bounds.x; + // bounds.width = tiledImage._drawer.viewer.viewport.getContainerSize().width - bounds.x; + // bounds.x = -bounds.x; + } } tiledImage._drawer._clear(true, bounds); } + console.log("BOUNDS: ", bounds); // When scaling, we must rotate only when blending the sketch canvas to // avoid interpolation if (!sketchScale) { if (tiledImage.viewport.degrees !== 0) { + console.log("tiledImage.viewport.degrees !== 0"); tiledImage._drawer._offsetForRotation({ degrees: tiledImage.viewport.degrees, useSketch: useSketch }); - } else { - if(tiledImage._drawer.viewer.viewport.flipped) { + }/* else { + if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { + console.log("FLIP"); tiledImage._drawer._flip({}); } - } + }*/ if (tiledImage.getRotation(true) % 360 !== 0) { + console.log("tiledImage.getRotation(true) % 360 !== 0"); tiledImage._drawer._offsetForRotation({ degrees: tiledImage.getRotation(true), point: tiledImage.viewport.pixelFromPointNoRotate( @@ -1904,6 +1922,13 @@ function drawTiles( tiledImage, lastDrawn ) { useSketch: useSketch }); } + + if (tiledImage.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 == 0){ + if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { + console.log("FLIP"); + tiledImage._drawer._flip({}); + } + } } var usedClip = false; @@ -1975,12 +2000,20 @@ function drawTiles( tiledImage, lastDrawn ) { if (!sketchScale) { if (tiledImage.getRotation(true) % 360 !== 0) { tiledImage._drawer._restoreRotationChanges(useSketch); - } + }/* else { + if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { + console.log("FLIP"); + tiledImage._drawer._flip({}); + } + }*/ if (tiledImage.viewport.degrees !== 0) { tiledImage._drawer._restoreRotationChanges(useSketch); - } else{ - if(tiledImage._drawer.viewer.viewport.flipped) { - tiledImage._drawer._flip({}); + } + + if (tiledImage.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 == 0){ + if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { + console.log("FLIP"); + tiledImage._drawer._flip({}); } } } @@ -2010,6 +2043,7 @@ function drawTiles( tiledImage, lastDrawn ) { bounds: bounds }); if (sketchScale) { + console.log("--------------------sketchScale--------------------"); if (tiledImage.getRotation(true) % 360 !== 0) { tiledImage._drawer._restoreRotationChanges(false); } @@ -2018,6 +2052,7 @@ function drawTiles( tiledImage, lastDrawn ) { } } } + drawDebugInfo( tiledImage, lastDrawn ); } From 7a7ba07902d4745125a719b0f92995e4145706d6 Mon Sep 17 00:00:00 2001 From: Nelson Campos Date: Tue, 2 Oct 2018 16:57:31 +0100 Subject: [PATCH 079/109] Moved flip call to the end of drawTiles method. Just code backup --- src/drawer.js | 13 +++++++----- src/tiledimage.js | 51 +++++++++++++++++++++-------------------------- src/viewer.js | 1 + 3 files changed, 32 insertions(+), 33 deletions(-) diff --git a/src/drawer.js b/src/drawer.js index 7c4852cb..a68e1bcb 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -500,10 +500,6 @@ $.Drawer.prototype = { if ( this.viewport.degrees !== 0 ) { this._offsetForRotation({degrees: this.viewport.degrees}); - } else{ - if(this.viewer.viewport.flipped) { - this._flip(); - } } if (tiledImage.getRotation(true) % 360 !== 0) { this._offsetForRotation({ @@ -512,6 +508,11 @@ $.Drawer.prototype = { tiledImage._getRotationPoint(true), true) }); } + if((this.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 !== 0) || (this.viewport.degrees !== 0 && tiledImage.getRotation(true) % 360 == 0)){ + if((this.viewport.flipped && !tiledImage.flipped) || (!this.viewport.flipped && tiledImage.flipped) ) { + this._flip(); + } + } context.strokeRect( tile.position.x * $.pixelDensityRatio, @@ -645,7 +646,9 @@ $.Drawer.prototype = { context.save(); context.translate(point.x, point.y); - if(this.viewer.viewport.flipped){ + // If viewport and tiledImage are flipped, it would draw the image without flipping + // This if sentence is intended to represent a logical XOR + if((!this.viewer.viewport.flipped && this.viewer.world._items[0].flipped) || (this.viewer.viewport.flipped && !this.viewer.world._items[0].flipped)){ context.rotate(Math.PI / 180 * -options.degrees); context.scale(-1, 1); } else{ diff --git a/src/tiledimage.js b/src/tiledimage.js index d55656c9..eeb5a686 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -147,9 +147,6 @@ $.TiledImage = function( options ) { var degrees = options.degrees || 0; delete options.degrees; - // var flipped = options.flipped || false; - // delete options.flipped; - $.extend( true, this, { //internal state properties @@ -1887,34 +1884,31 @@ function drawTiles( tiledImage, lastDrawn ) { .getIntegerBoundingBox() .times($.pixelDensityRatio); - if(tiledImage._drawer.viewer.viewport.flipped || tiledImage.flipped ) { + // if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { // tiledImage._drawer._flip({}); // bounds.width = bounds.width - bounds.x; // bounds.width = tiledImage._drawer.viewer.viewport.getContainerSize().width - bounds.x; + // console.log("BOUNDS before: ", bounds); + + // bounds.width = bounds.width + bounds.x; // bounds.x = -bounds.x; - } + // console.log("Bounds Image: ", tiledImage._drawer.viewer.viewport.getContainerSize()); + // } } tiledImage._drawer._clear(true, bounds); } - console.log("BOUNDS: ", bounds); + console.log("BOUNDS after: ", bounds); // When scaling, we must rotate only when blending the sketch canvas to // avoid interpolation if (!sketchScale) { if (tiledImage.viewport.degrees !== 0) { - console.log("tiledImage.viewport.degrees !== 0"); tiledImage._drawer._offsetForRotation({ degrees: tiledImage.viewport.degrees, useSketch: useSketch }); - }/* else { - if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { - console.log("FLIP"); - tiledImage._drawer._flip({}); - } - }*/ + } if (tiledImage.getRotation(true) % 360 !== 0) { - console.log("tiledImage.getRotation(true) % 360 !== 0"); tiledImage._drawer._offsetForRotation({ degrees: tiledImage.getRotation(true), point: tiledImage.viewport.pixelFromPointNoRotate( @@ -1925,7 +1919,7 @@ function drawTiles( tiledImage, lastDrawn ) { if (tiledImage.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 == 0){ if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { - console.log("FLIP"); + console.log("FLIP1"); tiledImage._drawer._flip({}); } } @@ -2000,22 +1994,17 @@ function drawTiles( tiledImage, lastDrawn ) { if (!sketchScale) { if (tiledImage.getRotation(true) % 360 !== 0) { tiledImage._drawer._restoreRotationChanges(useSketch); - }/* else { - if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { - console.log("FLIP"); - tiledImage._drawer._flip({}); - } - }*/ + } if (tiledImage.viewport.degrees !== 0) { tiledImage._drawer._restoreRotationChanges(useSketch); } - if (tiledImage.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 == 0){ - if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { - console.log("FLIP"); - tiledImage._drawer._flip({}); - } - } + // if (tiledImage.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 == 0){ + // if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { + // console.log("FLIP2"); + // tiledImage._drawer._flip({}); + // } + // } } if (useSketch) { @@ -2043,7 +2032,6 @@ function drawTiles( tiledImage, lastDrawn ) { bounds: bounds }); if (sketchScale) { - console.log("--------------------sketchScale--------------------"); if (tiledImage.getRotation(true) % 360 !== 0) { tiledImage._drawer._restoreRotationChanges(false); } @@ -2053,6 +2041,13 @@ function drawTiles( tiledImage, lastDrawn ) { } } + if (tiledImage.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 == 0){ + if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { + console.log("FLIP3"); + tiledImage._drawer._flip({}); + } + } + drawDebugInfo( tiledImage, lastDrawn ); } diff --git a/src/viewer.js b/src/viewer.js index 9be3e7fa..d023e985 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -1435,6 +1435,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, opacity: queueItem.options.opacity, preload: queueItem.options.preload, degrees: queueItem.options.degrees, + flipped: queueItem.options.flipped, compositeOperation: queueItem.options.compositeOperation, springStiffness: _this.springStiffness, animationTime: _this.animationTime, From cf20d9fb43bb6f301ebc368ea1c025c19335641c Mon Sep 17 00:00:00 2001 From: Nelson Campos Date: Tue, 16 Oct 2018 17:24:26 +0100 Subject: [PATCH 080/109] Fix drawer clearance bounds --- src/openseadragon.js | 4 ++-- src/tiledimage.js | 35 +++++++++++------------------------ 2 files changed, 13 insertions(+), 26 deletions(-) diff --git a/src/openseadragon.js b/src/openseadragon.js index 784d3e78..30cf6ed3 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -271,7 +271,7 @@ * events between different devices, causing the faster devices to slow down enough to make the zoom control * more manageable. * - * @property {Number} [rotationIncrement=90] + * @property {Number} [rotationIncrement=10] * The number of degrees to rotate right or left when the rotate buttons or keyboard shortcuts are activated. * * @property {Number} [pixelsPerWheelLine=40] @@ -1140,7 +1140,7 @@ function OpenSeadragon( options ){ autoResize: true, preserveImageSizeOnResize: false, // requires autoResize=true minScrollDeltaTime: 50, - rotationIncrement: 10, + rotationIncrement: 90, //DEFAULT CONTROL SETTINGS showSequenceControl: true, //SEQUENCE diff --git a/src/tiledimage.js b/src/tiledimage.js index eeb5a686..d09b8857 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -1884,21 +1884,14 @@ function drawTiles( tiledImage, lastDrawn ) { .getIntegerBoundingBox() .times($.pixelDensityRatio); - // if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { - // tiledImage._drawer._flip({}); - // bounds.width = bounds.width - bounds.x; - // bounds.width = tiledImage._drawer.viewer.viewport.getContainerSize().width - bounds.x; - // console.log("BOUNDS before: ", bounds); - - // bounds.width = bounds.width + bounds.x; - // bounds.x = -bounds.x; - // console.log("Bounds Image: ", tiledImage._drawer.viewer.viewport.getContainerSize()); - // } + if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { + if (tiledImage.viewport.degrees !== 0 || tiledImage.getRotation(true) % 360 !== 0){ + bounds.x = tiledImage._drawer.viewer.container.clientWidth - (bounds.x + bounds.width); + } + } } tiledImage._drawer._clear(true, bounds); } - console.log("BOUNDS after: ", bounds); - // When scaling, we must rotate only when blending the sketch canvas to // avoid interpolation if (!sketchScale) { @@ -1919,7 +1912,6 @@ function drawTiles( tiledImage, lastDrawn ) { if (tiledImage.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 == 0){ if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { - console.log("FLIP1"); tiledImage._drawer._flip({}); } } @@ -1998,13 +1990,6 @@ function drawTiles( tiledImage, lastDrawn ) { if (tiledImage.viewport.degrees !== 0) { tiledImage._drawer._restoreRotationChanges(useSketch); } - - // if (tiledImage.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 == 0){ - // if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { - // console.log("FLIP2"); - // tiledImage._drawer._flip({}); - // } - // } } if (useSketch) { @@ -2041,13 +2026,15 @@ function drawTiles( tiledImage, lastDrawn ) { } } - if (tiledImage.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 == 0){ - if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { - console.log("FLIP3"); - tiledImage._drawer._flip({}); + if (!sketchScale) { + if (tiledImage.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 == 0){ + if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { + tiledImage._drawer._flip({}); + } } } + drawDebugInfo( tiledImage, lastDrawn ); } From bfd170689d76bc58dc45fb5987bc30af129765d2 Mon Sep 17 00:00:00 2001 From: Nelson Campos Date: Wed, 17 Oct 2018 11:09:45 +0100 Subject: [PATCH 081/109] Fix navigator flipped drag and click handlers --- src/navigator.js | 4 ++-- src/viewer.js | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/navigator.js b/src/navigator.js index 115d052d..64b8c3a8 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -455,7 +455,7 @@ function onCanvasClick( event ) { this.viewer.raiseEvent('navigator-click', canvasClickEventArgs); if ( !canvasClickEventArgs.preventDefaultAction && event.quick && this.viewer.viewport && (this.panVertical || this.panHorizontal)) { - if(this.viewer.viewport.flipped) { + if((this.viewer.viewport.flipped && !this.world._items[0].flipped) || (!this.viewer.viewport.flipped && this.world._items[0].flipped)) { event.position.x = this.viewport.getContainerSize().x - event.position.x; } var target = this.viewport.pointFromPixel(event.position); @@ -515,7 +515,7 @@ function onCanvasDrag( event ) { event.delta.y = 0; } - if(this.viewer.viewport.flipped){ + if((this.viewer.viewport.flipped && !this.world._items[0].flipped) || (!this.viewer.viewport.flipped && this.world._items[0].flipped)) { event.delta.x = -event.delta.x; } diff --git a/src/viewer.js b/src/viewer.js index d023e985..5ea11eb4 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -2642,7 +2642,7 @@ function onCanvasKeyPress( event ) { } return false; case 114: //r - clockwise rotation - if(this.viewport.flipped){ + if((this.viewport.flipped && !this.world._items[0].flipped) || (!this.viewport.flipped && this.world._items[0].flipped)){ this.viewport.setRotation($.positiveModulo(this.viewport.degrees - this.rotationIncrement, 360)); } else{ this.viewport.setRotation($.positiveModulo(this.viewport.degrees + this.rotationIncrement, 360)); @@ -2650,7 +2650,7 @@ function onCanvasKeyPress( event ) { this.viewport.applyConstraints(); return false; case 82: //R - counterclockwise rotation - if(this.viewport.flipped){ + if((this.viewport.flipped && !this.world._items[0].flipped) || (!this.viewport.flipped && this.world._items[0].flipped)){ this.viewport.setRotation($.positiveModulo(this.viewport.degrees + this.rotationIncrement, 360)); } else{ this.viewport.setRotation($.positiveModulo(this.viewport.degrees - this.rotationIncrement, 360)); @@ -2678,7 +2678,7 @@ function onCanvasClick( event ) { if ( !haveKeyboardFocus ) { this.canvas.focus(); } - if(this.viewport.flipped){ + if((this.viewport.flipped && !this.world._items[0].flipped) || (!this.viewport.flipped && this.world._items[0].flipped)){ event.position.x = this.viewport.getContainerSize().x - event.position.x; } @@ -2800,7 +2800,7 @@ function onCanvasDrag( event ) { if( !this.panVertical ){ event.delta.y = 0; } - if(this.viewport.flipped){ + if((this.viewport.flipped && !this.world._items[0].flipped) || (!this.viewport.flipped && this.world._items[0].flipped)){ event.delta.x = -event.delta.x; } @@ -3128,7 +3128,7 @@ function onCanvasScroll( event ) { if (deltaScrollTime > this.minScrollDeltaTime) { this._lastScrollTime = thisScrollTime; - if(this.viewport.flipped){ + if((this.viewport.flipped && !this.world._items[0].flipped) || (!this.viewport.flipped && this.world._items[0].flipped)){ event.position.x = this.viewport.getContainerSize().x - event.position.x; } @@ -3495,7 +3495,7 @@ function onRotateLeft() { if ( this.viewport ) { var currRotation = this.viewport.getRotation(); - if ( this.viewport.flipped ){ + if((this.viewport.flipped && !this.world._items[0].flipped) || (!this.viewport.flipped && this.world._items[0].flipped)){ currRotation = $.positiveModulo(currRotation + this.rotationIncrement, 360); } else { currRotation = $.positiveModulo(currRotation - this.rotationIncrement, 360); @@ -3508,7 +3508,7 @@ function onRotateRight() { if ( this.viewport ) { var currRotation = this.viewport.getRotation(); - if ( this.viewport.flipped ){ + if((this.viewport.flipped && !this.world._items[0].flipped) || (!this.viewport.flipped && this.world._items[0].flipped)){ currRotation = $.positiveModulo(currRotation - this.rotationIncrement, 360); } else { currRotation = $.positiveModulo(currRotation + this.rotationIncrement, 360); From 132c68c8bb55f8a0233905e36992cec83a13a356 Mon Sep 17 00:00:00 2001 From: Nelson Campos Date: Wed, 17 Oct 2018 12:45:10 +0100 Subject: [PATCH 082/109] Create getFlip function to retrieve tiledImage flipped state --- src/drawer.js | 4 ++-- src/navigator.js | 10 ++++++---- src/tiledimage.js | 16 +++++++++++++--- src/viewer.js | 15 ++++++++------- src/viewport.js | 2 +- 5 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/drawer.js b/src/drawer.js index a68e1bcb..a099a5b7 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -509,7 +509,7 @@ $.Drawer.prototype = { }); } if((this.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 !== 0) || (this.viewport.degrees !== 0 && tiledImage.getRotation(true) % 360 == 0)){ - if((this.viewport.flipped && !tiledImage.flipped) || (!this.viewport.flipped && tiledImage.flipped) ) { + if((this.viewport.getFlip() && !tiledImage.flipped) || (!this.viewport.getFlip() && tiledImage.flipped) ) { this._flip(); } } @@ -648,7 +648,7 @@ $.Drawer.prototype = { context.translate(point.x, point.y); // If viewport and tiledImage are flipped, it would draw the image without flipping // This if sentence is intended to represent a logical XOR - if((!this.viewer.viewport.flipped && this.viewer.world._items[0].flipped) || (this.viewer.viewport.flipped && !this.viewer.world._items[0].flipped)){ + if((!this.viewer.viewport.getFlip() && this.viewer.world._items[0].flipped) || (this.viewer.viewport.getFlip() && !this.viewer.world._items[0].flipped)){ context.rotate(Math.PI / 180 * -options.degrees); context.scale(-1, 1); } else{ diff --git a/src/navigator.js b/src/navigator.js index 64b8c3a8..41d6e8d0 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -284,7 +284,8 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* setFlip: function(state) { this.viewport.setFlip(state); - this.setDisplayTransform(this.viewer.viewport.getFlip() ? "scale(-1,1)" : "scale(1,1)"); + var flip = ((this.viewport.getFlip() && !this.viewer.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.viewer.world._items[0].getFlip())); + this.setDisplayTransform(flip ? "scale(-1,1)" : "scale(1,1)"); return this; }, @@ -350,6 +351,8 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* style.height = Math.round( Math.max( height, 0 ) ) + 'px'; } + + }, // overrides Viewer.addTiledImage @@ -453,9 +456,8 @@ function onCanvasClick( event ) { */ this.viewer.raiseEvent('navigator-click', canvasClickEventArgs); - if ( !canvasClickEventArgs.preventDefaultAction && event.quick && this.viewer.viewport && (this.panVertical || this.panHorizontal)) { - if((this.viewer.viewport.flipped && !this.world._items[0].flipped) || (!this.viewer.viewport.flipped && this.world._items[0].flipped)) { + if((this.viewer.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewer.viewport.getFlip() && this.world._items[0].getFlip())) { event.position.x = this.viewport.getContainerSize().x - event.position.x; } var target = this.viewport.pointFromPixel(event.position); @@ -515,7 +517,7 @@ function onCanvasDrag( event ) { event.delta.y = 0; } - if((this.viewer.viewport.flipped && !this.world._items[0].flipped) || (!this.viewer.viewport.flipped && this.world._items[0].flipped)) { + if((this.viewer.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewer.viewport.getFlip() && this.world._items[0].getFlip())) { event.delta.x = -event.delta.x; } diff --git a/src/tiledimage.js b/src/tiledimage.js index d09b8857..0da96e7d 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -860,6 +860,16 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag this._raiseBoundsChange(); }, + /** + * Get flip state stored on tiledImage. + * @function + * @return {Boolean} Flip state. + */ + getFlip: function() { + return this.flipped; + }, + + /** * Get the point around which this tiled image is rotated * @private @@ -1884,7 +1894,7 @@ function drawTiles( tiledImage, lastDrawn ) { .getIntegerBoundingBox() .times($.pixelDensityRatio); - if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { + if((tiledImage._drawer.viewer.viewport.getFlip() && !tiledImage.getFlip()) || (!tiledImage._drawer.viewer.viewport.getFlip() && tiledImage.getFlip()) ) { if (tiledImage.viewport.degrees !== 0 || tiledImage.getRotation(true) % 360 !== 0){ bounds.x = tiledImage._drawer.viewer.container.clientWidth - (bounds.x + bounds.width); } @@ -1911,7 +1921,7 @@ function drawTiles( tiledImage, lastDrawn ) { } if (tiledImage.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 == 0){ - if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { + if((tiledImage._drawer.viewer.viewport.getFlip() && !tiledImage.getFlip()) || (!tiledImage._drawer.viewer.viewport.getFlip() && tiledImage.getFlip()) ) { tiledImage._drawer._flip({}); } } @@ -2028,7 +2038,7 @@ function drawTiles( tiledImage, lastDrawn ) { if (!sketchScale) { if (tiledImage.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 == 0){ - if((tiledImage._drawer.viewer.viewport.flipped && !tiledImage.flipped) || (!tiledImage._drawer.viewer.viewport.flipped && tiledImage.flipped) ) { + if((tiledImage._drawer.viewer.viewport.getFlip() && !tiledImage.getFlip()) || (!tiledImage._drawer.viewer.viewport.getFlip() && tiledImage.getFlip()) ) { tiledImage._drawer._flip({}); } } diff --git a/src/viewer.js b/src/viewer.js index 5ea11eb4..e1d50bc5 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -2642,7 +2642,7 @@ function onCanvasKeyPress( event ) { } return false; case 114: //r - clockwise rotation - if((this.viewport.flipped && !this.world._items[0].flipped) || (!this.viewport.flipped && this.world._items[0].flipped)){ + if((this.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.world._items[0].getFlip())){ this.viewport.setRotation($.positiveModulo(this.viewport.degrees - this.rotationIncrement, 360)); } else{ this.viewport.setRotation($.positiveModulo(this.viewport.degrees + this.rotationIncrement, 360)); @@ -2650,7 +2650,7 @@ function onCanvasKeyPress( event ) { this.viewport.applyConstraints(); return false; case 82: //R - counterclockwise rotation - if((this.viewport.flipped && !this.world._items[0].flipped) || (!this.viewport.flipped && this.world._items[0].flipped)){ + if((this.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.world._items[0].getFlip())){ this.viewport.setRotation($.positiveModulo(this.viewport.degrees + this.rotationIncrement, 360)); } else{ this.viewport.setRotation($.positiveModulo(this.viewport.degrees - this.rotationIncrement, 360)); @@ -2678,7 +2678,8 @@ function onCanvasClick( event ) { if ( !haveKeyboardFocus ) { this.canvas.focus(); } - if((this.viewport.flipped && !this.world._items[0].flipped) || (!this.viewport.flipped && this.world._items[0].flipped)){ + if((this.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.world._items[0].getFlip())){ + console.log("FLipped Click"); event.position.x = this.viewport.getContainerSize().x - event.position.x; } @@ -2800,7 +2801,7 @@ function onCanvasDrag( event ) { if( !this.panVertical ){ event.delta.y = 0; } - if((this.viewport.flipped && !this.world._items[0].flipped) || (!this.viewport.flipped && this.world._items[0].flipped)){ + if((this.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.world._items[0].getFlip())){ event.delta.x = -event.delta.x; } @@ -3128,7 +3129,7 @@ function onCanvasScroll( event ) { if (deltaScrollTime > this.minScrollDeltaTime) { this._lastScrollTime = thisScrollTime; - if((this.viewport.flipped && !this.world._items[0].flipped) || (!this.viewport.flipped && this.world._items[0].flipped)){ + if((this.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.world._items[0].getFlip())){ event.position.x = this.viewport.getContainerSize().x - event.position.x; } @@ -3495,7 +3496,7 @@ function onRotateLeft() { if ( this.viewport ) { var currRotation = this.viewport.getRotation(); - if((this.viewport.flipped && !this.world._items[0].flipped) || (!this.viewport.flipped && this.world._items[0].flipped)){ + if((this.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.world._items[0].getFlip())){ currRotation = $.positiveModulo(currRotation + this.rotationIncrement, 360); } else { currRotation = $.positiveModulo(currRotation - this.rotationIncrement, 360); @@ -3508,7 +3509,7 @@ function onRotateRight() { if ( this.viewport ) { var currRotation = this.viewport.getRotation(); - if((this.viewport.flipped && !this.world._items[0].flipped) || (!this.viewport.flipped && this.world._items[0].flipped)){ + if((this.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.world._items[0].getFlip())){ currRotation = $.positiveModulo(currRotation - this.rotationIncrement, 360); } else { currRotation = $.positiveModulo(currRotation + this.rotationIncrement, 360); diff --git a/src/viewport.js b/src/viewport.js index 3413dbc1..07c941c6 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -1531,7 +1531,7 @@ $.Viewport.prototype = { }, /** - * Gets flip state stored on viewport. + * Get flip state stored on viewport. * @function * @return {Boolean} Flip state. */ From 2670f62892d725278140e519b69f179320444497 Mon Sep 17 00:00:00 2001 From: Nelson Campos Date: Thu, 18 Oct 2018 11:31:55 +0100 Subject: [PATCH 083/109] Fix navigator flip transformation Flip transformation wasn't correctly applied on navigator for all images when its tileSource is flipped by default. --- src/drawer.js | 4 ++-- src/navigator.js | 3 +-- src/openseadragon.js | 2 +- src/tiledimage.js | 2 +- src/viewer.js | 5 ++++- src/viewport.js | 3 ++- 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/drawer.js b/src/drawer.js index a099a5b7..e99b56fe 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -509,7 +509,7 @@ $.Drawer.prototype = { }); } if((this.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 !== 0) || (this.viewport.degrees !== 0 && tiledImage.getRotation(true) % 360 == 0)){ - if((this.viewport.getFlip() && !tiledImage.flipped) || (!this.viewport.getFlip() && tiledImage.flipped) ) { + if((this.viewport.getFlip() && !tiledImage.getFlip()) || (!this.viewport.getFlip() && tiledImage.getFlip()) ) { this._flip(); } } @@ -648,7 +648,7 @@ $.Drawer.prototype = { context.translate(point.x, point.y); // If viewport and tiledImage are flipped, it would draw the image without flipping // This if sentence is intended to represent a logical XOR - if((!this.viewer.viewport.getFlip() && this.viewer.world._items[0].flipped) || (this.viewer.viewport.getFlip() && !this.viewer.world._items[0].flipped)){ + if((!this.viewer.viewport.getFlip() && this.viewer.world._items[0].getFlip()) || (this.viewer.viewport.getFlip() && !this.viewer.world._items[0].getFlip())){ context.rotate(Math.PI / 180 * -options.degrees); context.scale(-1, 1); } else{ diff --git a/src/navigator.js b/src/navigator.js index 41d6e8d0..bb4e08d6 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -351,8 +351,6 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* style.height = Math.round( Math.max( height, 0 ) ) + 'px'; } - - }, // overrides Viewer.addTiledImage @@ -456,6 +454,7 @@ function onCanvasClick( event ) { */ this.viewer.raiseEvent('navigator-click', canvasClickEventArgs); + if ( !canvasClickEventArgs.preventDefaultAction && event.quick && this.viewer.viewport && (this.panVertical || this.panHorizontal)) { if((this.viewer.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewer.viewport.getFlip() && this.world._items[0].getFlip())) { event.position.x = this.viewport.getContainerSize().x - event.position.x; diff --git a/src/openseadragon.js b/src/openseadragon.js index 30cf6ed3..e3d9aed7 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -271,7 +271,7 @@ * events between different devices, causing the faster devices to slow down enough to make the zoom control * more manageable. * - * @property {Number} [rotationIncrement=10] + * @property {Number} [rotationIncrement=90] * The number of degrees to rotate right or left when the rotate buttons or keyboard shortcuts are activated. * * @property {Number} [pixelsPerWheelLine=40] diff --git a/src/tiledimage.js b/src/tiledimage.js index 0da96e7d..6501751a 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -1902,6 +1902,7 @@ function drawTiles( tiledImage, lastDrawn ) { } tiledImage._drawer._clear(true, bounds); } + // When scaling, we must rotate only when blending the sketch canvas to // avoid interpolation if (!sketchScale) { @@ -2044,7 +2045,6 @@ function drawTiles( tiledImage, lastDrawn ) { } } - drawDebugInfo( tiledImage, lastDrawn ); } diff --git a/src/viewer.js b/src/viewer.js index e1d50bc5..f622829c 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -2679,7 +2679,6 @@ function onCanvasClick( event ) { this.canvas.focus(); } if((this.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.world._items[0].getFlip())){ - console.log("FLipped Click"); event.position.x = this.viewport.getContainerSize().x - event.position.x; } @@ -3367,6 +3366,10 @@ function updateOnce( viewer ) { THIS[ viewer.hash ].animating = animated; + // Update navigator flip transformation + if (viewer.navigator && viewer.viewport != "undefined"){ + viewer.navigator.setFlip(viewer.viewport.getFlip()); + } //viewer.profiler.endUpdate(); } diff --git a/src/viewport.js b/src/viewport.js index 07c941c6..61cee041 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -1552,7 +1552,8 @@ $.Viewport.prototype = { this.flipped = state; if(this.viewer.navigator){ - this.viewer.navigator.setFlip(this.getFlip()); + var flip = ((this.getFlip() || !this.viewer.world._items[0].getFlip()) || (!this.getFlip() || this.viewer.world._items[0].getFlip())); + this.viewer.navigator.setFlip(flip); } this.viewer.forceRedraw(); From 4fe5a841704162db2cd2a72a29a4f63368cce687 Mon Sep 17 00:00:00 2001 From: Nelson Campos Date: Thu, 18 Oct 2018 15:29:08 +0100 Subject: [PATCH 084/109] Fix flipped debug drawing context --- src/drawer.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/drawer.js b/src/drawer.js index e99b56fe..cf86b61b 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -508,9 +508,9 @@ $.Drawer.prototype = { tiledImage._getRotationPoint(true), true) }); } - if((this.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 !== 0) || (this.viewport.degrees !== 0 && tiledImage.getRotation(true) % 360 == 0)){ - if((this.viewport.getFlip() && !tiledImage.getFlip()) || (!this.viewport.getFlip() && tiledImage.getFlip()) ) { - this._flip(); + if (tiledImage.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 == 0){ + if((tiledImage._drawer.viewer.viewport.getFlip() && !tiledImage.getFlip()) || (!tiledImage._drawer.viewer.viewport.getFlip() && tiledImage.getFlip()) ) { + tiledImage._drawer._flip({}); } } @@ -578,6 +578,13 @@ $.Drawer.prototype = { if (tiledImage.getRotation(true) % 360 !== 0) { this._restoreRotationChanges(); } + + if (tiledImage.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 == 0){ + if((tiledImage._drawer.viewer.viewport.getFlip() && !tiledImage.getFlip()) || (!tiledImage._drawer.viewer.viewport.getFlip() && tiledImage.getFlip()) ) { + tiledImage._drawer._flip({}); + } + } + context.restore(); }, From 546efcc1dbafac20caee6ac11ae55d12311dc9a3 Mon Sep 17 00:00:00 2001 From: Nelson Campos Date: Fri, 19 Oct 2018 10:58:47 +0100 Subject: [PATCH 085/109] Fix undefined return from getFlip Navigator setFlip was looking for tiledImage flip state using the getFlip method. The item this.viewer.world._items[0] can be undefined and trying to use its methods would fail. --- src/navigator.js | 2 +- src/viewer.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/navigator.js b/src/navigator.js index bb4e08d6..4b2018fb 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -284,7 +284,7 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* setFlip: function(state) { this.viewport.setFlip(state); - var flip = ((this.viewport.getFlip() && !this.viewer.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.viewer.world._items[0].getFlip())); + var flip = ((this.viewport.getFlip() && this.viewer.world._items[0] && !this.viewer.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.viewer.world._items[0] && this.viewer.world._items[0].getFlip())); this.setDisplayTransform(flip ? "scale(-1,1)" : "scale(1,1)"); return this; }, diff --git a/src/viewer.js b/src/viewer.js index f622829c..ac3701b4 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -3367,7 +3367,7 @@ function updateOnce( viewer ) { THIS[ viewer.hash ].animating = animated; // Update navigator flip transformation - if (viewer.navigator && viewer.viewport != "undefined"){ + if (viewer.navigator && viewer.viewport != undefined){ viewer.navigator.setFlip(viewer.viewport.getFlip()); } //viewer.profiler.endUpdate(); From dc8331e6411f877ef9fe577d6159df14b42c8038 Mon Sep 17 00:00:00 2001 From: Nelson Campos Date: Fri, 19 Oct 2018 15:34:13 +0100 Subject: [PATCH 086/109] Clean unnecessary code. Clean tiled image's flip property and methods. --- src/drawer.js | 16 +++++++--------- src/navigator.js | 7 +++---- src/tiledimage.js | 30 ++++++++---------------------- src/viewer.js | 19 +++++++------------ src/viewport.js | 3 +-- 5 files changed, 26 insertions(+), 49 deletions(-) diff --git a/src/drawer.js b/src/drawer.js index cf86b61b..614e6cbe 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -508,9 +508,9 @@ $.Drawer.prototype = { tiledImage._getRotationPoint(true), true) }); } - if (tiledImage.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 == 0){ - if((tiledImage._drawer.viewer.viewport.getFlip() && !tiledImage.getFlip()) || (!tiledImage._drawer.viewer.viewport.getFlip() && tiledImage.getFlip()) ) { - tiledImage._drawer._flip({}); + if (tiledImage.viewport.degrees === 0 && tiledImage.getRotation(true) % 360 === 0){ + if(tiledImage._drawer.viewer.viewport.getFlip()) { + tiledImage._drawer._flip(); } } @@ -579,9 +579,9 @@ $.Drawer.prototype = { this._restoreRotationChanges(); } - if (tiledImage.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 == 0){ - if((tiledImage._drawer.viewer.viewport.getFlip() && !tiledImage.getFlip()) || (!tiledImage._drawer.viewer.viewport.getFlip() && tiledImage.getFlip()) ) { - tiledImage._drawer._flip({}); + if (tiledImage.viewport.degrees === 0 && tiledImage.getRotation(true) % 360 === 0){ + if(tiledImage._drawer.viewer.viewport.getFlip()) { + tiledImage._drawer._flip(); } } @@ -653,9 +653,7 @@ $.Drawer.prototype = { context.save(); context.translate(point.x, point.y); - // If viewport and tiledImage are flipped, it would draw the image without flipping - // This if sentence is intended to represent a logical XOR - if((!this.viewer.viewport.getFlip() && this.viewer.world._items[0].getFlip()) || (this.viewer.viewport.getFlip() && !this.viewer.world._items[0].getFlip())){ + if(this.viewer.viewport.flipped){ context.rotate(Math.PI / 180 * -options.degrees); context.scale(-1, 1); } else{ diff --git a/src/navigator.js b/src/navigator.js index 4b2018fb..115d052d 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -284,8 +284,7 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* setFlip: function(state) { this.viewport.setFlip(state); - var flip = ((this.viewport.getFlip() && this.viewer.world._items[0] && !this.viewer.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.viewer.world._items[0] && this.viewer.world._items[0].getFlip())); - this.setDisplayTransform(flip ? "scale(-1,1)" : "scale(1,1)"); + this.setDisplayTransform(this.viewer.viewport.getFlip() ? "scale(-1,1)" : "scale(1,1)"); return this; }, @@ -456,7 +455,7 @@ function onCanvasClick( event ) { this.viewer.raiseEvent('navigator-click', canvasClickEventArgs); if ( !canvasClickEventArgs.preventDefaultAction && event.quick && this.viewer.viewport && (this.panVertical || this.panHorizontal)) { - if((this.viewer.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewer.viewport.getFlip() && this.world._items[0].getFlip())) { + if(this.viewer.viewport.flipped) { event.position.x = this.viewport.getContainerSize().x - event.position.x; } var target = this.viewport.pointFromPixel(event.position); @@ -516,7 +515,7 @@ function onCanvasDrag( event ) { event.delta.y = 0; } - if((this.viewer.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewer.viewport.getFlip() && this.world._items[0].getFlip())) { + if(this.viewer.viewport.flipped){ event.delta.x = -event.delta.x; } diff --git a/src/tiledimage.js b/src/tiledimage.js index 6501751a..abe8c2da 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -52,7 +52,6 @@ * @param {Number} [options.y=0] - Top position, in viewport coordinates. * @param {Number} [options.width=1] - Width, in viewport coordinates. * @param {Number} [options.height] - Height, in viewport coordinates. - * @param {Boolean} [options.flipped=false] - Whether to draw tiled image flipped. * @param {OpenSeadragon.Rect} [options.fitBounds] The bounds in viewport coordinates * to fit the image into. If specified, x, y, width and height get ignored. * @param {OpenSeadragon.Placement} [options.fitBoundsPlacement=OpenSeadragon.Placement.CENTER] @@ -210,9 +209,6 @@ $.TiledImage = function( options ) { animationTime: this.animationTime }); - this.flipped = options.flipped; - delete options.flipped; - this._updateForScale(); if (fitBounds) { @@ -860,16 +856,6 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag this._raiseBoundsChange(); }, - /** - * Get flip state stored on tiledImage. - * @function - * @return {Boolean} Flip state. - */ - getFlip: function() { - return this.flipped; - }, - - /** * Get the point around which this tiled image is rotated * @private @@ -1689,7 +1675,7 @@ function blendTile( tiledImage, tile, x, y, level, levelOpacity, currentTime ){ tiledImage.lastDrawn.push( tile ); - if ( opacity == 1 ) { + if ( opacity === 1 ) { setCoverage( tiledImage.coverage, level, x, y, true ); tiledImage._hasOpaqueTile = true; } else if ( deltaTime < blendTimeMillis ) { @@ -1894,7 +1880,7 @@ function drawTiles( tiledImage, lastDrawn ) { .getIntegerBoundingBox() .times($.pixelDensityRatio); - if((tiledImage._drawer.viewer.viewport.getFlip() && !tiledImage.getFlip()) || (!tiledImage._drawer.viewer.viewport.getFlip() && tiledImage.getFlip()) ) { + if(tiledImage._drawer.viewer.viewport.getFlip()) { if (tiledImage.viewport.degrees !== 0 || tiledImage.getRotation(true) % 360 !== 0){ bounds.x = tiledImage._drawer.viewer.container.clientWidth - (bounds.x + bounds.width); } @@ -1921,9 +1907,9 @@ function drawTiles( tiledImage, lastDrawn ) { }); } - if (tiledImage.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 == 0){ - if((tiledImage._drawer.viewer.viewport.getFlip() && !tiledImage.getFlip()) || (!tiledImage._drawer.viewer.viewport.getFlip() && tiledImage.getFlip()) ) { - tiledImage._drawer._flip({}); + if (tiledImage.viewport.degrees === 0 && tiledImage.getRotation(true) % 360 === 0){ + if(tiledImage._drawer.viewer.viewport.getFlip()) { + tiledImage._drawer._flip(); } } } @@ -2038,9 +2024,9 @@ function drawTiles( tiledImage, lastDrawn ) { } if (!sketchScale) { - if (tiledImage.viewport.degrees == 0 && tiledImage.getRotation(true) % 360 == 0){ - if((tiledImage._drawer.viewer.viewport.getFlip() && !tiledImage.getFlip()) || (!tiledImage._drawer.viewer.viewport.getFlip() && tiledImage.getFlip()) ) { - tiledImage._drawer._flip({}); + if (tiledImage.viewport.degrees === 0 && tiledImage.getRotation(true) % 360 === 0){ + if(tiledImage._drawer.viewer.viewport.getFlip()) { + tiledImage._drawer._flip(); } } } diff --git a/src/viewer.js b/src/viewer.js index ac3701b4..9be3e7fa 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -1435,7 +1435,6 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, opacity: queueItem.options.opacity, preload: queueItem.options.preload, degrees: queueItem.options.degrees, - flipped: queueItem.options.flipped, compositeOperation: queueItem.options.compositeOperation, springStiffness: _this.springStiffness, animationTime: _this.animationTime, @@ -2642,7 +2641,7 @@ function onCanvasKeyPress( event ) { } return false; case 114: //r - clockwise rotation - if((this.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.world._items[0].getFlip())){ + if(this.viewport.flipped){ this.viewport.setRotation($.positiveModulo(this.viewport.degrees - this.rotationIncrement, 360)); } else{ this.viewport.setRotation($.positiveModulo(this.viewport.degrees + this.rotationIncrement, 360)); @@ -2650,7 +2649,7 @@ function onCanvasKeyPress( event ) { this.viewport.applyConstraints(); return false; case 82: //R - counterclockwise rotation - if((this.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.world._items[0].getFlip())){ + if(this.viewport.flipped){ this.viewport.setRotation($.positiveModulo(this.viewport.degrees + this.rotationIncrement, 360)); } else{ this.viewport.setRotation($.positiveModulo(this.viewport.degrees - this.rotationIncrement, 360)); @@ -2678,7 +2677,7 @@ function onCanvasClick( event ) { if ( !haveKeyboardFocus ) { this.canvas.focus(); } - if((this.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.world._items[0].getFlip())){ + if(this.viewport.flipped){ event.position.x = this.viewport.getContainerSize().x - event.position.x; } @@ -2800,7 +2799,7 @@ function onCanvasDrag( event ) { if( !this.panVertical ){ event.delta.y = 0; } - if((this.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.world._items[0].getFlip())){ + if(this.viewport.flipped){ event.delta.x = -event.delta.x; } @@ -3128,7 +3127,7 @@ function onCanvasScroll( event ) { if (deltaScrollTime > this.minScrollDeltaTime) { this._lastScrollTime = thisScrollTime; - if((this.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.world._items[0].getFlip())){ + if(this.viewport.flipped){ event.position.x = this.viewport.getContainerSize().x - event.position.x; } @@ -3366,10 +3365,6 @@ function updateOnce( viewer ) { THIS[ viewer.hash ].animating = animated; - // Update navigator flip transformation - if (viewer.navigator && viewer.viewport != undefined){ - viewer.navigator.setFlip(viewer.viewport.getFlip()); - } //viewer.profiler.endUpdate(); } @@ -3499,7 +3494,7 @@ function onRotateLeft() { if ( this.viewport ) { var currRotation = this.viewport.getRotation(); - if((this.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.world._items[0].getFlip())){ + if ( this.viewport.flipped ){ currRotation = $.positiveModulo(currRotation + this.rotationIncrement, 360); } else { currRotation = $.positiveModulo(currRotation - this.rotationIncrement, 360); @@ -3512,7 +3507,7 @@ function onRotateRight() { if ( this.viewport ) { var currRotation = this.viewport.getRotation(); - if((this.viewport.getFlip() && !this.world._items[0].getFlip()) || (!this.viewport.getFlip() && this.world._items[0].getFlip())){ + if ( this.viewport.flipped ){ currRotation = $.positiveModulo(currRotation - this.rotationIncrement, 360); } else { currRotation = $.positiveModulo(currRotation + this.rotationIncrement, 360); diff --git a/src/viewport.js b/src/viewport.js index 61cee041..07c941c6 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -1552,8 +1552,7 @@ $.Viewport.prototype = { this.flipped = state; if(this.viewer.navigator){ - var flip = ((this.getFlip() || !this.viewer.world._items[0].getFlip()) || (!this.getFlip() || this.viewer.world._items[0].getFlip())); - this.viewer.navigator.setFlip(flip); + this.viewer.navigator.setFlip(this.getFlip()); } this.viewer.forceRedraw(); From 0948a8b37627b2e50da4e7fc380fc52e4040be29 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Mon, 22 Oct 2018 11:20:15 -0700 Subject: [PATCH 087/109] Changelog for #1549 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 1c089c06..cbcc6aa5 100644 --- a/changelog.txt +++ b/changelog.txt @@ -6,6 +6,7 @@ OPENSEADRAGON CHANGELOG * You can now turn off the default canvas image smoothing, if you want sharp pixels when zoomed in past 100% (#1507) * Fixed problem with navigator highlight rectangle when returning from full screen with a custom navigator location (#1515) * Added option to set rotation increment for nav buttons and keyboard (#1524) +* Fixed issue with flipping and opacity with multi-image (#1549) 2.4.0: From 3227a152eb4cb293e3c73e93fcfb99dae3a6e485 Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Sun, 28 Oct 2018 22:02:45 +0100 Subject: [PATCH 088/109] Add missing space between sentences in error message This fixes an issue reported by LGTM: This string appears to be missing a space after 'deprecated.'. Signed-off-by: Stefan Weil --- src/tilesource.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tilesource.js b/src/tilesource.js index c568e480..d85f5ee6 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -239,7 +239,7 @@ $.TileSource.prototype = { getTileSize: function( level ) { $.console.error( - "[TileSource.getTileSize] is deprecated." + + "[TileSource.getTileSize] is deprecated. " + "Use TileSource.getTileWidth() and TileSource.getTileHeight() instead" ); return this._tileWidth; From 3049a81c94e0088abef766e7f0f7e647e8bd6870 Mon Sep 17 00:00:00 2001 From: superbland Date: Wed, 31 Oct 2018 15:37:57 +0000 Subject: [PATCH 089/109] Don't insert label element until this feature is fully implemented. --- src/buttongroup.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/buttongroup.js b/src/buttongroup.js index daee211c..8efcc7ec 100644 --- a/src/buttongroup.js +++ b/src/buttongroup.js @@ -70,11 +70,11 @@ $.ButtonGroup = function( options ) { // TODO What if there IS an options.group specified? if( !options.group ){ - this.label = $.makeNeutralElement( "label" ); + this.element.style.display = "inline-block"; + //this.label = $.makeNeutralElement( "label" ); //TODO: support labels for ButtonGroups //this.label.innerHTML = this.labelText; - this.element.style.display = "inline-block"; - this.element.appendChild( this.label ); + //this.element.appendChild( this.label ); for ( i = 0; i < buttons.length; i++ ) { this.element.appendChild( buttons[ i ].element ); } From 7abb2211eb875dd5de05dd51efef3c5c67fb8067 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Wed, 31 Oct 2018 09:47:42 -0700 Subject: [PATCH 090/109] Changelog for #1560 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index cbcc6aa5..6023afcd 100644 --- a/changelog.txt +++ b/changelog.txt @@ -7,6 +7,7 @@ OPENSEADRAGON CHANGELOG * Fixed problem with navigator highlight rectangle when returning from full screen with a custom navigator location (#1515) * Added option to set rotation increment for nav buttons and keyboard (#1524) * Fixed issue with flipping and opacity with multi-image (#1549) +* Removed vestigial button group label element that was causing issues for accessibility tools (#1560) 2.4.0: From 21cfb0acf41ddc1e4ba04d66ee833dbfc7b80730 Mon Sep 17 00:00:00 2001 From: Andreas Levers Date: Wed, 31 Oct 2018 18:15:48 +0100 Subject: [PATCH 091/109] Fixed issue #1557: Typo in viewer.js Fixed a typo in areControlsEnabled --- src/viewer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/viewer.js b/src/viewer.js index 9be3e7fa..7f47f464 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -835,7 +835,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, var enabled = this.controls.length, i; for( i = 0; i < this.controls.length; i++ ){ - enabled = enabled && this.controls[ i ].isVisibile(); + enabled = enabled && this.controls[ i ].isVisible(); } return enabled; }, From 81a634a61845aac973cf6b7d00ee0dcbbaf968ea Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Thu, 1 Nov 2018 09:13:15 -0700 Subject: [PATCH 092/109] Changelog for #1562. --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 6023afcd..b9bc0e39 100644 --- a/changelog.txt +++ b/changelog.txt @@ -8,6 +8,7 @@ OPENSEADRAGON CHANGELOG * Added option to set rotation increment for nav buttons and keyboard (#1524) * Fixed issue with flipping and opacity with multi-image (#1549) * Removed vestigial button group label element that was causing issues for accessibility tools (#1560) +* Fixed a bug causing Viewer.areControlsEnabled to throw an exception (#1562) 2.4.0: From f805974a0405b605bda72007b4451b8dd2af3cd5 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Tue, 11 Dec 2018 12:02:24 -0800 Subject: [PATCH 093/109] Updating to latest NPM dependencies. --- package-lock.json | 3696 ++++++++++++++------------------------------- package.json | 6 +- 2 files changed, 1171 insertions(+), 2531 deletions(-) diff --git a/package-lock.json b/package-lock.json index f9bcc1ed..229094a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,28 +16,28 @@ "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", "dev": true, "requires": { - "mime-types": "~2.1.16", + "mime-types": "2.1.17", "negotiator": "0.6.1" } }, "acorn": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", "dev": true }, "acorn-jsx": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "requires": { - "acorn": "^3.0.4" + "acorn": "3.3.0" }, "dependencies": { "acorn": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "resolved": "http://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", "dev": true } @@ -49,18 +49,10 @@ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "dev": true, "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - }, - "dependencies": { - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - } + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } }, "ajv-keywords": { @@ -75,9 +67,9 @@ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" } }, "amdefine": { @@ -88,7 +80,7 @@ }, "ansi-escapes": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", "dev": true }, @@ -110,8 +102,8 @@ "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" + "micromatch": "2.3.11", + "normalize-path": "2.1.1" } }, "aproba": { @@ -126,8 +118,8 @@ "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "dev": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "delegates": "1.0.0", + "readable-stream": "2.3.6" }, "dependencies": { "core-util-is": { @@ -160,13 +152,13 @@ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -175,7 +167,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.1" } }, "util-deprecate": { @@ -192,7 +184,7 @@ "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", "dev": true, "requires": { - "sprintf-js": "~1.0.2" + "sprintf-js": "1.0.3" } }, "arr-diff": { @@ -201,7 +193,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "^1.0.1" + "arr-flatten": "1.1.0" } }, "arr-flatten": { @@ -216,33 +208,12 @@ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", "dev": true }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", @@ -291,71 +262,23 @@ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true } } }, @@ -387,7 +310,7 @@ "dev": true, "optional": true, "requires": { - "tweetnacl": "^0.14.3" + "tweetnacl": "0.14.5" } }, "binary-extensions": { @@ -403,7 +326,7 @@ "dev": true, "optional": true, "requires": { - "inherits": "~2.0.0" + "inherits": "2.0.3" }, "dependencies": { "inherits": { @@ -421,10 +344,10 @@ "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", "dev": true, "requires": { - "continuable-cache": "^0.3.1", - "error": "^7.0.0", - "raw-body": "~1.1.0", - "safe-json-parse": "~1.0.1" + "continuable-cache": "0.3.1", + "error": "7.0.2", + "raw-body": "1.1.7", + "safe-json-parse": "1.0.1" } }, "boom": { @@ -433,7 +356,7 @@ "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "dev": true, "requires": { - "hoek": "4.x.x" + "hoek": "4.2.1" } }, "brace-expansion": { @@ -442,7 +365,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -452,18 +375,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", - "dev": true, - "requires": { - "pako": "~0.2.0" + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" } }, "buffer-alloc": { @@ -472,8 +386,8 @@ "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=", "dev": true, "requires": { - "buffer-alloc-unsafe": "^0.1.0", - "buffer-fill": "^0.1.0" + "buffer-alloc-unsafe": "0.1.1", + "buffer-fill": "0.1.1" } }, "buffer-alloc-unsafe": { @@ -488,12 +402,6 @@ "integrity": "sha512-YgBMBzdRLEfgxJIGu2wrvI2E03tMCFU1p7d1KhB4BOoMN0VxmTFjSyN5JtKt9z8Z9JajMHruI6SE25W96wNv7Q==", "dev": true }, - "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", - "dev": true - }, "buffer-shims": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", @@ -518,12 +426,12 @@ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", "dev": true, "requires": { - "callsites": "^0.2.0" + "callsites": "0.2.0" } }, "callsites": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "resolved": "http://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", "dev": true }, @@ -535,12 +443,12 @@ }, "camelcase-keys": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" + "camelcase": "2.1.1", + "map-obj": "1.0.1" } }, "caseless": { @@ -556,21 +464,45 @@ "dev": true, "optional": true, "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" + "align-text": "0.1.4", + "lazy-cache": "1.0.4" } }, "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.3" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } } }, "chardet": { @@ -585,15 +517,15 @@ "integrity": "sha1-L0RHq16W5Q+z14n9kNTHLg5McMI=", "dev": true, "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" } }, "chownr": { @@ -615,7 +547,7 @@ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "^2.0.0" + "restore-cursor": "2.0.0" } }, "cli-width": { @@ -631,8 +563,8 @@ "dev": true, "optional": true, "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", + "center-align": "0.1.3", + "right-align": "0.1.3", "wordwrap": "0.0.2" }, "dependencies": { @@ -658,12 +590,12 @@ "dev": true }, "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "color-name": "^1.1.1" + "color-name": "1.1.3" } }, "color-name": { @@ -674,7 +606,7 @@ }, "colors": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "resolved": "http://registry.npmjs.org/colors/-/colors-1.1.2.tgz", "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", "dev": true }, @@ -684,13 +616,13 @@ "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "dev": true, "requires": { - "delayed-stream": "~1.0.0" + "delayed-stream": "1.0.0" } }, "commander": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", - "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==", + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", "dev": true }, "concat-map": { @@ -705,9 +637,9 @@ "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", "dev": true, "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "inherits": "2.0.3", + "readable-stream": "2.2.2", + "typedarray": "0.0.6" } }, "connect": { @@ -718,7 +650,7 @@ "requires": { "debug": "2.6.9", "finalhandler": "1.0.6", - "parseurl": "~1.3.2", + "parseurl": "1.3.2", "utils-merge": "1.0.1" }, "dependencies": { @@ -769,9 +701,9 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "lru-cache": "4.1.5", + "shebang-command": "1.2.0", + "which": "1.2.14" } }, "cryptiles": { @@ -780,7 +712,7 @@ "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "dev": true, "requires": { - "boom": "5.x.x" + "boom": "5.2.0" }, "dependencies": { "boom": { @@ -789,7 +721,7 @@ "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "dev": true, "requires": { - "hoek": "4.x.x" + "hoek": "4.2.1" } } } @@ -800,7 +732,7 @@ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "array-find-index": "^1.0.1" + "array-find-index": "1.0.2" } }, "dashdash": { @@ -809,7 +741,7 @@ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "dateformat": { @@ -818,350 +750,8 @@ "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", "dev": true, "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.3.0" - }, - "dependencies": { - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "hosted-git-info": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "spdx-correct": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", - "dev": true - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - } + "get-stdin": "4.0.1", + "meow": "3.7.0" } }, "debug": { @@ -1186,7 +776,7 @@ "dev": true, "optional": true, "requires": { - "mimic-response": "^1.0.0" + "mimic-response": "1.0.0" } }, "deep-extend": { @@ -1202,147 +792,6 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true, - "requires": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "^7.0.5" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1373,7 +822,7 @@ "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", "dev": true, "requires": { - "fs-exists-sync": "^0.1.0" + "fs-exists-sync": "0.1.0" } }, "detect-libc": { @@ -1389,17 +838,15 @@ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { - "esutils": "^2.0.2" - }, - "dependencies": { - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - } + "esutils": "2.0.2" } }, + "duplexer": { + "version": "0.1.1", + "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -1407,7 +854,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "~0.1.0" + "jsbn": "0.1.1" } }, "ee-first": { @@ -1434,17 +881,17 @@ "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", "dev": true, "requires": { - "string-template": "~0.2.1", - "xtend": "~4.0.0" + "string-template": "0.2.1", + "xtend": "4.0.1" } }, "error-ex": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz", - "integrity": "sha1-5ntD8+gsluo6WE/+4Ln8MyXYAtk=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { - "is-arrayish": "^0.2.1" + "is-arrayish": "0.2.1" } }, "es6-promise": { @@ -1471,11 +918,11 @@ "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", "dev": true, "requires": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.2.0" + "esprima": "2.7.3", + "estraverse": "1.9.3", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.2.0" }, "dependencies": { "estraverse": { @@ -1491,55 +938,55 @@ "dev": true, "optional": true, "requires": { - "amdefine": ">=0.0.4" + "amdefine": "1.0.1" } } } }, "eslint": { "version": "4.19.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "resolved": "http://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", "dev": true, "requires": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", - "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.4", - "esquery": "^1.0.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.0.1", - "ignore": "^3.3.3", - "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "regexpp": "^1.0.1", - "require-uncached": "^1.0.3", - "semver": "^5.3.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", + "ajv": "5.5.2", + "babel-code-frame": "6.26.0", + "chalk": "2.4.1", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.1.0", + "eslint-scope": "3.7.3", + "eslint-visitor-keys": "1.0.0", + "espree": "3.5.4", + "esquery": "1.0.1", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.3", + "globals": "11.9.0", + "ignore": "3.3.10", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.1.0", + "js-yaml": "3.12.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.10", + "minimatch": "3.0.3", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.3", + "regexpp": "1.1.0", + "require-uncached": "1.0.3", + "semver": "5.3.0", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", "table": "4.0.2", - "text-table": "~0.2.0" + "text-table": "0.2.0" }, "dependencies": { "ansi-regex": { @@ -1548,338 +995,72 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + }, + "dependencies": { + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + } } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, "js-yaml": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", - "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "1.0.9", + "esprima": "4.0.1" } }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, "progress": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "3.0.0" } - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true } } }, "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", "dev": true, "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "esrecurse": "4.2.1", + "estraverse": "4.2.0" } }, "eslint-visitor-keys": { @@ -1890,12 +1071,12 @@ }, "espree": { "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "resolved": "http://registry.npmjs.org/espree/-/espree-3.5.4.tgz", "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", "dev": true, "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" + "acorn": "5.7.3", + "acorn-jsx": "3.0.1" } }, "esprima": { @@ -1910,15 +1091,7 @@ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "dev": true, "requires": { - "estraverse": "^4.0.0" - }, - "dependencies": { - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - } + "estraverse": "4.2.0" } }, "esrecurse": { @@ -1927,7 +1100,7 @@ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "estraverse": "^4.1.0" + "estraverse": "4.2.0" } }, "estraverse": { @@ -1972,7 +1145,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "^0.1.0" + "is-posix-bracket": "0.1.1" } }, "expand-range": { @@ -1981,7 +1154,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "^2.1.0" + "fill-range": "2.2.4" } }, "expand-template": { @@ -1997,7 +1170,7 @@ "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", "dev": true, "requires": { - "os-homedir": "^1.0.1" + "os-homedir": "1.0.2" } }, "extend": { @@ -2008,13 +1181,13 @@ }, "external-editor": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" + "chardet": "0.4.2", + "iconv-lite": "0.4.24", + "tmp": "0.0.33" } }, "extglob": { @@ -2023,7 +1196,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "extract-zip": { @@ -2100,7 +1273,7 @@ "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", "dev": true, "requires": { - "websocket-driver": ">=0.5.1" + "websocket-driver": "0.7.0" } }, "fd-slicer": { @@ -2109,7 +1282,7 @@ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", "dev": true, "requires": { - "pend": "~1.2.0" + "pend": "1.2.0" } }, "figures": { @@ -2118,8 +1291,8 @@ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" } }, "file-entry-cache": { @@ -2128,16 +1301,8 @@ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", "dev": true, "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" - }, - "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - } + "flat-cache": "1.3.4", + "object-assign": "4.1.1" } }, "filename-regex": { @@ -2152,11 +1317,11 @@ "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "3.0.0", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" } }, "finalhandler": { @@ -2166,12 +1331,12 @@ "dev": true, "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" }, "dependencies": { "debug": { @@ -2197,8 +1362,8 @@ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" } }, "findup-sync": { @@ -2207,109 +1372,44 @@ "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", "dev": true, "requires": { - "glob": "~5.0.0" + "glob": "5.0.15" }, "dependencies": { - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, "glob": { "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.3", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true } } }, "flat-cache": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", - "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", "dev": true, "requires": { - "circular-json": "^0.3.1", - "del": "^2.0.2", - "graceful-fs": "^4.1.2", - "write": "^0.2.1" + "circular-json": "0.3.3", + "graceful-fs": "4.1.11", + "rimraf": "2.6.2", + "write": "0.2.1" }, "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.1" + } } } }, @@ -2325,7 +1425,7 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "^1.0.1" + "for-in": "1.0.2" } }, "forever-agent": { @@ -2340,9 +1440,9 @@ "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", "dev": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.12" + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" } }, "fresh": { @@ -2369,9 +1469,9 @@ "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0" + "graceful-fs": "4.1.11", + "jsonfile": "2.4.0", + "klaw": "1.3.1" } }, "fs.realpath": { @@ -2387,8 +1487,8 @@ "dev": true, "optional": true, "requires": { - "nan": "^2.3.0", - "node-pre-gyp": "^0.6.39" + "nan": "2.6.2", + "node-pre-gyp": "0.6.39" }, "dependencies": { "abbrev": { @@ -2403,8 +1503,8 @@ "dev": true, "optional": true, "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" + "co": "4.6.0", + "json-stable-stringify": "1.0.1" } }, "ansi-regex": { @@ -2424,8 +1524,8 @@ "dev": true, "optional": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "delegates": "1.0.0", + "readable-stream": "2.2.9" } }, "asn1": { @@ -2469,16 +1569,15 @@ "dev": true, "optional": true, "requires": { - "tweetnacl": "^0.14.3" + "tweetnacl": "0.14.5" } }, "block-stream": { "version": "0.0.9", "bundled": true, "dev": true, - "optional": true, "requires": { - "inherits": "~2.0.0" + "inherits": "2.0.3" } }, "boom": { @@ -2486,7 +1585,7 @@ "bundled": true, "dev": true, "requires": { - "hoek": "2.x.x" + "hoek": "2.16.3" } }, "brace-expansion": { @@ -2494,15 +1593,14 @@ "bundled": true, "dev": true, "requires": { - "balanced-match": "^0.4.1", + "balanced-match": "0.4.2", "concat-map": "0.0.1" } }, "buffer-shims": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "caseless": { "version": "0.12.0", @@ -2519,16 +1617,14 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "combined-stream": { "version": "1.0.5", "bundled": true, "dev": true, - "optional": true, "requires": { - "delayed-stream": "~1.0.0" + "delayed-stream": "1.0.0" } }, "concat-map": { @@ -2539,22 +1635,19 @@ "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "cryptiles": { "version": "2.0.5", "bundled": true, "dev": true, - "optional": true, "requires": { - "boom": "2.x.x" + "boom": "2.10.1" } }, "dashdash": { @@ -2563,7 +1656,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" }, "dependencies": { "assert-plus": { @@ -2592,8 +1685,7 @@ "delayed-stream": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "delegates": { "version": "1.0.0", @@ -2613,7 +1705,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "~0.1.0" + "jsbn": "0.1.1" } }, "extend": { @@ -2625,8 +1717,7 @@ "extsprintf": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "forever-agent": { "version": "0.6.1", @@ -2640,9 +1731,9 @@ "dev": true, "optional": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.12" + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" } }, "fs.realpath": { @@ -2655,10 +1746,10 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" } }, "fstream-ignore": { @@ -2667,9 +1758,9 @@ "dev": true, "optional": true, "requires": { - "fstream": "^1.0.0", - "inherits": "2", - "minimatch": "^3.0.0" + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" } }, "gauge": { @@ -2678,14 +1769,14 @@ "dev": true, "optional": true, "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" } }, "getpass": { @@ -2694,7 +1785,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" }, "dependencies": { "assert-plus": { @@ -2710,12 +1801,12 @@ "bundled": true, "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "graceful-fs": { @@ -2735,8 +1826,8 @@ "dev": true, "optional": true, "requires": { - "ajv": "^4.9.1", - "har-schema": "^1.0.5" + "ajv": "4.11.8", + "har-schema": "1.0.5" } }, "has-unicode": { @@ -2749,12 +1840,11 @@ "version": "3.1.3", "bundled": true, "dev": true, - "optional": true, "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" } }, "hoek": { @@ -2768,9 +1858,9 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" } }, "inflight": { @@ -2778,8 +1868,8 @@ "bundled": true, "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -2797,9 +1887,8 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "is-typedarray": { @@ -2811,8 +1900,7 @@ "isarray": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "isstream": { "version": "0.1.2", @@ -2826,7 +1914,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "~0.1.0" + "jsbn": "0.1.1" } }, "jsbn": { @@ -2847,7 +1935,7 @@ "dev": true, "optional": true, "requires": { - "jsonify": "~0.0.0" + "jsonify": "0.0.0" } }, "json-stringify-safe": { @@ -2885,16 +1973,14 @@ "mime-db": { "version": "1.27.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "mime-types": { "version": "2.1.15", "bundled": true, "dev": true, - "optional": true, "requires": { - "mime-db": "~1.27.0" + "mime-db": "1.27.0" } }, "minimatch": { @@ -2902,7 +1988,7 @@ "bundled": true, "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.7" } }, "minimist": { @@ -2930,17 +2016,17 @@ "dev": true, "optional": true, "requires": { - "detect-libc": "^1.0.2", + "detect-libc": "1.0.2", "hawk": "3.1.3", - "mkdirp": "^0.5.1", - "nopt": "^4.0.1", - "npmlog": "^4.0.2", - "rc": "^1.1.7", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", "request": "2.81.0", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^2.2.1", - "tar-pack": "^3.4.0" + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" } }, "nopt": { @@ -2949,8 +2035,8 @@ "dev": true, "optional": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "abbrev": "1.1.0", + "osenv": "0.1.4" } }, "npmlog": { @@ -2959,17 +2045,16 @@ "dev": true, "optional": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" } }, "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "oauth-sign": { "version": "0.8.2", @@ -2988,7 +2073,7 @@ "bundled": true, "dev": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "os-homedir": { @@ -3009,8 +2094,8 @@ "dev": true, "optional": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, "path-is-absolute": { @@ -3027,8 +2112,7 @@ "process-nextick-args": { "version": "1.0.7", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "punycode": { "version": "1.4.1", @@ -3048,10 +2132,10 @@ "dev": true, "optional": true, "requires": { - "deep-extend": "~0.4.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" }, "dependencies": { "minimist": { @@ -3066,15 +2150,14 @@ "version": "2.2.9", "bundled": true, "dev": true, - "optional": true, "requires": { - "buffer-shims": "~1.0.0", - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~1.0.0", - "util-deprecate": "~1.0.1" + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" } }, "request": { @@ -3083,28 +2166,28 @@ "dev": true, "optional": true, "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", - "forever-agent": "~0.6.1", - "form-data": "~2.1.1", - "har-validator": "~4.2.1", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "oauth-sign": "~0.8.1", - "performance-now": "^0.2.0", - "qs": "~6.4.0", - "safe-buffer": "^5.0.1", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.0.0" + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" } }, "rimraf": { @@ -3112,14 +2195,13 @@ "bundled": true, "dev": true, "requires": { - "glob": "^7.0.5" + "glob": "7.1.2" } }, "safe-buffer": { "version": "5.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "semver": { "version": "5.3.0", @@ -3143,9 +2225,8 @@ "version": "1.0.9", "bundled": true, "dev": true, - "optional": true, "requires": { - "hoek": "2.x.x" + "hoek": "2.16.3" } }, "sshpk": { @@ -3154,15 +2235,15 @@ "dev": true, "optional": true, "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jodid25519": "^1.0.0", - "jsbn": "~0.1.0", - "tweetnacl": "~0.14.0" + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" }, "dependencies": { "assert-plus": { @@ -3177,20 +2258,18 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "string_decoder": { "version": "1.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "5.0.1" } }, "stringstream": { @@ -3204,7 +2283,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "strip-json-comments": { @@ -3217,11 +2296,10 @@ "version": "2.2.1", "bundled": true, "dev": true, - "optional": true, "requires": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" } }, "tar-pack": { @@ -3230,14 +2308,14 @@ "dev": true, "optional": true, "requires": { - "debug": "^2.2.0", - "fstream": "^1.0.10", - "fstream-ignore": "^1.0.5", - "once": "^1.3.3", - "readable-stream": "^2.1.4", - "rimraf": "^2.5.1", - "tar": "^2.2.1", - "uid-number": "^0.0.6" + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" } }, "tough-cookie": { @@ -3246,7 +2324,7 @@ "dev": true, "optional": true, "requires": { - "punycode": "^1.4.1" + "punycode": "1.4.1" } }, "tunnel-agent": { @@ -3255,7 +2333,7 @@ "dev": true, "optional": true, "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "5.0.1" } }, "tweetnacl": { @@ -3273,8 +2351,7 @@ "util-deprecate": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "uuid": { "version": "3.0.1", @@ -3297,7 +2374,7 @@ "dev": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "1.0.2" } }, "wrappy": { @@ -3313,10 +2390,10 @@ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" }, "dependencies": { "balanced-match": { @@ -3331,7 +2408,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -3353,12 +2430,12 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "graceful-fs": { @@ -3373,8 +2450,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -3389,7 +2466,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -3413,7 +2490,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "path-is-absolute": { @@ -3428,7 +2505,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "^7.0.5" + "glob": "7.1.2" } }, "wrappy": { @@ -3451,14 +2528,14 @@ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" }, "dependencies": { "ansi-regex": { @@ -3479,7 +2556,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "number-is-nan": { @@ -3506,9 +2583,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "strip-ansi": { @@ -3517,7 +2594,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -3528,7 +2605,7 @@ "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", "dev": true, "requires": { - "globule": "^1.0.0" + "globule": "1.2.0" } }, "get-stdin": { @@ -3549,7 +2626,7 @@ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "github-from-package": { @@ -3565,12 +2642,12 @@ "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.3", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "glob-base": { @@ -3579,8 +2656,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" + "glob-parent": "2.0.0", + "is-glob": "2.0.1" } }, "glob-parent": { @@ -3589,7 +2666,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "^2.0.0" + "is-glob": "2.0.1" } }, "global-modules": { @@ -3598,8 +2675,8 @@ "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", "dev": true, "requires": { - "global-prefix": "^0.1.4", - "is-windows": "^0.2.0" + "global-prefix": "0.1.5", + "is-windows": "0.2.0" } }, "global-prefix": { @@ -3608,158 +2685,27 @@ "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", "dev": true, "requires": { - "homedir-polyfill": "^1.0.0", - "ini": "^1.3.4", - "is-windows": "^0.2.0", - "which": "^1.2.12" + "homedir-polyfill": "1.0.1", + "ini": "1.3.5", + "is-windows": "0.2.0", + "which": "1.2.14" } }, "globals": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", - "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", + "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==", "dev": true }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - } - }, "globule": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", "dev": true, "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.4", - "minimatch": "~3.0.2" + "glob": "7.1.1", + "lodash": "4.17.10", + "minimatch": "3.0.3" } }, "graceful-fs": { @@ -3775,165 +2721,74 @@ "dev": true }, "grunt": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.2.tgz", - "integrity": "sha1-TmpeaVtwRy/VME9fqeNCNoNqc7w=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.3.tgz", + "integrity": "sha512-/JzmZNPfKorlCrrmxWqQO4JVodO+DVd5XX4DkocL/1WlLlKVLE9+SdEIempOAxDhWPysLle6afvn/hg7Ck2k9g==", "dev": true, "requires": { - "coffeescript": "~1.10.0", - "dateformat": "~1.0.12", - "eventemitter2": "~0.4.13", - "exit": "~0.1.1", - "findup-sync": "~0.3.0", - "glob": "~7.0.0", - "grunt-cli": "~1.2.0", - "grunt-known-options": "~1.1.0", - "grunt-legacy-log": "~1.0.0", - "grunt-legacy-util": "~1.0.0", - "iconv-lite": "~0.4.13", - "js-yaml": "~3.5.2", - "minimatch": "~3.0.2", - "nopt": "~3.0.6", - "path-is-absolute": "~1.0.0", - "rimraf": "~2.2.8" + "coffeescript": "1.10.0", + "dateformat": "1.0.12", + "eventemitter2": "0.4.14", + "exit": "0.1.2", + "findup-sync": "0.3.0", + "glob": "7.0.6", + "grunt-cli": "1.2.0", + "grunt-known-options": "1.1.1", + "grunt-legacy-log": "2.0.0", + "grunt-legacy-util": "1.1.1", + "iconv-lite": "0.4.24", + "js-yaml": "3.5.5", + "minimatch": "3.0.3", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "path-is-absolute": "1.0.1", + "rimraf": "2.6.2" }, "dependencies": { - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, "glob": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.3", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "grunt-cli": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", "dev": true, "requires": { - "findup-sync": "~0.3.0", - "grunt-known-options": "~1.1.0", - "nopt": "~3.0.6", - "resolve": "~1.1.0" + "findup-sync": "0.3.0", + "grunt-known-options": "1.1.1", + "nopt": "3.0.6", + "resolve": "1.1.7" } }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, "js-yaml": { "version": "3.5.5", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz", "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=", "dev": true, "requires": { - "argparse": "^1.0.2", - "esprima": "^2.6.0" + "argparse": "1.0.9", + "esprima": "2.7.3" } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, "rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.0.6" + } } } }, @@ -3943,8 +2798,8 @@ "integrity": "sha1-Vkq/LQN4qYOhW54/MO51tzjEBjg=", "dev": true, "requires": { - "async": "^1.5.2", - "rimraf": "^2.5.1" + "async": "1.5.2", + "rimraf": "2.5.4" } }, "grunt-contrib-compress": { @@ -3953,12 +2808,12 @@ "integrity": "sha1-Ac7/ucY39S5wgfRjdQmD0KOw+nM=", "dev": true, "requires": { - "archiver": "^1.3.0", - "chalk": "^1.1.1", - "iltorb": "^1.0.13", - "lodash": "^4.7.0", - "pretty-bytes": "^4.0.2", - "stream-buffers": "^2.1.0" + "archiver": "1.3.0", + "chalk": "1.1.3", + "iltorb": "1.3.10", + "lodash": "4.17.10", + "pretty-bytes": "4.0.2", + "stream-buffers": "2.2.0" }, "dependencies": { "ansi-regex": { @@ -3979,15 +2834,15 @@ "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", "dev": true, "requires": { - "archiver-utils": "^1.3.0", - "async": "^2.0.0", - "buffer-crc32": "^0.2.1", - "glob": "^7.0.0", - "lodash": "^4.8.0", - "readable-stream": "^2.0.0", - "tar-stream": "^1.5.0", - "walkdir": "^0.0.11", - "zip-stream": "^1.1.0" + "archiver-utils": "1.3.0", + "async": "2.6.0", + "buffer-crc32": "0.2.13", + "glob": "7.1.2", + "lodash": "4.17.10", + "readable-stream": "2.3.6", + "tar-stream": "1.6.0", + "walkdir": "0.0.11", + "zip-stream": "1.2.0" } }, "archiver-utils": { @@ -3996,12 +2851,12 @@ "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", "dev": true, "requires": { - "glob": "^7.0.0", - "graceful-fs": "^4.1.0", - "lazystream": "^1.0.0", - "lodash": "^4.8.0", - "normalize-path": "^2.0.0", - "readable-stream": "^2.0.0" + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lazystream": "1.0.0", + "lodash": "4.17.10", + "normalize-path": "2.1.1", + "readable-stream": "2.3.6" } }, "async": { @@ -4010,7 +2865,7 @@ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { - "lodash": "^4.14.0" + "lodash": "4.17.10" } }, "balanced-match": { @@ -4025,8 +2880,8 @@ "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "dev": true, "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" + "readable-stream": "2.3.6", + "safe-buffer": "5.1.1" } }, "brace-expansion": { @@ -4035,7 +2890,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -4051,11 +2906,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "compress-commons": { @@ -4064,10 +2919,10 @@ "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", "dev": true, "requires": { - "buffer-crc32": "^0.2.1", - "crc32-stream": "^2.0.0", - "normalize-path": "^2.0.0", - "readable-stream": "^2.0.0" + "buffer-crc32": "0.2.13", + "crc32-stream": "2.0.0", + "normalize-path": "2.1.1", + "readable-stream": "2.3.6" } }, "concat-map": { @@ -4094,8 +2949,8 @@ "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", "dev": true, "requires": { - "crc": "^3.4.4", - "readable-stream": "^2.0.0" + "crc": "3.5.0", + "readable-stream": "2.3.6" } }, "end-of-stream": { @@ -4104,7 +2959,7 @@ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "once": "^1.4.0" + "once": "1.4.0" } }, "escape-string-regexp": { @@ -4125,12 +2980,12 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "graceful-fs": { @@ -4145,7 +3000,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "iltorb": { @@ -4155,10 +3010,10 @@ "dev": true, "optional": true, "requires": { - "detect-libc": "^0.2.0", - "nan": "^2.6.2", - "node-gyp": "^3.6.2", - "prebuild-install": "^2.3.0" + "detect-libc": "0.2.0", + "nan": "2.10.0", + "node-gyp": "3.6.2", + "prebuild-install": "2.5.3" } }, "inflight": { @@ -4167,8 +3022,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -4189,7 +3044,7 @@ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", "dev": true, "requires": { - "readable-stream": "^2.0.5" + "readable-stream": "2.3.6" } }, "lodash": { @@ -4204,7 +3059,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "nan": { @@ -4220,7 +3075,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "^1.0.1" + "remove-trailing-separator": "1.1.0" } }, "once": { @@ -4229,7 +3084,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "path-is-absolute": { @@ -4256,13 +3111,13 @@ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "remove-trailing-separator": { @@ -4283,7 +3138,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.1" } }, "strip-ansi": { @@ -4292,7 +3147,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -4307,13 +3162,13 @@ "integrity": "sha512-lh2iAPG/BHNmN6WB9Ybdynk9rEJ5GD/dy4zscHmVlwa1dq2tpE+BH78i5vjYwYVWEaOXGBjzxr89aVACF17Cpw==", "dev": true, "requires": { - "bl": "^1.0.0", - "buffer-alloc": "^1.1.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.0.0", - "to-buffer": "^1.1.0", - "xtend": "^4.0.0" + "bl": "1.2.2", + "buffer-alloc": "1.1.0", + "end-of-stream": "1.4.1", + "fs-constants": "1.0.0", + "readable-stream": "2.3.6", + "to-buffer": "1.1.1", + "xtend": "4.0.1" } }, "util-deprecate": { @@ -4346,10 +3201,10 @@ "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", "dev": true, "requires": { - "archiver-utils": "^1.3.0", - "compress-commons": "^1.2.0", - "lodash": "^4.8.0", - "readable-stream": "^2.0.0" + "archiver-utils": "1.3.0", + "compress-commons": "1.2.2", + "lodash": "4.17.10", + "readable-stream": "2.3.6" } } } @@ -4360,8 +3215,8 @@ "integrity": "sha1-YVCYYwhOhx1+ht5IwBUlntl3Rb0=", "dev": true, "requires": { - "chalk": "^1.0.0", - "source-map": "^0.5.3" + "chalk": "1.1.3", + "source-map": "0.5.7" }, "dependencies": { "ansi-regex": { @@ -4382,11 +3237,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "escape-string-regexp": { @@ -4401,7 +3256,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "source-map": { @@ -4416,7 +3271,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "supports-color": { @@ -4433,15 +3288,15 @@ "integrity": "sha1-XPkzuRpnOGBEJzwLJERgPNmIebo=", "dev": true, "requires": { - "async": "^1.5.2", - "connect": "^3.4.0", - "connect-livereload": "^0.5.0", - "http2": "^3.3.4", - "morgan": "^1.6.1", - "opn": "^4.0.0", - "portscanner": "^1.0.0", - "serve-index": "^1.7.1", - "serve-static": "^1.10.0" + "async": "1.5.2", + "connect": "3.6.5", + "connect-livereload": "0.5.4", + "http2": "3.3.7", + "morgan": "1.9.0", + "opn": "4.0.2", + "portscanner": "1.2.0", + "serve-index": "1.9.1", + "serve-static": "1.13.1" } }, "grunt-contrib-qunit": { @@ -4450,19 +3305,34 @@ "integrity": "sha1-VKUbSyyE/uYsO34AFFySjR7Ct+w=", "dev": true, "requires": { - "grunt-lib-phantomjs": "^1.0.0" + "grunt-lib-phantomjs": "1.1.0" } }, "grunt-contrib-uglify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-3.3.0.tgz", - "integrity": "sha512-W9O7lJE3PlD8VCc5fyaf98QV7f5wEDiU4PBIh0+/6UBbk2LhgzEFS0/p+taH5UD3+PlEn7QPN0o06Z0To6SqXw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-3.4.0.tgz", + "integrity": "sha512-UXsTpeP0pytpTYlmll3RDndsRXfdwmrf1tI/AtD/PrArQAzGmKMvj83aVt3D8egWlE6KqPjsJBLCCvfC52LI/A==", "dev": true, "requires": { - "chalk": "^1.0.0", - "maxmin": "^1.1.0", - "uglify-js": "~3.3.0", - "uri-path": "^1.0.0" + "chalk": "1.1.3", + "maxmin": "2.1.0", + "uglify-js": "3.4.9", + "uri-path": "1.0.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + } } }, "grunt-contrib-watch": { @@ -4471,10 +3341,10 @@ "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==", "dev": true, "requires": { - "async": "^2.6.0", - "gaze": "^1.1.0", - "lodash": "^4.17.10", - "tiny-lr": "^1.1.1" + "async": "2.6.0", + "gaze": "1.1.2", + "lodash": "4.17.10", + "tiny-lr": "1.1.1" }, "dependencies": { "async": { @@ -4483,62 +3353,19 @@ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { - "lodash": "^4.14.0" + "lodash": "4.17.10" } } } }, "grunt-eslint": { - "version": "20.1.0", - "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-20.1.0.tgz", - "integrity": "sha512-VZlDOLrB2KKefDDcx/wR8rEEz7smDwDKVblmooa+itdt/2jWw3ee2AiZB5Ap4s4AoRY0pbHRjZ3HHwY8uKR9Rw==", + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-20.2.0.tgz", + "integrity": "sha512-XPrN3lyFwiTdQWpblZqvKvKtk74aZNs/6tUdKZqSCl/YNq+iaoE477w7I/082OwTSjyXi4ylE1P5fhHWuzxu1w==", "dev": true, "requires": { - "chalk": "^2.1.0", - "eslint": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "chalk": "2.4.1", + "eslint": "4.19.1" } }, "grunt-git-describe": { @@ -4547,10 +3374,10 @@ "integrity": "sha512-R4vwvMdFMbwCfF26NPRc/Jw6d49v2aK3+P/nwKg8GHH/siE2OFmzfUHGYbbru8S55NwpLsLxxL1glIJfl9ZZOw==", "dev": true, "requires": { - "grunt-util-args": "~0.0.5", - "grunt-util-options": "~0.0.4", - "grunt-util-process": "~0.0.3", - "grunt-util-spawn": "~0.0.3" + "grunt-util-args": "0.0.5", + "grunt-util-options": "0.0.4", + "grunt-util-process": "0.0.3", + "grunt-util-spawn": "0.0.3" } }, "grunt-istanbul": { @@ -4560,7 +3387,7 @@ "dev": true, "requires": { "chalk": "1.1.1", - "istanbul": "~0.4.2", + "istanbul": "0.4.5", "nue": "0.7.1" }, "dependencies": { @@ -4570,134 +3397,66 @@ "integrity": "sha1-UJr7ZwZudJn36zU1x3RFdyri0Bk=", "dev": true, "requires": { - "ansi-styles": "^2.1.0", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } } } }, "grunt-known-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz", - "integrity": "sha1-pCdO6zL6dl2lp6OxcSYXzjsUQUk=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", + "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==", "dev": true }, "grunt-legacy-log": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.2.tgz", - "integrity": "sha512-WdedTJ/6zCXnI/coaouzqvkI19uwqbcPkdsXiDRKJyB5rOUlOxnCnTVbpeUdEckKVir2uHF3rDBYppj2p6N3+g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz", + "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==", "dev": true, "requires": { - "colors": "~1.1.2", - "grunt-legacy-log-utils": "~1.0.0", - "hooker": "~0.2.3", - "lodash": "~4.17.5" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } + "colors": "1.1.2", + "grunt-legacy-log-utils": "2.0.1", + "hooker": "0.2.3", + "lodash": "4.17.10" } }, "grunt-legacy-log-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz", - "integrity": "sha1-p7ji0Ps1taUPSvmG/BEnSevJbz0=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz", + "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==", "dev": true, "requires": { - "chalk": "~1.1.1", - "lodash": "~4.3.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "lodash": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", - "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } + "chalk": "2.4.1", + "lodash": "4.17.10" } }, "grunt-legacy-util": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz", - "integrity": "sha1-OGqnjcbtUJhsKxiVcmWxtIq7m4Y=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz", + "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==", "dev": true, "requires": { - "async": "~1.5.2", - "exit": "~0.1.1", - "getobject": "~0.1.0", - "hooker": "~0.2.3", - "lodash": "~4.3.0", - "underscore.string": "~3.2.3", - "which": "~1.2.1" + "async": "1.5.2", + "exit": "0.1.2", + "getobject": "0.1.0", + "hooker": "0.2.3", + "lodash": "4.17.10", + "underscore.string": "3.3.5", + "which": "1.3.1" }, "dependencies": { - "lodash": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz", - "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=", - "dev": true + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } } } }, @@ -4707,11 +3466,11 @@ "integrity": "sha1-np7c3Z/S3UDgwYHJQ3HVcqpe6tI=", "dev": true, "requires": { - "eventemitter2": "^0.4.9", - "phantomjs-prebuilt": "^2.1.3", - "rimraf": "^2.5.2", - "semver": "^5.1.0", - "temporary": "^0.0.8" + "eventemitter2": "0.4.14", + "phantomjs-prebuilt": "2.1.16", + "rimraf": "2.5.4", + "semver": "5.3.0", + "temporary": "0.0.8" } }, "grunt-text-replace": { @@ -4732,7 +3491,7 @@ "integrity": "sha512-LobA4rbryvmUHgFoTVR2Wqm85Jz9QlPPBp6vkH0a82HlxSv9x/ssgjA2B5Nt77TsUOOxT/8Oawk8dNtlAgznow==", "dev": true, "requires": { - "grunt-util-property": "^0.0.2" + "grunt-util-property": "0.0.2" } }, "grunt-util-process": { @@ -4754,13 +3513,12 @@ "dev": true }, "gzip-size": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-1.0.0.tgz", - "integrity": "sha1-Zs+LEBBHInuVus5uodoMF37Vwi8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", "dev": true, "requires": { - "browserify-zlib": "^0.1.4", - "concat-stream": "^1.4.1" + "duplexer": "0.1.1" } }, "handlebars": { @@ -4769,10 +3527,10 @@ "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", "dev": true, "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" }, "dependencies": { "source-map": { @@ -4781,7 +3539,7 @@ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { - "amdefine": ">=0.0.4" + "amdefine": "1.0.1" } }, "uglify-js": { @@ -4791,9 +3549,9 @@ "dev": true, "optional": true, "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" }, "dependencies": { "source-map": { @@ -4819,8 +3577,8 @@ "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "dev": true, "requires": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" + "ajv": "5.5.2", + "har-schema": "2.0.0" }, "dependencies": { "ajv": { @@ -4829,10 +3587,10 @@ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "dev": true, "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" } } } @@ -4843,7 +3601,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "has-flag": { @@ -4864,8 +3622,8 @@ "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", "dev": true, "requires": { - "is-stream": "^1.0.1", - "pinkie-promise": "^2.0.0" + "is-stream": "1.1.0", + "pinkie-promise": "2.0.1" } }, "hawk": { @@ -4874,10 +3632,10 @@ "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", "dev": true, "requires": { - "boom": "4.x.x", - "cryptiles": "3.x.x", - "hoek": "4.x.x", - "sntp": "2.x.x" + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.1", + "sntp": "2.1.0" } }, "hoek": { @@ -4892,7 +3650,7 @@ "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", "dev": true, "requires": { - "parse-passwd": "^1.0.0" + "parse-passwd": "1.0.0" } }, "hooker": { @@ -4902,9 +3660,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.5.tgz", - "integrity": "sha1-C6gdkNouJas0ozLm7HeTbhWYEYs=", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", "dev": true }, "http-errors": { @@ -4916,7 +3674,7 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" + "statuses": "1.3.1" } }, "http-parser-js": { @@ -4931,9 +3689,9 @@ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.14.1" } }, "http2": { @@ -4943,18 +3701,18 @@ "dev": true }, "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } }, "ignore": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", - "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==", + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", "dev": true }, "imurmurhash": { @@ -4969,7 +3727,7 @@ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", "dev": true, "requires": { - "repeating": "^2.0.0" + "repeating": "2.0.1" } }, "inflight": { @@ -4978,8 +3736,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -5000,20 +3758,20 @@ "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "dev": true, "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", - "lodash": "^4.3.0", + "ansi-escapes": "3.1.0", + "chalk": "2.4.1", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.2.0", + "figures": "2.0.0", + "lodash": "4.17.10", "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" }, "dependencies": { "ansi-regex": { @@ -5022,63 +3780,22 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5" + "escape-string-regexp": "1.0.5" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "^3.0.0" - } - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "ansi-regex": "3.0.0" } } } @@ -5095,7 +3812,7 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "^1.0.0" + "binary-extensions": "1.11.0" } }, "is-buffer": { @@ -5106,11 +3823,11 @@ }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { - "builtin-modules": "^1.0.0" + "builtin-modules": "1.1.1" } }, "is-dotfile": { @@ -5125,7 +3842,7 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "^2.0.0" + "is-primitive": "2.0.0" } }, "is-extendable": { @@ -5146,7 +3863,7 @@ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "is-fullwidth-code-point": { @@ -5161,7 +3878,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "is-number": { @@ -5170,31 +3887,7 @@ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "^3.0.2" - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" + "kind-of": "3.2.2" } }, "is-posix-bracket": { @@ -5278,20 +3971,20 @@ "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", "dev": true, "requires": { - "abbrev": "1.0.x", - "async": "1.x", - "escodegen": "1.8.x", - "esprima": "2.7.x", - "glob": "^5.0.15", - "handlebars": "^4.0.1", - "js-yaml": "3.x", - "mkdirp": "0.5.x", - "nopt": "3.x", - "once": "1.x", - "resolve": "1.1.x", - "supports-color": "^3.1.0", - "which": "^1.1.1", - "wordwrap": "^1.0.0" + "abbrev": "1.0.9", + "async": "1.5.2", + "escodegen": "1.8.1", + "esprima": "2.7.3", + "glob": "5.0.15", + "handlebars": "4.0.11", + "js-yaml": "3.7.0", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "once": "1.4.0", + "resolve": "1.1.7", + "supports-color": "3.2.3", + "which": "1.2.14", + "wordwrap": "1.0.0" }, "dependencies": { "abbrev": { @@ -5306,11 +3999,11 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.3", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "resolve": { @@ -5325,7 +4018,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "^1.0.0" + "has-flag": "1.0.0" } } } @@ -5348,8 +4041,8 @@ "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^2.6.0" + "argparse": "1.0.9", + "esprima": "2.7.3" } }, "jsbn": { @@ -5389,7 +4082,7 @@ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "dev": true, "requires": { - "graceful-fs": "^4.1.6" + "graceful-fs": "4.1.11" } }, "jsprim": { @@ -5416,7 +4109,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } }, "klaw": { @@ -5425,7 +4118,7 @@ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", "dev": true, "requires": { - "graceful-fs": "^4.1.9" + "graceful-fs": "4.1.11" } }, "lazy-cache": { @@ -5441,8 +4134,8 @@ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "1.1.2", + "type-check": "0.3.2" } }, "livereload-js": { @@ -5453,15 +4146,15 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" } }, "lodash": { @@ -5482,18 +4175,18 @@ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", "dev": true, "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" } }, "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "pseudomap": "1.0.2", + "yallist": "2.1.2" } }, "map-obj": { @@ -5508,7 +4201,7 @@ "integrity": "sha512-nUCmzKipcJEwYsBVAFh5P+d7JBuhJaW1xs85Hara9xuMLqtCVUrW6DSC0JVIkluxEH2W45nPBM/wjHtBXa/tYA==", "dev": true, "requires": { - "minimatch": "^3.0.2" + "minimatch": "3.0.3" } }, "math-random": { @@ -5518,33 +4211,48 @@ "dev": true }, "maxmin": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-1.1.0.tgz", - "integrity": "sha1-cTZehKmd2Piz99X94vANHn9zvmE=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-2.1.0.tgz", + "integrity": "sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY=", "dev": true, "requires": { - "chalk": "^1.0.0", - "figures": "^1.0.1", - "gzip-size": "^1.0.0", - "pretty-bytes": "^1.0.0" + "chalk": "1.1.3", + "figures": "1.7.0", + "gzip-size": "3.0.0", + "pretty-bytes": "3.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + } } }, "meow": { "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz", "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" } }, "micromatch": { @@ -5553,19 +4261,19 @@ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" } }, "mime": { @@ -5586,7 +4294,7 @@ "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", "dev": true, "requires": { - "mime-db": "~1.30.0" + "mime-db": "1.30.0" } }, "mimic-fn": { @@ -5608,12 +4316,12 @@ "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", "dev": true, "requires": { - "brace-expansion": "^1.0.0" + "brace-expansion": "1.1.11" } }, "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, @@ -5640,11 +4348,11 @@ "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", "dev": true, "requires": { - "basic-auth": "~2.0.0", + "basic-auth": "2.0.0", "debug": "2.6.9", - "depd": "~1.1.1", - "on-finished": "~2.3.0", - "on-headers": "~1.0.1" + "depd": "1.1.1", + "on-finished": "2.3.0", + "on-headers": "1.0.1" }, "dependencies": { "debug": { @@ -5702,7 +4410,7 @@ "dev": true, "optional": true, "requires": { - "semver": "^5.4.1" + "semver": "5.5.0" }, "dependencies": { "semver": { @@ -5721,19 +4429,19 @@ "dev": true, "optional": true, "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "2", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" + "fstream": "1.0.11", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.5", + "request": "2.83.0", + "rimraf": "2.6.2", + "semver": "5.3.0", + "tar": "2.2.1", + "which": "1.2.14" }, "dependencies": { "balanced-match": { @@ -5748,7 +4456,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -5770,12 +4478,12 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "graceful-fs": { @@ -5791,8 +4499,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -5807,7 +4515,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -5833,7 +4541,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "path-is-absolute": { @@ -5849,7 +4557,7 @@ "dev": true, "optional": true, "requires": { - "glob": "^7.0.5" + "glob": "7.1.2" } }, "semver": { @@ -5880,19 +4588,19 @@ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, "requires": { - "abbrev": "1" + "abbrev": "1.1.1" } }, "normalize-package-data": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz", - "integrity": "sha1-jZJPFClg4Xd+f/4XBUNjHMfLAt8=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "hosted-git-info": "2.7.1", + "is-builtin-module": "1.0.0", + "semver": "5.3.0", + "validate-npm-package-license": "3.0.4" } }, "normalize-path": { @@ -5901,7 +4609,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "^1.0.1" + "remove-trailing-separator": "1.0.2" } }, "npmlog": { @@ -5910,10 +4618,10 @@ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" } }, "nue": { @@ -5946,8 +4654,8 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" + "for-own": "0.1.5", + "is-extendable": "0.1.1" } }, "on-finished": { @@ -5971,7 +4679,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "onetime": { @@ -5980,7 +4688,7 @@ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "1.2.0" } }, "opn": { @@ -5989,8 +4697,8 @@ "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", "dev": true, "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" } }, "optimist": { @@ -5999,8 +4707,8 @@ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "minimist": "0.0.10", + "wordwrap": "0.0.3" }, "dependencies": { "minimist": { @@ -6023,12 +4731,12 @@ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" }, "dependencies": { "wordwrap": { @@ -6058,8 +4766,8 @@ "dev": true, "optional": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" }, "dependencies": { "os-homedir": { @@ -6077,22 +4785,16 @@ "integrity": "sha1-0lofmeJQbcsn1nBLg9yooxLk7cw=", "dev": true }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", - "dev": true - }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" } }, "parse-json": { @@ -6101,7 +4803,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "^1.2.0" + "error-ex": "1.3.2" } }, "parse-passwd": { @@ -6122,7 +4824,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "^2.0.0" + "pinkie-promise": "2.0.1" } }, "path-is-absolute": { @@ -6149,9 +4851,9 @@ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" } }, "pend": { @@ -6172,20 +4874,20 @@ "integrity": "sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=", "dev": true, "requires": { - "es6-promise": "^4.0.3", - "extract-zip": "^1.6.5", - "fs-extra": "^1.0.0", - "hasha": "^2.2.0", - "kew": "^0.7.0", - "progress": "^1.1.8", - "request": "^2.81.0", - "request-progress": "^2.0.1", - "which": "^1.2.10" + "es6-promise": "4.2.2", + "extract-zip": "1.6.6", + "fs-extra": "1.0.0", + "hasha": "2.2.0", + "kew": "0.7.0", + "progress": "1.1.8", + "request": "2.83.0", + "request-progress": "2.0.1", + "which": "1.2.14" } }, "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, @@ -6201,7 +4903,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "^2.0.0" + "pinkie": "2.0.4" } }, "pluralize": { @@ -6226,21 +4928,21 @@ "dev": true, "optional": true, "requires": { - "detect-libc": "^1.0.3", - "expand-template": "^1.0.2", + "detect-libc": "1.0.3", + "expand-template": "1.1.1", "github-from-package": "0.0.0", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "node-abi": "^2.2.0", - "noop-logger": "^0.1.1", - "npmlog": "^4.0.1", - "os-homedir": "^1.0.1", - "pump": "^2.0.1", - "rc": "^1.1.6", - "simple-get": "^2.7.0", - "tar-fs": "^1.13.0", - "tunnel-agent": "^0.6.0", - "which-pm-runs": "^1.0.0" + "minimist": "1.2.0", + "mkdirp": "0.5.1", + "node-abi": "2.4.1", + "noop-logger": "0.1.1", + "npmlog": "4.1.2", + "os-homedir": "1.0.2", + "pump": "2.0.1", + "rc": "1.2.7", + "simple-get": "2.8.1", + "tar-fs": "1.16.2", + "tunnel-agent": "0.6.0", + "which-pm-runs": "1.0.0" }, "dependencies": { "detect-libc": { @@ -6298,13 +5000,12 @@ "dev": true }, "pretty-bytes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", - "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz", + "integrity": "sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=", "dev": true, "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.1.0" + "number-is-nan": "1.0.1" } }, "process-nextick-args": { @@ -6332,8 +5033,8 @@ "dev": true, "optional": true, "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "end-of-stream": "1.4.1", + "once": "1.4.0" }, "dependencies": { "end-of-stream": { @@ -6343,7 +5044,7 @@ "dev": true, "optional": true, "requires": { - "once": "^1.4.0" + "once": "1.4.0" } }, "once": { @@ -6352,7 +5053,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "wrappy": { @@ -6396,7 +5097,7 @@ "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { - "graceful-readlink": ">= 1.0.0" + "graceful-readlink": "1.0.1" } }, "findup-sync": { @@ -6405,10 +5106,10 @@ "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", "dev": true, "requires": { - "detect-file": "^0.1.0", - "is-glob": "^2.0.1", - "micromatch": "^2.3.7", - "resolve-dir": "^0.1.0" + "detect-file": "0.1.0", + "is-glob": "2.0.1", + "micromatch": "2.3.11", + "resolve-dir": "0.1.1" } }, "resolve": { @@ -6417,7 +5118,7 @@ "integrity": "sha1-HwRCyeDLuBNuh7kwX5MvRsfygjU=", "dev": true, "requires": { - "path-parse": "^1.0.5" + "path-parse": "1.0.5" } } } @@ -6428,9 +5129,9 @@ "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", "dev": true, "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" + "is-number": "4.0.0", + "kind-of": "6.0.2", + "math-random": "1.0.1" }, "dependencies": { "is-number": { @@ -6459,8 +5160,8 @@ "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", "dev": true, "requires": { - "bytes": "1", - "string_decoder": "0.10" + "bytes": "1.0.0", + "string_decoder": "0.10.31" } }, "rc": { @@ -6470,10 +5171,10 @@ "dev": true, "optional": true, "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "deep-extend": "0.5.1", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" }, "dependencies": { "minimist": { @@ -6498,9 +5199,9 @@ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" } }, "read-pkg-up": { @@ -6509,8 +5210,8 @@ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "find-up": "1.1.2", + "read-pkg": "1.1.0" } }, "readable-stream": { @@ -6519,13 +5220,13 @@ "integrity": "sha1-qeb+w8fdqF+LsbO6cChgRVb8gl4=", "dev": true, "requires": { - "buffer-shims": "^1.0.0", - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" } }, "readdirp": { @@ -6534,10 +5235,10 @@ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" + "graceful-fs": "4.1.11", + "minimatch": "3.0.3", + "readable-stream": "2.2.2", + "set-immediate-shim": "1.0.1" } }, "redent": { @@ -6546,8 +5247,8 @@ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", "dev": true, "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" + "indent-string": "2.1.0", + "strip-indent": "1.0.1" } }, "regex-cache": { @@ -6556,12 +5257,12 @@ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { - "is-equal-shallow": "^0.1.3" + "is-equal-shallow": "0.1.3" } }, "regexpp": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", "dev": true }, @@ -6589,7 +5290,7 @@ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { - "is-finite": "^1.0.0" + "is-finite": "1.0.2" } }, "request": { @@ -6598,28 +5299,28 @@ "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", "dev": true, "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "hawk": "~6.0.2", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "stringstream": "~0.0.5", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" } }, "request-progress": { @@ -6628,22 +5329,22 @@ "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", "dev": true, "requires": { - "throttleit": "^1.0.0" + "throttleit": "1.0.0" } }, "require-uncached": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "resolved": "http://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", "dev": true, "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" + "caller-path": "0.1.0", + "resolve-from": "1.0.1" } }, "resolve": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "resolved": "http://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", "dev": true }, @@ -6653,8 +5354,8 @@ "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", "dev": true, "requires": { - "expand-tilde": "^1.2.2", - "global-modules": "^0.2.3" + "expand-tilde": "1.2.2", + "global-modules": "0.2.3" } }, "resolve-from": { @@ -6669,16 +5370,8 @@ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "dependencies": { - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - } + "onetime": "2.0.1", + "signal-exit": "3.0.2" } }, "right-align": { @@ -6688,7 +5381,7 @@ "dev": true, "optional": true, "requires": { - "align-text": "^0.1.1" + "align-text": "0.1.4" } }, "rimraf": { @@ -6697,7 +5390,7 @@ "integrity": "sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=", "dev": true, "requires": { - "glob": "^7.0.5" + "glob": "7.1.1" } }, "run-async": { @@ -6706,7 +5399,7 @@ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "dev": true, "requires": { - "is-promise": "^2.1.0" + "is-promise": "2.1.0" } }, "rx-lite": { @@ -6721,7 +5414,7 @@ "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", "dev": true, "requires": { - "rx-lite": "*" + "rx-lite": "4.0.8" } }, "safe-buffer": { @@ -6755,18 +5448,18 @@ "dev": true, "requires": { "debug": "2.6.9", - "depd": "~1.1.1", - "destroy": "~1.0.4", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.1", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", + "http-errors": "1.6.2", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.3.1" + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" }, "dependencies": { "debug": { @@ -6792,13 +5485,13 @@ "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "dev": true, "requires": { - "accepts": "~1.3.4", + "accepts": "1.3.4", "batch": "0.6.1", "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" + "escape-html": "1.0.3", + "http-errors": "1.6.2", + "mime-types": "2.1.17", + "parseurl": "1.3.2" }, "dependencies": { "debug": { @@ -6824,9 +5517,9 @@ "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", "dev": true, "requires": { - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.2", "send": "0.16.1" } }, @@ -6854,7 +5547,7 @@ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "1.0.0" } }, "shebang-regex": { @@ -6883,9 +5576,9 @@ "dev": true, "optional": true, "requires": { - "decompress-response": "^3.3.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" + "decompress-response": "3.3.0", + "once": "1.4.0", + "simple-concat": "1.0.0" }, "dependencies": { "once": { @@ -6895,7 +5588,7 @@ "dev": true, "optional": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "wrappy": { @@ -6913,7 +5606,7 @@ "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0" + "is-fullwidth-code-point": "2.0.0" } }, "sntp": { @@ -6922,34 +5615,45 @@ "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "dev": true, "requires": { - "hoek": "4.x.x" + "hoek": "4.2.1" } }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", "dev": true, "requires": { - "spdx-license-ids": "^1.0.2" + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.2" } }, "spdx-exceptions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", "dev": true }, "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.2.0", + "spdx-license-ids": "3.0.2" + } }, "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz", + "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==", "dev": true }, "sprintf-js": { @@ -6964,14 +5668,14 @@ "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", "dev": true, "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "tweetnacl": "~0.14.0" + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" } }, "statuses": { @@ -6992,8 +5696,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" }, "dependencies": { "ansi-regex": { @@ -7008,7 +5712,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "3.0.0" } } } @@ -7031,7 +5735,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "strip-bom": { @@ -7040,7 +5744,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "^0.2.0" + "is-utf8": "0.2.1" } }, "strip-indent": { @@ -7049,7 +5753,7 @@ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", "dev": true, "requires": { - "get-stdin": "^4.0.1" + "get-stdin": "4.0.1" } }, "strip-json-comments": { @@ -7070,55 +5774,12 @@ "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", "dev": true, "requires": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "chalk": "2.4.1", + "lodash": "4.17.10", "slice-ansi": "1.0.0", - "string-width": "^2.1.1" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "string-width": "2.1.1" } }, "tar": { @@ -7128,9 +5789,9 @@ "dev": true, "optional": true, "requires": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" }, "dependencies": { "inherits": { @@ -7149,10 +5810,10 @@ "dev": true, "optional": true, "requires": { - "chownr": "^1.0.1", - "mkdirp": "^0.5.1", - "pump": "^1.0.0", - "tar-stream": "^1.1.2" + "chownr": "1.0.1", + "mkdirp": "0.5.1", + "pump": "1.0.3", + "tar-stream": "1.6.0" }, "dependencies": { "bl": { @@ -7162,8 +5823,8 @@ "dev": true, "optional": true, "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" + "readable-stream": "2.3.6", + "safe-buffer": "5.1.1" } }, "core-util-is": { @@ -7178,7 +5839,7 @@ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "once": "^1.4.0" + "once": "1.4.0" } }, "inherits": { @@ -7216,7 +5877,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "process-nextick-args": { @@ -7232,8 +5893,8 @@ "dev": true, "optional": true, "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "end-of-stream": "1.4.1", + "once": "1.4.0" } }, "readable-stream": { @@ -7242,13 +5903,13 @@ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.1", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "string_decoder": { @@ -7257,7 +5918,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.1" } }, "tar-stream": { @@ -7267,13 +5928,13 @@ "dev": true, "optional": true, "requires": { - "bl": "^1.0.0", - "buffer-alloc": "^1.1.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.0.0", - "to-buffer": "^1.1.0", - "xtend": "^4.0.0" + "bl": "1.2.2", + "buffer-alloc": "1.1.0", + "end-of-stream": "1.4.1", + "fs-constants": "1.0.0", + "readable-stream": "2.3.6", + "to-buffer": "1.1.1", + "xtend": "4.0.1" } }, "util-deprecate": { @@ -7303,7 +5964,7 @@ "integrity": "sha1-oYqYHSi6jKNgJ/s8MFOMPst0CsA=", "dev": true, "requires": { - "package": ">= 1.0.0 < 1.2.0" + "package": "1.0.1" } }, "text-table": { @@ -7320,7 +5981,7 @@ }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -7330,12 +5991,12 @@ "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", "dev": true, "requires": { - "body": "^5.1.0", - "debug": "^3.1.0", - "faye-websocket": "~0.10.0", - "livereload-js": "^2.3.0", - "object-assign": "^4.1.0", - "qs": "^6.4.0" + "body": "5.1.0", + "debug": "3.1.0", + "faye-websocket": "0.10.0", + "livereload-js": "2.3.0", + "object-assign": "4.1.1", + "qs": "6.5.1" } }, "tmp": { @@ -7344,7 +6005,7 @@ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { - "os-tmpdir": "~1.0.2" + "os-tmpdir": "1.0.2" } }, "to-buffer": { @@ -7359,7 +6020,7 @@ "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", "dev": true, "requires": { - "punycode": "^1.4.1" + "punycode": "1.4.1" } }, "trim-newlines": { @@ -7374,7 +6035,7 @@ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "5.1.1" } }, "tweetnacl": { @@ -7390,7 +6051,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "~1.1.2" + "prelude-ls": "1.1.2" } }, "typedarray": { @@ -7400,21 +6061,13 @@ "dev": true }, "uglify-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.4.tgz", - "integrity": "sha512-hfIwuAQI5dlXP30UtdmWoYF9k+ypVqBXIdmd6ZKBiaNHHvA8ty7ZloMe3+7S5AEKVkxHbjByl4DfRHQ7QpZquw==", + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", + "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", "dev": true, "requires": { - "commander": "~2.12.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "commander": "2.17.1", + "source-map": "0.6.1" } }, "uglify-to-browserify": { @@ -7425,10 +6078,14 @@ "optional": true }, "underscore.string": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.2.3.tgz", - "integrity": "sha1-gGmSYzZl1eX8tNsfs6hi62jp5to=", - "dev": true + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", + "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "dev": true, + "requires": { + "sprintf-js": "1.0.3", + "util-deprecate": "1.0.2" + } }, "unpipe": { "version": "1.0.0", @@ -7461,13 +6118,13 @@ "dev": true }, "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { - "spdx-correct": "~1.0.0", - "spdx-expression-parse": "~1.0.0" + "spdx-correct": "3.1.0", + "spdx-expression-parse": "3.0.0" } }, "verror": { @@ -7476,9 +6133,9 @@ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, "requires": { - "assert-plus": "^1.0.0", + "assert-plus": "1.0.0", "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "extsprintf": "1.3.0" } }, "walk-sync": { @@ -7487,8 +6144,8 @@ "integrity": "sha1-VYoWrqyMDbWcAotzxm85doTs5GU=", "dev": true, "requires": { - "ensure-posix-path": "^1.0.0", - "matcher-collection": "^1.0.0" + "ensure-posix-path": "1.0.2", + "matcher-collection": "1.0.5" } }, "websocket-driver": { @@ -7497,8 +6154,8 @@ "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", "dev": true, "requires": { - "http-parser-js": ">=0.4.0", - "websocket-extensions": ">=0.1.1" + "http-parser-js": "0.4.12", + "websocket-extensions": "0.1.3" } }, "websocket-extensions": { @@ -7513,7 +6170,7 @@ "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", "dev": true, "requires": { - "isexe": "^2.0.0" + "isexe": "2.0.0" } }, "which-pm-runs": { @@ -7529,7 +6186,7 @@ "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "requires": { - "string-width": "^1.0.2" + "string-width": "1.0.2" }, "dependencies": { "ansi-regex": { @@ -7550,7 +6207,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "number-is-nan": { @@ -7565,9 +6222,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "strip-ansi": { @@ -7576,7 +6233,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } } } @@ -7606,24 +6263,7 @@ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", "dev": true, "requires": { - "mkdirp": "^0.5.1" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - } + "mkdirp": "0.5.1" } }, "xtend": { @@ -7645,9 +6285,9 @@ "dev": true, "optional": true, "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", "window-size": "0.1.0" }, "dependencies": { @@ -7666,7 +6306,7 @@ "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", "dev": true, "requires": { - "fd-slicer": "~1.0.1" + "fd-slicer": "1.0.1" } } } diff --git a/package.json b/package.json index 75a054cc..15131010 100644 --- a/package.json +++ b/package.json @@ -28,15 +28,15 @@ "url": "https://github.com/openseadragon/openseadragon.git" }, "devDependencies": { - "grunt": "^1.0.2", + "grunt": "^1.0.3", "grunt-contrib-clean": "^1.1.0", "grunt-contrib-compress": "^1.4.3", "grunt-contrib-concat": "^1.0.1", "grunt-contrib-connect": "^1.0.2", "grunt-contrib-qunit": "^2.0.0", - "grunt-contrib-uglify": "^3.2.1", + "grunt-contrib-uglify": "^3.4.0", "grunt-contrib-watch": "^1.1.0", - "grunt-eslint": "^20.1.0", + "grunt-eslint": "^20.2.0", "grunt-git-describe": "^2.4.4", "grunt-istanbul": "^0.8.0", "grunt-text-replace": "^0.4.0", From 578ff36a065264246e8f29be963b238ed05209e8 Mon Sep 17 00:00:00 2001 From: Yochay Doutsh Date: Wed, 6 Feb 2019 16:04:33 +0200 Subject: [PATCH 094/109] WIP: _calculateCanvasSize outputs are floored, but imageSmoothingEnabled is still initalized on resize --- src/drawer.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/drawer.js b/src/drawer.js index 614e6cbe..5a70bb1e 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -686,8 +686,9 @@ $.Drawer.prototype = { var pixelDensityRatio = $.pixelDensityRatio; var viewportSize = this.viewport.getContainerSize(); return { - x: viewportSize.x * pixelDensityRatio, - y: viewportSize.y * pixelDensityRatio + // canvas width and height are integers + x: Math.floor(viewportSize.x * pixelDensityRatio), + y: Math.floor(viewportSize.y * pixelDensityRatio) }; }, From 1e538e665d55bcada2ffae744e7b8fc33162bb5b Mon Sep 17 00:00:00 2001 From: Yochay Doutsh Date: Wed, 6 Feb 2019 17:47:07 +0200 Subject: [PATCH 095/109] imageSmoothingEnabled is being set to correct value after resize --- src/drawer.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/drawer.js b/src/drawer.js index 5a70bb1e..66bd3a26 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -247,6 +247,7 @@ $.Drawer.prototype = { var viewportSize = this._calculateCanvasSize(); if( this.canvas.width != viewportSize.x || this.canvas.height != viewportSize.y ) { + var imageSmoothingEnabled = this.canvas.getContext('2d').imageSmoothingEnabled; this.canvas.width = viewportSize.x; this.canvas.height = viewportSize.y; if ( this.sketchCanvas !== null ) { @@ -254,6 +255,7 @@ $.Drawer.prototype = { this.sketchCanvas.width = sketchCanvasSize.x; this.sketchCanvas.height = sketchCanvasSize.y; } + this.setImageSmoothingEnabled(imageSmoothingEnabled); } this._clear(); } From ef068e9229e77bc4eb525b84ac91aedbace73439 Mon Sep 17 00:00:00 2001 From: Yochay Doutsh Date: Thu, 7 Feb 2019 11:40:34 +0200 Subject: [PATCH 096/109] split setImageSmoothingEnabled into private and public parts, change floor to round --- src/drawer.js | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/drawer.js b/src/drawer.js index 66bd3a26..dbaed1cd 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -247,7 +247,6 @@ $.Drawer.prototype = { var viewportSize = this._calculateCanvasSize(); if( this.canvas.width != viewportSize.x || this.canvas.height != viewportSize.y ) { - var imageSmoothingEnabled = this.canvas.getContext('2d').imageSmoothingEnabled; this.canvas.width = viewportSize.x; this.canvas.height = viewportSize.y; if ( this.sketchCanvas !== null ) { @@ -255,7 +254,7 @@ $.Drawer.prototype = { this.sketchCanvas.width = sketchCanvasSize.x; this.sketchCanvas.height = sketchCanvasSize.y; } - this.setImageSmoothingEnabled(imageSmoothingEnabled); + this._setImageSmoothingEnabled(); } this._clear(); } @@ -611,6 +610,9 @@ $.Drawer.prototype = { }, + // private + _imageSmoothingEnabled: true, + /** * Turns image smoothing on or off for this viewer. Note: Ignored in some (especially older) browsers that do not support this property. * @@ -621,16 +623,21 @@ $.Drawer.prototype = { */ setImageSmoothingEnabled: function(imageSmoothingEnabled){ if ( this.useCanvas ) { - var context = this.context; - context.mozImageSmoothingEnabled = imageSmoothingEnabled; - context.webkitImageSmoothingEnabled = imageSmoothingEnabled; - context.msImageSmoothingEnabled = imageSmoothingEnabled; - context.imageSmoothingEnabled = imageSmoothingEnabled; - + this._imageSmoothingEnabled = imageSmoothingEnabled; + this._setImageSmoothingEnabled(); this.viewer.forceRedraw(); } }, + // private + _setImageSmoothingEnabled: function(){ + var context = this.context; + context.mozImageSmoothingEnabled = this._imageSmoothingEnabled; + context.webkitImageSmoothingEnabled = this._imageSmoothingEnabled; + context.msImageSmoothingEnabled = this._imageSmoothingEnabled; + context.imageSmoothingEnabled = this._imageSmoothingEnabled; + }, + /** * Get the canvas size * @param {Boolean} sketch If set to true return the size of the sketch canvas @@ -689,8 +696,8 @@ $.Drawer.prototype = { var viewportSize = this.viewport.getContainerSize(); return { // canvas width and height are integers - x: Math.floor(viewportSize.x * pixelDensityRatio), - y: Math.floor(viewportSize.y * pixelDensityRatio) + x: Math.round(viewportSize.x * pixelDensityRatio), + y: Math.round(viewportSize.y * pixelDensityRatio) }; }, From 712e3d8dd17f1e3c7a5da0495f0963fd834fd8bd Mon Sep 17 00:00:00 2001 From: Yochay Doutsh Date: Sun, 10 Feb 2019 14:57:35 +0200 Subject: [PATCH 097/109] Moved property from prototype to constructor and renamed private function --- src/drawer.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/drawer.js b/src/drawer.js index dbaed1cd..3534577e 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -130,6 +130,10 @@ $.Drawer = function( options ) { // explicit left-align this.container.style.textAlign = "left"; this.container.appendChild( this.canvas ); + + // Image smoothing for canvas rendering (only if canvas is used). + // Canvas default is "true", so this will only be changed if user specified "false". + this._imageSmoothingEnabled = true; }; /** @lends OpenSeadragon.Drawer.prototype */ @@ -254,7 +258,7 @@ $.Drawer.prototype = { this.sketchCanvas.width = sketchCanvasSize.x; this.sketchCanvas.height = sketchCanvasSize.y; } - this._setImageSmoothingEnabled(); + this._updateImageSmoothingEnabled(); } this._clear(); } @@ -609,10 +613,6 @@ $.Drawer.prototype = { } }, - - // private - _imageSmoothingEnabled: true, - /** * Turns image smoothing on or off for this viewer. Note: Ignored in some (especially older) browsers that do not support this property. * @@ -624,13 +624,13 @@ $.Drawer.prototype = { setImageSmoothingEnabled: function(imageSmoothingEnabled){ if ( this.useCanvas ) { this._imageSmoothingEnabled = imageSmoothingEnabled; - this._setImageSmoothingEnabled(); + this._updateImageSmoothingEnabled(); this.viewer.forceRedraw(); } }, // private - _setImageSmoothingEnabled: function(){ + _updateImageSmoothingEnabled: function(){ var context = this.context; context.mozImageSmoothingEnabled = this._imageSmoothingEnabled; context.webkitImageSmoothingEnabled = this._imageSmoothingEnabled; From 71e3c08116e2665332f2a5902e9f6ddde1fae675 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Wed, 13 Feb 2019 09:26:08 -0800 Subject: [PATCH 098/109] Changelog for #1595 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index b9bc0e39..3cf2a57f 100644 --- a/changelog.txt +++ b/changelog.txt @@ -9,6 +9,7 @@ OPENSEADRAGON CHANGELOG * Fixed issue with flipping and opacity with multi-image (#1549) * Removed vestigial button group label element that was causing issues for accessibility tools (#1560) * Fixed a bug causing Viewer.areControlsEnabled to throw an exception (#1562) +* Fixed a bug causing the imageSmoothingEnabled setting to sometimes be forgotten (#1595) 2.4.0: From 6426f6fc21d2b5fe6ca8a52bbd6ce2b0769cdd11 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Wed, 13 Feb 2019 09:28:44 -0800 Subject: [PATCH 099/109] Updated #1595 changelog --- changelog.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/changelog.txt b/changelog.txt index 3cf2a57f..28ffe29d 100644 --- a/changelog.txt +++ b/changelog.txt @@ -3,13 +3,12 @@ OPENSEADRAGON CHANGELOG 2.4.1: (In progress) -* You can now turn off the default canvas image smoothing, if you want sharp pixels when zoomed in past 100% (#1507) +* You can now turn off the default canvas image smoothing, if you want sharp pixels when zoomed in past 100% (#1507, #1595) * Fixed problem with navigator highlight rectangle when returning from full screen with a custom navigator location (#1515) * Added option to set rotation increment for nav buttons and keyboard (#1524) * Fixed issue with flipping and opacity with multi-image (#1549) * Removed vestigial button group label element that was causing issues for accessibility tools (#1560) * Fixed a bug causing Viewer.areControlsEnabled to throw an exception (#1562) -* Fixed a bug causing the imageSmoothingEnabled setting to sometimes be forgotten (#1595) 2.4.0: From 661fef19b5e7fede4dd7451cdf2251d1e6c7af96 Mon Sep 17 00:00:00 2001 From: Elie Roux Date: Thu, 14 Mar 2019 14:04:12 +0100 Subject: [PATCH 100/109] fix for #1617 and #1343 --- src/iiiftilesource.js | 56 ++++++++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/src/iiiftilesource.js b/src/iiiftilesource.js index c80a3f2d..fee31f68 100644 --- a/src/iiiftilesource.js +++ b/src/iiiftilesource.js @@ -55,6 +55,16 @@ $.IIIFTileSource = function( options ){ options.tileSizePerScaleFactor = {}; + this.usedFormat = "jpg"; + if ( this.formatHints ) { + for (var f = 0; f < this.formatHints.length; f++ ) { + if ( $.imageFormatSupported(this.formatHints[f]) ) { + this.usedFormat = this.formatHints[f]; + break; + } + } + } + // N.B. 2.0 renamed scale_factors to scaleFactors if ( this.tile_width && this.tile_height ) { options.tileWidth = this.tile_width; @@ -337,32 +347,46 @@ $.extend( $.IIIFTileSource.prototype, $.TileSource.prototype, /** @lends OpenSea iiifTileW, iiifTileH, iiifSize, + iiifSizeW, iiifQuality, - uri; + uri, + isv1; tileWidth = this.getTileWidth(level); tileHeight = this.getTileHeight(level); iiifTileSizeWidth = Math.ceil( tileWidth / scale ); iiifTileSizeHeight = Math.ceil( tileHeight / scale ); - - if ( this['@context'].indexOf('/1.0/context.json') > -1 || + isv1 = ( this['@context'].indexOf('/1.0/context.json') > -1 || this['@context'].indexOf('/1.1/context.json') > -1 || - this['@context'].indexOf('/1/context.json') > -1 ) { - iiifQuality = "native.jpg"; + this['@context'].indexOf('/1/context.json') > -1 ); + if (isv1) { + iiifQuality = "native." + this.usedFormat; } else { - iiifQuality = "default.jpg"; + iiifQuality = "default." + this.usedFormat; } - if ( levelWidth < tileWidth && levelHeight < tileHeight ){ - iiifSize = levelWidth + ","; + if (isv1) { + iiifSize = levelWidth + ","; + } else { + iiifSize = "max"; + } iiifRegion = 'full'; } else { iiifTileX = x * iiifTileSizeWidth; iiifTileY = y * iiifTileSizeHeight; iiifTileW = Math.min( iiifTileSizeWidth, this.width - iiifTileX ); iiifTileH = Math.min( iiifTileSizeHeight, this.height - iiifTileY ); - iiifSize = Math.ceil( iiifTileW * scale ) + ","; - iiifRegion = [ iiifTileX, iiifTileY, iiifTileW, iiifTileH ].join( ',' ); + if ( x == 0 && y == 0 && iiifTileW == this.width && iiifTileH == this.height ) { + iiifRegion = "full"; + } else { + iiifRegion = [ iiifTileX, iiifTileY, iiifTileW, iiifTileH ].join( ',' ); + } + iiifSizeW = Math.ceil( iiifTileW * scale ); + if ( (!isv1) && iiifSizeW == this.width ) { + iiifSize = "max"; + } else { + iiifSize = iiifSizeW + ","; + } } uri = [ this['@id'], iiifRegion, iiifSize, IIIF_ROTATION, iiifQuality ].join( '/' ); @@ -374,17 +398,21 @@ $.extend( $.IIIFTileSource.prototype, $.TileSource.prototype, /** @lends OpenSea /** * Determine whether arbitrary tile requests can be made against a service with the given profile * @function - * @param {object} profile - IIIF profile object + * @param {array} profile - IIIF profile array * @throws {Error} */ - function canBeTiled (profile ) { + function canBeTiled ( profile ) { var level0Profiles = [ "http://library.stanford.edu/iiif/image-api/compliance.html#level0", "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0", "http://iiif.io/api/image/2/level0.json" ]; var isLevel0 = (level0Profiles.indexOf(profile[0]) != -1); - return !isLevel0 || (profile.indexOf("sizeByW") != -1); + var hasSizeByW = false; + if ( profile.length > 1 && profile[1].supports ) { + hasSizeByW = profile[1].supports.indexOf( "sizeByW" ) != -1; + } + return !isLevel0 || hasSizeByW; } /** @@ -397,7 +425,7 @@ $.extend( $.IIIFTileSource.prototype, $.TileSource.prototype, /** @lends OpenSea var levels = []; for(var i = 0; i < options.sizes.length; i++) { levels.push({ - url: options['@id'] + '/full/' + options.sizes[i].width + ',/0/default.jpg', + url: options['@id'] + '/full/' + options.sizes[i].width + ',/0/default.' + this.usedFormat, width: options.sizes[i].width, height: options.sizes[i].height }); From e4987f9701a1e822c673a6b0c45bfd0f1f3ba342 Mon Sep 17 00:00:00 2001 From: Elie Roux Date: Thu, 14 Mar 2019 16:10:28 +0100 Subject: [PATCH 101/109] fix too agressive canonicalization --- src/iiiftilesource.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/iiiftilesource.js b/src/iiiftilesource.js index fee31f68..df1d0154 100644 --- a/src/iiiftilesource.js +++ b/src/iiiftilesource.js @@ -365,7 +365,7 @@ $.extend( $.IIIFTileSource.prototype, $.TileSource.prototype, /** @lends OpenSea iiifQuality = "default." + this.usedFormat; } if ( levelWidth < tileWidth && levelHeight < tileHeight ){ - if (isv1) { + if ( isv1 || levelWidth != this.width ) { iiifSize = levelWidth + ","; } else { iiifSize = "max"; From b38f5d609bd3c23b2b1267c06596ff8a219b97df Mon Sep 17 00:00:00 2001 From: Elie Roux Date: Thu, 14 Mar 2019 19:10:40 +0100 Subject: [PATCH 102/109] use === and !== --- src/iiiftilesource.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/iiiftilesource.js b/src/iiiftilesource.js index df1d0154..0b97e661 100644 --- a/src/iiiftilesource.js +++ b/src/iiiftilesource.js @@ -365,7 +365,7 @@ $.extend( $.IIIFTileSource.prototype, $.TileSource.prototype, /** @lends OpenSea iiifQuality = "default." + this.usedFormat; } if ( levelWidth < tileWidth && levelHeight < tileHeight ){ - if ( isv1 || levelWidth != this.width ) { + if ( isv1 || levelWidth !== this.width ) { iiifSize = levelWidth + ","; } else { iiifSize = "max"; @@ -376,13 +376,13 @@ $.extend( $.IIIFTileSource.prototype, $.TileSource.prototype, /** @lends OpenSea iiifTileY = y * iiifTileSizeHeight; iiifTileW = Math.min( iiifTileSizeWidth, this.width - iiifTileX ); iiifTileH = Math.min( iiifTileSizeHeight, this.height - iiifTileY ); - if ( x == 0 && y == 0 && iiifTileW == this.width && iiifTileH == this.height ) { + if ( x === 0 && y === 0 && iiifTileW === this.width && iiifTileH === this.height ) { iiifRegion = "full"; } else { iiifRegion = [ iiifTileX, iiifTileY, iiifTileW, iiifTileH ].join( ',' ); } iiifSizeW = Math.ceil( iiifTileW * scale ); - if ( (!isv1) && iiifSizeW == this.width ) { + if ( (!isv1) && iiifSizeW === this.width ) { iiifSize = "max"; } else { iiifSize = iiifSizeW + ","; @@ -407,10 +407,10 @@ $.extend( $.IIIFTileSource.prototype, $.TileSource.prototype, /** @lends OpenSea "http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0", "http://iiif.io/api/image/2/level0.json" ]; - var isLevel0 = (level0Profiles.indexOf(profile[0]) != -1); + var isLevel0 = (level0Profiles.indexOf(profile[0]) !== -1); var hasSizeByW = false; if ( profile.length > 1 && profile[1].supports ) { - hasSizeByW = profile[1].supports.indexOf( "sizeByW" ) != -1; + hasSizeByW = profile[1].supports.indexOf( "sizeByW" ) !== -1; } return !isLevel0 || hasSizeByW; } From f8022385f7c8716bcbd0f24c995c45e93a9d1232 Mon Sep 17 00:00:00 2001 From: Elie Roux Date: Thu, 14 Mar 2019 19:58:38 +0100 Subject: [PATCH 103/109] fix qunit error --- src/iiiftilesource.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/iiiftilesource.js b/src/iiiftilesource.js index 0b97e661..54f744f8 100644 --- a/src/iiiftilesource.js +++ b/src/iiiftilesource.js @@ -425,7 +425,7 @@ $.extend( $.IIIFTileSource.prototype, $.TileSource.prototype, /** @lends OpenSea var levels = []; for(var i = 0; i < options.sizes.length; i++) { levels.push({ - url: options['@id'] + '/full/' + options.sizes[i].width + ',/0/default.' + this.usedFormat, + url: options['@id'] + '/full/' + options.sizes[i].width + ',/0/default.' + options.usedFormat, width: options.sizes[i].width, height: options.sizes[i].height }); From 81e030e6538090e437b0df5c6b761488d22a5a6c Mon Sep 17 00:00:00 2001 From: Elie Roux Date: Thu, 14 Mar 2019 21:03:28 +0100 Subject: [PATCH 104/109] add formatHints options --- src/tilesource.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/tilesource.js b/src/tilesource.js index d85f5ee6..cda10d7a 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -69,6 +69,11 @@ * the XHR's withCredentials (for accessing secure data). * @param {Object} [options.ajaxHeaders] * A set of headers to include in AJAX requests. + * @param {Object} [options.formatHints] + * An array of extensions to use for image URLs, by descending order of + * preference. The extensions are tested against the supported formats, + * in case none of the extension values is supported, the default (jpg) + * will be used. * @param {Number} [options.width] * Width of the source image at max resolution in pixels. * @param {Number} [options.height] @@ -218,6 +223,7 @@ $.TileSource = function( width, height, tileSize, tileOverlap, minLevel, maxLeve } this.tileOverlap = options.tileOverlap ? options.tileOverlap : 0; + this.formatHints = options.formatHints; this.minLevel = options.minLevel ? options.minLevel : 0; this.maxLevel = ( undefined !== options.maxLevel && null !== options.maxLevel ) ? options.maxLevel : ( From 0810d97b6975466a388ce8f5413e46fde9e0abc5 Mon Sep 17 00:00:00 2001 From: Elie Roux Date: Tue, 19 Mar 2019 08:39:01 +0100 Subject: [PATCH 105/109] no direct support for formatHints --- src/iiiftilesource.js | 8 -------- src/tilesource.js | 6 ------ 2 files changed, 14 deletions(-) diff --git a/src/iiiftilesource.js b/src/iiiftilesource.js index 54f744f8..0e9f53b8 100644 --- a/src/iiiftilesource.js +++ b/src/iiiftilesource.js @@ -56,14 +56,6 @@ $.IIIFTileSource = function( options ){ options.tileSizePerScaleFactor = {}; this.usedFormat = "jpg"; - if ( this.formatHints ) { - for (var f = 0; f < this.formatHints.length; f++ ) { - if ( $.imageFormatSupported(this.formatHints[f]) ) { - this.usedFormat = this.formatHints[f]; - break; - } - } - } // N.B. 2.0 renamed scale_factors to scaleFactors if ( this.tile_width && this.tile_height ) { diff --git a/src/tilesource.js b/src/tilesource.js index cda10d7a..d85f5ee6 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -69,11 +69,6 @@ * the XHR's withCredentials (for accessing secure data). * @param {Object} [options.ajaxHeaders] * A set of headers to include in AJAX requests. - * @param {Object} [options.formatHints] - * An array of extensions to use for image URLs, by descending order of - * preference. The extensions are tested against the supported formats, - * in case none of the extension values is supported, the default (jpg) - * will be used. * @param {Number} [options.width] * Width of the source image at max resolution in pixels. * @param {Number} [options.height] @@ -223,7 +218,6 @@ $.TileSource = function( width, height, tileSize, tileOverlap, minLevel, maxLeve } this.tileOverlap = options.tileOverlap ? options.tileOverlap : 0; - this.formatHints = options.formatHints; this.minLevel = options.minLevel ? options.minLevel : 0; this.maxLevel = ( undefined !== options.maxLevel && null !== options.maxLevel ) ? options.maxLevel : ( From 3f91bafcf80265b516a7085f94b35427aff98b13 Mon Sep 17 00:00:00 2001 From: Elie Roux Date: Tue, 19 Mar 2019 08:47:40 +0100 Subject: [PATCH 106/109] rename usedFormat to tileFormat --- src/iiiftilesource.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/iiiftilesource.js b/src/iiiftilesource.js index 0e9f53b8..f7054643 100644 --- a/src/iiiftilesource.js +++ b/src/iiiftilesource.js @@ -55,7 +55,7 @@ $.IIIFTileSource = function( options ){ options.tileSizePerScaleFactor = {}; - this.usedFormat = "jpg"; + this.tileFormat = "jpg"; // N.B. 2.0 renamed scale_factors to scaleFactors if ( this.tile_width && this.tile_height ) { @@ -352,9 +352,9 @@ $.extend( $.IIIFTileSource.prototype, $.TileSource.prototype, /** @lends OpenSea this['@context'].indexOf('/1.1/context.json') > -1 || this['@context'].indexOf('/1/context.json') > -1 ); if (isv1) { - iiifQuality = "native." + this.usedFormat; + iiifQuality = "native." + this.tileFormat; } else { - iiifQuality = "default." + this.usedFormat; + iiifQuality = "default." + this.tileFormat; } if ( levelWidth < tileWidth && levelHeight < tileHeight ){ if ( isv1 || levelWidth !== this.width ) { @@ -417,7 +417,7 @@ $.extend( $.IIIFTileSource.prototype, $.TileSource.prototype, /** @lends OpenSea var levels = []; for(var i = 0; i < options.sizes.length; i++) { levels.push({ - url: options['@id'] + '/full/' + options.sizes[i].width + ',/0/default.' + options.usedFormat, + url: options['@id'] + '/full/' + options.sizes[i].width + ',/0/default.' + options.tileFormat, width: options.sizes[i].width, height: options.sizes[i].height }); From db86ae28c8d92c471035f353bfc6cbd6cd8eb968 Mon Sep 17 00:00:00 2001 From: Elie Roux Date: Tue, 19 Mar 2019 18:22:09 +0100 Subject: [PATCH 107/109] address PR comments --- src/iiiftilesource.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/iiiftilesource.js b/src/iiiftilesource.js index f7054643..8c6c11a6 100644 --- a/src/iiiftilesource.js +++ b/src/iiiftilesource.js @@ -42,6 +42,8 @@ * @memberof OpenSeadragon * @extends OpenSeadragon.TileSource * @see http://iiif.io/api/image/ + * @param {String} [options.tileFormat] + * The extension that will be used when requiring tiles (defaults to "jpg"). */ $.IIIFTileSource = function( options ){ @@ -55,7 +57,7 @@ $.IIIFTileSource = function( options ){ options.tileSizePerScaleFactor = {}; - this.tileFormat = "jpg"; + this.tileFormat = this.tileFormat || 'jpg'; // N.B. 2.0 renamed scale_factors to scaleFactors if ( this.tile_width && this.tile_height ) { From 427ac45a8af56652a41ccdc457e488b0a0d45c02 Mon Sep 17 00:00:00 2001 From: Elie Roux Date: Tue, 19 Mar 2019 18:23:27 +0100 Subject: [PATCH 108/109] better description --- src/iiiftilesource.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/iiiftilesource.js b/src/iiiftilesource.js index 8c6c11a6..9840a853 100644 --- a/src/iiiftilesource.js +++ b/src/iiiftilesource.js @@ -42,8 +42,8 @@ * @memberof OpenSeadragon * @extends OpenSeadragon.TileSource * @see http://iiif.io/api/image/ - * @param {String} [options.tileFormat] - * The extension that will be used when requiring tiles (defaults to "jpg"). + * @param {String} [options.tileFormat='jpg'] + * The extension that will be used when requiring tiles. */ $.IIIFTileSource = function( options ){ From f4c31690dafc34b9c191e3169dd67fa08bd20f41 Mon Sep 17 00:00:00 2001 From: Ian Gilman Date: Tue, 19 Mar 2019 10:49:52 -0700 Subject: [PATCH 109/109] Changelog for #1625 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 28ffe29d..4c1f5de9 100644 --- a/changelog.txt +++ b/changelog.txt @@ -9,6 +9,7 @@ OPENSEADRAGON CHANGELOG * Fixed issue with flipping and opacity with multi-image (#1549) * Removed vestigial button group label element that was causing issues for accessibility tools (#1560) * Fixed a bug causing Viewer.areControlsEnabled to throw an exception (#1562) +* Added tileFormat option to IIIFTileSource so you can specify the tile format (#1625) 2.4.0:

+BiO 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 OqdRNrcWnCSh5rW6CNV?+ literal 0 HcmV?d00001 diff --git a/test/data/iiif_2_0_tiled_sf1/768,0,7,256/7,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/768,0,7,256/7,/0/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7f08427a86cc7ca04bee5c7d337e410bbc119060 GIT binary patch literal 717 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTivd z!VGdXP<1U(o`FS>RY=j$kxe)-kzJ`!#HexNLJno8jR!@8E`CrkPAY2R|V^&07y2 zJ$~}^+4C1KUw!=a`ODXD-+%o41@ado12e>1Koa6HG=B*K{l&z>!py=B@)sjhIS?}o zval)|vI#i`vL_Y_D;YI%h&WALxbYyTvT@J{(WIh_Tw*FF4^=;cyax6eaUN?T%V%(p zA^dfVfrpt97ViO5;We^G8 z=*q;UX&&fsWKov}V_BERU00T#yRK@sD;98?UG&`7RmGEcOY=&AIFFQOd7wkfqAtz; NfJIFj3;6%v1OR8_``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTivd z!VGdXP<1U(o`FS>RY=j$kxe)-kzJ`!#HexNLJno8jR!@8E`CrkPAY2R|V^&07y2 zJ$~}^+4C1KUw!=a`ODXD-+%o41@ado12e>1Koa6HG=B*K{l&z>!py=B@)sjhIS?}o zval)|vI#i`vL_Y_D;YI%h&WALxbYyTvT@J{(WIh_Tw*FF4^=;cyax6eaUN?T%V%(p zA^dfVfrpt97UD^dQiG(FE=;O;?d4B0(2Dbj(XdrUV!)>eAS# z=xScLs6p5yIAZ}*m&Wo0ag(4xA0TT1>up!-T#+`bE~kv8iM)%tH19CX(%cf5AbzdO K`l7@6|2F|VvEyg} literal 0 HcmV?d00001 diff --git a/test/data/iiif_2_0_tiled_sf1/768,512,7,256/7,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/768,512,7,256/7,/0/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4a92be8cf884fdd58cd44b0d2f0421ce285261ef GIT binary patch literal 717 zcmex=``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTivd z!VGdXP<1U(o`FS>RY=j$kxe)-kzJ`!#HexNLJno8jR!@8E`CrkPAY2R|V^&07y2 zJ$~}^+4C1KUw!=a`ODXD-+%o41@ado12e>1Koa6HG=B*K{l&z>!py=B@)sjhIS?}o zval)|vI#i`vL_Y_D;YI%h&WALxbYyTvT@J{(WIh_Tw*FF4^=;cyax6eaUN?T%V%(p zA^dfVfrpt97WV6e z1m!JiDR``2_j6xdp@o1cgOJMMZh|#U;coyG6VInuyV4pa*FVB^NNrR z{vTivd z!VGdXP<1U(o`FS>RY=j$kxe)-kzJ`!#HexNLJno8jR!@8E`CrkPAY2R|V^&07y2 zJ$~}^+4C1KUw!=a`ODXD-+%o41@ado12e>1Koa6HG=B*K{l&z>!py=B@)sjhIS?}o zval)|vI#i`vL_Y_D;YI%h&WALxbYyTvT@J{(WIh_Tw*FF4^=;cyax6eaUN?T%V%(p zA^dfVfrpt97C#qeyXaxLs6m7$&{c%Tr%Q870Hdo25NlX0Y7pwu zSio!&l)I=wSgotPip^bY)O`rO9>Cfp1Zl2J`=$ E07ahO6aWAK literal 0 HcmV?d00001 diff --git a/test/data/iiif_2_0_tiled_sf1/info.json b/test/data/iiif_2_0_tiled_sf1/info.json new file mode 100644 index 00000000..1507348d --- /dev/null +++ b/test/data/iiif_2_0_tiled_sf1/info.json @@ -0,0 +1,31 @@ +{ + "@context": "http://iiif.io/api/image/2/context.json", + "@id": "http://localhost:8000/test/data/iiif_2_0_tiled_sf1", + "protocol": "http://iiif.io/api/image", + "height": 1024, + "width": 775, + "tiles": [ + { + "width": 256, + "scaleFactors": [ + 1 + ] + } + ], + "profile": [ + "http://iiif.io/api/image/2/level1.json", + { + "qualities": [ + "native", + "bitonal", + "grey", + "color" + ], + "formats": [ + "jpg", + "png", + "gif" + ] + } + ] +} diff --git a/test/data/iiif_2_0_tiled_sf1/temp/0,0,512,512/256,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/temp/0,0,512,512/256,/0/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..edb856cc66fbee062afee354d799da936cdf1307 GIT binary patch literal 32573 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 literal 0 HcmV?d00001 diff --git a/test/data/iiif_2_0_tiled_sf1/temp/0,0,775,1024/194,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/temp/0,0,775,1024/194,/0/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..be76af0632dfc5efb12185404bc69ea1b67dfae2 GIT binary patch literal 22995 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 literal 0 HcmV?d00001 diff --git a/test/data/iiif_2_0_tiled_sf1/temp/0,512,512,512/256,/0/default.jpg b/test/data/iiif_2_0_tiled_sf1/temp/0,512,512,512/256,/0/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..250e76d1aaef75020885451f1180cde0b983f351 GIT binary patch literal 27710 zcmbT6WmFu|^QH%PcMA?7xI-YgySoM*Y=T38;O;gAPar^Wox$DRb#M*NKmtP`Wb^y4 zowJ{I_wC!C`gWgs`ktc4@8 ziH3%XiiVAWfsTobjf;zeje~=SPfUo1PlS(yLr6|YL_$hNMutm3K}k+ZNlZ#c`k#j& zq5QiC6%7jw4T}^H2aojsS%3QgM411v2?dD>fJ}shLWJ~p2tfbOPBf(d65xLb3HhIm z=opw-*f{?tKnMZINGK@Cs3`xj`rqu3f7b!1L}cd>0dFK=N}OGF)}JTCN?fUAtN&@8=UhwH?O4hTUmL<_sXiK<`xLFwXMBlU~p)7WOQtN zVqtMc4~iA6!KLxR6m%QBX1d z!-a(G|L;U0LPcZbM<zI1AvQy^l$M{hyc=nbI=Qc26*$%7(v$IhLkmrDhsH8pmD@IvcQh5$z6&z;B#LvEFgE=T4IVietoIo z%@-T5s{oYDVl}&99=Q2wb02HmV=K|beD`y5wqfS65yNf-0w)aLO9f^vQk=W#(}Rxi z>Tqnz@mpAfnGD^1u@qKo_k44O!A$!(*W~sCCaV2v-RW1&Ns?KV`U5NGo9h0&lh|OB zT9J}U+k0DPKS@*I!G3`HW=F@FJskasA?^X@H|PFj#W^{|Fe zU>~E+>334>h~27z;4Mjk*Erc}7c9hE9u*Wrm+C`;{qEk?rodPOPuiQ1xNw4EADyHK zn2dsE!4g2WiXhh-Sz5V0V&hI=ROTCg2O_fca2+Ml*W8~a11okA2m9G& zi9cF%OcuGXzRlNbkkA;i>%{0E{i)-t88KJpCJn0_QyoOD678XYzw`#We?=56nyg;f z7R_x=3fC4u1ynLjD+;O71-uhi-h7NGTg}W_{1Ss;*G0r0fCzqkgfzRf8d11=+;;ij zm%d?N)Yy&AWInP~L1pIb1>(%H74Fd|uKczv&>yYmN;7A)C2s`XO+fuHjimzm1Qfs9 zK~D|i&?3v?OA)o-p~;>ffBz)zT~E4&nVk*ziGf23DBgLkFz0Ob@)S7%Jty6~xGQQssL;h4n8#v%}RmgCH%|gsRlJ z?z{G@jHtHPQnQSXpZT#zmNyH)+S!qNS})ZXW_cDD%9 zH(O$UGG*uKWD)7h_;kY(+$~Gy9P2L_Qa|hKrApPr62b2>{?la6ZUZ z*p3%(u7JFIS7OcdLZ!#E&Ec9MMuP}<(>%BBL}Oh zKqg&r@XY2tuCBJXX_DpUOMrB~cBJV_w^<5PzqRDhj>Q8uv0UF~{RL1M`hIp(j%W5- z4Ryl9%a!G5T`FQoB7M0?F9-PB2)?bv6o~`#SKVF`oP3mc+rzvp^%`M3Xlw@k${TN^uC5U1kfHgms~v!C@?FgKa|pgdZvP$r z$G-pq^JiHIe5Ongjwu^I6*TE$gH+{l^?OX$U`*>W*b1 zP6fleaiV@|_gYH2O#R?e!f^G%XZ%_1GI)N%?0y94EmobaLAwpJ4$YVVCqWi3_z~M~ z;;DDgJeAN2!Kqq21T9%L0B=x)Oa-s7v9OlOQ)7PHG!b&a)DvU>qSxI)MmLij&(3l( zmoNk`THM2Pw@+q?GSxD*@7I5VG7u^eFh9f1n~>kquD(0C8SFRP#;y)Yu`;=b&7S6s zd-!mQWJ;01t*SkDJHKltUk-N>kcf=_IcpuKKEWGh%`Ywo)Vky7ESan4>nt%xe=&57 zk;pfRY-B&09Zz4gDSGKL@C*p-(%k1p*A}515@{l$jSlmF(`f*}|0sUiC%;pn3a7gi z+Cq1I?U2DSnoj))EV#}r=O5d^8aN62=vi2$rdN2xEnQbpm|P(z7Oj*->|Xu+#GGAh zp7A<&`%XJ%m)s6FPs3*9laWSKy<8O3v!D*(Q8H8Q89;36)YR;nqqnm17vL0qq@vF{ z_;MPfgKQ$m#`m!xp_-&06+TF<=VgEn!GwlkXObKe`pXxve7>m zUZJva=EHj!bK6i!>tO8GXOreXVp1m`97fJ83_~b!mVSkGcOSlg?Mch8N+M