From 517e1feae8fcfbef7830177a6ce256f32bc09d8b Mon Sep 17 00:00:00 2001 From: Antoine Vandecreme <avandecreme@capitainetrain.com> Date: Sun, 24 Dec 2017 10:57:29 +0100 Subject: [PATCH 01/64] 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 027dac0d8e46e937e0309d6aa8da6d6e7314aeb3 Mon Sep 17 00:00:00 2001 From: Francesco Cretti <francesco.cretti@gmail.com> Date: Wed, 7 Mar 2018 11:25:33 +0100 Subject: [PATCH 02/64] 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 12be95c8c3526f99717dba728a347826da613fcd Mon Sep 17 00:00:00 2001 From: Francesco Cretti <francesco.cretti@gmail.com> Date: Sun, 11 Mar 2018 13:05:19 +0100 Subject: [PATCH 03/64] 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 <francesco.cretti@gmail.com> Date: Sun, 11 Mar 2018 13:24:29 +0100 Subject: [PATCH 04/64] 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 7ba516b30aa2db16e070cec76967110488d784b7 Mon Sep 17 00:00:00 2001 From: Ian Gilman <ian@iangilman.com> Date: Tue, 27 Mar 2018 09:48:18 -0700 Subject: [PATCH 05/64] 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 <ian@iangilman.com> Date: Mon, 2 Apr 2018 11:09:23 -0700 Subject: [PATCH 06/64] 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 <ncampos@criteriamarathon.com> Date: Wed, 4 Apr 2018 11:31:18 +0100 Subject: [PATCH 07/64] 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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 FV1gXFMLYli literal 0 HcmV?d00001 diff --git a/images/flip_hover.png b/images/flip_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..526dc991090671cadb69117b4ab4081e6c81c046 GIT binary patch literal 2340 zcmV+<3ETFGP)<h;3K|Lk000e1NJLTq001KZ001Hg1^@s6)rDaE00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru;sYEJ00hv!kAMIG2(d{- zK~z}7t(f_5T-6oFzvtfjHqYYmc#oZU3$_zNAz(H&R5Wb`KQvGgBuc4TsS;HcArZB| zR4V-g`b&{2p#p081*sKk0FgooAtecmDTxWiNlb7^9LEk`X7$YTo44NEA2I`jGlbCa zq@%ZJ=AMtf@0@$id4#J!sKGP!O)d0Qzo#|V_4ld{Mm4zqMquh4GXT7Lu3b|di~=A5 zL~G9KtDxv>LWrtq0JNPucP4l2*wO3zK8vD=_V3@n{Njr*7OMaufS_t&)h-J~R{&BE zVeH<$yKC33UH5c!blheNxdF}+NhzU}f;3vyiW4o&%*-5l{PD+Mec^={mH~Km)(Gk= zVQL_}3ZXyx=%byFJo3ncJ#Df3=)xgJ=Rab|mXr*1r6Q(?Ma1-gWJ`>Ko@<nozCAoX zeSY6lPd)YW^Uptj0e}O*1>jeKqP0MD1t7-w`1sw|UAyVGY~~d~lSjClPXsQd{lJVz zQqv_Emxw}QfzO4v$}O4KjdV%aLz`qF{heUn{sT|%-o5((fYmCL*9eF=fT;zh2Ecgl zz4vww53Kt&JNkqb9Gydcwb!+iJ#J1j<mtkSn9eTi=W=<i5C)9LlM!!j4Js@VO`k3c znmMbb_!Mv5{M{QiZMi<&w{PEUU4XC6wo72@RWbJL*>lTvn@4_cy#2?f%4Dbt+WN|h zX+>|GJdt?m?YG<BIQD+}*r`*=4^N+N{@~+}larr(63-S3T09ny{x&|Io-c-M*wbYv zKW_4kcZ^!G#Qem>#PXUflQrj}0SvFHGB`MRulV5UCg*s7g4G=?IF9y@e;;T+dU`sU ziYLN>?ryg&*&H%Ps%YC{c4^6Y`JH!SA5KpvkA8eAxovdwN(Q4&d@92>&_A2DY}xXC z08@2=T%Z1`kum~+v3Kv@AN7gsPxN=+wQ^pk=LkbS`_|#sH%}aIxovpV{`vOr<?q^h z<LZrrgYNZx{obwD3|H2*w1gKj8U3x3CsGUff_Z)4hSjZoeGYkCwXDorQCDkgtb5p* zn3$NYOZm_CA+ZLewu$NO?d?Cbjy;(uEyY!k)R^>qt)nSM58Qft@!lK9Y|}JBexM-? zsP^_}=jWRivRTvheNF^r5@XDdL_iu!i?L`hF%j?YzvT`9hw1{^uPM{$HHpU_du-US z=Z4vAPIu*ckNK{s$dK+F==Zu>S|mfLGv84JkYoTU0sz%!>g?wJKL4iP9$#>d8+z9H zh71LTp>iV5Iu~rcqo>q6Ha50#Vq(Is0*R_hXrzo78XCIUSoqL#7CDbZ$VvD#ePP}> zv9zdf8ys*)J30bV0MX}VNf9uXY7WMdEg_MFluDgkTGaFTEOqF5B>jjgi=eLbIjg_F zf6K(g#3=xJm4N{u(IBlk=X`+8P3hiTRz+!xX&U3UUDE$GH5H$npR;z|G-hw^XbT|~ zz!(5^u`nr8q!hqGhtHnVUp;fiymxfe?d)v#B70SO#S)8kJG!Rzt^;6HL27lbVK%WK z2vS-htI2$UW5t&$D?r&ilwZN|Ps`e~?wd_N>+N<%;<51JzX(tYAdphPc)qAVd2TMg z?D_02gL}-$b5;z9qE#L%3oQ)0;%h+Y%V4NnE-U7_%<@(Rr;r5a&|O<}bEdxC5)bCx zir6!IKK^i5+S_OuQT+mkS8VZ@PqWquyCOO?ArrnM5)M;QC4#9uzUt|bZQE#2@h^b^ z02GVGvP-0rk)x?7V4RrZZiR~|r0s?&4bzOC&fEGk^Gnvl>9{{)Y7zk6uwC&)wxl0* zd=3CyDbier>$ZaQBn%$#vgB^LT&^_oD;jiYDwD~~F6&9Z&#dss4vB}Pg!H*o5v7#R zMl`O3is&OZU?rakO<aVTcU|$38?eu1mJrh8nlB+0$T9;q<EH$4K3~5Je^wS)0~k3q zHTA(Hx^1h=<(lvWXBABdpT~q^1w9bY1r^=ll0DR|Ve2|@vn|xjwou!#p3wsxLK)R0 zBLZof&pE4Tn(&0x<?_P?%U)buJX1~Q`o`-LWh8*`;K74u2L^sIHQ&>`zGZ2pDIh@e zBy1_^ugei90QaOwJ&^RNISjbE7{*u+;5Tgw2no+*6+)!|9x|m93=pPUG-rI$pUda- z=j&RDT7T29P;vk~olXlU)w$))_}Nz9Wi$gtFXa@n5%AMq!h;(?sRR)$e8G}&(57af z6akq4xU-XJFh-Q<lk~gA&hy94mkv6PGYy~!pj_>70sxYKNsB3FW@bJ`+fdK&pfk`X zSFOoa;Ebzq{{Z2k5g^?{Knx8n*-Y4&0!&UAO)(6%D;#XL@_#rY{*%dM_5;XQVQLLm z!$SFm8YP6N{MYZ_y6xIbBIyPCNSg42YY45a>@&wy2ccpBngC@IT9SmJIH5l!aiNDh zKYk@OQz({R3&ZdnfI?N3N_}nOmm5WLxm<y3hJ7g4HL!iGWNm8=3{&HX;sg~35F@A< z0ZjziL{KI{ngq!SToO836;3pZ(tXb*&Mp^LU$0auM*!pitN^g<IzIJf%G5W>l*{Gj z{fK4uo^DY_FQsl8s>F;COsR`bl}1p4pcny)z$1dCDX4ZC{pk~Z@mGJ>FXUD#dp*w^ zuYwe-AYV}Bay@XZ|1~cPkAx7SJ)KV9-`32w|8je|?e2|U^GI{pBz=OC0C9i`h4(Yu zetnvi{`?xxE##y3!!SIglv=KflX6|GgjWJX^?fh^3qTw|f^*(sS=M&O*te8Yog+P= zk!n&rUsln{^YEf5T2M;OL{W4Mz;e}jsd}y{(y$@F(osdL0$Ek1YGyLVx&XwKQod3u zS9MaGlbkxM{6C{gBZX>xv0hcGW_tBGuN!Zp>b~Kx8Q}Z|yRN$0@wNu0)lHgfXYFv! zcpF{qczZdhwZlJKQ&MDuapbB8|F82&<dW+Dbw7!GlLuYx0{;UOR8Jg*{vvk(0000< KMNUMnLSTaLa&622 literal 0 HcmV?d00001 diff --git a/images/flip_pressed.png b/images/flip_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..28b074c28a40bbc1915547d3d62fb176db322ed3 GIT binary patch literal 2307 zcmV+e3H<hnP)<h;3K|Lk000e1NJLTq001KZ001Hg1^@s6)rDaE00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru;sYEJ041E)pWXlf2#`rc zK~z}7t(aSET*Vp3|KH5H?A3es+OgMooy5e!xk5xD3MqmjlprKpN}+`ciKnXKB|KE+ zq4b@XKJY**m4~*1R-#o=K}tiMAdv<OXs}6~-~{5v@nvoAdheIB=gdqWd^TM+8wd?6 zeL5GdW`6q5%=i7jL%8)Hb$O@0t%1Jo|I~5c{;b+yRF~&(1*Uys27tTQ);+bsC;$?G z=(wt{gQ9N;p}C<0&>wv8LI2^yhZD_alR1t<$B!Q`oIH85;sQ7TY&RS?z7mRV0;C<n zeCC;FVlTY#!riG<YMZcXgNt8$7Ew|H01~N@f?)dcg$oxhz5MdaXHJ|rkq2P4MK`Fg zg=v9s7s7b<*=J)%jvV=J)MtF}?5THmuU)>BEUjk!qA3(f0+9qaHS))!)p&YyCcWpL z>Deobr(SvGm5(MSCe{Gd05kwJT_Dj3L^lCq9zA+=-@ZHdKKbvr|Ga-;YHGN&nB&bt zRgmo{U6IrXiWEQ$#B|Q|ke_)5qB1l#Ha~peq0@i;`&-9edg-N4090Kls~ZsS0@K=< zIskKGV&dM>^w5t_{pr<1S3Wq?Uz%H0dc_ic1;K2kgyWEMgz_?``gD(oflH%mi`DrR zR>>^IYNe(0uJ7E>(_2QJlP6DR+ctRTX}b=lT@~}S*IpaDbJxzNPrv@VM;AXlA8=MH zqDPXmRxZ=@+L|_<ThnKY1%9bi&@L5=`dqoJ*^Wd)H{^Q@3r00pQGM0A>4^O1k-P6} z2!-{tXU`TpPMK^?&bz3>0T=+hFTVKVBeTcf{K?XXGf^tk9iNioqm^a-{gq`yLeXtK zA-N?SmIHx+^y<1=ZPfToF|S>%RkhQ(RXuK+a-5k>PqktQy}C&s7+pMe?AX<|C2C(L z)lC@<fceH7Z`{KR%Rim}*W|cZE;<R$#p%qFKDoAH?C<M$p4hg{J~(un7*8bSSUjQj zB>Uv1fL|?FtL)UuvawvR@m-Oq*cl88v(kWvTS4BR;NIR;c6xd`+jiuy<ssGqa!r|` zp`m>%=cjgC%XtxFBqN%pl0Kh$eCw$F^!T_v9E~bX*9e@h#X`NtGmSd03qb@ZUE^Sk zF(#q-7g^C;SloI0?YEBt@B{F=E6_@y#5-U(0Q33hpC2BM_@2s6of+3wOCqV8O4B(T zjD&FK(16l)&WPc<C^j2R=L|b~6Y@Y`pWGXb%DAB`5|XHHsh%F@Ek|O-FEY8yYinyI z_n5a7l3EvKwC&rskCs=iq}6&wg+T}!j4m|F?7~uk?{|`7Yd9>SKwt_`q})P4yQ4j7 zceH2Yq$tqE{5q>BNj(lpVJXm3S@jQB(&=<MH8V3a?<%9Ul+n6vV8bwy#sAC)YZpIP zG0h7tU{I-2(%zZ7%%)c}{JF6awI$S}Hj)cTQXuA@QUL-KXfl(<@r4XKluBWz&u7`I zRn@#wQNA7he$zC=08AI8wM@{uY+&X%PJmlglNEEYOC>57FDsjKQq2a=)@t;6vw|Na z{TT7-${kFpwn{lwve@qzO32!h?(;TOt=WXgTO?y)@~MVL2;u1fp&P+arBYEbE-C0& z<l_=Xz#`=k#XSmpy<9Cfn)pY~rYAfGhJ36olM_D9+w{jw6X⁡s!xC8!)|+98%yx z#Yl5dtya;c;)8W7O!<7i&i$qpOz6y)1UGvX=ROHdS9D;I;mJ{stQ7QS)?$m?CL=7! z2n#yXwCE4Z7EKk!#^4O#J^>>xxhDzk>(iMCaJy70*|<UK?{sJ?lgX^vx?TwOd*JT{ z^Cbl7J^{%ULLmot3<_w5!sk_inqk8XZN!SQ@p)PPPiCf|`yF`W4*8Q{!IVi^TNd*9 ze5EZ5Un>jUVC1=T=PqYze9n^!lM&>khrzgC!RrG`CgJT>piYGE@6ptbF&(}E4ZZ;l z5AD_Q=p7seZ@~b%UqKInc|)86o5S?pY<@12$+VJQyYadXMgnjqCnqx(mm8njo6-eu zC_qLK<OwRO3x&U&bLjNELl57f@Yo)QqM;^n(;{wKl<KwVX9p#IxCh|0F_Y$3WCTGy z(Eyc`1BJIHm*z^PQnt-XwERuiLdgN}U@&NSL!spE+ng<?RlrqC;GG$T^&0S_{e;K& z1JMY9d+?<QhX~sSfU*VTs=&c9hS9Kr$d(cO_G5AC#7Fbf^?H2)KmkD6^*A;F$!}mW zwfXt^f;1A|U3aCn4YESdXPFA-@)D2TO?c`c5RY9Cat$a<*s=*QHNy6UhOL|WFc%(O z`1x->eK(iO%>Y<;VOoYubSso!s!>Gb%&r)odk?14;YQxOZJ>z<_9-Od8z9UCxamR| z8_&!Dm<Ggx3|qrGM&fZ;BRlekemVX2YBoPBgjfQQcU7so%O!49wXd}vg+ie!6|*NV zDd+H^(SdzQ=?_Q?ib;?TFis%8QQ?RIL<A@TEDpWyMQ?l%*~HlD!@v0Cohys^S<A96 z0>}X<0;se(K6N8y+D$U$^Z8u0?v(%be(~z)uFc`C!?CER3XZCTtV<{hfJH!^KvfNT zJpeE71@9lVk1mAHKXT;5iKUg|Otabi%mpd9AYW4Dt2}Va|9SxU00cSbu}CCxAUzn| z_3P(0@7bH8RIgqMp;3pD0>nAs@nNCn%}veQOTT(`W_spwan5m^mKy7Ao3^!AoST86 zb|36|j{txmV=U(NddC@K0|0^#+!c-WMszc?-mw1p!CFoTQIS&SrIc4)fHHuRdu=Jw z)sWw8tD?I=URSABc!($hz@wBB?qp6|pHyp$`v23abW@1CK!&SSD-8ENZ!6lu%^S^* z2Cms9>#AFAZ(Cq`Tc_FCYdan7t+>_p_N$;en}60(Qe>BQ<dz%%Z}Lgxy6XQ;KZ$&s dKf2Wc{tIa!7=xWmVPXIP002ovPDHLkV1kajXXpR` literal 0 HcmV?d00001 diff --git a/images/flip_rest.png b/images/flip_rest.png new file mode 100644 index 0000000000000000000000000000000000000000..6f15e5dad9d84211ca11659757a55e16ec05fdc1 GIT binary patch literal 2300 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 WMCt8+d#a@X0000<MNUMnLSTaJHbg!E literal 0 HcmV?d00001 diff --git a/src/drawer.js b/src/drawer.js index c904abbb..9aa7ef44 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -500,6 +500,10 @@ $.Drawer.prototype = { if ( this.viewport.degrees !== 0 ) { this._offsetForRotation({degrees: this.viewport.degrees}); + } else{ + if(this.viewer.flipped) { + this._flip({}); + } } if (tiledImage.getRotation(true) % 360 !== 0) { this._offsetForRotation({ @@ -620,10 +624,29 @@ $.Drawer.prototype = { context.save(); context.translate(point.x, point.y); - context.rotate(Math.PI / 180 * options.degrees); + if(this.viewer.flipped){ + context.rotate(Math.PI / 180 * -options.degrees); + context.scale(-1, 1); + } + else{ + context.rotate(Math.PI / 180 * options.degrees); + } context.translate(-point.x, -point.y); }, + // private + _flip: function(options) { + var point = options.point ? + options.point.times($.pixelDensityRatio) : + this.getCanvasCenter(); + var context = this._getContext(options.useSketch); + context.save(); + + context.translate(point.x, 0); + context.scale(-1, 1); + context.translate(-point.x, 0); + }, + // private _restoreRotationChanges: function(useSketch) { var context = this._getContext(useSketch); diff --git a/src/navigator.js b/src/navigator.js index 4c9848cf..7ee60297 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -208,12 +208,14 @@ $.Navigator = function( options ){ var degrees = options.viewer.viewport ? options.viewer.viewport.getRotation() : options.viewer.degrees || 0; + rotate(degrees); options.viewer.addHandler("rotate", function (args) { rotate(args.degrees); }); } + // Remove the base class' (Viewer's) innerTracker and replace it with our own this.innerTracker.destroy(); this.innerTracker = new $.MouseTracker({ @@ -271,6 +273,50 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* } } }, + /** + /* Flip navigator element + */ + toogleFlip: function() { + this.flipped = !this.flipped; + if (this.viewer.flipped){ + this.displayRegion.style.webkitTransform = "scale(-1,1)"; + this.displayRegion.style.mozTransform = "scale(-1,1)"; + this.displayRegion.style.msTransform = "scale(-1,1)"; + this.displayRegion.style.oTransform = "scale(-1,1)"; + this.displayRegion.style.transform = "scale(-1,1)"; + + this.canvas.style.webkitTransform = "scale(-1,1)"; + this.canvas.style.mozTransform = "scale(-1,1)"; + this.canvas.style.msTransform = "scale(-1,1)"; + this.canvas.style.oTransform = "scale(-1,1)"; + this.canvas.style.transform = "scale(-1,1)"; + + this.element.style.webkitTransform = "scale(-1,1)"; + this.element.style.mozTransform = "scale(-1,1)"; + this.element.style.msTransform = "scale(-1,1)"; + this.element.style.oTransform = "scale(-1,1)"; + this.element.style.transform = "scale(-1,1)"; + } else{ + this.displayRegion.style.webkitTransform = "scale(1,1)"; + this.displayRegion.style.mozTransform = "scale(1,1)"; + this.displayRegion.style.msTransform = "scale(1,1)"; + this.displayRegion.style.oTransform = "scale(1,1)"; + this.displayRegion.style.transform = "scale(1,1)"; + + this.canvas.style.webkitTransform = "scale(1,1)"; + this.canvas.style.mozTransform = "scale(1,1)"; + this.canvas.style.msTransform = "scale(1,1)"; + this.canvas.style.oTransform = "scale(1,1)"; + this.canvas.style.transform = "scale(1,1)"; + + this.element.style.webkitTransform = "scale(1,1)"; + this.element.style.mozTransform = "scale(1,1)"; + this.element.style.msTransform = "scale(1,1)"; + this.element.style.oTransform = "scale(1,1)"; + this.element.style.transform = "scale(1,1)"; + } + this.viewport.viewer.forceRedraw(); + }, /** * Used to update the navigator minimap's viewport rectangle when a change in the viewer's viewport occurs. @@ -406,6 +452,9 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* */ function onCanvasClick( event ) { if ( event.quick && this.viewer.viewport ) { + if(this.viewer.flipped){ + event.position.x = this.viewport.getContainerSize().x - event.position.x; + } this.viewer.viewport.panTo(this.viewport.pointFromPixel(event.position)); this.viewer.viewport.applyConstraints(); } @@ -424,6 +473,11 @@ function onCanvasDrag( event ) { if( !this.panVertical ){ event.delta.y = 0; } + + if(this.viewer.flipped){ + event.delta.x = -event.delta.x; + } + this.viewer.viewport.panBy( this.viewport.deltaPointsFromPixels( event.delta @@ -488,11 +542,11 @@ function onCanvasScroll( event ) { * @param {Number} degrees */ function _setTransformRotate (element, degrees) { - element.style.webkitTransform = "rotate(" + degrees + "deg)"; - element.style.mozTransform = "rotate(" + degrees + "deg)"; - element.style.msTransform = "rotate(" + degrees + "deg)"; - element.style.oTransform = "rotate(" + degrees + "deg)"; - element.style.transform = "rotate(" + degrees + "deg)"; + element.style.webkitTransform = "rotate(" + degrees + "deg)"; + element.style.mozTransform = "rotate(" + degrees + "deg)"; + element.style.msTransform = "rotate(" + degrees + "deg)"; + element.style.oTransform = "rotate(" + degrees + "deg)"; + element.style.transform = "rotate(" + degrees + "deg)"; } }( OpenSeadragon )); diff --git a/src/openseadragon.js b/src/openseadragon.js index 4cb36dd3..8963e77f 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -478,6 +478,10 @@ * Note: {@link OpenSeadragon.Options.showNavigationControl} is overriding * this setting when set to false. * + * @property {Boolean} [showFlipControl=false] + * If true then the flip controls will be displayed as part of the + * standard controls. + * * @property {Boolean} [showSequenceControl=true] * If sequenceMode is true, then provide buttons for navigating forward and * backward through the images. @@ -688,6 +692,12 @@ * @property {String} rotateright.HOVER * @property {String} rotateright.DOWN * + * @property {Object} flip - Images for the flip button. + * @property {String} flip.REST + * @property {String} flip.GROUP + * @property {String} flip.HOVER + * @property {String} flip.DOWN + * * @property {Object} previous - Images for the previous button. * @property {String} previous.REST * @property {String} previous.GROUP @@ -1120,6 +1130,7 @@ function OpenSeadragon( options ){ showHomeControl: true, //HOME showFullPageControl: true, //FULL showRotationControl: false, //ROTATION + showFlipControl: false, //FLIP controlsFadeDelay: 2000, //ZOOM/HOME/FULL/SEQUENCE controlsFadeLength: 1500, //ZOOM/HOME/FULL/SEQUENCE mouseNavEnabled: true, //GENERAL MOUSE INTERACTIVITY @@ -1141,6 +1152,9 @@ function OpenSeadragon( options ){ // INITIAL ROTATION degrees: 0, + // INITIAL FLIP STATE + flipped: false, + // APPEARANCE opacity: 1, preload: false, @@ -1209,6 +1223,12 @@ function OpenSeadragon( options ){ HOVER: 'rotateright_hover.png', DOWN: 'rotateright_pressed.png' }, + flip: { // Flip icon by Yaroslav Samoylov from the Noun Project + REST: 'flip_rest.png', + GROUP: 'flip_grouphover.png', + HOVER: 'flip_hover.png', + DOWN: 'flip_pressed.png' + }, previous: { REST: 'previous_rest.png', GROUP: 'previous_grouphover.png', diff --git a/src/strings.js b/src/strings.js index cd3c7907..88a6a7e5 100644 --- a/src/strings.js +++ b/src/strings.js @@ -57,7 +57,8 @@ var I18N = { NextPage: "Next page", PreviousPage: "Previous page", RotateLeft: "Rotate left", - RotateRight: "Rotate right" + RotateRight: "Rotate right", + Flip: "Flip Horizontally" } }; diff --git a/src/tiledimage.js b/src/tiledimage.js index 49ebcb22..1523e5a7 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -844,7 +844,7 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag return; } if (immediately) { - this._degreesSpring.resetTo(degrees); + this._degreesSpring.resetTo(degrees); } else { this._degreesSpring.springTo(degrees); } @@ -1886,6 +1886,10 @@ function drawTiles( tiledImage, lastDrawn ) { degrees: tiledImage.viewport.degrees, useSketch: useSketch }); + } else { + if(tiledImage._drawer.viewer.flipped) { + tiledImage._drawer._flip({}); + } } if (tiledImage.getRotation(true) % 360 !== 0) { tiledImage._drawer._offsetForRotation({ @@ -1969,6 +1973,10 @@ function drawTiles( tiledImage, lastDrawn ) { } if (tiledImage.viewport.degrees !== 0) { tiledImage._drawer._restoreRotationChanges(useSketch); + } else{ + if(tiledImage._drawer.viewer.flipped) { + tiledImage._drawer._flip({}); + } } } diff --git a/src/viewer.js b/src/viewer.js index 341e3d49..792ebb73 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -1252,6 +1252,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, * @param {Boolean} [options.preload=false] Default switch for loading hidden images (true loads, false blocks) * @param {Number} [options.degrees=0] Initial rotation of the tiled image around * its top left corner in degrees. + * @param {Boolean} [options.flipped=false] Initial flip/mirror state * @param {String} [options.compositeOperation] How the image is composited onto other images. * @param {String} [options.crossOriginPolicy] The crossOriginPolicy for this specific image, * overriding viewer.crossOriginPolicy. @@ -1414,6 +1415,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, @@ -1674,6 +1676,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, onFullScreenHandler = $.delegate( this, onFullScreen ), onRotateLeftHandler = $.delegate( this, onRotateLeft ), onRotateRightHandler = $.delegate( this, onRotateRight ), + onFlipHandler = $.delegate( this, onFlip), onFocusHandler = $.delegate( this, onFocus ), onBlurHandler = $.delegate( this, onBlur ), navImages = this.navImages, @@ -1685,7 +1688,8 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, if( this.zoomInButton || this.zoomOutButton || this.homeButton || this.fullPageButton || - this.rotateLeftButton || this.rotateRightButton ) { + this.rotateLeftButton || this.rotateRightButton || + this.flipButton ) { //if we are binding to custom buttons then layout and //grouping is the responsibility of the page author useGroup = false; @@ -1789,7 +1793,22 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, onFocus: onFocusHandler, onBlur: onBlurHandler })); + } + if ( this.showFlipControl ) { + buttons.push( this.flipButton = new $.Button({ + element: this.flipButton ? $.getElement( this.flipButton ) : null, + clickTimeThreshold: this.clickTimeThreshold, + clickDistThreshold: this.clickDistThreshold, + tooltip: $.getString( "Tooltips.Flip" ), + srcRest: resolveUrl( this.prefixUrl, navImages.flip.REST ), + srcGroup: resolveUrl( this.prefixUrl, navImages.flip.GROUP ), + srcHover: resolveUrl( this.prefixUrl, navImages.flip.HOVER ), + srcDown: resolveUrl( this.prefixUrl, navImages.flip.DOWN ), + onRelease: onFlipHandler, + onFocus: onFocusHandler, + onBlur: onBlurHandler + })); } if ( useGroup ) { @@ -2602,8 +2621,26 @@ function onCanvasKeyPress( event ) { this.viewport.applyConstraints(); } return false; + case 114: //r + case 82: //R + if(this.flipped){ + this.viewport.setRotation(this.viewport.degrees - 90); + } else{ + this.viewport.setRotation(this.viewport.degrees + 90); + } + this.viewport.applyConstraints(); + return false; + case 70: //F + case 102: //f + this.flipped = !this.flipped; + if(this.navigator){ + this.navigator.toogleFlip(); + } + this._forceRedraw = !this._forceRedraw; + this.forceRedraw(); + return false; default: - //console.log( 'navigator keycode %s', event.keyCode ); + // console.log( 'navigator keycode %s', event.keyCode ); return true; } } else { @@ -2620,6 +2657,9 @@ function onCanvasClick( event ) { if ( !haveKeyboardFocus ) { this.canvas.focus(); } + if(this.flipped){ + event.position.x = this.viewport.getContainerSize().x - event.position.x; + } var canvasClickEventArgs = { tracker: event.eventSource, @@ -2739,6 +2779,9 @@ function onCanvasDrag( event ) { if( !this.panVertical ){ event.delta.y = 0; } + if(this.flipped){ + event.delta.x = -event.delta.x; + } if( this.constrainDuringPan ){ var delta = this.viewport.deltaPointsFromPixels( event.delta.negate() ); @@ -3064,6 +3107,10 @@ function onCanvasScroll( event ) { if (deltaScrollTime > this.minScrollDeltaTime) { this._lastScrollTime = thisScrollTime; + if(this.flipped){ + event.position.x = this.viewport.getContainerSize().x - event.position.x; + } + if ( !event.preventDefaultAction && this.viewport ) { gestureSettings = this.gestureSettingsByDeviceType( event.pointerType ); if ( gestureSettings.scrollToZoom ) { @@ -3259,7 +3306,7 @@ function updateOnce( viewer ) { drawWorld( viewer ); viewer._drawOverlays(); if( viewer.navigator ){ - viewer.navigator.update( viewer.viewport ); + viewer.navigator.update( viewer.viewport ); } THIS[ viewer.hash ].forceRedraw = false; @@ -3429,11 +3476,20 @@ function onFullScreen() { function onRotateLeft() { if ( this.viewport ) { var currRotation = this.viewport.getRotation(); - if (currRotation === 0) { - currRotation = 270; - } - else { - currRotation -= 90; + if ( this.flipped ){ + if (currRotation === 270) { + currRotation = 0; + } + else { + currRotation += 90; + } + } else { + if (currRotation === 0) { + currRotation = 270; + } + else { + currRotation -= 90; + } } this.viewport.setRotation(currRotation); } @@ -3445,16 +3501,38 @@ function onRotateLeft() { function onRotateRight() { if ( this.viewport ) { var currRotation = this.viewport.getRotation(); - if (currRotation === 270) { - currRotation = 0; - } - else { - currRotation += 90; + if ( this.flipped ){ + if (currRotation === 0) { + currRotation = 270; + } + else { + currRotation -= 90; + } + } else { + if (currRotation === 270) { + currRotation = 0; + } + else { + currRotation += 90; + } } this.viewport.setRotation(currRotation); } } +/** + * Note: The current rotation feature is limited to 90 degree turns. + */ +function onFlip() { + this.flipped = !this.flipped; + if(this.navigator){ + this.navigator.toogleFlip(); + } + this._forceRedraw = !this._forceRedraw; + this.forceRedraw(); +} + + function onPrevious(){ var previous = this._sequenceIndex - 1; diff --git a/src/viewport.js b/src/viewport.js index 9d357910..e44f46bb 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -886,7 +886,6 @@ $.Viewport.prototype = { this.viewer.world.getHomeBounds(), this.viewer.world.getContentFactor()); this.viewer.forceRedraw(); - /** * Raised when rotation has been changed. * From 4b36e27875034e5363f9314d14c26265efa73ca1 Mon Sep 17 00:00:00 2001 From: Ian Gilman <ian@iangilman.com> Date: Wed, 4 Apr 2018 10:13:37 -0700 Subject: [PATCH 08/64] Added demo/temp folder to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 2b037d24..63a71ebf 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ instrumented/ .idea /nbproject/private/ .directory +test/demo/temp From 6e4012976b967c1ee830a00d9f1d1dd2f3369c12 Mon Sep 17 00:00:00 2001 From: Nelson Campos <ncampos@criteriamarathon.com> Date: Fri, 6 Apr 2018 11:52:10 +0100 Subject: [PATCH 09/64] Adds two helpers for style formating and updates onCanvasKeyPress method. There were created a new helper method "setDisplayTransform" to change navigator styling. Also, a new general function "setElementTransform" was created to help on element styling. For this commit, I also made some changes on viewer onCanvasKeyPress method: - r is rotating the image clockwise; - R is rotating the image counter clockwise; - Freed "F" keycode to other purposes (like filters or others). --- src/drawer.js | 12 +++---- src/navigator.js | 77 ++++++++++++++++++-------------------------- src/openseadragon.js | 8 ++--- src/tiledimage.js | 6 ++-- src/viewer.js | 32 ++++++++++-------- src/viewport.js | 1 + 6 files changed, 65 insertions(+), 71 deletions(-) diff --git a/src/drawer.js b/src/drawer.js index 9aa7ef44..894b59a9 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -501,8 +501,8 @@ $.Drawer.prototype = { if ( this.viewport.degrees !== 0 ) { this._offsetForRotation({degrees: this.viewport.degrees}); } else{ - if(this.viewer.flipped) { - this._flip({}); + if(this.viewer.doFlip) { + this._flip(); } } if (tiledImage.getRotation(true) % 360 !== 0) { @@ -624,11 +624,10 @@ $.Drawer.prototype = { context.save(); context.translate(point.x, point.y); - if(this.viewer.flipped){ + if(this.viewer.doFlip){ context.rotate(Math.PI / 180 * -options.degrees); context.scale(-1, 1); - } - else{ + } else{ context.rotate(Math.PI / 180 * options.degrees); } context.translate(-point.x, -point.y); @@ -636,11 +635,12 @@ $.Drawer.prototype = { // private _flip: function(options) { + options = options || {}; var point = options.point ? options.point.times($.pixelDensityRatio) : this.getCanvasCenter(); var context = this._getContext(options.useSketch); - context.save(); + // context.save(); context.translate(point.x, 0); context.scale(-1, 1); diff --git a/src/navigator.js b/src/navigator.js index 7ee60297..5556c5e0 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -277,47 +277,28 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* /* Flip navigator element */ toogleFlip: function() { - this.flipped = !this.flipped; - if (this.viewer.flipped){ - this.displayRegion.style.webkitTransform = "scale(-1,1)"; - this.displayRegion.style.mozTransform = "scale(-1,1)"; - this.displayRegion.style.msTransform = "scale(-1,1)"; - this.displayRegion.style.oTransform = "scale(-1,1)"; - this.displayRegion.style.transform = "scale(-1,1)"; + this.doFlip = !this.doFlip; - this.canvas.style.webkitTransform = "scale(-1,1)"; - this.canvas.style.mozTransform = "scale(-1,1)"; - this.canvas.style.msTransform = "scale(-1,1)"; - this.canvas.style.oTransform = "scale(-1,1)"; - this.canvas.style.transform = "scale(-1,1)"; - - this.element.style.webkitTransform = "scale(-1,1)"; - this.element.style.mozTransform = "scale(-1,1)"; - this.element.style.msTransform = "scale(-1,1)"; - this.element.style.oTransform = "scale(-1,1)"; - this.element.style.transform = "scale(-1,1)"; - } else{ - this.displayRegion.style.webkitTransform = "scale(1,1)"; - this.displayRegion.style.mozTransform = "scale(1,1)"; - this.displayRegion.style.msTransform = "scale(1,1)"; - this.displayRegion.style.oTransform = "scale(1,1)"; - this.displayRegion.style.transform = "scale(1,1)"; - - this.canvas.style.webkitTransform = "scale(1,1)"; - this.canvas.style.mozTransform = "scale(1,1)"; - this.canvas.style.msTransform = "scale(1,1)"; - this.canvas.style.oTransform = "scale(1,1)"; - this.canvas.style.transform = "scale(1,1)"; - - this.element.style.webkitTransform = "scale(1,1)"; - this.element.style.mozTransform = "scale(1,1)"; - this.element.style.msTransform = "scale(1,1)"; - this.element.style.oTransform = "scale(1,1)"; - this.element.style.transform = "scale(1,1)"; - } + this.setDisplayTransform(this.viewer.doFlip ? "scale(-1,1)" : "scale(1,1)"); this.viewport.viewer.forceRedraw(); }, + setDisplayTransform: function(rule) { + this.displayRegion.style.webkitTransform = rule; + this.displayRegion.style.mozTransform = rule; + this.displayRegion.style.msTransform = rule; + this.displayRegion.style.oTransform = rule; + this.displayRegion.style.transform = rule; + + this.canvas.style.webkitTransform = rule; + this.canvas.style.mozTransform = rule; + this.canvas.style.msTransform = rule; + this.canvas.style.oTransform = rule; + this.canvas.style.transform = rule; + + setElementTransform(this.element, rule); + }, + /** * Used to update the navigator minimap's viewport rectangle when a change in the viewer's viewport occurs. * @function @@ -445,6 +426,7 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* } }); + /** * @private * @inner @@ -452,7 +434,7 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* */ function onCanvasClick( event ) { if ( event.quick && this.viewer.viewport ) { - if(this.viewer.flipped){ + if(this.viewer.doFlip){ event.position.x = this.viewport.getContainerSize().x - event.position.x; } this.viewer.viewport.panTo(this.viewport.pointFromPixel(event.position)); @@ -474,7 +456,7 @@ function onCanvasDrag( event ) { event.delta.y = 0; } - if(this.viewer.flipped){ + if(this.viewer.doFlip){ event.delta.x = -event.delta.x; } @@ -541,12 +523,17 @@ function onCanvasScroll( event ) { * @param {Object} element * @param {Number} degrees */ -function _setTransformRotate (element, degrees) { - element.style.webkitTransform = "rotate(" + degrees + "deg)"; - element.style.mozTransform = "rotate(" + degrees + "deg)"; - element.style.msTransform = "rotate(" + degrees + "deg)"; - element.style.oTransform = "rotate(" + degrees + "deg)"; - element.style.transform = "rotate(" + degrees + "deg)"; +function _setTransformRotate( element, degrees ) { + setElementTransform(element, "rotate(" + degrees + "deg)"); } +function setElementTransform( element, rule ) { + element.style.webkitTransform = rule; + element.style.mozTransform = rule; + element.style.msTransform = rule; + element.style.oTransform = rule; + element.style.transform = rule; +} + + }( OpenSeadragon )); diff --git a/src/openseadragon.js b/src/openseadragon.js index 8963e77f..a180e522 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -1130,13 +1130,13 @@ function OpenSeadragon( options ){ showHomeControl: true, //HOME showFullPageControl: true, //FULL showRotationControl: false, //ROTATION - showFlipControl: false, //FLIP + showFlipControl: true, //FLIP controlsFadeDelay: 2000, //ZOOM/HOME/FULL/SEQUENCE controlsFadeLength: 1500, //ZOOM/HOME/FULL/SEQUENCE mouseNavEnabled: true, //GENERAL MOUSE INTERACTIVITY //VIEWPORT NAVIGATOR SETTINGS - showNavigator: false, + showNavigator: true, navigatorId: null, navigatorPosition: null, navigatorSizeRatio: 0.2, @@ -1153,7 +1153,7 @@ function OpenSeadragon( options ){ degrees: 0, // INITIAL FLIP STATE - flipped: false, + doFlip: false, // APPEARANCE opacity: 1, @@ -1223,7 +1223,7 @@ function OpenSeadragon( options ){ HOVER: 'rotateright_hover.png', DOWN: 'rotateright_pressed.png' }, - flip: { // Flip icon by Yaroslav Samoylov from the Noun Project + flip: { // Flip icon designed by Yaroslav Samoylov from the Noun Project and modified by Nelson Campos ncampos@criteriamarathon.com, https://thenounproject.com/term/flip/136289/ REST: 'flip_rest.png', GROUP: 'flip_grouphover.png', HOVER: 'flip_hover.png', diff --git a/src/tiledimage.js b/src/tiledimage.js index 1523e5a7..5c35de31 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -844,7 +844,7 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag return; } if (immediately) { - this._degreesSpring.resetTo(degrees); + this._degreesSpring.resetTo(degrees); } else { this._degreesSpring.springTo(degrees); } @@ -1887,7 +1887,7 @@ function drawTiles( tiledImage, lastDrawn ) { useSketch: useSketch }); } else { - if(tiledImage._drawer.viewer.flipped) { + if(tiledImage._drawer.viewer.doFlip) { tiledImage._drawer._flip({}); } } @@ -1974,7 +1974,7 @@ function drawTiles( tiledImage, lastDrawn ) { if (tiledImage.viewport.degrees !== 0) { tiledImage._drawer._restoreRotationChanges(useSketch); } else{ - if(tiledImage._drawer.viewer.flipped) { + if(tiledImage._drawer.viewer.doFlip) { tiledImage._drawer._flip({}); } } diff --git a/src/viewer.js b/src/viewer.js index 792ebb73..e597041c 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -1252,7 +1252,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, * @param {Boolean} [options.preload=false] Default switch for loading hidden images (true loads, false blocks) * @param {Number} [options.degrees=0] Initial rotation of the tiled image around * its top left corner in degrees. - * @param {Boolean} [options.flipped=false] Initial flip/mirror state + * @param {Boolean} [options.doFlip=false] Initial flip/mirror state * @param {String} [options.compositeOperation] How the image is composited onto other images. * @param {String} [options.crossOriginPolicy] The crossOriginPolicy for this specific image, * overriding viewer.crossOriginPolicy. @@ -1415,7 +1415,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, opacity: queueItem.options.opacity, preload: queueItem.options.preload, degrees: queueItem.options.degrees, - flipped: queueItem.options.flipped, + doFlip: queueItem.options.doFlip, compositeOperation: queueItem.options.compositeOperation, springStiffness: _this.springStiffness, animationTime: _this.animationTime, @@ -2621,18 +2621,24 @@ function onCanvasKeyPress( event ) { this.viewport.applyConstraints(); } return false; - case 114: //r - case 82: //R - if(this.flipped){ + case 114: //r - 90 degrees clockwise rotation + if(this.doFlip){ this.viewport.setRotation(this.viewport.degrees - 90); } else{ this.viewport.setRotation(this.viewport.degrees + 90); } this.viewport.applyConstraints(); return false; - case 70: //F + case 82: //R - 90 degrees counter clockwise rotation + if(this.doFlip){ + this.viewport.setRotation(this.viewport.degrees + 90); + } else{ + this.viewport.setRotation(this.viewport.degrees - 90); + } + this.viewport.applyConstraints(); + return false; case 102: //f - this.flipped = !this.flipped; + this.doFlip = !this.doFlip; if(this.navigator){ this.navigator.toogleFlip(); } @@ -2657,7 +2663,7 @@ function onCanvasClick( event ) { if ( !haveKeyboardFocus ) { this.canvas.focus(); } - if(this.flipped){ + if(this.doFlip){ event.position.x = this.viewport.getContainerSize().x - event.position.x; } @@ -2779,7 +2785,7 @@ function onCanvasDrag( event ) { if( !this.panVertical ){ event.delta.y = 0; } - if(this.flipped){ + if(this.doFlip){ event.delta.x = -event.delta.x; } @@ -3107,7 +3113,7 @@ function onCanvasScroll( event ) { if (deltaScrollTime > this.minScrollDeltaTime) { this._lastScrollTime = thisScrollTime; - if(this.flipped){ + if(this.doFlip){ event.position.x = this.viewport.getContainerSize().x - event.position.x; } @@ -3476,7 +3482,7 @@ function onFullScreen() { function onRotateLeft() { if ( this.viewport ) { var currRotation = this.viewport.getRotation(); - if ( this.flipped ){ + if ( this.doFlip ){ if (currRotation === 270) { currRotation = 0; } @@ -3501,7 +3507,7 @@ function onRotateLeft() { function onRotateRight() { if ( this.viewport ) { var currRotation = this.viewport.getRotation(); - if ( this.flipped ){ + if ( this.doFlip ){ if (currRotation === 0) { currRotation = 270; } @@ -3524,7 +3530,7 @@ function onRotateRight() { * Note: The current rotation feature is limited to 90 degree turns. */ function onFlip() { - this.flipped = !this.flipped; + this.doFlip = !this.doFlip; if(this.navigator){ this.navigator.toogleFlip(); } diff --git a/src/viewport.js b/src/viewport.js index e44f46bb..9d357910 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -886,6 +886,7 @@ $.Viewport.prototype = { this.viewer.world.getHomeBounds(), this.viewer.world.getContentFactor()); this.viewer.forceRedraw(); + /** * Raised when rotation has been changed. * From f65dbd3a39dce698695f97ae317255323b303d3b Mon Sep 17 00:00:00 2001 From: Nelson Campos <ncampos@criteriamarathon.com> Date: Fri, 6 Apr 2018 12:02:45 +0100 Subject: [PATCH 10/64] Changes back showFlipControl and showNavigator variables to false default state --- images/flip_grouphover.png | Bin 2179 -> 4920 bytes images/flip_hover.png | Bin 2340 -> 4920 bytes images/flip_pressed.png | Bin 2307 -> 4920 bytes images/flip_rest.png | Bin 2300 -> 4920 bytes src/drawer.js | 5 ++-- src/navigator.js | 29 ++++++++++------------- src/openseadragon.js | 2 +- src/tiledimage.js | 4 ++-- src/viewer.js | 46 ++++++++++++++++++++----------------- 9 files changed, 42 insertions(+), 44 deletions(-) diff --git a/images/flip_grouphover.png b/images/flip_grouphover.png index 014ead6a384c9b97f041f1c9b0dcc3b52e5c5bc6..24c110c892c8f9210beefc92531111e6c8148329 100644 GIT binary patch literal 4920 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 I@7C@7FR0<AtN;K2 delta 2120 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 diff --git a/images/flip_hover.png b/images/flip_hover.png index 526dc991090671cadb69117b4ab4081e6c81c046..af97e717f4893563f0308939b027004d26ecbb2a 100644 GIT binary patch literal 4920 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 LSiP(Fsh|EA06U4g delta 2282 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 Ef;{(U1poj5 diff --git a/images/flip_pressed.png b/images/flip_pressed.png index 28b074c28a40bbc1915547d3d62fb176db322ed3..026d55ec06395b5873780dfe0039c6b672a3fa3e 100644 GIT binary patch literal 4920 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 B9b5na delta 2249 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 XX&@MbolIe300000NkvXXu0mjfj+S8G diff --git a/images/flip_rest.png b/images/flip_rest.png index 6f15e5dad9d84211ca11659757a55e16ec05fdc1..97145821a10c97b791e8803c3f4085f849ecdb76 100644 GIT binary patch literal 4920 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 NW|x+gR7@}b@-Go_2<QL+ delta 2242 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 Qr2qf`07*qoM6N<$g4_u`rT_o{ diff --git a/src/drawer.js b/src/drawer.js index 894b59a9..83159404 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -501,7 +501,7 @@ $.Drawer.prototype = { if ( this.viewport.degrees !== 0 ) { this._offsetForRotation({degrees: this.viewport.degrees}); } else{ - if(this.viewer.doFlip) { + if(this.viewer.flipped) { this._flip(); } } @@ -624,7 +624,7 @@ $.Drawer.prototype = { context.save(); context.translate(point.x, point.y); - if(this.viewer.doFlip){ + if(this.viewer.flipped){ context.rotate(Math.PI / 180 * -options.degrees); context.scale(-1, 1); } else{ @@ -640,7 +640,6 @@ $.Drawer.prototype = { options.point.times($.pixelDensityRatio) : this.getCanvasCenter(); var context = this._getContext(options.useSketch); - // context.save(); context.translate(point.x, 0); context.scale(-1, 1); diff --git a/src/navigator.js b/src/navigator.js index 5556c5e0..435127f4 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -276,26 +276,16 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* /** /* Flip navigator element */ - toogleFlip: function() { - this.doFlip = !this.doFlip; + toggleFlip: function() { + this.flipped = !this.flipped; - this.setDisplayTransform(this.viewer.doFlip ? "scale(-1,1)" : "scale(1,1)"); + this.setDisplayTransform(this.viewer.flipped ? "scale(-1,1)" : "scale(1,1)"); this.viewport.viewer.forceRedraw(); }, setDisplayTransform: function(rule) { - this.displayRegion.style.webkitTransform = rule; - this.displayRegion.style.mozTransform = rule; - this.displayRegion.style.msTransform = rule; - this.displayRegion.style.oTransform = rule; - this.displayRegion.style.transform = rule; - - this.canvas.style.webkitTransform = rule; - this.canvas.style.mozTransform = rule; - this.canvas.style.msTransform = rule; - this.canvas.style.oTransform = rule; - this.canvas.style.transform = rule; - + setElementTransform(this.displayRegion, rule); + setElementTransform(this.canvas, rule); setElementTransform(this.element, rule); }, @@ -434,7 +424,7 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* */ function onCanvasClick( event ) { if ( event.quick && this.viewer.viewport ) { - if(this.viewer.doFlip){ + if(this.viewer.flipped){ event.position.x = this.viewport.getContainerSize().x - event.position.x; } this.viewer.viewport.panTo(this.viewport.pointFromPixel(event.position)); @@ -456,7 +446,7 @@ function onCanvasDrag( event ) { event.delta.y = 0; } - if(this.viewer.doFlip){ + if(this.viewer.flipped){ event.delta.x = -event.delta.x; } @@ -536,4 +526,9 @@ function setElementTransform( element, rule ) { } + + + + + }( OpenSeadragon )); diff --git a/src/openseadragon.js b/src/openseadragon.js index a180e522..85efbb1a 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -1153,7 +1153,7 @@ function OpenSeadragon( options ){ degrees: 0, // INITIAL FLIP STATE - doFlip: false, + flipped: false, // APPEARANCE opacity: 1, diff --git a/src/tiledimage.js b/src/tiledimage.js index 5c35de31..f14a7d2c 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -1887,7 +1887,7 @@ function drawTiles( tiledImage, lastDrawn ) { useSketch: useSketch }); } else { - if(tiledImage._drawer.viewer.doFlip) { + if(tiledImage._drawer.viewer.flipped) { tiledImage._drawer._flip({}); } } @@ -1974,7 +1974,7 @@ function drawTiles( tiledImage, lastDrawn ) { if (tiledImage.viewport.degrees !== 0) { tiledImage._drawer._restoreRotationChanges(useSketch); } else{ - if(tiledImage._drawer.viewer.doFlip) { + if(tiledImage._drawer.viewer.flipped) { tiledImage._drawer._flip({}); } } diff --git a/src/viewer.js b/src/viewer.js index e597041c..4aa909e3 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -1252,7 +1252,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, * @param {Boolean} [options.preload=false] Default switch for loading hidden images (true loads, false blocks) * @param {Number} [options.degrees=0] Initial rotation of the tiled image around * its top left corner in degrees. - * @param {Boolean} [options.doFlip=false] Initial flip/mirror state + * @param {Boolean} [options.flipped=false] Initial flip/mirror state * @param {String} [options.compositeOperation] How the image is composited onto other images. * @param {String} [options.crossOriginPolicy] The crossOriginPolicy for this specific image, * overriding viewer.crossOriginPolicy. @@ -1415,7 +1415,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, opacity: queueItem.options.opacity, preload: queueItem.options.preload, degrees: queueItem.options.degrees, - doFlip: queueItem.options.doFlip, + flipped: queueItem.options.flipped, compositeOperation: queueItem.options.compositeOperation, springStiffness: _this.springStiffness, animationTime: _this.animationTime, @@ -1676,7 +1676,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, onFullScreenHandler = $.delegate( this, onFullScreen ), onRotateLeftHandler = $.delegate( this, onRotateLeft ), onRotateRightHandler = $.delegate( this, onRotateRight ), - onFlipHandler = $.delegate( this, onFlip), + onFlipHandler = $.delegate( this, onButtonFlip), onFocusHandler = $.delegate( this, onFocus ), onBlurHandler = $.delegate( this, onBlur ), navImages = this.navImages, @@ -2622,15 +2622,15 @@ function onCanvasKeyPress( event ) { } return false; case 114: //r - 90 degrees clockwise rotation - if(this.doFlip){ + if(this.flipped){ this.viewport.setRotation(this.viewport.degrees - 90); } else{ this.viewport.setRotation(this.viewport.degrees + 90); } this.viewport.applyConstraints(); return false; - case 82: //R - 90 degrees counter clockwise rotation - if(this.doFlip){ + case 82: //R - 90 degrees counterclockwise rotation + if(this.flipped){ this.viewport.setRotation(this.viewport.degrees + 90); } else{ this.viewport.setRotation(this.viewport.degrees - 90); @@ -2638,12 +2638,7 @@ function onCanvasKeyPress( event ) { this.viewport.applyConstraints(); return false; case 102: //f - this.doFlip = !this.doFlip; - if(this.navigator){ - this.navigator.toogleFlip(); - } - this._forceRedraw = !this._forceRedraw; - this.forceRedraw(); + onKeyboardFlip(); return false; default: // console.log( 'navigator keycode %s', event.keyCode ); @@ -2663,7 +2658,7 @@ function onCanvasClick( event ) { if ( !haveKeyboardFocus ) { this.canvas.focus(); } - if(this.doFlip){ + if(this.flipped){ event.position.x = this.viewport.getContainerSize().x - event.position.x; } @@ -2785,7 +2780,7 @@ function onCanvasDrag( event ) { if( !this.panVertical ){ event.delta.y = 0; } - if(this.doFlip){ + if(this.flipped){ event.delta.x = -event.delta.x; } @@ -3113,7 +3108,7 @@ function onCanvasScroll( event ) { if (deltaScrollTime > this.minScrollDeltaTime) { this._lastScrollTime = thisScrollTime; - if(this.doFlip){ + if(this.flipped){ event.position.x = this.viewport.getContainerSize().x - event.position.x; } @@ -3482,7 +3477,7 @@ function onFullScreen() { function onRotateLeft() { if ( this.viewport ) { var currRotation = this.viewport.getRotation(); - if ( this.doFlip ){ + if ( this.flipped ){ if (currRotation === 270) { currRotation = 0; } @@ -3507,7 +3502,7 @@ function onRotateLeft() { function onRotateRight() { if ( this.viewport ) { var currRotation = this.viewport.getRotation(); - if ( this.doFlip ){ + if ( this.flipped ){ if (currRotation === 0) { currRotation = 270; } @@ -3527,17 +3522,26 @@ function onRotateRight() { } /** - * Note: The current rotation feature is limited to 90 degree turns. + * Note: When pressed f on keyboard or flip control button */ -function onFlip() { - this.doFlip = !this.doFlip; +function onButtonFlip() { + this.flipped = !this.flipped; if(this.navigator){ - this.navigator.toogleFlip(); + this.navigator.toggleFlip(); } this._forceRedraw = !this._forceRedraw; this.forceRedraw(); } +function onKeyboardFlip() { + this.viewer.flipped = !this.viewer.flipped; + if(this.viewer.navigator){ + this.viewer.navigator.toggleFlip(); + } + this.viewer._forceRedraw = !this.viewer._forceRedraw; + this.viewer.forceRedraw(); +} + function onPrevious(){ From 7c7d714839ea503b0d1410fea5f3f8687d9b9f7c Mon Sep 17 00:00:00 2001 From: Nelson Campos <ncampos@criteriamarathon.com> Date: Mon, 9 Apr 2018 15:09:29 +0100 Subject: [PATCH 11/64] Changes back default state values --- src/openseadragon.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/openseadragon.js b/src/openseadragon.js index 85efbb1a..ae051506 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -1130,13 +1130,13 @@ function OpenSeadragon( options ){ showHomeControl: true, //HOME showFullPageControl: true, //FULL showRotationControl: false, //ROTATION - showFlipControl: true, //FLIP + showFlipControl: false, //FLIP controlsFadeDelay: 2000, //ZOOM/HOME/FULL/SEQUENCE controlsFadeLength: 1500, //ZOOM/HOME/FULL/SEQUENCE mouseNavEnabled: true, //GENERAL MOUSE INTERACTIVITY //VIEWPORT NAVIGATOR SETTINGS - showNavigator: true, + showNavigator: false, navigatorId: null, navigatorPosition: null, navigatorSizeRatio: 0.2, From 7e5c9e189733704a56dd56fae07afcab10c5f15b Mon Sep 17 00:00:00 2001 From: Nelson Campos <ncampos@criteriamarathon.com> Date: Tue, 10 Apr 2018 11:51:06 +0100 Subject: [PATCH 12/64] Changes flip store object from viewer to viewport. More than changing the store object of flip state, the code was simplified and the onFlip function from openseadragon was changed to receive a viewer argument. TiledImage had a flipped variable wrongly stored. From now on, flipped state must be read from the viewport object. --- src/drawer.js | 4 ++-- src/navigator.js | 8 ++++---- src/tiledimage.js | 4 ++-- src/viewer.js | 42 ++++++++++++++++++------------------------ src/viewport.js | 1 + 5 files changed, 27 insertions(+), 32 deletions(-) diff --git a/src/drawer.js b/src/drawer.js index 83159404..fbf66a76 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -501,7 +501,7 @@ $.Drawer.prototype = { if ( this.viewport.degrees !== 0 ) { this._offsetForRotation({degrees: this.viewport.degrees}); } else{ - if(this.viewer.flipped) { + if(this.viewer.viewport.flipped) { this._flip(); } } @@ -624,7 +624,7 @@ $.Drawer.prototype = { context.save(); context.translate(point.x, point.y); - if(this.viewer.flipped){ + 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 435127f4..790c8c2b 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -277,9 +277,9 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* /* Flip navigator element */ toggleFlip: function() { - this.flipped = !this.flipped; + this.viewport.flipped = !this.viewport.flipped; - this.setDisplayTransform(this.viewer.flipped ? "scale(-1,1)" : "scale(1,1)"); + this.setDisplayTransform(this.viewer.viewport.flipped ? "scale(-1,1)" : "scale(1,1)"); this.viewport.viewer.forceRedraw(); }, @@ -424,7 +424,7 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* */ function onCanvasClick( event ) { if ( event.quick && this.viewer.viewport ) { - if(this.viewer.flipped){ + if(this.viewer.viewport.flipped){ event.position.x = this.viewport.getContainerSize().x - event.position.x; } this.viewer.viewport.panTo(this.viewport.pointFromPixel(event.position)); @@ -446,7 +446,7 @@ function onCanvasDrag( event ) { event.delta.y = 0; } - if(this.viewer.flipped){ + if(this.viewer.viewport.flipped){ event.delta.x = -event.delta.x; } diff --git a/src/tiledimage.js b/src/tiledimage.js index f14a7d2c..cc2c32d3 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -1887,7 +1887,7 @@ function drawTiles( tiledImage, lastDrawn ) { useSketch: useSketch }); } else { - if(tiledImage._drawer.viewer.flipped) { + if(tiledImage._drawer.viewer.viewport.flipped) { tiledImage._drawer._flip({}); } } @@ -1974,7 +1974,7 @@ function drawTiles( tiledImage, lastDrawn ) { if (tiledImage.viewport.degrees !== 0) { tiledImage._drawer._restoreRotationChanges(useSketch); } else{ - if(tiledImage._drawer.viewer.flipped) { + if(tiledImage._drawer.viewer.viewport.flipped) { tiledImage._drawer._flip({}); } } diff --git a/src/viewer.js b/src/viewer.js index 4aa909e3..8cdd6fd7 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -1252,7 +1252,6 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, * @param {Boolean} [options.preload=false] Default switch for loading hidden images (true loads, false blocks) * @param {Number} [options.degrees=0] Initial rotation of the tiled image around * its top left corner in degrees. - * @param {Boolean} [options.flipped=false] Initial flip/mirror state * @param {String} [options.compositeOperation] How the image is composited onto other images. * @param {String} [options.crossOriginPolicy] The crossOriginPolicy for this specific image, * overriding viewer.crossOriginPolicy. @@ -1415,7 +1414,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, @@ -2622,7 +2620,7 @@ function onCanvasKeyPress( event ) { } return false; case 114: //r - 90 degrees clockwise rotation - if(this.flipped){ + if(this.viewport.flipped){ this.viewport.setRotation(this.viewport.degrees - 90); } else{ this.viewport.setRotation(this.viewport.degrees + 90); @@ -2630,7 +2628,7 @@ function onCanvasKeyPress( event ) { this.viewport.applyConstraints(); return false; case 82: //R - 90 degrees counterclockwise rotation - if(this.flipped){ + if(this.viewport.flipped){ this.viewport.setRotation(this.viewport.degrees + 90); } else{ this.viewport.setRotation(this.viewport.degrees - 90); @@ -2638,7 +2636,7 @@ function onCanvasKeyPress( event ) { this.viewport.applyConstraints(); return false; case 102: //f - onKeyboardFlip(); + onFlip(this); return false; default: // console.log( 'navigator keycode %s', event.keyCode ); @@ -2658,7 +2656,7 @@ function onCanvasClick( event ) { if ( !haveKeyboardFocus ) { this.canvas.focus(); } - if(this.flipped){ + if(this.viewport.flipped){ event.position.x = this.viewport.getContainerSize().x - event.position.x; } @@ -2780,7 +2778,7 @@ function onCanvasDrag( event ) { if( !this.panVertical ){ event.delta.y = 0; } - if(this.flipped){ + if(this.viewport.flipped){ event.delta.x = -event.delta.x; } @@ -3108,7 +3106,7 @@ function onCanvasScroll( event ) { if (deltaScrollTime > this.minScrollDeltaTime) { this._lastScrollTime = thisScrollTime; - if(this.flipped){ + if(this.viewport.flipped){ event.position.x = this.viewport.getContainerSize().x - event.position.x; } @@ -3477,7 +3475,7 @@ function onFullScreen() { function onRotateLeft() { if ( this.viewport ) { var currRotation = this.viewport.getRotation(); - if ( this.flipped ){ + if ( this.viewport.flipped ){ if (currRotation === 270) { currRotation = 0; } @@ -3502,7 +3500,7 @@ function onRotateLeft() { function onRotateRight() { if ( this.viewport ) { var currRotation = this.viewport.getRotation(); - if ( this.flipped ){ + if ( this.viewport.flipped ){ if (currRotation === 0) { currRotation = 270; } @@ -3524,22 +3522,18 @@ function onRotateRight() { /** * Note: When pressed f on keyboard or flip control button */ -function onButtonFlip() { - this.flipped = !this.flipped; - if(this.navigator){ - this.navigator.toggleFlip(); - } - this._forceRedraw = !this._forceRedraw; - this.forceRedraw(); +function onFlip( viewer ){ + viewer.viewport.flipped = !viewer.viewport.flipped; + + if(viewer.navigator){ + viewer.navigator.toggleFlip(); + } + viewer._forceRedraw = !viewer._forceRedraw; + viewer.forceRedraw(); } -function onKeyboardFlip() { - this.viewer.flipped = !this.viewer.flipped; - if(this.viewer.navigator){ - this.viewer.navigator.toggleFlip(); - } - this.viewer._forceRedraw = !this.viewer._forceRedraw; - this.viewer.forceRedraw(); +function onButtonFlip() { + onFlip(this); } diff --git a/src/viewport.js b/src/viewport.js index 9d357910..95632271 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -107,6 +107,7 @@ $.Viewport = function( options ) { minZoomLevel: $.DEFAULT_SETTINGS.minZoomLevel, maxZoomLevel: $.DEFAULT_SETTINGS.maxZoomLevel, degrees: $.DEFAULT_SETTINGS.degrees, + flipped: $.DEFAULT_SETTINGS.flipped, homeFillsViewer: $.DEFAULT_SETTINGS.homeFillsViewer }, options ); From 6e2c1258df4045365d8e6cca17eb16830aab5e4e Mon Sep 17 00:00:00 2001 From: Nelson Campos <ncampos@criteriamarathon.com> Date: Tue, 10 Apr 2018 12:04:58 +0100 Subject: [PATCH 13/64] Comments on functions --- src/viewer.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/viewer.js b/src/viewer.js index 8cdd6fd7..49d972db 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -3520,7 +3520,7 @@ function onRotateRight() { } /** - * Note: When pressed f on keyboard or flip control button + * Note: When pressed f on keyboard */ function onFlip( viewer ){ viewer.viewport.flipped = !viewer.viewport.flipped; @@ -3532,12 +3532,13 @@ function onFlip( viewer ){ viewer.forceRedraw(); } +/** + * Note: When pressed flip control button + */ function onButtonFlip() { onFlip(this); } - - function onPrevious(){ var previous = this._sequenceIndex - 1; if(this.navPrevNextWrap && previous < 0){ From b8a4f7e7a04b1c0158d8516ba24231521baa23f2 Mon Sep 17 00:00:00 2001 From: Nelson Campos <ncampos@criteriamarathon.com> Date: Wed, 11 Apr 2018 11:25:46 +0100 Subject: [PATCH 14/64] Reorganizes code to match standard calls of viewport object methods. A new viewport function was created (toggleFlip()) to change viewport's flip state and demand new viewers drawing. The onFlip function exists on openseadragon to handle flip control button press and demand viewport toggle flip. --- src/viewer.js | 21 ++++----------------- src/viewport.js | 13 +++++++++++++ 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/viewer.js b/src/viewer.js index 49d972db..76b78094 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -1674,7 +1674,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, onFullScreenHandler = $.delegate( this, onFullScreen ), onRotateLeftHandler = $.delegate( this, onRotateLeft ), onRotateRightHandler = $.delegate( this, onRotateRight ), - onFlipHandler = $.delegate( this, onButtonFlip), + onFlipHandler = $.delegate( this, onFlip), onFocusHandler = $.delegate( this, onFocus ), onBlurHandler = $.delegate( this, onBlur ), navImages = this.navImages, @@ -2636,7 +2636,7 @@ function onCanvasKeyPress( event ) { this.viewport.applyConstraints(); return false; case 102: //f - onFlip(this); + this.viewport.toggleFlip(); return false; default: // console.log( 'navigator keycode %s', event.keyCode ); @@ -3519,24 +3519,11 @@ function onRotateRight() { } } -/** - * Note: When pressed f on keyboard - */ -function onFlip( viewer ){ - viewer.viewport.flipped = !viewer.viewport.flipped; - - if(viewer.navigator){ - viewer.navigator.toggleFlip(); - } - viewer._forceRedraw = !viewer._forceRedraw; - viewer.forceRedraw(); -} - /** * Note: When pressed flip control button */ -function onButtonFlip() { - onFlip(this); +function onFlip() { + this.viewport.toggleFlip(); } function onPrevious(){ diff --git a/src/viewport.js b/src/viewport.js index 95632271..4c30dcee 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -1519,7 +1519,20 @@ $.Viewport.prototype = { var scale = this._contentBoundsNoRotate.width; var viewportToImageZoomRatio = (imageWidth / containerWidth) / scale; return imageZoom * viewportToImageZoomRatio; + }, + + /** + * Toggle flip state and demands a new drawing on navigator and viewer objects. + */ + toggleFlip: function() { + this.flipped = !this.flipped; + if(this.viewer.navigator){ + this.viewer.navigator.toggleFlip(); + } + this.viewer._forceRedraw = !this.viewer._forceRedraw; + this.viewer.forceRedraw(); } + }; }( OpenSeadragon )); From 84dc60632ce64330f2df08e92e5a04f6693fb922 Mon Sep 17 00:00:00 2001 From: Nelson Campos <ncampos@criteriamarathon.com> Date: Wed, 11 Apr 2018 18:24:01 +0100 Subject: [PATCH 15/64] code simplification and impro^Cments on toggleFlip function --- src/navigator.js | 4 ++-- src/openseadragon.js | 3 +++ src/viewer.js | 1 + src/viewport.js | 13 ++++++++++--- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/navigator.js b/src/navigator.js index 790c8c2b..8f03be43 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -276,8 +276,8 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* /** /* Flip navigator element */ - toggleFlip: function() { - this.viewport.flipped = !this.viewport.flipped; + setFlip: function() { + this.viewport.toggleFlip(); this.setDisplayTransform(this.viewer.viewport.flipped ? "scale(-1,1)" : "scale(1,1)"); this.viewport.viewer.forceRedraw(); diff --git a/src/openseadragon.js b/src/openseadragon.js index ae051506..72f90bd5 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -206,6 +206,9 @@ * @property {Number} [degrees=0] * Initial rotation. * + * @property {Boolean} [flip=false] + * Initial flip state. + * * @property {Number} [minZoomLevel=null] * * @property {Number} [maxZoomLevel=null] diff --git a/src/viewer.js b/src/viewer.js index 76b78094..8be90044 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -367,6 +367,7 @@ $.Viewer = function( options ) { maxZoomLevel: this.maxZoomLevel, viewer: this, degrees: this.degrees, + flipped: this.flipped, navigatorRotate: this.navigatorRotate, homeFillsViewer: this.homeFillsViewer, margins: this.viewportMargins diff --git a/src/viewport.js b/src/viewport.js index 4c30dcee..1f7b7e8f 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -1525,12 +1525,19 @@ $.Viewport.prototype = { * Toggle flip state and demands a new drawing on navigator and viewer objects. */ toggleFlip: function() { - this.flipped = !this.flipped; + this.setFlip(!this.getFlip()); if(this.viewer.navigator){ - this.viewer.navigator.toggleFlip(); + this.viewer.navigator.setFlip(); } - this.viewer._forceRedraw = !this.viewer._forceRedraw; this.viewer.forceRedraw(); + }, + + getFlip: function() { + return this.flipped; + }, + + setFlip: function( state ) { + this.flipped = state; } }; From 194d1c060692516f27d375d79705208bf6d92fca Mon Sep 17 00:00:00 2001 From: Nelson Campos <ncampos@criteriamarathon.com> Date: Thu, 12 Apr 2018 10:36:34 +0100 Subject: [PATCH 16/64] Documentation comments --- src/viewport.js | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/src/viewport.js b/src/viewport.js index 1f7b7e8f..132e88c4 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -1522,22 +1522,52 @@ $.Viewport.prototype = { }, /** - * Toggle flip state and demands a new drawing on navigator and viewer objects. - */ + * Toggles flip state and demands a new drawing on navigator and viewer objects. + * @function + * @return {OpenSeadragon.Viewport} Chainable. + */ toggleFlip: function() { this.setFlip(!this.getFlip()); if(this.viewer.navigator){ this.viewer.navigator.setFlip(); } this.viewer.forceRedraw(); + return this; }, + + /** + * Gets flip state stored on viewport. + * @function + * @return {Boolean} Flip state. + */ getFlip: function() { return this.flipped; }, + + /** + * Sets flip state according to the state input argument. + * @function + * @return {OpenSeadragon.Viewport} Chainable. + */ setFlip: function( state ) { + if ( this.flipped != state ) { + /** + * Raised when flip state has been changed. + * + * @event flip + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {Number} flipped - The flip state after this change. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.viewer.raiseEvent('flip', {"flipped": state}); + } + this.flipped = state; + return this; } }; From b7badc7d32da89506063c5f5a0a8cc617e9b70b3 Mon Sep 17 00:00:00 2001 From: Nelson Campos <ncampos@criteriamarathon.com> Date: Thu, 12 Apr 2018 10:39:37 +0100 Subject: [PATCH 17/64] Documentation comments fix --- src/viewport.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/viewport.js b/src/viewport.js index 132e88c4..534b8816 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -1549,6 +1549,7 @@ $.Viewport.prototype = { /** * Sets flip state according to the state input argument. * @function + * @param {Boolean} state - Flip state to set. * @return {OpenSeadragon.Viewport} Chainable. */ setFlip: function( state ) { From c2fd5322e215300ac4eb742ae4c291aadc853085 Mon Sep 17 00:00:00 2001 From: Nelson Campos <ncampos@criteriamarathon.com> Date: Thu, 12 Apr 2018 18:24:11 +0100 Subject: [PATCH 18/64] Code cleaning and function calls reorganization --- src/navigator.js | 9 +++++---- src/openseadragon.js | 2 +- src/viewport.js | 14 +++++++++----- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/navigator.js b/src/navigator.js index 8f03be43..e06ba658 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -275,12 +275,13 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* }, /** /* Flip navigator element + * @param {Boolean} state - Flip state to set. */ - setFlip: function() { - this.viewport.toggleFlip(); + setFlip: function(state) { + this.viewport.setFlip(state); - this.setDisplayTransform(this.viewer.viewport.flipped ? "scale(-1,1)" : "scale(1,1)"); - this.viewport.viewer.forceRedraw(); + this.setDisplayTransform(this.viewer.viewport.getFlip() ? "scale(-1,1)" : "scale(1,1)"); + return this; }, setDisplayTransform: function(rule) { diff --git a/src/openseadragon.js b/src/openseadragon.js index 72f90bd5..7e8373ed 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -206,7 +206,7 @@ * @property {Number} [degrees=0] * Initial rotation. * - * @property {Boolean} [flip=false] + * @property {Boolean} [flipped=false] * Initial flip state. * * @property {Number} [minZoomLevel=null] diff --git a/src/viewport.js b/src/viewport.js index 534b8816..41ea7246 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -1528,10 +1528,6 @@ $.Viewport.prototype = { */ toggleFlip: function() { this.setFlip(!this.getFlip()); - if(this.viewer.navigator){ - this.viewer.navigator.setFlip(); - } - this.viewer.forceRedraw(); return this; }, @@ -1554,6 +1550,9 @@ $.Viewport.prototype = { */ setFlip: function( state ) { if ( this.flipped != state ) { + this.flipped = state; + this.viewer.forceRedraw(); + /** * Raised when flip state has been changed. * @@ -1565,9 +1564,14 @@ $.Viewport.prototype = { * @property {?Object} userData - Arbitrary subscriber-defined object. */ this.viewer.raiseEvent('flip', {"flipped": state}); + } else { + this.flipped = state; } - this.flipped = state; + if(this.viewer.navigator){ + this.viewer.navigator.setFlip(this.getFlip()); + } + this.viewer.forceRedraw(); return this; } From ec0f55098abbe7cceb194c8f44c0d1a5416355c7 Mon Sep 17 00:00:00 2001 From: Nelson Campos <ncampos@criteriamarathon.com> Date: Fri, 13 Apr 2018 17:51:43 +0100 Subject: [PATCH 19/64] Simplifies viewport setFlip function. --- src/viewport.js | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/viewport.js b/src/viewport.js index 41ea7246..a3e207b8 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -1549,29 +1549,27 @@ $.Viewport.prototype = { * @return {OpenSeadragon.Viewport} Chainable. */ setFlip: function( state ) { - if ( this.flipped != state ) { - this.flipped = state; - this.viewer.forceRedraw(); - - /** - * Raised when flip state has been changed. - * - * @event flip - * @memberof OpenSeadragon.Viewer - * @type {object} - * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. - * @property {Number} flipped - The flip state after this change. - * @property {?Object} userData - Arbitrary subscriber-defined object. - */ - this.viewer.raiseEvent('flip', {"flipped": state}); - } else { - this.flipped = state; + if ( this.flipped === state ) { + return this; } + this.flipped = state; if(this.viewer.navigator){ this.viewer.navigator.setFlip(this.getFlip()); } this.viewer.forceRedraw(); + + /** + * Raised when flip state has been changed. + * + * @event flip + * @memberof OpenSeadragon.Viewer + * @type {object} + * @property {OpenSeadragon.Viewer} eventSource - A reference to the Viewer which raised the event. + * @property {Number} flipped - The flip state after this change. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.viewer.raiseEvent('flip', {"flipped": state}); return this; } From 26ec933d7dcc2cedc3b4af9e78f4fa44e00030bc Mon Sep 17 00:00:00 2001 From: Ian Gilman <ian@iangilman.com> Date: Mon, 16 Apr 2018 09:47:15 -0700 Subject: [PATCH 20/64] Changelog for #1370 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index f895ff1e..6b0f5458 100644 --- a/changelog.txt +++ b/changelog.txt @@ -12,6 +12,7 @@ OPENSEADRAGON CHANGELOG * 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) +* Fixed an issue causing the simple image tileSource to sometimes show duplicate copies (#1370) 2.3.1: From 43d3949dd12ec4e12a9f6bdd41c091d31a737d4d Mon Sep 17 00:00:00 2001 From: Nelson Campos <ncampos@criteriamarathon.com> Date: Tue, 17 Apr 2018 11:19:15 +0100 Subject: [PATCH 21/64] Refactored 90 degrees rotation button's actions. --- src/navigator.js | 6 ------ src/viewer.js | 30 ++++++------------------------ 2 files changed, 6 insertions(+), 30 deletions(-) diff --git a/src/navigator.js b/src/navigator.js index e06ba658..89562bcb 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -526,10 +526,4 @@ function setElementTransform( element, rule ) { element.style.transform = rule; } - - - - - - }( OpenSeadragon )); diff --git a/src/viewer.js b/src/viewer.js index 8be90044..b24086e0 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -3476,20 +3476,11 @@ function onFullScreen() { function onRotateLeft() { if ( this.viewport ) { var currRotation = this.viewport.getRotation(); + if ( this.viewport.flipped ){ - if (currRotation === 270) { - currRotation = 0; - } - else { - currRotation += 90; - } + currRotation = $.positiveModulo(currRotation + 90, 360); } else { - if (currRotation === 0) { - currRotation = 270; - } - else { - currRotation -= 90; - } + currRotation = $.positiveModulo(currRotation - 90, 360); } this.viewport.setRotation(currRotation); } @@ -3501,20 +3492,11 @@ function onRotateLeft() { function onRotateRight() { if ( this.viewport ) { var currRotation = this.viewport.getRotation(); + if ( this.viewport.flipped ){ - if (currRotation === 0) { - currRotation = 270; - } - else { - currRotation -= 90; - } + currRotation = $.positiveModulo(currRotation - 90, 360); } else { - if (currRotation === 270) { - currRotation = 0; - } - else { - currRotation += 90; - } + currRotation = $.positiveModulo(currRotation + 90, 360); } this.viewport.setRotation(currRotation); } From a31587df2f9a694d0ad090249ee013b0155a1bbb Mon Sep 17 00:00:00 2001 From: Nelson Campos <ncampos@criteriamarathon.com> Date: Tue, 17 Apr 2018 16:23:21 +0100 Subject: [PATCH 22/64] Adds tests about flip methods --- src/viewport.js | 3 --- test/modules/viewport.js | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/viewport.js b/src/viewport.js index a3e207b8..dec8513f 100644 --- a/src/viewport.js +++ b/src/viewport.js @@ -881,7 +881,6 @@ $.Viewport.prototype = { if (!this.viewer || !this.viewer.drawer.canRotate()) { return this; } - this.degrees = $.positiveModulo(degrees, 360); this._setContentBounds( this.viewer.world.getHomeBounds(), @@ -1531,7 +1530,6 @@ $.Viewport.prototype = { return this; }, - /** * Gets flip state stored on viewport. * @function @@ -1541,7 +1539,6 @@ $.Viewport.prototype = { return this.flipped; }, - /** * Sets flip state according to the state input argument. * @function diff --git a/test/modules/viewport.js b/test/modules/viewport.js index bebe7d77..abc1306f 100644 --- a/test/modules/viewport.js +++ b/test/modules/viewport.js @@ -1140,4 +1140,43 @@ }); }); + QUnit.test('toggleFlipState', function(assert) { + var done = assert.async(); + var openHandler = function(event) { + viewer.removeHandler('open', openHandler); + var viewport = viewer.viewport; + + assert.deepEqual(viewport.getFlip(), false, "Get original flip state should be false"); + + viewport.toggleFlip(); + assert.deepEqual(viewport.getFlip(), true, "Toggling flip state variable, viewport should be true"); + + viewport.toggleFlip(); + assert.deepEqual(viewport.getFlip(), false, "Toggling back flip state variable, viewport should be false again"); + + done(); + }; + viewer.addHandler('open', openHandler); + viewer.open(DZI_PATH); + }); + + QUnit.test('setFlipState', function(assert) { + var done = assert.async(); + var openHandler = function(event) { + viewer.removeHandler('open', openHandler); + var viewport = viewer.viewport; + + assert.deepEqual(viewport.getFlip(), false, "Get original flip state should be false"); + + viewport.setFlip(true); + assert.deepEqual(viewport.getFlip(), true, "Setting flip state variable should be true"); + + viewport.setFlip(false); + assert.deepEqual(viewport.getFlip(), false, "Unsetting flip state variable, viewport should be false again"); + + done(); + }; + viewer.addHandler('open', openHandler); + viewer.open(DZI_PATH); + }); })(); From 24be785bbde694107c88c7cbe034ca406bef05a6 Mon Sep 17 00:00:00 2001 From: Ian Gilman <ian@iangilman.com> Date: Fri, 11 May 2018 10:53:16 -0700 Subject: [PATCH 23/64] Updated to latest packages (and fixed lint errors) --- .eslintrc.json | 3 +- package-lock.json | 5158 ++++++++++++++++++++++++++++-------------- package.json | 8 +- src/openseadragon.js | 10 +- src/rectangle.js | 10 +- src/spring.js | 2 +- src/strings.js | 2 +- src/tilesource.js | 4 +- src/viewer.js | 4 +- 9 files changed, 3535 insertions(+), 1666 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 35c702a5..59510953 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -50,6 +50,7 @@ "no-multi-spaces": [ "error", { + "ignoreEOLComments": true, "exceptions": { "Property": true, "VariableDeclarator": true, @@ -259,7 +260,7 @@ "space-unary-ops": [ "error", { - "words": false, + "words": true, "nonwords": false } ], diff --git a/package-lock.json b/package-lock.json index 19e6c8c2..12430fcc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,37 +21,52 @@ } }, "acorn": { - "version": "https://registry.npmjs.org/acorn/-/acorn-4.0.4.tgz", - "integrity": "sha1-F6jWp6bE71OLgU7Jq6wneSk78wo=", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", "dev": true }, "acorn-jsx": { - "version": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "version": "3.0.1", + "resolved": "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" + "acorn": "3.3.0" }, "dependencies": { "acorn": { - "version": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "version": "3.3.0", + "resolved": "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=", + "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", - "json-stable-stringify": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + }, + "dependencies": { + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + } } }, "ajv-keywords": { - "version": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.0.tgz", - "integrity": "sha1-wR5oWer/+D4Nr8QWkpRy7KlGqiw=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", "dev": true }, "align-text": { @@ -72,8 +87,9 @@ "dev": true }, "ansi-escapes": { - "version": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", "dev": true }, "ansi-regex": { @@ -96,45 +112,78 @@ "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=", + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": 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, "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" + "delegates": "1.0.0", + "readable-stream": "2.3.6" }, "dependencies": { - "async": { - "version": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha1-hDGQ/WtzV6C54clW7d3V7IRitU0=", + "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 + }, + "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 + }, + "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 + }, + "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": { - "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" + "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": { + "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.1" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true } } }, - "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=", @@ -164,15 +213,17 @@ "dev": true }, "array-union": { - "version": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "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": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" + "array-uniq": "1.0.3" } }, "array-uniq": { - "version": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", "dev": true }, @@ -183,7 +234,8 @@ "dev": true }, "arrify": { - "version": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, @@ -230,13 +282,77 @@ "dev": true }, "babel-code-frame": { - "version": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.20.0.tgz", - "integrity": "sha1-uWj4OQkPmovG1Bk4+5bLhPc4eyY=", + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "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" + "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", + "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" + } + }, + "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.1.1" + } + }, + "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" + } + }, + "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 + } } }, "balanced-match": { @@ -275,12 +391,23 @@ "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", "dev": true }, - "bl": { - "version": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", - "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", + "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, + "optional": true, "requires": { - "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz" + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true, + "optional": true + } } }, "body-parser": { @@ -298,25 +425,16 @@ "on-finished": "2.3.0", "qs": "5.2.0", "raw-body": "2.1.7", - "type-is": "1.6.15" + "type-is": "1.6.16" }, "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", + "inherits": "2.0.3", "statuses": "1.3.1" } }, @@ -326,10 +444,10 @@ "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=", + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "qs": { @@ -378,9 +496,32 @@ "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=", + "buffer-alloc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.1.0.tgz", + "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "0.1.1", + "buffer-fill": "0.1.1" + } + }, + "buffer-alloc-unsafe": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-0.1.1.tgz", + "integrity": "sha1-/+H2dVHdBVc33iUzN7/oU9+rGmo=", + "dev": true + }, + "buffer-fill": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-0.1.1.tgz", + "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": { @@ -400,15 +541,17 @@ "dev": true }, "caller-path": { - "version": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "version": "0.1.0", + "resolved": "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": "0.2.0" } }, "callsites": { - "version": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", "dev": true }, @@ -455,6 +598,12 @@ "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" } }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, "chokidar": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.6.1.tgz", @@ -472,22 +621,32 @@ "readdirp": "2.1.0" } }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true, + "optional": true + }, "circular-json": { - "version": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", - "integrity": "sha1-vos2rvzN6LPKeqLWr8B6NyQsDS0=", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, "cli-cursor": { - "version": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz" + "restore-cursor": "2.0.0" } }, "cli-width": { - "version": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", - "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, "cliui": { @@ -516,15 +675,25 @@ "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=", + "coffeescript": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz", + "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=", "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=", + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "colors": { @@ -548,17 +717,6 @@ "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=", @@ -609,6 +767,12 @@ "integrity": "sha1-gBV9E3HJ83zBQDmrGJWXDRGdw7w=", "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 + }, "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", @@ -620,18 +784,15 @@ "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=", + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "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" + "lru-cache": "4.1.3", + "shebang-command": "1.2.0", + "which": "1.2.14" } }, "cryptiles": { @@ -662,15 +823,6 @@ "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", @@ -687,15 +839,358 @@ "dev": true, "requires": { "get-stdin": "4.0.1", - "meow": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz" + "meow": "3.7.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.1.1", + "map-obj": "1.0.1" + } + }, + "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.2" + } + }, + "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.1.0", + "pinkie-promise": "2.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 + }, + "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.1" + } + }, + "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.1.1" + } + }, + "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.1" + } + }, + "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.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "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.2" + } + }, + "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.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" + } + }, + "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.6.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" + } + }, + "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.3.1" + } + }, + "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.1" + } + }, + "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.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "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.4" + } + }, + "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.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.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.1.2", + "read-pkg": "1.1.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.2" + } + }, + "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.1" + } + }, + "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" + } + } } }, "debug": { - "version": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", - "integrity": "sha1-vFlryr52F/Edn6FTYe3tVgi4SZs=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", "dev": true, "requires": { - "ms": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz" + "ms": "0.7.1" } }, "decamelize": { @@ -704,6 +1199,23 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "optional": true, + "requires": { + "mimic-response": "1.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "dev": true, + "optional": true + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -711,17 +1223,144 @@ "dev": true }, "del": { - "version": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "version": "2.2.2", + "resolved": "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" + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.1", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + }, + "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.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "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.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 + }, + "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" + } + }, + "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.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 + }, + "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.4" + } + }, + "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.2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } } }, "delayed-stream": { @@ -730,6 +1369,12 @@ "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 + }, "depd": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", @@ -751,13 +1396,28 @@ "fs-exists-sync": "0.1.0" } }, + "detect-libc": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-0.2.0.tgz", + "integrity": "sha1-R/31ZzSKF+wl/L8LnkRjSKdvn7U=", + "dev": true, + "optional": true + }, "doctrine": { - "version": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "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" + "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 + } } }, "ecc-jsbn": { @@ -782,14 +1442,6 @@ "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", @@ -804,76 +1456,12 @@ "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", @@ -916,72 +1504,406 @@ } } }, - "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=", + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", "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" + "ajv": "5.5.2", + "babel-code-frame": "6.26.0", + "chalk": "2.4.1", + "concat-stream": "1.6.2", + "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.1", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "11.5.0", + "ignore": "3.3.8", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.1.0", + "js-yaml": "3.11.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.10", + "minimatch": "3.0.4", + "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.1.0", + "require-uncached": "1.0.3", + "semver": "5.5.0", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" }, "dependencies": { - "strip-bom": { - "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "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.1" + } + }, + "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.3" + } + }, + "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.4.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.3.6", + "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=", + "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.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "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.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 + }, + "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==", + "dev": true, + "requires": { + "argparse": "1.0.10", + "esprima": "4.0.0" + } + }, + "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.11" + } + }, + "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.0.2" + } + }, + "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.6", + "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=", + "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.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" + } + }, + "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.1" + } + }, + "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" + } + }, + "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 } } }, - "espree": { - "version": "https://registry.npmjs.org/espree/-/espree-3.3.2.tgz", - "integrity": "sha1-2/P63rTstNR3gwPlAQOz02yIuJw=", + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "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" + "esrecurse": "4.2.1", + "estraverse": "4.2.0" + } + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "requires": { + "acorn": "5.5.3", + "acorn-jsx": "3.0.1" } }, "esprima": { @@ -989,24 +1911,35 @@ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", "dev": true }, - "esrecurse": { - "version": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", - "integrity": "sha1-RxO2U2rffyrE8yfVWed1a/9kgiA=", + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "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" + "estraverse": "4.2.0" }, "dependencies": { "estraverse": { - "version": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.1.tgz", - "integrity": "sha1-9srKcokzqFDvkGYdDheYK6RxEaI=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true } } }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, "estraverse": { - "version": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true }, @@ -1021,15 +1954,6 @@ "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", @@ -1048,11 +1972,6 @@ "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", @@ -1071,6 +1990,13 @@ "fill-range": "2.2.3" } }, + "expand-template": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.1.1.tgz", + "integrity": "sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg==", + "dev": true, + "optional": true + }, "expand-tilde": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", @@ -1086,6 +2012,17 @@ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.23", + "tmp": "0.0.33" + } + }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", @@ -1190,12 +2127,21 @@ } }, "file-entry-cache": { - "version": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "version": "2.0.0", + "resolved": "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" + "flat-cache": "1.3.0", + "object-assign": "4.1.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 + } } }, "filename-regex": { @@ -1267,30 +2213,107 @@ "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": "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" + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "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.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 + }, + "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" + } + }, + "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" + } + }, + "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": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", - "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", "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" + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "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 + } } }, "for-in": { @@ -1331,6 +2354,12 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, "fs-exists-sync": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", @@ -2257,6 +3286,221 @@ } } }, + "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.2" + }, + "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.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 + }, + "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 + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "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": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": 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 + }, + "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" + } + }, + "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 + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": 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" + } + }, + "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" + } + } + } + }, "gaze": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", @@ -2266,21 +3510,6 @@ "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", @@ -2302,6 +3531,13 @@ "assert-plus": "1.0.0" } }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", + "dev": true, + "optional": true + }, "glob": { "version": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", @@ -2357,21 +3593,140 @@ } }, "globals": { - "version": "https://registry.npmjs.org/globals/-/globals-9.14.0.tgz", - "integrity": "sha1-iFmTavADh0EmMFOznQ52yiQeQDQ=", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", + "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", "dev": true }, "globby": { - "version": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "version": "5.0.0", + "resolved": "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" + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "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.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "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.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 + }, + "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" + } + }, + "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.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 + }, + "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.4" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } } }, "globule": { @@ -2380,9 +3735,105 @@ "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" + "glob": "7.1.2", + "lodash": "4.17.10", + "minimatch": "3.0.4" + }, + "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.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "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.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 + }, + "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 + }, + "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" + } + }, + "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" + } + }, + "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 + } } }, "graceful-fs": { @@ -2397,12 +3848,12 @@ "dev": true }, "grunt": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.1.tgz", - "integrity": "sha1-6HeHZOlEsY8yuw8QuQeEdcnftWs=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.2.tgz", + "integrity": "sha1-TmpeaVtwRy/VME9fqeNCNoNqc7w=", "dev": true, "requires": { - "coffee-script": "1.10.0", + "coffeescript": "1.10.0", "dateformat": "1.0.12", "eventemitter2": "0.4.14", "exit": "0.1.2", @@ -2410,28 +3861,71 @@ "glob": "7.0.6", "grunt-cli": "1.2.0", "grunt-known-options": "1.1.0", - "grunt-legacy-log": "1.0.0", + "grunt-legacy-log": "1.0.2", "grunt-legacy-util": "1.0.0", - "iconv-lite": "0.4.19", + "iconv-lite": "0.4.23", "js-yaml": "3.5.5", - "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "minimatch": "3.0.4", "nopt": "3.0.6", - "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "path-is-absolute": "1.0.1", "rimraf": "2.2.8" }, "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.3" + } + }, + "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": "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" + "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" } }, "grunt-cli": { @@ -2446,20 +3940,54 @@ "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.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 + }, "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" + "argparse": "1.0.10", + "esprima": "2.7.3" } }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "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" + } + }, + "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" + } + }, + "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": { @@ -2467,6 +3995,18 @@ "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 } } }, @@ -2481,32 +4021,483 @@ } }, "grunt-contrib-compress": { - "version": "https://registry.npmjs.org/grunt-contrib-compress/-/grunt-contrib-compress-1.4.3.tgz", + "version": "1.4.3", + "resolved": "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" + "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": { + "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 + }, + "archiver": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", + "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", + "dev": true, + "requires": { + "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": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", + "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", + "dev": true, + "requires": { + "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": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.10" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "dev": true, + "requires": { + "readable-stream": "2.3.6", + "safe-buffer": "5.1.1" + } + }, + "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" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "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.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "compress-commons": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", + "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", + "dev": true, + "requires": { + "buffer-crc32": "0.2.13", + "crc32-stream": "2.0.0", + "normalize-path": "2.1.1", + "readable-stream": "2.3.6" + } + }, + "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 + }, + "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 + }, + "crc": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.5.0.tgz", + "integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=", + "dev": true + }, + "crc32-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", + "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "dev": true, + "requires": { + "crc": "3.5.0", + "readable-stream": "2.3.6" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "1.4.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 + }, + "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.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 + }, + "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.1.1" + } + }, + "iltorb": { + "version": "1.3.10", + "resolved": "https://registry.npmjs.org/iltorb/-/iltorb-1.3.10.tgz", + "integrity": "sha512-nyB4+ru1u8CQqQ6w7YjasboKN3NQTN8GH/V/eEssNRKhW6UbdxdWhB9fJ5EEdjJfezKY0qPrcwLyIcgjL8hHxA==", + "dev": true, + "optional": true, + "requires": { + "detect-libc": "0.2.0", + "nan": "2.10.0", + "node-gyp": "3.6.2", + "prebuild-install": "2.5.3" + } + }, + "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 + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "2.3.6" + } + }, + "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 + }, + "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" + } + }, + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "dev": true, + "optional": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "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" + } + }, + "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 + }, "pretty-bytes": { - "version": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", "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 + }, + "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.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": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=", + "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.1" + } + }, + "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" + } + }, + "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 + }, + "tar-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.0.tgz", + "integrity": "sha512-lh2iAPG/BHNmN6WB9Ybdynk9rEJ5GD/dy4zscHmVlwa1dq2tpE+BH78i5vjYwYVWEaOXGBjzxr89aVACF17Cpw==", + "dev": true, + "requires": { + "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": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "walkdir": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", + "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "zip-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", + "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", + "dev": true, + "requires": { + "archiver-utils": "1.3.0", + "compress-commons": "1.2.2", + "lodash": "4.17.10", + "readable-stream": "2.3.6" + } } } }, "grunt-contrib-concat": { - "version": "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-1.0.1.tgz", + "version": "1.0.1", + "resolved": "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" + "chalk": "1.1.3", + "source-map": "0.5.7" + }, + "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.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 + }, + "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.1.1" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "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.1.1" + } + }, + "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 + } } }, "grunt-contrib-connect": { @@ -2548,44 +4539,88 @@ } }, "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=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.0.1.tgz", + "integrity": "sha512-8Zka/svGl6+ZwF7d6z/CfXwsb4cDODnajmZsY4nUAs9Ob0kJEcsLiDf5qm2HdDoEcm3NHjWCrFiWx+PZ2y4D7A==", "dev": true, "requires": { "async": "1.5.2", "gaze": "1.1.2", - "lodash": "3.10.1", + "lodash": "4.17.10", "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=", + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true } } }, "grunt-eslint": { - "version": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-19.0.0.tgz", - "integrity": "sha1-u3TDeQYVmc7B9mFp3vKonYYthhs=", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-20.1.0.tgz", + "integrity": "sha512-VZlDOLrB2KKefDDcx/wR8rEEz7smDwDKVblmooa+itdt/2jWw3ee2AiZB5Ap4s4AoRY0pbHRjZ3HHwY8uKR9Rw==", "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" + "chalk": "2.4.1", + "eslint": "4.19.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.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.4.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" + } + } } }, "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=", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/grunt-git-describe/-/grunt-git-describe-2.4.4.tgz", + "integrity": "sha512-R4vwvMdFMbwCfF26NPRc/Jw6d49v2aK3+P/nwKg8GHH/siE2OFmzfUHGYbbru8S55NwpLsLxxL1glIJfl9ZZOw==", "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-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": { @@ -2621,22 +4656,21 @@ "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=", + "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==", "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" + "lodash": "4.17.10" }, "dependencies": { "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true } } @@ -2647,15 +4681,70 @@ "integrity": "sha1-p7ji0Ps1taUPSvmG/BEnSevJbz0=", "dev": true, "requires": { - "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "chalk": "1.1.3", "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.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 + }, + "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.1.1" + } + }, "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.1.1" + } + }, + "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 } } }, @@ -2702,36 +4791,36 @@ "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=", + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/grunt-util-args/-/grunt-util-args-0.0.5.tgz", + "integrity": "sha512-J2CwtlXmT3HxW1gBVfaRb45DhaLIQxsU0hjlD+rUE9zX6CZ6z0E4c9niKP2BXVwc/et5u68RDnyg3O/5dDoAYg==", "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=", + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/grunt-util-options/-/grunt-util-options-0.0.4.tgz", + "integrity": "sha512-LobA4rbryvmUHgFoTVR2Wqm85Jz9QlPPBp6vkH0a82HlxSv9x/ssgjA2B5Nt77TsUOOxT/8Oawk8dNtlAgznow==", "dev": true, "requires": { - "grunt-util-property": "0.0.1" + "grunt-util-property": "0.0.2" } }, "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=", + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/grunt-util-process/-/grunt-util-process-0.0.3.tgz", + "integrity": "sha512-P//HbGFm4BVO9l6P5ILiibjLDZ4n+1sAq5FRfuk9yzmcgUbe+t2NsBba930jVekD2S6kie4dBvmy40+GguViSg==", "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=", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/grunt-util-property/-/grunt-util-property-0.0.2.tgz", + "integrity": "sha512-NxrejQerh//FZpDHJL8eAYsY84KOddc+OYcNiKrl1iErdRFaMscl6EsuFjrva/qGhRo2YQITDsmWW8cAQVOXZA==", "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=", + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/grunt-util-spawn/-/grunt-util-spawn-0.0.3.tgz", + "integrity": "sha512-DIMbGoAL9RXV0v3le8dTPjjf/bgFoB3be/AiX2S7GnE2mGyQYWCTj07DPzefiRJ7VbDGqIeg4bSOT5sHyPApbQ==", "dev": true }, "gzip-size": { @@ -2832,6 +4921,12 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, + "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 + }, "hasha": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/hasha/-/hasha-2.2.0.tgz", @@ -2893,9 +4988,9 @@ } }, "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=", + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.12.tgz", + "integrity": "sha1-uc+/Sizybw/DSxDKFImid3HjR08=", "dev": true }, "http-signature": { @@ -2916,1020 +5011,23 @@ "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=", + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "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 - } + "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==", + "dev": true + }, "imurmurhash": { - "version": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, @@ -3962,30 +5060,94 @@ "dev": true }, "inquirer": { - "version": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "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" + "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.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": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "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.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.4.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" + } + }, + "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" + } + } } }, - "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=", @@ -4050,12 +5212,10 @@ } }, "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" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-glob": { "version": "2.0.1", @@ -4066,17 +5226,6 @@ "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", @@ -4087,13 +5236,15 @@ } }, "is-path-cwd": { - "version": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "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": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "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.1" @@ -4120,19 +5271,17 @@ "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=", + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "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" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true }, "is-stream": { "version": "1.1.0", @@ -4248,8 +5397,9 @@ "dev": true }, "js-tokens": { - "version": "https://registry.npmjs.org/js-tokens/-/js-tokens-2.0.0.tgz", - "integrity": "sha1-eZA/VWPud4zBFi5tzxoAJ8l/nLU=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, "js-yaml": { @@ -4280,13 +5430,11 @@ "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-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", @@ -4303,17 +5451,6 @@ "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", @@ -4357,14 +5494,6 @@ "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=", @@ -4375,9 +5504,9 @@ } }, "livereload-js": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.2.2.tgz", - "integrity": "sha1-bIclfmSKtHW8JOoldFftzB+NC8I=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.3.0.tgz", + "integrity": "sha512-j1R0/FeGa64Y+NmqfZhyoVRzcFlOZ8sNlKzHjh4VvLULFACZhn68XrX5DFg2FhMvSMJmROuFxRSa560ECWKBMg==", "dev": true }, "load-json-file": { @@ -4393,8 +5522,9 @@ } }, "lodash": { - "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true }, "longest": { @@ -4412,6 +5542,16 @@ "signal-exit": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz" } }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", @@ -4504,6 +5644,19 @@ "mime-db": "1.30.0" } }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mimic-response": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", + "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=", + "dev": true, + "optional": true + }, "minimatch": { "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", @@ -4563,13 +5716,15 @@ } }, "ms": { - "version": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", "dev": true }, "mute-stream": { - "version": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, "nan": { @@ -4579,7 +5734,8 @@ "optional": true }, "natural-compare": { - "version": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, @@ -4589,6 +5745,185 @@ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", "dev": true }, + "node-abi": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.4.1.tgz", + "integrity": "sha512-pUlswqpHQ7zGPI9lGjZ4XDNIEUDbHxsltfIRb7dTnYdhgHWHOcB0MLZKLoCz6UMcGzSPG5wGl1HODZVQAUsH6w==", + "dev": true, + "optional": true, + "requires": { + "semver": "5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true, + "optional": true + } + } + }, + "node-gyp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", + "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", + "dev": true, + "optional": true, + "requires": { + "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": { + "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.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, + "optional": 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.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 + }, + "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" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true, + "optional": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "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" + } + }, + "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.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "optional": true, + "requires": { + "glob": "7.1.2" + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true, + "optional": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } + }, + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=", + "dev": true, + "optional": true + }, "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", @@ -4617,6 +5952,18 @@ "remove-trailing-separator": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz" } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, "nue": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/nue/-/nue-0.7.1.tgz", @@ -4673,9 +6020,13 @@ } }, "onetime": { - "version": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } }, "opn": { "version": "4.0.2", @@ -4736,6 +6087,32 @@ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": 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 + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + }, + "dependencies": { + "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 + } + } + }, "package": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package/-/package-1.0.1.tgz", @@ -4861,8 +6238,9 @@ } }, "pluralize": { - "version": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, "portscanner": { @@ -4874,6 +6252,72 @@ "async": "1.5.2" } }, + "prebuild-install": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.5.3.tgz", + "integrity": "sha512-/rI36cN2g7vDQnKWN8Uzupi++KjyqS9iS+/fpwG4Ea8d0Pip0PQ5bshUNzVwt+/D2MRfhVAplYMMvWLqWrCF/g==", + "dev": true, + "optional": true, + "requires": { + "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.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": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true, + "optional": true + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true, + "optional": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true, + "optional": true + } + } + }, + "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 + } + } + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -4906,6 +6350,50 @@ "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", "dev": true }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "optional": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + }, + "dependencies": { + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "optional": true, + "requires": { + "once": "1.4.0" + } + }, + "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" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -5037,6 +6525,35 @@ } } }, + "rc": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", + "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.5.1", + "ini": "1.3.5", + "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 + }, + "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 + } + } + }, "read-pkg": { "version": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", @@ -5082,24 +6599,6 @@ "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=", @@ -5118,6 +6617,12 @@ "is-equal-shallow": "0.1.3" } }, + "regexpp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "dev": true + }, "remove-trailing-separator": { "version": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", @@ -5183,17 +6688,19 @@ } }, "require-uncached": { - "version": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "version": "1.0.3", + "resolved": "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" + "caller-path": "0.1.0", + "resolve-from": "1.0.1" } }, "resolve": { - "version": "https://registry.npmjs.org/resolve/-/resolve-1.2.0.tgz", - "integrity": "sha1-lYnD8vYUnRQXpAvswWY9tuxrwmw=", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", "dev": true }, "resolve-dir": { @@ -5207,17 +6714,27 @@ } }, "resolve-from": { - "version": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "version": "1.0.1", + "resolved": "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=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "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" + "onetime": "2.0.1", + "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 + } } }, "right-align": { @@ -5239,24 +6756,41 @@ } }, "run-async": { - "version": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "dev": true, "requires": { - "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + "is-promise": "2.1.0" } }, "rx-lite": { - "version": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", "dev": true }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } + }, "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 }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, "semver": { "version": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", @@ -5344,6 +6878,12 @@ "send": "0.16.1" } }, + "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 + }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", @@ -5356,25 +6896,72 @@ "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", "dev": true }, - "shelljs": { - "version": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.6.tgz", - "integrity": "sha1-N5zM+1a5HIYB5HkzVutTgpJN6a0=", + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "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" + "shebang-regex": "1.0.0" } }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, "signal-exit": { "version": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "simple-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", + "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=", + "dev": true, + "optional": true + }, + "simple-get": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", + "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", + "dev": true, + "optional": true, + "requires": { + "decompress-response": "3.3.0", + "once": "1.4.0", + "simple-concat": "1.0.0" + }, + "dependencies": { + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "optional": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true, + "optional": true + } + } + }, "slice-ansi": { - "version": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + } }, "sntp": { "version": "2.1.0", @@ -5385,11 +6972,6 @@ "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=", @@ -5398,6 +6980,12 @@ "spdx-license-ids": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz" } }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, "spdx-expression-parse": { "version": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", @@ -5435,19 +7023,31 @@ "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=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "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" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "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" + } + } } }, "string_decoder": { @@ -5487,7 +7087,8 @@ } }, "strip-json-comments": { - "version": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, @@ -5497,43 +7098,236 @@ "dev": true }, "table": { - "version": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", "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" + "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": { - "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=", + "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": { - "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" + "color-convert": "1.9.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.4.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" } } } }, - "tar-stream": { - "version": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz", - "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=", + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, + "optional": 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" + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true, + "optional": true + } + } + }, + "tar-fs": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.2.tgz", + "integrity": "sha512-LdknWjPEiZC1nOBwhv0JBzfJBGPJar08dZg2rwZe0ZTLQoRGEzgrl7vF3qUEkCHpI/wN9e7RyCuDhMsJUCLPPQ==", + "dev": true, + "optional": true, + "requires": { + "chownr": "1.0.1", + "mkdirp": "0.5.1", + "pump": "1.0.3", + "tar-stream": "1.6.0" + }, + "dependencies": { + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "dev": true, + "optional": true, + "requires": { + "readable-stream": "2.3.6", + "safe-buffer": "5.1.1" + } + }, + "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 + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "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 + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true, + "optional": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "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" + } + }, + "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 + }, + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "dev": true, + "optional": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "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.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": { + "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.1" + } + }, + "tar-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.0.tgz", + "integrity": "sha512-lh2iAPG/BHNmN6WB9Ybdynk9rEJ5GD/dy4zscHmVlwa1dq2tpE+BH78i5vjYwYVWEaOXGBjzxr89aVACF17Cpw==", + "dev": true, + "optional": true, + "requires": { + "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": { + "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 + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true, + "optional": true + } } }, "temporary": { @@ -5546,7 +7340,8 @@ } }, "text-table": { - "version": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, @@ -5557,7 +7352,8 @@ "dev": true }, "through": { - "version": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -5570,26 +7366,11 @@ "body-parser": "1.14.2", "debug": "2.2.0", "faye-websocket": "0.10.0", - "livereload-js": "2.2.2", + "livereload-js": "2.3.0", "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", @@ -5598,6 +7379,21 @@ } } }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, "tough-cookie": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", @@ -5612,11 +7408,6 @@ "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", @@ -5642,13 +7433,30 @@ } }, "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", "dev": true, "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.17" + "mime-types": "2.1.18" + }, + "dependencies": { + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "requires": { + "mime-db": "1.33.0" + } + } } }, "typedarray": { @@ -5700,14 +7508,6 @@ "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=", @@ -5755,18 +7555,13 @@ "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", + "http-parser-js": "0.4.12", "websocket-extensions": "0.1.3" } }, @@ -5785,6 +7580,71 @@ "isexe": "2.0.0" } }, + "which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", + "dev": true, + "optional": true + }, + "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, + "requires": { + "string-width": "1.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 + }, + "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 + }, + "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" + } + }, + "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 + }, + "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" + } + }, + "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" + } + } + } + }, "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", @@ -5804,16 +7664,35 @@ "dev": true }, "write": { - "version": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "version": "0.2.1", + "resolved": "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" + "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" + } + } } }, - "xtend": { - "version": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { @@ -5846,17 +7725,6 @@ "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/package.json b/package.json index efc0ed5f..19adfc24 100644 --- a/package.json +++ b/package.json @@ -28,16 +28,16 @@ "url": "https://github.com/openseadragon/openseadragon.git" }, "devDependencies": { - "grunt": "^1.0.1", + "grunt": "^1.0.2", "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-watch": "^1.0.0", - "grunt-eslint": "^19.0.0", - "grunt-git-describe": "^2.3.2", + "grunt-contrib-watch": "^1.0.1", + "grunt-eslint": "^20.1.0", + "grunt-git-describe": "^2.4.4", "grunt-istanbul": "^0.8.0", "grunt-text-replace": "^0.4.0", "qunitjs": "2.4.1" diff --git a/src/openseadragon.js b/src/openseadragon.js index 4cb36dd3..db2a3b7b 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -1499,7 +1499,7 @@ function OpenSeadragon( options ){ */ getMousePosition: function( event ) { - if ( typeof( event.pageX ) == "number" ) { + if ( typeof ( event.pageX ) == "number" ) { $.getMousePosition = function( event ){ var result = new $.Point(); @@ -1509,7 +1509,7 @@ function OpenSeadragon( options ){ return result; }; - } else if ( typeof( event.clientX ) == "number" ) { + } else if ( typeof ( event.clientX ) == "number" ) { $.getMousePosition = function( event ){ var result = new $.Point(); @@ -1544,7 +1544,7 @@ function OpenSeadragon( options ){ var docElement = document.documentElement || {}, body = document.body || {}; - if ( typeof( window.pageXOffset ) == "number" ) { + if ( typeof ( window.pageXOffset ) == "number" ) { $.getPageScroll = function(){ return new $.Point( window.pageXOffset, @@ -1633,7 +1633,7 @@ function OpenSeadragon( options ){ var docElement = document.documentElement || {}, body = document.body || {}; - if ( typeof( window.innerWidth ) == 'number' ) { + if ( typeof ( window.innerWidth ) == 'number' ) { $.getWindowSize = function(){ return new $.Point( window.innerWidth, @@ -2233,7 +2233,7 @@ function OpenSeadragon( options ){ error messages are localized. */ var oldIE = $.Browser.vendor == $.BROWSERS.IE && $.Browser.version < 10; - if ( oldIE && typeof( e.number ) != "undefined" && e.number == -2147024891 ) { + if ( oldIE && typeof ( e.number ) != "undefined" && e.number == -2147024891 ) { msg += "\nSee http://msdn.microsoft.com/en-us/library/ms537505(v=vs.85).aspx#xdomain"; } diff --git a/src/rectangle.js b/src/rectangle.js index a73ad3f3..c6644546 100644 --- a/src/rectangle.js +++ b/src/rectangle.js @@ -58,27 +58,27 @@ $.Rect = function(x, y, width, height, degrees) { * @member {Number} x * @memberof OpenSeadragon.Rect# */ - this.x = typeof(x) === "number" ? x : 0; + this.x = typeof (x) === "number" ? x : 0; /** * The vector component 'y'. * @member {Number} y * @memberof OpenSeadragon.Rect# */ - this.y = typeof(y) === "number" ? y : 0; + this.y = typeof (y) === "number" ? y : 0; /** * The vector component 'width'. * @member {Number} width * @memberof OpenSeadragon.Rect# */ - this.width = typeof(width) === "number" ? width : 0; + this.width = typeof (width) === "number" ? width : 0; /** * The vector component 'height'. * @member {Number} height * @memberof OpenSeadragon.Rect# */ - this.height = typeof(height) === "number" ? height : 0; + this.height = typeof (height) === "number" ? height : 0; - this.degrees = typeof(degrees) === "number" ? degrees : 0; + this.degrees = typeof (degrees) === "number" ? degrees : 0; // Normalizes the rectangle. this.degrees = $.positiveModulo(this.degrees, 360); diff --git a/src/spring.js b/src/spring.js index 30a8956d..9c314b9f 100644 --- a/src/spring.js +++ b/src/spring.js @@ -50,7 +50,7 @@ $.Spring = function( options ) { var args = arguments; - if( typeof( options ) != 'object' ){ + if( typeof ( options ) != 'object' ){ //allows backward compatible use of ( initialValue, config ) as //constructor parameters options = { diff --git a/src/strings.js b/src/strings.js index cd3c7907..6ab94acb 100644 --- a/src/strings.js +++ b/src/strings.js @@ -81,7 +81,7 @@ $.extend( $, /** @lends OpenSeadragon */{ } string = container[ props[ i ] ]; - if ( typeof( string ) != "string" ) { + if ( typeof ( string ) != "string" ) { $.console.log( "Untranslated source string:", prop ); string = ""; // FIXME: this breaks gettext()-style convention, which would return source } diff --git a/src/tilesource.js b/src/tilesource.js index 1db5c94a..3386675a 100644 --- a/src/tilesource.js +++ b/src/tilesource.js @@ -427,7 +427,7 @@ $.TileSource.prototype = { } callback = function( data ){ - if( typeof(data) === "string" ) { + if( typeof (data) === "string" ) { data = $.parseXml( data ); } var $TileSource = $.TileSource.determineType( _this, data, url ); @@ -500,7 +500,7 @@ $.TileSource.prototype = { msg = "HTTP " + xhr.status + " attempting to load TileSource"; } catch ( e ) { var formattedExc; - if ( typeof( exc ) == "undefined" || !exc.toString ) { + if ( typeof ( exc ) == "undefined" || !exc.toString ) { formattedExc = "Unknown error"; } else { formattedExc = exc.toString(); diff --git a/src/viewer.js b/src/viewer.js index 341e3d49..74a2b1bb 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -182,10 +182,10 @@ $.Viewer = function( options ) { }, $.DEFAULT_SETTINGS, options ); - if ( typeof( this.hash) === "undefined" ) { + if ( typeof ( this.hash) === "undefined" ) { throw new Error("A hash must be defined, either by specifying options.id or options.hash."); } - if ( typeof( THIS[ this.hash ] ) !== "undefined" ) { + if ( typeof ( THIS[ this.hash ] ) !== "undefined" ) { // We don't want to throw an error here, as the user might have discarded // the previous viewer with the same hash and now want to recreate it. $.console.warn("Hash " + this.hash + " has already been used."); From ee1ed31d8c18fb27e3f76bd957992fa0742c4473 Mon Sep 17 00:00:00 2001 From: Ian Gilman <ian@iangilman.com> Date: Mon, 14 May 2018 11:59:20 -0700 Subject: [PATCH 24/64] Security audit --- package-lock.json | 2800 ++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 1355 insertions(+), 1447 deletions(-) diff --git a/package-lock.json b/package-lock.json index 12430fcc..00b3285f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", "dev": true, "requires": { - "mime-types": "2.1.17", + "mime-types": "~2.1.16", "negotiator": "0.6.1" } }, @@ -32,7 +32,7 @@ "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "requires": { - "acorn": "3.3.0" + "acorn": "^3.0.4" }, "dependencies": { "acorn": { @@ -49,10 +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.1" + "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": { @@ -75,9 +75,9 @@ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, "amdefine": { @@ -93,12 +93,14 @@ "dev": true }, "ansi-regex": { - "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "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": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, @@ -108,8 +110,8 @@ "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" + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" } }, "aproba": { @@ -124,8 +126,8 @@ "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "dev": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" }, "dependencies": { "core-util-is": { @@ -158,13 +160,13 @@ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "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" + "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" } }, "string_decoder": { @@ -173,7 +175,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "util-deprecate": { @@ -185,11 +187,12 @@ } }, "argparse": { - "version": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "version": "1.0.9", + "resolved": "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" + "sprintf-js": "~1.0.2" } }, "arr-diff": { @@ -198,7 +201,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "arr-flatten": { @@ -208,7 +211,8 @@ "dev": true }, "array-find-index": { - "version": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "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 }, @@ -218,7 +222,7 @@ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -287,9 +291,9 @@ "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": { @@ -310,11 +314,11 @@ "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" + "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": { @@ -335,7 +339,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-ansi": { @@ -344,7 +348,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -356,8 +360,9 @@ } }, "balanced-match": { - "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "basic-auth": { @@ -382,7 +387,7 @@ "dev": true, "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "binary-extensions": { @@ -398,7 +403,7 @@ "dev": true, "optional": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" }, "dependencies": { "inherits": { @@ -410,52 +415,16 @@ } } }, - "body-parser": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz", - "integrity": "sha1-EBXLH+LEQ4WCWVgdtTMy+NDPUPk=", + "body": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", + "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", "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.16" - }, - "dependencies": { - "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": "2.0.3", - "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 - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "qs": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz", - "integrity": "sha1-qfMRQq9GjLcrJbMBNrokVoNJFr4=", - "dev": true - } + "continuable-cache": "^0.3.1", + "error": "^7.0.0", + "raw-body": "~1.1.0", + "safe-json-parse": "~1.0.1" } }, "boom": { @@ -464,16 +433,17 @@ "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "dev": true, "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } }, "brace-expansion": { - "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "integrity": "sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=", + "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": "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" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "braces": { @@ -482,9 +452,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "browserify-zlib": { @@ -493,7 +463,7 @@ "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", "dev": true, "requires": { - "pako": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz" + "pako": "~0.2.0" } }, "buffer-alloc": { @@ -502,8 +472,8 @@ "integrity": "sha1-BVFNM78WVtNUDGhPZbEgLpDsowM=", "dev": true, "requires": { - "buffer-alloc-unsafe": "0.1.1", - "buffer-fill": "0.1.1" + "buffer-alloc-unsafe": "^0.1.0", + "buffer-fill": "^0.1.0" } }, "buffer-alloc-unsafe": { @@ -525,19 +495,21 @@ "dev": true }, "buffer-shims": { - "version": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "version": "1.0.0", + "resolved": "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", + "version": "1.1.1", + "resolved": "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=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=", "dev": true }, "caller-path": { @@ -546,7 +518,7 @@ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", "dev": true, "requires": { - "callsites": "0.2.0" + "callsites": "^0.2.0" } }, "callsites": { @@ -556,17 +528,19 @@ "dev": true }, "camelcase": { - "version": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "version": "2.1.1", + "resolved": "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", + "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": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "map-obj": "1.0.1" + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" } }, "caseless": { @@ -582,20 +556,21 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "chalk": { - "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "version": "1.1.3", + "resolved": "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" + "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" } }, "chardet": { @@ -610,15 +585,15 @@ "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" + "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" } }, "chownr": { @@ -640,7 +615,7 @@ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "2.0.0" + "restore-cursor": "^2.0.0" } }, "cli-width": { @@ -656,8 +631,8 @@ "dev": true, "optional": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" }, "dependencies": { @@ -671,7 +646,8 @@ } }, "co": { - "version": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, @@ -687,7 +663,7 @@ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { @@ -708,7 +684,7 @@ "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -718,18 +694,20 @@ "dev": true }, "concat-map": { - "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "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": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "version": "1.6.0", + "resolved": "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" + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, "connect": { @@ -740,7 +718,7 @@ "requires": { "debug": "2.6.9", "finalhandler": "1.0.6", - "parseurl": "1.3.2", + "parseurl": "~1.3.2", "utils-merge": "1.0.1" }, "dependencies": { @@ -773,14 +751,15 @@ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "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==", + "continuable-cache": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", + "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=", "dev": true }, "core-util-is": { - "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, @@ -790,9 +769,9 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.3", - "shebang-command": "1.2.0", - "which": "1.2.14" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "cryptiles": { @@ -801,7 +780,7 @@ "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "dev": true, "requires": { - "boom": "5.2.0" + "boom": "5.x.x" }, "dependencies": { "boom": { @@ -810,17 +789,18 @@ "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "dev": true, "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } } } }, "currently-unhandled": { - "version": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "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": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz" + "array-find-index": "^1.0.1" } }, "dashdash": { @@ -829,7 +809,7 @@ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "dateformat": { @@ -838,8 +818,8 @@ "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", "dev": true, "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" + "get-stdin": "^4.0.1", + "meow": "^3.3.0" }, "dependencies": { "array-find-index": { @@ -866,8 +846,8 @@ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" } }, "currently-unhandled": { @@ -876,7 +856,7 @@ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "array-find-index": "1.0.2" + "array-find-index": "^1.0.1" } }, "error-ex": { @@ -885,7 +865,7 @@ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "find-up": { @@ -894,8 +874,8 @@ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "graceful-fs": { @@ -916,7 +896,7 @@ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", "dev": true, "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "is-arrayish": { @@ -931,7 +911,7 @@ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-finite": { @@ -940,7 +920,7 @@ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-utf8": { @@ -955,11 +935,11 @@ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "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": { @@ -968,8 +948,8 @@ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", "dev": true, "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" } }, "meow": { @@ -978,16 +958,16 @@ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, "requires": { - "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" + "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": { @@ -1002,10 +982,10 @@ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { - "hosted-git-info": "2.6.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" + "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": { @@ -1026,7 +1006,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "path-exists": { @@ -1035,7 +1015,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-type": { @@ -1044,9 +1024,9 @@ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "pify": { @@ -1067,7 +1047,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "read-pkg": { @@ -1076,9 +1056,9 @@ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, "read-pkg-up": { @@ -1087,8 +1067,8 @@ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" } }, "redent": { @@ -1097,8 +1077,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" } }, "repeating": { @@ -1107,7 +1087,7 @@ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { - "is-finite": "1.0.2" + "is-finite": "^1.0.0" } }, "semver": { @@ -1128,8 +1108,8 @@ "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": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-expression-parse": { @@ -1138,8 +1118,8 @@ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { @@ -1154,7 +1134,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "strip-indent": { @@ -1163,7 +1143,7 @@ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", "dev": true, "requires": { - "get-stdin": "4.0.1" + "get-stdin": "^4.0.1" } }, "trim-newlines": { @@ -1178,19 +1158,19 @@ "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } } } }, "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "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": "0.7.1" + "ms": "2.0.0" } }, "decamelize": { @@ -1206,7 +1186,7 @@ "dev": true, "optional": true, "requires": { - "mimic-response": "1.0.0" + "mimic-response": "^1.0.0" } }, "deep-extend": { @@ -1228,13 +1208,13 @@ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "dev": true, "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.1", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.2" + "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": { @@ -1249,7 +1229,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -1271,12 +1251,12 @@ "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" + "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": { @@ -1285,8 +1265,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -1301,7 +1281,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "object-assign": { @@ -1316,7 +1296,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "path-is-absolute": { @@ -1343,7 +1323,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "rimraf": { @@ -1352,7 +1332,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "wrappy": { @@ -1393,7 +1373,7 @@ "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", "dev": true, "requires": { - "fs-exists-sync": "0.1.0" + "fs-exists-sync": "^0.1.0" } }, "detect-libc": { @@ -1409,7 +1389,7 @@ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { - "esutils": "2.0.2" + "esutils": "^2.0.2" }, "dependencies": { "esutils": { @@ -1427,7 +1407,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "ee-first": { @@ -1448,12 +1428,23 @@ "integrity": "sha1-pls+QtC3HPxYXrd0+ZQ8jZuRsMI=", "dev": true }, + "error": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", + "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", + "dev": true, + "requires": { + "string-template": "~0.2.1", + "xtend": "~4.0.0" + } + }, "error-ex": { - "version": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz", + "version": "1.3.0", + "resolved": "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" + "is-arrayish": "^0.2.1" } }, "es6-promise": { @@ -1469,7 +1460,8 @@ "dev": true }, "escape-string-regexp": { - "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "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 }, @@ -1479,11 +1471,11 @@ "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" + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" }, "dependencies": { "estraverse": { @@ -1499,7 +1491,7 @@ "dev": true, "optional": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -1510,44 +1502,44 @@ "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", "dev": true, "requires": { - "ajv": "5.5.2", - "babel-code-frame": "6.26.0", - "chalk": "2.4.1", - "concat-stream": "1.6.2", - "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.1", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.2", - "globals": "11.5.0", - "ignore": "3.3.8", - "imurmurhash": "0.1.4", - "inquirer": "3.3.0", - "is-resolvable": "1.1.0", - "js-yaml": "3.11.0", - "json-stable-stringify-without-jsonify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.10", - "minimatch": "3.0.4", - "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.1.0", - "require-uncached": "1.0.3", - "semver": "5.5.0", - "strip-ansi": "4.0.0", - "strip-json-comments": "2.0.1", + "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", "table": "4.0.2", - "text-table": "0.2.0" + "text-table": "~0.2.0" }, "dependencies": { "ansi-regex": { @@ -1562,7 +1554,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, "argparse": { @@ -1571,7 +1563,7 @@ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "balanced-match": { @@ -1586,7 +1578,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -1596,9 +1588,9 @@ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "concat-map": { @@ -1613,10 +1605,10 @@ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { - "buffer-from": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, "core-util-is": { @@ -1670,12 +1662,12 @@ "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" + "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" } }, "has-flag": { @@ -1690,8 +1682,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -1712,8 +1704,8 @@ "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", "dev": true, "requires": { - "argparse": "1.0.10", - "esprima": "4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "levn": { @@ -1722,8 +1714,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" } }, "minimatch": { @@ -1732,7 +1724,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -1762,7 +1754,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "optionator": { @@ -1771,12 +1763,12 @@ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, "requires": { - "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" + "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": { @@ -1809,13 +1801,13 @@ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "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" + "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": { @@ -1836,7 +1828,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { @@ -1845,7 +1837,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } }, "supports-color": { @@ -1854,7 +1846,7 @@ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } }, "type-check": { @@ -1863,7 +1855,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "1.1.2" + "prelude-ls": "~1.1.2" } }, "util-deprecate": { @@ -1886,8 +1878,8 @@ "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", "dev": true, "requires": { - "esrecurse": "4.2.1", - "estraverse": "4.2.0" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, "eslint-visitor-keys": { @@ -1902,12 +1894,13 @@ "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", "dev": true, "requires": { - "acorn": "5.5.3", - "acorn-jsx": "3.0.1" + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" } }, "esprima": { - "version": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", "dev": true }, @@ -1917,7 +1910,7 @@ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.0.0" }, "dependencies": { "estraverse": { @@ -1934,7 +1927,7 @@ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.1.0" } }, "estraverse": { @@ -1944,7 +1937,8 @@ "dev": true }, "esutils": { - "version": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, @@ -1978,7 +1972,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "expand-range": { @@ -1987,7 +1981,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "2.2.3" + "fill-range": "^2.1.0" } }, "expand-template": { @@ -2003,7 +1997,7 @@ "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", "dev": true, "requires": { - "os-homedir": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" + "os-homedir": "^1.0.1" } }, "extend": { @@ -2018,9 +2012,9 @@ "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "requires": { - "chardet": "0.4.2", - "iconv-lite": "0.4.23", - "tmp": "0.0.33" + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" } }, "extglob": { @@ -2029,7 +2023,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "extract-zip": { @@ -2038,7 +2032,7 @@ "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", "dev": true, "requires": { - "concat-stream": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "concat-stream": "1.6.0", "debug": "2.6.9", "mkdirp": "0.5.0", "yauzl": "2.4.1" @@ -2095,7 +2089,8 @@ "dev": true }, "fast-levenshtein": { - "version": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, @@ -2105,7 +2100,7 @@ "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", "dev": true, "requires": { - "websocket-driver": "0.7.0" + "websocket-driver": ">=0.5.1" } }, "fd-slicer": { @@ -2114,16 +2109,17 @@ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", "dev": true, "requires": { - "pend": "1.2.0" + "pend": "~1.2.0" } }, "figures": { - "version": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "version": "1.7.0", + "resolved": "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" + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" } }, "file-entry-cache": { @@ -2132,8 +2128,8 @@ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", "dev": true, "requires": { - "flat-cache": "1.3.0", - "object-assign": "4.1.1" + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" }, "dependencies": { "object-assign": { @@ -2151,16 +2147,15 @@ "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, + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "finalhandler": { @@ -2170,12 +2165,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": { @@ -2196,12 +2191,13 @@ } }, "find-up": { - "version": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "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": "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" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "findup-sync": { @@ -2210,7 +2206,7 @@ "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", "dev": true, "requires": { - "glob": "5.0.15" + "glob": "~5.0.0" }, "dependencies": { "balanced-match": { @@ -2225,7 +2221,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -2241,11 +2237,11 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "inflight": { @@ -2254,8 +2250,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -2270,7 +2266,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "once": { @@ -2279,7 +2275,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "path-is-absolute": { @@ -2302,10 +2298,10 @@ "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", "dev": true, "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" + "circular-json": "^0.3.1", + "del": "^2.0.2", + "graceful-fs": "^4.1.2", + "write": "^0.2.1" }, "dependencies": { "graceful-fs": { @@ -2328,7 +2324,7 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "forever-agent": { @@ -2343,9 +2339,9 @@ "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", "dev": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "fresh": { @@ -2372,13 +2368,14 @@ "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" + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0" } }, "fs.realpath": { - "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, @@ -2389,8 +2386,8 @@ "dev": true, "optional": true, "requires": { - "nan": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", - "node-pre-gyp": "0.6.39" + "nan": "^2.3.0", + "node-pre-gyp": "^0.6.39" }, "dependencies": { "abbrev": { @@ -2405,8 +2402,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": { @@ -2426,8 +2423,8 @@ "dev": true, "optional": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "asn1": { @@ -2471,7 +2468,7 @@ "dev": true, "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "block-stream": { @@ -2479,7 +2476,7 @@ "bundled": true, "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "boom": { @@ -2487,7 +2484,7 @@ "bundled": true, "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "brace-expansion": { @@ -2495,7 +2492,7 @@ "bundled": true, "dev": true, "requires": { - "balanced-match": "0.4.2", + "balanced-match": "^0.4.1", "concat-map": "0.0.1" } }, @@ -2526,7 +2523,7 @@ "bundled": true, "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "concat-map": { @@ -2549,7 +2546,7 @@ "bundled": true, "dev": true, "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "dashdash": { @@ -2558,7 +2555,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -2607,7 +2604,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "extend": { @@ -2633,9 +2630,9 @@ "dev": true, "optional": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "fs.realpath": { @@ -2648,10 +2645,10 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } }, "fstream-ignore": { @@ -2660,9 +2657,9 @@ "dev": true, "optional": true, "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" + "fstream": "^1.0.0", + "inherits": "2", + "minimatch": "^3.0.0" } }, "gauge": { @@ -2671,14 +2668,14 @@ "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" + "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" } }, "getpass": { @@ -2687,7 +2684,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -2703,12 +2700,12 @@ "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" + "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" } }, "graceful-fs": { @@ -2728,8 +2725,8 @@ "dev": true, "optional": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "^4.9.1", + "har-schema": "^1.0.5" } }, "has-unicode": { @@ -2743,10 +2740,10 @@ "bundled": true, "dev": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "hoek": { @@ -2760,9 +2757,9 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "inflight": { @@ -2770,8 +2767,8 @@ "bundled": true, "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -2790,7 +2787,7 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-typedarray": { @@ -2816,7 +2813,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "jsbn": { @@ -2837,7 +2834,7 @@ "dev": true, "optional": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { @@ -2882,7 +2879,7 @@ "bundled": true, "dev": true, "requires": { - "mime-db": "1.27.0" + "mime-db": "~1.27.0" } }, "minimatch": { @@ -2890,7 +2887,7 @@ "bundled": true, "dev": true, "requires": { - "brace-expansion": "1.1.7" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -2918,17 +2915,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.1.0", - "rc": "1.2.1", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.0.2", + "rc": "^1.1.7", "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": { @@ -2937,8 +2934,8 @@ "dev": true, "optional": true, "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" + "abbrev": "1", + "osenv": "^0.1.4" } }, "npmlog": { @@ -2947,10 +2944,10 @@ "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" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "number-is-nan": { @@ -2975,7 +2972,7 @@ "bundled": true, "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os-homedir": { @@ -2996,8 +2993,8 @@ "dev": true, "optional": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "path-is-absolute": { @@ -3034,10 +3031,10 @@ "dev": true, "optional": true, "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -3053,13 +3050,13 @@ "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" + "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" } }, "request": { @@ -3068,28 +3065,28 @@ "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" + "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" } }, "rimraf": { @@ -3097,7 +3094,7 @@ "bundled": true, "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -3128,7 +3125,7 @@ "bundled": true, "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "sshpk": { @@ -3137,15 +3134,15 @@ "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" + "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" }, "dependencies": { "assert-plus": { @@ -3161,9 +3158,9 @@ "bundled": true, "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string_decoder": { @@ -3171,7 +3168,7 @@ "bundled": true, "dev": true, "requires": { - "safe-buffer": "5.0.1" + "safe-buffer": "^5.0.1" } }, "stringstream": { @@ -3185,7 +3182,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-json-comments": { @@ -3199,9 +3196,9 @@ "bundled": true, "dev": true, "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } }, "tar-pack": { @@ -3210,14 +3207,14 @@ "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" + "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" } }, "tough-cookie": { @@ -3226,7 +3223,7 @@ "dev": true, "optional": true, "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "tunnel-agent": { @@ -3235,7 +3232,7 @@ "dev": true, "optional": true, "requires": { - "safe-buffer": "5.0.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -3276,7 +3273,7 @@ "dev": true, "optional": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" } }, "wrappy": { @@ -3292,10 +3289,10 @@ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" }, "dependencies": { "balanced-match": { @@ -3310,7 +3307,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -3332,12 +3329,12 @@ "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" + "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" } }, "graceful-fs": { @@ -3352,8 +3349,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -3368,7 +3365,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -3392,7 +3389,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "path-is-absolute": { @@ -3407,7 +3404,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "wrappy": { @@ -3430,14 +3427,14 @@ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "requires": { - "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" + "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" }, "dependencies": { "ansi-regex": { @@ -3458,7 +3455,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "number-is-nan": { @@ -3485,9 +3482,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { @@ -3496,7 +3493,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -3507,7 +3504,7 @@ "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", "dev": true, "requires": { - "globule": "1.2.0" + "globule": "^1.0.0" } }, "get-stdin": { @@ -3528,7 +3525,7 @@ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "github-from-package": { @@ -3539,16 +3536,17 @@ "optional": true }, "glob": { - "version": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "version": "7.1.1", + "resolved": "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" + "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" } }, "glob-base": { @@ -3557,8 +3555,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" } }, "glob-parent": { @@ -3567,7 +3565,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "global-modules": { @@ -3576,8 +3574,8 @@ "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", "dev": true, "requires": { - "global-prefix": "0.1.5", - "is-windows": "0.2.0" + "global-prefix": "^0.1.4", + "is-windows": "^0.2.0" } }, "global-prefix": { @@ -3586,10 +3584,10 @@ "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" + "homedir-polyfill": "^1.0.0", + "ini": "^1.3.4", + "is-windows": "^0.2.0", + "which": "^1.2.12" } }, "globals": { @@ -3604,12 +3602,12 @@ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", "dev": true, "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "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": { @@ -3624,7 +3622,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -3646,12 +3644,12 @@ "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" + "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": { @@ -3660,8 +3658,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -3676,7 +3674,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "object-assign": { @@ -3691,7 +3689,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "path-is-absolute": { @@ -3718,7 +3716,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "wrappy": { @@ -3735,109 +3733,14 @@ "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", "dev": true, "requires": { - "glob": "7.1.2", - "lodash": "4.17.10", - "minimatch": "3.0.4" - }, - "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.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "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.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 - }, - "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 - }, - "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" - } - }, - "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" - } - }, - "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 - } + "glob": "~7.1.1", + "lodash": "~4.17.4", + "minimatch": "~3.0.2" } }, "graceful-fs": { - "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, @@ -3853,22 +3756,22 @@ "integrity": "sha1-TmpeaVtwRy/VME9fqeNCNoNqc7w=", "dev": true, "requires": { - "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.0", - "grunt-legacy-log": "1.0.2", - "grunt-legacy-util": "1.0.0", - "iconv-lite": "0.4.23", - "js-yaml": "3.5.5", - "minimatch": "3.0.4", - "nopt": "3.0.6", - "path-is-absolute": "1.0.1", - "rimraf": "2.2.8" + "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" }, "dependencies": { "argparse": { @@ -3877,7 +3780,7 @@ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "balanced-match": { @@ -3892,7 +3795,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -3920,12 +3823,12 @@ "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", "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" + "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" } }, "grunt-cli": { @@ -3934,10 +3837,10 @@ "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" + "findup-sync": "~0.3.0", + "grunt-known-options": "~1.1.0", + "nopt": "~3.0.6", + "resolve": "~1.1.0" } }, "inflight": { @@ -3946,8 +3849,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -3962,8 +3865,8 @@ "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=", "dev": true, "requires": { - "argparse": "1.0.10", - "esprima": "2.7.3" + "argparse": "^1.0.2", + "esprima": "^2.6.0" } }, "minimatch": { @@ -3972,7 +3875,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "once": { @@ -3981,7 +3884,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "path-is-absolute": { @@ -4016,8 +3919,8 @@ "integrity": "sha1-Vkq/LQN4qYOhW54/MO51tzjEBjg=", "dev": true, "requires": { - "async": "1.5.2", - "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz" + "async": "^1.5.2", + "rimraf": "^2.5.1" } }, "grunt-contrib-compress": { @@ -4026,12 +3929,12 @@ "integrity": "sha1-Ac7/ucY39S5wgfRjdQmD0KOw+nM=", "dev": true, "requires": { - "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" + "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" }, "dependencies": { "ansi-regex": { @@ -4052,15 +3955,15 @@ "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", "dev": true, "requires": { - "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": "^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": { @@ -4069,12 +3972,12 @@ "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", "dev": true, "requires": { - "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" + "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" } }, "async": { @@ -4083,7 +3986,7 @@ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { - "lodash": "4.17.10" + "lodash": "^4.14.0" } }, "balanced-match": { @@ -4098,8 +4001,8 @@ "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "dev": true, "requires": { - "readable-stream": "2.3.6", - "safe-buffer": "5.1.1" + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" } }, "brace-expansion": { @@ -4108,7 +4011,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -4124,11 +4027,11 @@ "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" + "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" } }, "compress-commons": { @@ -4137,10 +4040,10 @@ "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", "dev": true, "requires": { - "buffer-crc32": "0.2.13", - "crc32-stream": "2.0.0", - "normalize-path": "2.1.1", - "readable-stream": "2.3.6" + "buffer-crc32": "^0.2.1", + "crc32-stream": "^2.0.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" } }, "concat-map": { @@ -4167,8 +4070,8 @@ "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", "dev": true, "requires": { - "crc": "3.5.0", - "readable-stream": "2.3.6" + "crc": "^3.4.4", + "readable-stream": "^2.0.0" } }, "end-of-stream": { @@ -4177,7 +4080,7 @@ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "escape-string-regexp": { @@ -4198,12 +4101,12 @@ "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" + "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" } }, "graceful-fs": { @@ -4218,7 +4121,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "iltorb": { @@ -4228,10 +4131,10 @@ "dev": true, "optional": true, "requires": { - "detect-libc": "0.2.0", - "nan": "2.10.0", - "node-gyp": "3.6.2", - "prebuild-install": "2.5.3" + "detect-libc": "^0.2.0", + "nan": "^2.6.2", + "node-gyp": "^3.6.2", + "prebuild-install": "^2.3.0" } }, "inflight": { @@ -4240,8 +4143,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -4262,7 +4165,7 @@ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", "dev": true, "requires": { - "readable-stream": "2.3.6" + "readable-stream": "^2.0.5" } }, "lodash": { @@ -4277,7 +4180,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "nan": { @@ -4293,7 +4196,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "once": { @@ -4302,7 +4205,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "path-is-absolute": { @@ -4329,13 +4232,13 @@ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "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" + "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" } }, "remove-trailing-separator": { @@ -4356,7 +4259,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "strip-ansi": { @@ -4365,7 +4268,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -4380,13 +4283,13 @@ "integrity": "sha512-lh2iAPG/BHNmN6WB9Ybdynk9rEJ5GD/dy4zscHmVlwa1dq2tpE+BH78i5vjYwYVWEaOXGBjzxr89aVACF17Cpw==", "dev": true, "requires": { - "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" + "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" } }, "util-deprecate": { @@ -4419,10 +4322,10 @@ "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", "dev": true, "requires": { - "archiver-utils": "1.3.0", - "compress-commons": "1.2.2", - "lodash": "4.17.10", - "readable-stream": "2.3.6" + "archiver-utils": "^1.3.0", + "compress-commons": "^1.2.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0" } } } @@ -4433,8 +4336,8 @@ "integrity": "sha1-YVCYYwhOhx1+ht5IwBUlntl3Rb0=", "dev": true, "requires": { - "chalk": "1.1.3", - "source-map": "0.5.7" + "chalk": "^1.0.0", + "source-map": "^0.5.3" }, "dependencies": { "ansi-regex": { @@ -4455,11 +4358,11 @@ "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" + "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": { @@ -4474,7 +4377,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "source-map": { @@ -4489,7 +4392,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -4506,15 +4409,15 @@ "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" + "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" } }, "grunt-contrib-qunit": { @@ -4523,7 +4426,7 @@ "integrity": "sha1-VKUbSyyE/uYsO34AFFySjR7Ct+w=", "dev": true, "requires": { - "grunt-lib-phantomjs": "1.1.0" + "grunt-lib-phantomjs": "^1.0.0" } }, "grunt-contrib-uglify": { @@ -4532,29 +4435,32 @@ "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" + "chalk": "^1.0.0", + "maxmin": "^1.1.0", + "uglify-js": "~3.3.0", + "uri-path": "^1.0.0" } }, "grunt-contrib-watch": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.0.1.tgz", - "integrity": "sha512-8Zka/svGl6+ZwF7d6z/CfXwsb4cDODnajmZsY4nUAs9Ob0kJEcsLiDf5qm2HdDoEcm3NHjWCrFiWx+PZ2y4D7A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz", + "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==", "dev": true, "requires": { - "async": "1.5.2", - "gaze": "1.1.2", - "lodash": "4.17.10", - "tiny-lr": "0.2.1" + "async": "^2.6.0", + "gaze": "^1.1.0", + "lodash": "^4.17.10", + "tiny-lr": "^1.1.1" }, "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 + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "^4.14.0" + } } } }, @@ -4564,8 +4470,8 @@ "integrity": "sha512-VZlDOLrB2KKefDDcx/wR8rEEz7smDwDKVblmooa+itdt/2jWw3ee2AiZB5Ap4s4AoRY0pbHRjZ3HHwY8uKR9Rw==", "dev": true, "requires": { - "chalk": "2.4.1", - "eslint": "4.19.1" + "chalk": "^2.1.0", + "eslint": "^4.0.0" }, "dependencies": { "ansi-styles": { @@ -4574,7 +4480,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, "chalk": { @@ -4583,9 +4489,9 @@ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "escape-string-regexp": { @@ -4606,7 +4512,7 @@ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } @@ -4617,10 +4523,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": { @@ -4630,7 +4536,7 @@ "dev": true, "requires": { "chalk": "1.1.1", - "istanbul": "0.4.5", + "istanbul": "~0.4.2", "nue": "0.7.1" }, "dependencies": { @@ -4640,11 +4546,11 @@ "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" + "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" } } } @@ -4661,10 +4567,10 @@ "integrity": "sha512-WdedTJ/6zCXnI/coaouzqvkI19uwqbcPkdsXiDRKJyB5rOUlOxnCnTVbpeUdEckKVir2uHF3rDBYppj2p6N3+g==", "dev": true, "requires": { - "colors": "1.1.2", - "grunt-legacy-log-utils": "1.0.0", - "hooker": "0.2.3", - "lodash": "4.17.10" + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~1.0.0", + "hooker": "~0.2.3", + "lodash": "~4.17.5" }, "dependencies": { "lodash": { @@ -4681,8 +4587,8 @@ "integrity": "sha1-p7ji0Ps1taUPSvmG/BEnSevJbz0=", "dev": true, "requires": { - "chalk": "1.1.3", - "lodash": "4.3.0" + "chalk": "~1.1.1", + "lodash": "~4.3.0" }, "dependencies": { "ansi-regex": { @@ -4703,11 +4609,11 @@ "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" + "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": { @@ -4722,7 +4628,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "lodash": { @@ -4737,7 +4643,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -4754,13 +4660,13 @@ "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" + "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" }, "dependencies": { "lodash": { @@ -4777,11 +4683,11 @@ "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" + "eventemitter2": "^0.4.9", + "phantomjs-prebuilt": "^2.1.3", + "rimraf": "^2.5.2", + "semver": "^5.1.0", + "temporary": "^0.0.8" } }, "grunt-text-replace": { @@ -4802,7 +4708,7 @@ "integrity": "sha512-LobA4rbryvmUHgFoTVR2Wqm85Jz9QlPPBp6vkH0a82HlxSv9x/ssgjA2B5Nt77TsUOOxT/8Oawk8dNtlAgznow==", "dev": true, "requires": { - "grunt-util-property": "0.0.2" + "grunt-util-property": "^0.0.2" } }, "grunt-util-process": { @@ -4829,8 +4735,8 @@ "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" + "browserify-zlib": "^0.1.4", + "concat-stream": "^1.4.1" } }, "handlebars": { @@ -4839,10 +4745,10 @@ "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" + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" }, "dependencies": { "source-map": { @@ -4851,7 +4757,7 @@ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } }, "uglify-js": { @@ -4861,9 +4767,9 @@ "dev": true, "optional": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { "source-map": { @@ -4889,8 +4795,8 @@ "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "dev": true, "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.1.0", + "har-schema": "^2.0.0" }, "dependencies": { "ajv": { @@ -4899,20 +4805,21 @@ "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" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } } } }, "has-ansi": { - "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "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": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -4933,8 +4840,8 @@ "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" + "is-stream": "^1.0.1", + "pinkie-promise": "^2.0.0" } }, "hawk": { @@ -4943,16 +4850,16 @@ "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", "dev": true, "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.0", - "sntp": "2.1.0" + "boom": "4.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x", + "sntp": "2.x.x" } }, "hoek": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", - "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", "dev": true }, "homedir-polyfill": { @@ -4961,7 +4868,7 @@ "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", "dev": true, "requires": { - "parse-passwd": "1.0.0" + "parse-passwd": "^1.0.0" } }, "hooker": { @@ -4971,7 +4878,8 @@ "dev": true }, "hosted-git-info": { - "version": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.5.tgz", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.5.tgz", "integrity": "sha1-C6gdkNouJas0ozLm7HeTbhWYEYs=", "dev": true }, @@ -4982,9 +4890,9 @@ "dev": true, "requires": { "depd": "1.1.1", - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": "1.3.1" + "statuses": ">= 1.3.1 < 2" } }, "http-parser-js": { @@ -4999,9 +4907,9 @@ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "http2": { @@ -5016,7 +4924,7 @@ "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "dev": true, "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3" } }, "ignore": { @@ -5032,24 +4940,27 @@ "dev": true }, "indent-string": { - "version": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "version": "2.1.0", + "resolved": "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" + "repeating": "^2.0.0" } }, "inflight": { - "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "version": "1.0.6", + "resolved": "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" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { - "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, @@ -5065,20 +4976,20 @@ "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "dev": true, "requires": { - "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", + "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", "mute-stream": "0.0.7", - "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" + "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" }, "dependencies": { "ansi-regex": { @@ -5093,7 +5004,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, "chalk": { @@ -5102,9 +5013,9 @@ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "escape-string-regexp": { @@ -5119,7 +5030,7 @@ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.5" } }, "has-flag": { @@ -5134,7 +5045,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } }, "supports-color": { @@ -5143,13 +5054,14 @@ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } }, "is-arrayish": { - "version": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, @@ -5159,21 +5071,21 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.11.0" + "binary-extensions": "^1.0.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 + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-builtin-module": { - "version": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "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": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" + "builtin-modules": "^1.0.0" } }, "is-dotfile": { @@ -5188,7 +5100,7 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { @@ -5204,11 +5116,12 @@ "dev": true }, "is-finite": { - "version": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "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": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + "number-is-nan": "^1.0.0" } }, "is-fullwidth-code-point": { @@ -5223,16 +5136,15 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "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" + "kind-of": "^3.0.2" } }, "is-path-cwd": { @@ -5247,7 +5159,7 @@ "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "dev": true, "requires": { - "is-path-inside": "1.0.1" + "is-path-inside": "^1.0.0" } }, "is-path-inside": { @@ -5256,7 +5168,7 @@ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { - "path-is-inside": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" + "path-is-inside": "^1.0.1" } }, "is-posix-bracket": { @@ -5296,7 +5208,8 @@ "dev": true }, "is-utf8": { - "version": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", "dev": true }, @@ -5307,9 +5220,9 @@ "dev": true }, "isarray": { - "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", @@ -5321,9 +5234,8 @@ "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" + "isarray": "1.0.0" } }, "isstream": { @@ -5338,20 +5250,20 @@ "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" + "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" }, "dependencies": { "abbrev": { @@ -5366,11 +5278,11 @@ "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" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "resolve": { @@ -5385,7 +5297,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -5403,12 +5315,13 @@ "dev": true }, "js-yaml": { - "version": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "version": "3.7.0", + "resolved": "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" + "argparse": "^1.0.7", + "esprima": "^2.6.0" } }, "jsbn": { @@ -5448,7 +5361,7 @@ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "dev": true, "requires": { - "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + "graceful-fs": "^4.1.6" } }, "jsprim": { @@ -5473,9 +5386,8 @@ "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" + "is-buffer": "^1.1.5" } }, "klaw": { @@ -5484,7 +5396,7 @@ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", "dev": true, "requires": { - "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + "graceful-fs": "^4.1.9" } }, "lazy-cache": { @@ -5495,12 +5407,13 @@ "optional": true }, "levn": { - "version": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "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": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, "livereload-js": { @@ -5510,15 +5423,16 @@ "dev": true }, "load-json-file": { - "version": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "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": "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" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, "lodash": { @@ -5534,12 +5448,13 @@ "dev": true }, "loud-rejection": { - "version": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "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": "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" + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" } }, "lru-cache": { @@ -5548,8 +5463,8 @@ "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "map-obj": { @@ -5564,42 +5479,42 @@ "integrity": "sha512-nUCmzKipcJEwYsBVAFh5P+d7JBuhJaW1xs85Hara9xuMLqtCVUrW6DSC0JVIkluxEH2W45nPBM/wjHtBXa/tYA==", "dev": true, "requires": { - "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz" + "minimatch": "^3.0.2" } }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" + }, "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" + "chalk": "^1.0.0", + "figures": "^1.0.1", + "gzip-size": "^1.0.0", + "pretty-bytes": "^1.0.0" } }, - "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", + "version": "3.7.0", + "resolved": "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" + "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" } }, "micromatch": { @@ -5608,19 +5523,19 @@ "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" + "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" } }, "mime": { @@ -5641,7 +5556,7 @@ "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", "dev": true, "requires": { - "mime-db": "1.30.0" + "mime-db": "~1.30.0" } }, "mimic-fn": { @@ -5658,28 +5573,32 @@ "optional": true }, "minimatch": { - "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "version": "3.0.3", + "resolved": "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" + "brace-expansion": "^1.0.0" } }, "minimist": { - "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "version": "1.2.0", + "resolved": "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", + "version": "0.5.1", + "resolved": "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" + "minimist": "0.0.8" }, "dependencies": { "minimist": { - "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true } @@ -5691,11 +5610,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": { @@ -5716,9 +5635,9 @@ } }, "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "mute-stream": { @@ -5728,7 +5647,8 @@ "dev": true }, "nan": { - "version": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", "dev": true, "optional": true @@ -5752,7 +5672,7 @@ "dev": true, "optional": true, "requires": { - "semver": "5.5.0" + "semver": "^5.4.1" }, "dependencies": { "semver": { @@ -5771,19 +5691,19 @@ "dev": true, "optional": true, "requires": { - "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" + "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" }, "dependencies": { "balanced-match": { @@ -5798,7 +5718,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -5820,12 +5740,12 @@ "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" + "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" } }, "graceful-fs": { @@ -5841,8 +5761,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -5857,7 +5777,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -5883,7 +5803,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "path-is-absolute": { @@ -5899,7 +5819,7 @@ "dev": true, "optional": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "semver": { @@ -5930,26 +5850,28 @@ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } }, "normalize-package-data": { - "version": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz", + "version": "2.3.5", + "resolved": "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" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { - "version": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "version": "2.1.1", + "resolved": "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" + "remove-trailing-separator": "^1.0.1" } }, "npmlog": { @@ -5958,10 +5880,10 @@ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "nue": { @@ -5971,7 +5893,8 @@ "dev": true }, "number-is-nan": { - "version": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, @@ -5982,7 +5905,8 @@ "dev": true }, "object-assign": { - "version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, @@ -5992,8 +5916,8 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "on-finished": { @@ -6012,11 +5936,12 @@ "dev": true }, "once": { - "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "version": "1.4.0", + "resolved": "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" + "wrappy": "1" } }, "onetime": { @@ -6025,7 +5950,7 @@ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "opn": { @@ -6034,8 +5959,8 @@ "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" + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" } }, "optimist": { @@ -6044,8 +5969,8 @@ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { - "minimist": "0.0.10", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" }, "dependencies": { "minimist": { @@ -6063,27 +5988,30 @@ } }, "optionator": { - "version": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "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": "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" + "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" }, "dependencies": { "wordwrap": { - "version": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "version": "1.0.0", + "resolved": "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", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, @@ -6100,8 +6028,8 @@ "dev": true, "optional": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" }, "dependencies": { "os-homedir": { @@ -6120,7 +6048,8 @@ "dev": true }, "pako": { - "version": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", "dev": true }, @@ -6130,18 +6059,19 @@ "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" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" } }, "parse-json": { - "version": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "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": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz" + "error-ex": "^1.2.0" } }, "parse-passwd": { @@ -6157,20 +6087,23 @@ "dev": true }, "path-exists": { - "version": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "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": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + "pinkie-promise": "^2.0.0" } }, "path-is-absolute": { - "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "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": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "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 }, @@ -6181,13 +6114,14 @@ "dev": true }, "path-type": { - "version": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "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": "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" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "pend": { @@ -6208,33 +6142,36 @@ "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" + "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" } }, "pify": { - "version": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "version": "2.3.0", + "resolved": "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", + "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": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "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": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + "pinkie": "^2.0.0" } }, "pluralize": { @@ -6259,21 +6196,21 @@ "dev": true, "optional": true, "requires": { - "detect-libc": "1.0.3", - "expand-template": "1.1.1", + "detect-libc": "^1.0.3", + "expand-template": "^1.0.2", "github-from-package": "0.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" + "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" }, "dependencies": { "detect-libc": { @@ -6336,17 +6273,19 @@ "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", "dev": true, "requires": { - "get-stdin": "4.0.1", - "meow": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz" + "get-stdin": "^4.0.1", + "meow": "^3.1.0" } }, "process-nextick-args": { - "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "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 }, "progress": { - "version": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", "dev": true }, @@ -6363,8 +6302,8 @@ "dev": true, "optional": true, "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" }, "dependencies": { "end-of-stream": { @@ -6374,7 +6313,7 @@ "dev": true, "optional": true, "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "once": { @@ -6383,7 +6322,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "wrappy": { @@ -6427,7 +6366,7 @@ "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } }, "findup-sync": { @@ -6436,10 +6375,10 @@ "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" + "detect-file": "^0.1.0", + "is-glob": "^2.0.1", + "micromatch": "^2.3.7", + "resolve-dir": "^0.1.0" } }, "resolve": { @@ -6448,49 +6387,30 @@ "integrity": "sha1-HwRCyeDLuBNuh7kwX5MvRsfygjU=", "dev": true, "requires": { - "path-parse": "1.0.5" + "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, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", + "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" }, "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" - } - } - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" }, "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" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" } } }, @@ -6501,28 +6421,13 @@ "dev": true }, "raw-body": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", - "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", + "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", "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 - } + "bytes": "1", + "string_decoder": "0.10" } }, "rc": { @@ -6532,10 +6437,10 @@ "dev": true, "optional": true, "requires": { - "deep-extend": "0.5.1", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -6555,36 +6460,39 @@ } }, "read-pkg": { - "version": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "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": "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" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, "read-pkg-up": { - "version": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "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": "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" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" } }, "readable-stream": { - "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", + "version": "2.2.2", + "resolved": "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" + "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" } }, "readdirp": { @@ -6593,19 +6501,20 @@ "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" + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" } }, "redent": { - "version": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "version": "1.0.0", + "resolved": "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" + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" } }, "regex-cache": { @@ -6614,7 +6523,7 @@ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "regexpp": { @@ -6624,28 +6533,28 @@ "dev": true }, "remove-trailing-separator": { - "version": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "version": "1.0.2", + "resolved": "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 + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" }, "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 + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "repeating": { - "version": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "version": "2.0.1", + "resolved": "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" + "is-finite": "^1.0.0" } }, "request": { @@ -6654,28 +6563,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": { @@ -6684,7 +6593,7 @@ "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", "dev": true, "requires": { - "throttleit": "1.0.0" + "throttleit": "^1.0.0" } }, "require-uncached": { @@ -6693,8 +6602,8 @@ "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", "dev": true, "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" } }, "resolve": { @@ -6709,8 +6618,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": { @@ -6725,8 +6634,8 @@ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" }, "dependencies": { "signal-exit": { @@ -6744,15 +6653,16 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "rimraf": { - "version": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "version": "2.5.4", + "resolved": "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" + "glob": "^7.0.5" } }, "run-async": { @@ -6761,7 +6671,7 @@ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "dev": true, "requires": { - "is-promise": "2.1.0" + "is-promise": "^2.1.0" } }, "rx-lite": { @@ -6776,7 +6686,7 @@ "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", "dev": true, "requires": { - "rx-lite": "4.0.8" + "rx-lite": "*" } }, "safe-buffer": { @@ -6785,6 +6695,12 @@ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, + "safe-json-parse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", + "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=", + "dev": true + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -6792,7 +6708,8 @@ "dev": true }, "semver": { - "version": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "dev": true }, @@ -6803,18 +6720,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": { @@ -6840,13 +6757,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": { @@ -6872,9 +6789,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" } }, @@ -6902,7 +6819,7 @@ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -6912,7 +6829,8 @@ "dev": true }, "signal-exit": { - "version": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, @@ -6930,9 +6848,9 @@ "dev": true, "optional": true, "requires": { - "decompress-response": "3.3.0", - "once": "1.4.0", - "simple-concat": "1.0.0" + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" }, "dependencies": { "once": { @@ -6942,7 +6860,7 @@ "dev": true, "optional": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "wrappy": { @@ -6960,7 +6878,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": { @@ -6969,15 +6887,16 @@ "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "dev": true, "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } }, "spdx-correct": { - "version": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "version": "1.0.2", + "resolved": "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-license-ids": "^1.0.2" } }, "spdx-exceptions": { @@ -6987,34 +6906,37 @@ "dev": true }, "spdx-expression-parse": { - "version": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "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 }, "spdx-license-ids": { - "version": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "version": "1.2.2", + "resolved": "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", + "version": "1.0.3", + "resolved": "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=", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", "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" + "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" } }, "statuses": { @@ -7023,14 +6945,20 @@ "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", "dev": true }, + "string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", + "dev": true + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "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": { @@ -7045,7 +6973,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -7063,27 +6991,30 @@ "dev": true }, "strip-ansi": { - "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "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": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + "ansi-regex": "^2.0.0" } }, "strip-bom": { - "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "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": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" + "is-utf8": "^0.2.0" } }, "strip-indent": { - "version": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "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" + "get-stdin": "^4.0.1" } }, "strip-json-comments": { @@ -7093,7 +7024,8 @@ "dev": true }, "supports-color": { - "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, @@ -7103,12 +7035,12 @@ "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", "dev": true, "requires": { - "ajv": "5.5.2", - "ajv-keywords": "2.1.1", - "chalk": "2.4.1", - "lodash": "4.17.10", + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", "slice-ansi": "1.0.0", - "string-width": "2.1.1" + "string-width": "^2.1.1" }, "dependencies": { "ansi-styles": { @@ -7117,7 +7049,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, "chalk": { @@ -7126,9 +7058,9 @@ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "escape-string-regexp": { @@ -7149,7 +7081,7 @@ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } @@ -7161,9 +7093,9 @@ "dev": true, "optional": true, "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" }, "dependencies": { "inherits": { @@ -7182,10 +7114,10 @@ "dev": true, "optional": true, "requires": { - "chownr": "1.0.1", - "mkdirp": "0.5.1", - "pump": "1.0.3", - "tar-stream": "1.6.0" + "chownr": "^1.0.1", + "mkdirp": "^0.5.1", + "pump": "^1.0.0", + "tar-stream": "^1.1.2" }, "dependencies": { "bl": { @@ -7195,8 +7127,8 @@ "dev": true, "optional": true, "requires": { - "readable-stream": "2.3.6", - "safe-buffer": "5.1.1" + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" } }, "core-util-is": { @@ -7211,7 +7143,7 @@ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "inherits": { @@ -7249,7 +7181,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "process-nextick-args": { @@ -7265,8 +7197,8 @@ "dev": true, "optional": true, "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "readable-stream": { @@ -7275,13 +7207,13 @@ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "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" + "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" } }, "string_decoder": { @@ -7290,7 +7222,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "tar-stream": { @@ -7300,13 +7232,13 @@ "dev": true, "optional": true, "requires": { - "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" + "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" } }, "util-deprecate": { @@ -7336,7 +7268,7 @@ "integrity": "sha1-oYqYHSi6jKNgJ/s8MFOMPst0CsA=", "dev": true, "requires": { - "package": "1.0.1" + "package": ">= 1.0.0 < 1.2.0" } }, "text-table": { @@ -7358,25 +7290,17 @@ "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=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", + "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", "dev": true, "requires": { - "body-parser": "1.14.2", - "debug": "2.2.0", - "faye-websocket": "0.10.0", - "livereload-js": "2.3.0", - "parseurl": "1.3.2", - "qs": "5.1.0" - }, - "dependencies": { - "qs": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz", - "integrity": "sha1-TZMuXH6kEcynajEtOaYGIA/VDNk=", - "dev": true - } + "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" } }, "tmp": { @@ -7385,7 +7309,7 @@ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.2" } }, "to-buffer": { @@ -7400,11 +7324,12 @@ "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", "dev": true, "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "trim-newlines": { - "version": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", "dev": true }, @@ -7414,7 +7339,7 @@ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -7425,38 +7350,12 @@ "optional": true }, "type-check": { - "version": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "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" - } - }, - "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "2.1.18" - }, - "dependencies": { - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", - "dev": true - }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "dev": true, - "requires": { - "mime-db": "1.33.0" - } - } + "prelude-ls": "~1.1.2" } }, "typedarray": { @@ -7471,8 +7370,8 @@ "integrity": "sha512-hfIwuAQI5dlXP30UtdmWoYF9k+ypVqBXIdmd6ZKBiaNHHvA8ty7ZloMe3+7S5AEKVkxHbjByl4DfRHQ7QpZquw==", "dev": true, "requires": { - "commander": "2.12.2", - "source-map": "0.6.1" + "commander": "~2.12.1", + "source-map": "~0.6.1" }, "dependencies": { "source-map": { @@ -7509,7 +7408,8 @@ "dev": true }, "util-deprecate": { - "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, @@ -7526,12 +7426,13 @@ "dev": true }, "validate-npm-package-license": { - "version": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "version": "3.0.1", + "resolved": "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" + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" } }, "verror": { @@ -7540,9 +7441,9 @@ "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" + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" } }, "walk-sync": { @@ -7551,8 +7452,8 @@ "integrity": "sha1-VYoWrqyMDbWcAotzxm85doTs5GU=", "dev": true, "requires": { - "ensure-posix-path": "1.0.2", - "matcher-collection": "1.0.5" + "ensure-posix-path": "^1.0.0", + "matcher-collection": "^1.0.0" } }, "websocket-driver": { @@ -7561,8 +7462,8 @@ "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", "dev": true, "requires": { - "http-parser-js": "0.4.12", - "websocket-extensions": "0.1.3" + "http-parser-js": ">=0.4.0", + "websocket-extensions": ">=0.1.1" } }, "websocket-extensions": { @@ -7577,7 +7478,7 @@ "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-pm-runs": { @@ -7593,7 +7494,7 @@ "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" }, "dependencies": { "ansi-regex": { @@ -7614,7 +7515,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "number-is-nan": { @@ -7629,9 +7530,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "strip-ansi": { @@ -7640,7 +7541,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } } } @@ -7659,7 +7560,8 @@ "dev": true }, "wrappy": { - "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, @@ -7669,7 +7571,7 @@ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", "dev": true, "requires": { - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" }, "dependencies": { "minimist": { @@ -7689,6 +7591,12 @@ } } }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", @@ -7702,9 +7610,9 @@ "dev": true, "optional": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" }, "dependencies": { @@ -7723,7 +7631,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 19adfc24..a85bfdde 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "grunt-contrib-connect": "^1.0.2", "grunt-contrib-qunit": "^2.0.0", "grunt-contrib-uglify": "^3.2.1", - "grunt-contrib-watch": "^1.0.1", + "grunt-contrib-watch": "^1.1.0", "grunt-eslint": "^20.1.0", "grunt-git-describe": "^2.4.4", "grunt-istanbul": "^0.8.0", From f509f43472d3d126bcdd2dd55da34a5eea3b848c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B6rn=20Kvist?= <torbjorn.kvist@contextvision.se> Date: Fri, 18 May 2018 07:42:24 +0200 Subject: [PATCH 25/64] Change offset of clearRect. --- src/tile.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tile.js b/src/tile.js index de1eb40d..28977f7d 100644 --- a/src/tile.js +++ b/src/tile.js @@ -358,8 +358,8 @@ $.Tile.prototype = { context.clearRect( position.x + 1, position.y + 1, - size.x - 2, - size.y - 2 + size.x - 1, + size.y - 1 ); } From bbe34e0816d449b4599bfdf97bb836d7602b402a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B6rn=20Kvist?= <torbjorn.kvist@contextvision.se> Date: Mon, 4 Jun 2018 11:16:23 +0200 Subject: [PATCH 26/64] Remove offset for transparent tile. --- src/tile.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/tile.js b/src/tile.js index 28977f7d..aca41e1c 100644 --- a/src/tile.js +++ b/src/tile.js @@ -356,10 +356,10 @@ $.Tile.prototype = { //clearing only the inside of the rectangle occupied //by the png prevents edge flikering context.clearRect( - position.x + 1, - position.y + 1, - size.x - 1, - size.y - 1 + position.x, + position.y, + size.x, + size.y ); } From 3615ad412fbd01a989946f23ce121bd1aa3ce7d2 Mon Sep 17 00:00:00 2001 From: Nelson Campos <ncampos@criteriamarathon.com> Date: Wed, 6 Jun 2018 17:03:40 +0100 Subject: [PATCH 27/64] Adds some more tests and tries to solve some code bugs. A new variance parameter was added to assertPointsEquals function. Variance value was set on loopingTestHelper function (1e-15). The following tests were modified to execute tests on flipped viewport: * 'panBy' * 'panTo' * 'zoomBy with ref point' --- test/modules/viewport.js | 59 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/test/modules/viewport.js b/test/modules/viewport.js index abc1306f..2c03ced3 100644 --- a/test/modules/viewport.js +++ b/test/modules/viewport.js @@ -118,6 +118,7 @@ assert, actual, expected, + 1e-15, "Correctly converted coordinates " + orig ); } else { @@ -136,8 +137,8 @@ viewer.open(DZI_PATH); }; - function assertPointsEquals(assert, actual, expected, message) { - Util.assertPointsEquals(assert, actual, expected, 1e-15, message); + function assertPointsEquals(assert, actual, expected, variance, message) { + Util.assertPointsEquals(assert, actual, expected, variance, message); } // Tests start here. @@ -736,6 +737,19 @@ ); } + viewport = viewer.viewport; // Get viewport original state + viewport.setFlip(true); + + for (var i = 0; i < testPoints.length; i++){ + var expected = viewport.getCenter().plus(testPoints[i]); + viewport.panBy(testPoints[i], true); + assert.propEqual( + viewport.getCenter(), + expected, + "Panned flipped by the correct amount." + ); + } + done(); }; viewer.addHandler('open', openHandler); @@ -757,6 +771,18 @@ ); } + viewport = viewer.viewport; // Get viewport original state + viewport.setFlip(true); + + for (var i = 0; i < testPoints.length; i++){ + viewport.panTo(testPoints[i], true); + assert.propEqual( + viewport.getCenter(), + testPoints[i], + "Panned flipped to the correct location." + ); + } + done(); }; viewer.addHandler('open', openHandler); @@ -815,6 +841,34 @@ ); } + viewport = viewer.viewport; // Get viewport original state + viewport.setFlip(true); + + var expectedFlippedCenters = [ + new OpenSeadragon.Point(12.121, 11.871), + new OpenSeadragon.Point(14.117, 13.867), + new OpenSeadragon.Point(14.367, 13.867), + new OpenSeadragon.Point(14.367, 13.867), + new OpenSeadragon.Point(14.742, 14.242), + new OpenSeadragon.Point(14.742, 14.242), + ]; + + for (var i = 0; i < testZoomLevels.length; i++) { + viewport.zoomBy(testZoomLevels[i], testPoints[i], true); + assert.propEqual( + testZoomLevels[i], + viewport.getZoom(), + "Zoomed flipped by the correct amount." + ); + assertPointsEquals( + assert, + expectedFlippedCenters[i], + viewport.getCenter(), + 1e-6, + "Panned flipped to the correct location." + ); + } + done(); }; viewer.addHandler('open', openHandler); @@ -1179,4 +1233,5 @@ viewer.addHandler('open', openHandler); viewer.open(DZI_PATH); }); + })(); From 6a2cd1ff841c0f35f965427835a5a624f9e5fd2d Mon Sep 17 00:00:00 2001 From: Nelson Campos <ncampos@criteriamarathon.com> Date: Wed, 6 Jun 2018 17:56:37 +0100 Subject: [PATCH 28/64] Adds some more tests --- test/modules/viewport.js | 70 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/test/modules/viewport.js b/test/modules/viewport.js index 2c03ced3..6ea704c7 100644 --- a/test/modules/viewport.js +++ b/test/modules/viewport.js @@ -471,6 +471,21 @@ bounds, EPSILON, "Viewport.applyConstraints should move viewport."); + + viewport = viewer.viewport; // Get viewport original state + viewport.setFlip(true); + + viewport.fitBounds(new OpenSeadragon.Rect(1, 1, 1, 1), true); + viewport.visibilityRatio = 0.3; + viewport.applyConstraints(true); + var bounds = viewport.getBounds(); + Util.assertRectangleEquals( + assert, + new OpenSeadragon.Rect(0.7, 0.7, 1, 1), + bounds, + EPSILON, + "Viewport.applyConstraints should move flipped viewport."); + done(); }; viewer.addHandler('open', openHandler); @@ -515,6 +530,21 @@ new OpenSeadragon.Rect(1, 0, Math.sqrt(2), Math.sqrt(2), 45), EPSILON, "Viewport.applyConstraints with rotation should move viewport."); + + viewport = viewer.viewport; // Get viewport original state + viewport.setFlip(true); + + viewport.setRotation(45); + viewport.fitBounds(new OpenSeadragon.Rect(1, 1, 1, 1), true); + viewport.applyConstraints(true); + var bounds = viewport.getBounds(); + Util.assertRectangleEquals( + assert, + bounds, + new OpenSeadragon.Rect(1, 0, Math.sqrt(2), Math.sqrt(2), 45), + EPSILON, + "Viewport.applyConstraints flipped and with rotation should move viewport."); + done(); }; viewer.addHandler('open', openHandler); @@ -927,6 +957,34 @@ ); } + viewport = viewer.viewport; // Get viewport original state + viewport.setFlip(true); + + var expectedFlippedCenters = [ + new OpenSeadragon.Point(54.7205, 54.8705), + new OpenSeadragon.Point(54.471, 54.621), + new OpenSeadragon.Point(54.321, 54.621), + new OpenSeadragon.Point(54.566, 54.866), + new OpenSeadragon.Point(54.941, 55.241), + new OpenSeadragon.Point(54.941, 55.241), + ]; + + for (var i = 0; i < testZoomLevels.length; i++) { + viewport.zoomTo(testZoomLevels[i], testPoints[i], true); + assert.propEqual( + viewport.getZoom(), + testZoomLevels[i], + "Zoomed flipped to the correct level." + ); + assertPointsEquals( + assert, + viewport.getCenter(), + expectedFlippedCenters[i], + 1e-14, + "Panned flipped to the correct location." + ); + } + done(); }; viewer.addHandler('open', openHandler); @@ -944,6 +1002,16 @@ assert.propEqual(viewport.getRotation, 90, "Rotation should be 90 degrees"); viewport.setRotation(-75); assert.propEqual(viewport.getRotation, -75, "Rotation should be -75 degrees"); + + viewport = viewer.viewport; // Get viewport original state + viewport.setFlip(true); + + assert.propEqual(viewport.getRotation, 0, "Original rotation should be 0 degrees"); + viewport.setRotation(90); + assert.propEqual(viewport.getRotation, 90, "Rotation should be 90 degrees"); + viewport.setRotation(-75); + assert.propEqual(viewport.getRotation, -75, "Rotation should be -75 degrees"); + done(); }; @@ -1233,5 +1301,5 @@ viewer.addHandler('open', openHandler); viewer.open(DZI_PATH); }); - + })(); From 8f0711e26e5b85e8cfca8faa5719f7ede4c5728f Mon Sep 17 00:00:00 2001 From: Ian Gilman <ian@iangilman.com> Date: Wed, 6 Jun 2018 11:51:18 -0700 Subject: [PATCH 29/64] Changelog #1470 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 6b0f5458..a6471ab9 100644 --- a/changelog.txt +++ b/changelog.txt @@ -13,6 +13,7 @@ OPENSEADRAGON CHANGELOG * 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) * Fixed an issue causing the simple image tileSource to sometimes show duplicate copies (#1370) +* Fixed an issue causing seams to appear in semi-transparent PNG tiled images (#1470) 2.3.1: From 0023ae980166384e13d7adc6a3d6b00e76dc6749 Mon Sep 17 00:00:00 2001 From: Nelson Campos <ncampos@criteriamarathon.com> Date: Thu, 7 Jun 2018 11:41:45 +0100 Subject: [PATCH 30/64] Put flip tests out from the original tests in their own test cases --- test/modules/viewport.js | 128 +++++++++++++++++++++++++++++++-------- 1 file changed, 103 insertions(+), 25 deletions(-) diff --git a/test/modules/viewport.js b/test/modules/viewport.js index 6ea704c7..d820d5d6 100644 --- a/test/modules/viewport.js +++ b/test/modules/viewport.js @@ -472,7 +472,18 @@ EPSILON, "Viewport.applyConstraints should move viewport."); - viewport = viewer.viewport; // Get viewport original state + done(); + }; + viewer.addHandler('open', openHandler); + viewer.open(DZI_PATH); + }); + + QUnit.test('applyConstraints flipped', function(assert) { + var done = assert.async(); + var openHandler = function() { + viewer.removeHandler('open', openHandler); + var viewport = viewer.viewport; + viewport.setFlip(true); viewport.fitBounds(new OpenSeadragon.Rect(1, 1, 1, 1), true); @@ -531,10 +542,21 @@ EPSILON, "Viewport.applyConstraints with rotation should move viewport."); - viewport = viewer.viewport; // Get viewport original state - viewport.setFlip(true); + done(); + }; + viewer.addHandler('open', openHandler); + viewer.open(DZI_PATH); + }); + QUnit.test('applyConstraints flipped with rotation', function(assert) { + var done = assert.async(); + var openHandler = function() { + viewer.removeHandler('open', openHandler); + var viewport = viewer.viewport; + + viewport.setFlip(true); viewport.setRotation(45); + viewport.fitBounds(new OpenSeadragon.Rect(1, 1, 1, 1), true); viewport.applyConstraints(true); var bounds = viewport.getBounds(); @@ -767,7 +789,18 @@ ); } - viewport = viewer.viewport; // Get viewport original state + done(); + }; + viewer.addHandler('open', openHandler); + viewer.open(DZI_PATH); + }); + + QUnit.test('panBy flipped', function(assert) { + var done = assert.async(); + var openHandler = function(event) { + viewer.removeHandler('open', openHandler); + var viewport = viewer.viewport; + viewport.setFlip(true); for (var i = 0; i < testPoints.length; i++){ @@ -801,7 +834,18 @@ ); } - viewport = viewer.viewport; // Get viewport original state + done(); + }; + viewer.addHandler('open', openHandler); + viewer.open(DZI_PATH); + }); + + QUnit.test('panTo flipped', function(assert) { + var done = assert.async(); + var openHandler = function(event) { + viewer.removeHandler('open', openHandler); + var viewport = viewer.viewport; + viewport.setFlip(true); for (var i = 0; i < testPoints.length; i++){ @@ -871,16 +915,27 @@ ); } - viewport = viewer.viewport; // Get viewport original state + done(); + }; + viewer.addHandler('open', openHandler); + viewer.open(DZI_PATH); + }); + + QUnit.test('zoomBy flipped with ref point', function(assert) { + var done = assert.async(); + var openHandler = function(event) { + viewer.removeHandler('open', openHandler); + var viewport = viewer.viewport; + viewport.setFlip(true); var expectedFlippedCenters = [ - new OpenSeadragon.Point(12.121, 11.871), - new OpenSeadragon.Point(14.117, 13.867), - new OpenSeadragon.Point(14.367, 13.867), - new OpenSeadragon.Point(14.367, 13.867), - new OpenSeadragon.Point(14.742, 14.242), - new OpenSeadragon.Point(14.742, 14.242), + new OpenSeadragon.Point(5, 5), + new OpenSeadragon.Point(6.996, 6.996), + new OpenSeadragon.Point(7.246, 6.996), + new OpenSeadragon.Point(7.246, 6.996), + new OpenSeadragon.Point(7.621, 7.371), + new OpenSeadragon.Point(7.621, 7.371), ]; for (var i = 0; i < testZoomLevels.length; i++) { @@ -950,23 +1005,34 @@ ); assertPointsEquals( assert, - viewport.getCenter(), expectedCenters[i], + viewport.getCenter(), 1e-14, "Panned to the correct location." ); } - viewport = viewer.viewport; // Get viewport original state + done(); + }; + viewer.addHandler('open', openHandler); + viewer.open(DZI_PATH); + }); + + QUnit.test('zoomTo flipped with ref point', function(assert) { + var done = assert.async(); + var openHandler = function(event) { + viewer.removeHandler('open', openHandler); + var viewport = viewer.viewport; + viewport.setFlip(true); var expectedFlippedCenters = [ - new OpenSeadragon.Point(54.7205, 54.8705), - new OpenSeadragon.Point(54.471, 54.621), - new OpenSeadragon.Point(54.321, 54.621), - new OpenSeadragon.Point(54.566, 54.866), - new OpenSeadragon.Point(54.941, 55.241), - new OpenSeadragon.Point(54.941, 55.241), + new OpenSeadragon.Point(5, 5), + new OpenSeadragon.Point(4.7505, 4.7505), + new OpenSeadragon.Point(4.6005, 4.7505), + new OpenSeadragon.Point(4.8455, 4.9955), + new OpenSeadragon.Point(5.2205, 5.3705), + new OpenSeadragon.Point(5.2205, 5.3705), ]; for (var i = 0; i < testZoomLevels.length; i++) { @@ -978,8 +1044,8 @@ ); assertPointsEquals( assert, - viewport.getCenter(), expectedFlippedCenters[i], + viewport.getCenter(), 1e-14, "Panned flipped to the correct location." ); @@ -1003,14 +1069,26 @@ viewport.setRotation(-75); assert.propEqual(viewport.getRotation, -75, "Rotation should be -75 degrees"); - viewport = viewer.viewport; // Get viewport original state + done(); + }; + + viewer.addHandler('open', openHandler); + viewer.open(DZI_PATH); + }); + + QUnit.test('rotation (flipped)', function(assert){ + var done = assert.async(); + var openHandler = function(event) { + viewer.removeHandler('open', openHandler); + var viewport = viewer.viewport; + viewport.setFlip(true); - assert.propEqual(viewport.getRotation, 0, "Original rotation should be 0 degrees"); + assert.propEqual(viewport.getRotation, 0, "Original flipped rotation should be 0 degrees"); viewport.setRotation(90); - assert.propEqual(viewport.getRotation, 90, "Rotation should be 90 degrees"); + assert.propEqual(viewport.getRotation, 90, "Flipped rotation should be 90 degrees"); viewport.setRotation(-75); - assert.propEqual(viewport.getRotation, -75, "Rotation should be -75 degrees"); + assert.propEqual(viewport.getRotation, -75, "Flipped rotation should be -75 degrees"); done(); }; From cd0a4aee16c0435b4d4c4e98807c0d14e716d707 Mon Sep 17 00:00:00 2001 From: Ian Gilman <ian@iangilman.com> Date: Thu, 7 Jun 2018 09:50:52 -0700 Subject: [PATCH 31/64] Changelog for #1441 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index a6471ab9..9809f80b 100644 --- a/changelog.txt +++ b/changelog.txt @@ -4,6 +4,7 @@ OPENSEADRAGON CHANGELOG 2.4.0: (In Progress) * BREAKING CHANGE: Viewer's canvas-double-click event is now fired before it initiates the zoom (#1288) +* You can now flip the viewport to get a mirror image of the original (#1441) * You can now prevent canvas-double-click events from zooming on a per-event basis (#1288) * Fixed: Opacity 0 images were causing unnecessary redraws (#1319) * The "page" event is now fired after the page index has been updated (#1330) From 1024a2e1d890504a0b33fed003df9f13943cd8a5 Mon Sep 17 00:00:00 2001 From: Alan Aberdeen <alanaberdeen@gmail.com> Date: Wed, 13 Jun 2018 12:32:10 +0100 Subject: [PATCH 32/64] Documentation addition for viewer.world --- src/viewer.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/viewer.js b/src/viewer.js index 6092aedb..30111581 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -152,6 +152,11 @@ $.Viewer = function( options ) { * @memberof OpenSeadragon.Viewer# */ drawer: null, + /** + * Keeps track of all of the tiled images in the scene. + * @member {OpenSeadragon.Drawer} world + * @memberof OpenSeadragon.Viewer# + */ world: null, /** * Handles coordinate-related functionality - zoom, pan, rotation, etc. Created for each TileSource opened. From 002c1fcc6553a16f090d3cabd6d2a9e8a96016ad Mon Sep 17 00:00:00 2001 From: Alan Aberdeen <alanaberdeen@gmail.com> Date: Wed, 13 Jun 2018 20:11:26 +0100 Subject: [PATCH 33/64] Add documentation for .source on TiledImage --- src/tiledimage.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/tiledimage.js b/src/tiledimage.js index cc2c32d3..6fb68413 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -85,7 +85,11 @@ */ $.TiledImage = function( options ) { var _this = this; - + /** + * The {@link OpenSeadragon.TileSource} that defines this TiledImage. + * @member {OpenSeadragon.TileSource} source + * @memberof OpenSeadragon.TiledImage# + */ $.console.assert( options.tileCache, "[TiledImage] options.tileCache is required" ); $.console.assert( options.drawer, "[TiledImage] options.drawer is required" ); $.console.assert( options.viewer, "[TiledImage] options.viewer is required" ); From 99b7c3d2e592c667cc3add4993f2ba953f13b5d3 Mon Sep 17 00:00:00 2001 From: Alan Aberdeen <alanaberdeen@gmail.com> Date: Wed, 13 Jun 2018 20:15:51 +0100 Subject: [PATCH 34/64] Add documentation for source on Viewer --- src/viewer.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/viewer.js b/src/viewer.js index 30111581..200a18a5 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -145,6 +145,11 @@ $.Viewer = function( options ) { //These are originally not part options but declared as members //in initialize. It's still considered idiomatic to put them here + /** + * The {@link OpenSeadragon.TileSource} that defines the TiledImage. + * @member {OpenSeadragon.TileSource} source + * @memberof OpenSeadragon.TiledImage# + */ source: null, /** * Handles rendering of tiles in the viewer. Created for each TileSource opened. From 0c4eafb66946296a36d2cac1c9aefdd936d216bb Mon Sep 17 00:00:00 2001 From: Alan Aberdeen <alanaberdeen@gmail.com> Date: Wed, 13 Jun 2018 20:25:00 +0100 Subject: [PATCH 35/64] Revert "Add documentation for source on Viewer" This reverts commit 99b7c3d2e592c667cc3add4993f2ba953f13b5d3. --- src/viewer.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/viewer.js b/src/viewer.js index 200a18a5..30111581 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -145,11 +145,6 @@ $.Viewer = function( options ) { //These are originally not part options but declared as members //in initialize. It's still considered idiomatic to put them here - /** - * The {@link OpenSeadragon.TileSource} that defines the TiledImage. - * @member {OpenSeadragon.TileSource} source - * @memberof OpenSeadragon.TiledImage# - */ source: null, /** * Handles rendering of tiles in the viewer. Created for each TileSource opened. From 2a674843589456c63d06efc10aa5510714670ff7 Mon Sep 17 00:00:00 2001 From: Alan Aberdeen <alanaberdeen@gmail.com> Date: Wed, 13 Jun 2018 20:27:57 +0100 Subject: [PATCH 36/64] Add *correct* documentation for source on Viewer --- src/viewer.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/viewer.js b/src/viewer.js index 30111581..6327452d 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -145,6 +145,11 @@ $.Viewer = function( options ) { //These are originally not part options but declared as members //in initialize. It's still considered idiomatic to put them here + /** + * The {@link OpenSeadragon.TileSource} that defines the TiledImage. + * @member {OpenSeadragon.TileSource} source + * @memberof OpenSeadragon.Viewer# + */ source: null, /** * Handles rendering of tiles in the viewer. Created for each TileSource opened. From 6c2c5ba4988cd3ec16a5fd864734c2fbf99b3134 Mon Sep 17 00:00:00 2001 From: evilricio <mguedes@criteriamarathon.com> Date: Thu, 14 Jun 2018 17:38:30 +0100 Subject: [PATCH 37/64] Add CSS configuration options for the navigator minimap This patch adds CSS configuration options for the navigator minimap, namely: - background color - opacity - outside border color - display region border color If unspecified, the previous default values are kept as default as not to break previous implementations. --- src/navigator.js | 14 +++++++++----- src/openseadragon.js | 16 ++++++++++++++++ src/viewer.js | 4 ++++ 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/navigator.js b/src/navigator.js index 89562bcb..abce42d4 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -110,7 +110,11 @@ $.Navigator = function( options ){ animationTime: 0, autoResize: options.autoResize, // prevent resizing the navigator from adding unwanted space around the image - minZoomImageRatio: 1.0 + minZoomImageRatio: 1.0, + background: options.background, + opacity: options.opacity, + borderColor: options.borderColor, + displayRegionColor: options.displayRegionColor }); options.minPixelRatio = this.minPixelRatio = viewer.minPixelRatio; @@ -127,10 +131,10 @@ $.Navigator = function( options ){ if ( options.controlOptions.anchor != $.ControlAnchor.NONE ) { (function( style, borderWidth ){ style.margin = '0px'; - style.border = borderWidth + 'px solid #555'; + style.border = borderWidth + 'px solid ' + options.borderColor; style.padding = '0px'; - style.background = '#000'; - style.opacity = 0.8; + style.background = options.background; + style.opacity = options.opacity; style.overflow = 'hidden'; }( this.element.style, this.borderWidth)); } @@ -145,7 +149,7 @@ $.Navigator = function( options ){ style.left = '0px'; style.fontSize = '0px'; style.overflow = 'hidden'; - style.border = borderWidth + 'px solid #900'; + style.border = borderWidth + 'px solid ' + options.displayRegionColor; style.margin = '0px'; style.padding = '0px'; //TODO: IE doesnt like this property being set diff --git a/src/openseadragon.js b/src/openseadragon.js index ad2772b5..8f52b599 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -419,6 +419,18 @@ * @property {Boolean} [navigatorRotate=true] * If true, the navigator will be rotated together with the viewer. * + * @property {String} [navigatorBackground='#000'] + * Specifies the background color of the navigator minimap + * + * @property {Number} [navigatorOpacity=0.8] + * Specifies the opacity of the navigator minimap. + * + * @property {String} [navigatorBorderColor='#555'] + * Specifies the border color of the navigator minimap + * + * @property {String} [navigatorDisplayRegionColor='#900'] + * Specifies the border color of the display region rectangle of the navigator minimap + * * @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 @@ -1151,6 +1163,10 @@ function OpenSeadragon( options ){ navigatorAutoResize: true, navigatorAutoFade: true, navigatorRotate: true, + navigatorBackground: '#000', + navigatorOpacity: 0.8, + navigatorBorderColor: '#555', + navigatorDisplayRegionColor: '#900', // INITIAL ROTATION degrees: 0, diff --git a/src/viewer.js b/src/viewer.js index 6092aedb..a8706001 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -429,6 +429,10 @@ $.Viewer = function( options ) { prefixUrl: this.prefixUrl, viewer: this, navigatorRotate: this.navigatorRotate, + background: this.navigatorBackground, + opacity: this.navigatorOpacity, + borderColor: this.navigatorBorderColor, + displayRegionColor: this.navigatorDisplayRegionColor, crossOriginPolicy: this.crossOriginPolicy }); } From a691fbb37e89b8ea6b2d61531476cab327462583 Mon Sep 17 00:00:00 2001 From: Alan Aberdeen <alanaberdeen@gmail.com> Date: Thu, 14 Jun 2018 21:50:45 +0100 Subject: [PATCH 38/64] Add note that source in viewer.js is depreciated source is in viewer.js for backwards compatibility. It is not an official part of the API and should not be relied upon. --- src/viewer.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/viewer.js b/src/viewer.js index 6327452d..40373863 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -145,11 +145,8 @@ $.Viewer = function( options ) { //These are originally not part options but declared as members //in initialize. It's still considered idiomatic to put them here - /** - * The {@link OpenSeadragon.TileSource} that defines the TiledImage. - * @member {OpenSeadragon.TileSource} source - * @memberof OpenSeadragon.Viewer# - */ + //source is here for backwards compatibility. It is not an official + //part of the API and should not be relied upon. source: null, /** * Handles rendering of tiles in the viewer. Created for each TileSource opened. From c5085f92f5a0c663449e9452b38cbb11b45ed85c Mon Sep 17 00:00:00 2001 From: Ian Gilman <ian@iangilman.com> Date: Fri, 15 Jun 2018 13:17:35 -0700 Subject: [PATCH 39/64] Changelog for #1480 --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index 9809f80b..fae18ba3 100644 --- a/changelog.txt +++ b/changelog.txt @@ -15,6 +15,7 @@ OPENSEADRAGON CHANGELOG * Now supporting square edge tiles that are padded rather than cropped (#1426) * Fixed an issue causing the simple image tileSource to sometimes show duplicate copies (#1370) * Fixed an issue causing seams to appear in semi-transparent PNG tiled images (#1470) +* Added visual customization options for the navigator (#1480) 2.3.1: From 2eb6eaf52ff26ecae721fcd4f07e0efe93a62733 Mon Sep 17 00:00:00 2001 From: Francesco Cretti <francesco.cretti@gmail.com> Date: Wed, 20 Jun 2018 18:07:43 +0200 Subject: [PATCH 40/64] preventDefaultAction support --- src/navigator.js | 44 +++++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/src/navigator.js b/src/navigator.js index 392d9e15..944892d0 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -405,18 +405,14 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* * @function */ function onCanvasClick( event ) { - if (event.quick && this.viewer.viewport && (this.panVertical || this.panHorizontal)) { - var target = this.viewport.pointFromPixel(event.position); - if (!this.panVertical) { - // perform only horizonal pan - target.y = this.viewer.viewport.getCenter(true).y; - } else if (!this.panHorizontal) { - // perform only vertical pan - target.x = this.viewer.viewport.getCenter(true).x; - } - this.viewer.viewport.panTo(target); - this.viewer.viewport.applyConstraints(); - } + var canvasClickEventArgs = { + tracker: event.eventSource, + position: event.position, + quick: event.quick, + shift: event.shift, + originalEvent: event.originalEvent, + preventDefaultAction: event.preventDefaultAction + }; /** * Raised when a click event occurs on the {@link OpenSeadragon.Viewer#navigator} element. * @@ -430,14 +426,24 @@ function onCanvasClick( event ) { * @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. + * @property {Boolean} preventDefaultAction - Set to true to prevent default click to zoom behaviour. Default: false. */ - this.viewer.raiseEvent('navigator-click', { - tracker: event.eventSource, - position: event.position, - quick: event.quick, - shift: event.shift, - originalEvent: event.originalEvent - }); + + this.viewer.raiseEvent('navigator-click', canvasClickEventArgs); + + if ( !canvasClickEventArgs.preventDefaultAction && event.quick && this.viewer.viewport && (this.panVertical || this.panHorizontal)) { + var target = this.viewport.pointFromPixel(event.position); + if (!this.panVertical) { + // perform only horizonal pan + target.y = this.viewer.viewport.getCenter(true).y; + } else if (!this.panHorizontal) { + // perform only vertical pan + target.x = this.viewer.viewport.getCenter(true).x; + } + this.viewer.viewport.panTo(target); + this.viewer.viewport.applyConstraints(); + } + } /** From 02ddb7a2f7398ec1fa9faeb29fb39354d3b7bf0b Mon Sep 17 00:00:00 2001 From: Francesco Cretti <francesco.cretti@gmail.com> Date: Wed, 20 Jun 2018 18:45:38 +0200 Subject: [PATCH 41/64] preventDefaultAction in canvas-drag on minimap --- src/navigator.js | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/navigator.js b/src/navigator.js index 4c9848cf..6c05e3f7 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -417,8 +417,36 @@ function onCanvasClick( event ) { * @function */ function onCanvasDrag( event ) { - if ( this.viewer.viewport ) { - if( !this.panHorizontal ){ + var canvasDragEventArgs = { + tracker: event.eventSource, + position: event.position, + delta: event.delta, + speed: event.speed, + direction: event.direction, + shift: event.shift, + originalEvent: event.originalEvent, + preventDefaultAction: event.preventDefaultAction + }; + /** + * 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. + * @property {Boolean} preventDefaultAction - Set to true to prevent default click to zoom behaviour. Default: false. + */ + + this.viewer.raiseEvent('navigator-drag', canvasDragEventArgs); + + if ( !canvasDragEventArgs.preventDefaultAction && this.viewer.viewport ) { + if( !this.panHorizontal ){ event.delta.x = 0; } if( !this.panVertical ){ From 0bdc2df8ff3d68f3c83be1c8527a51c56013cd26 Mon Sep 17 00:00:00 2001 From: Francesco Cretti <francesco.cretti@gmail.com> Date: Tue, 26 Jun 2018 13:51:33 +0200 Subject: [PATCH 42/64] Documentations corrected --- src/navigator.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/navigator.js b/src/navigator.js index 6c05e3f7..c321fde1 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -430,13 +430,15 @@ function onCanvasDrag( event ) { /** * Raised when a click event occurs on the {@link OpenSeadragon.Viewer#navigator} element. * - * @event navigator-click + * @event navigator-drag * @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 {OpenSeadragon.Point} delta - The x,y components of the difference between start drag and end drag. + * @property {Number} speed - Current computed speed, in pixels per second. + * @property {Number} direction - Current computed direction, expressed as an angle counterclockwise relative to the positive X axis (-pi to pi, in radians). Only valid if speed > 0. * @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. From ed169086e79dc47d702720abd4ec29eb69a14c9f Mon Sep 17 00:00:00 2001 From: Francesco Cretti <francesco.cretti@gmail.com> Date: Tue, 26 Jun 2018 14:07:52 +0200 Subject: [PATCH 43/64] Doc minor fix and trailing space removed --- src/navigator.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/navigator.js b/src/navigator.js index c321fde1..d6847560 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -428,7 +428,7 @@ function onCanvasDrag( event ) { preventDefaultAction: event.preventDefaultAction }; /** - * Raised when a click event occurs on the {@link OpenSeadragon.Viewer#navigator} element. + * Raised when a drag event occurs on the {@link OpenSeadragon.Viewer#navigator} element. * * @event navigator-drag * @memberof OpenSeadragon.Viewer @@ -444,7 +444,6 @@ function onCanvasDrag( event ) { * @property {?Object} userData - Arbitrary subscriber-defined object. * @property {Boolean} preventDefaultAction - Set to true to prevent default click to zoom behaviour. Default: false. */ - this.viewer.raiseEvent('navigator-drag', canvasDragEventArgs); if ( !canvasDragEventArgs.preventDefaultAction && this.viewer.viewport ) { From e1bb9814a2004331ba22e4dfea249df562a86a23 Mon Sep 17 00:00:00 2001 From: Ian Gilman <ian@iangilman.com> Date: Fri, 29 Jun 2018 10:29:08 -0700 Subject: [PATCH 44/64] Changelog for #1484. --- changelog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.txt b/changelog.txt index fae18ba3..6f20568f 100644 --- a/changelog.txt +++ b/changelog.txt @@ -16,6 +16,7 @@ OPENSEADRAGON CHANGELOG * Fixed an issue causing the simple image tileSource to sometimes show duplicate copies (#1370) * Fixed an issue causing seams to appear in semi-transparent PNG tiled images (#1470) * Added visual customization options for the navigator (#1480) +* You can now prevent canvas-drag events on the navigator (#1484) 2.3.1: From 890d9bc5994808bfe2b98a061da0b4ecda7f1683 Mon Sep 17 00:00:00 2001 From: Ian Gilman <ian@iangilman.com> Date: Fri, 29 Jun 2018 10:37:27 -0700 Subject: [PATCH 45/64] Changelog for #1416. --- changelog.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/changelog.txt b/changelog.txt index 6f20568f..e2eceb7a 100644 --- a/changelog.txt +++ b/changelog.txt @@ -17,6 +17,8 @@ OPENSEADRAGON CHANGELOG * Fixed an issue causing seams to appear in semi-transparent PNG tiled images (#1470) * Added visual customization options for the navigator (#1480) * You can now prevent canvas-drag events on the navigator (#1484) +* You can now prevent canvas-click events on the navigator (#1416) +* The navigator can now be restricted to just horizontal or just vertical panning (#1416) 2.3.1: From 452e50c8d8780ecb2c866282ec1b819f076a0370 Mon Sep 17 00:00:00 2001 From: Ian Gilman <ian@iangilman.com> Date: Tue, 3 Jul 2018 09:40:10 -0700 Subject: [PATCH 46/64] Making the DziTileSource honor minLevel. --- src/dzitilesource.js | 4 ++++ src/tiledimage.js | 1 + 2 files changed, 5 insertions(+) diff --git a/src/dzitilesource.js b/src/dzitilesource.js index ec5ea9a9..ee862f0d 100644 --- a/src/dzitilesource.js +++ b/src/dzitilesource.js @@ -182,6 +182,10 @@ $.extend( $.DziTileSource.prototype, $.TileSource.prototype, /** @lends OpenSead yMax, i; + if ((this.minLevel && level < this.minLevel) || (this.maxLevel && level > this.maxLevel)) { + return false; + } + if ( !rects || !rects.length ) { return true; } diff --git a/src/tiledimage.js b/src/tiledimage.js index 6fb68413..563dfc89 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -972,6 +972,7 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag // Calculations for the interval of levels to draw // can return invalid intervals; fix that here if necessary + highestLevel = Math.max(highestLevel, this.source.minLevel); lowestLevel = Math.min(lowestLevel, highestLevel); return { lowestLevel: lowestLevel, From 071b8657651a0585b260b64aa356ca63c816463f Mon Sep 17 00:00:00 2001 From: Ian Gilman <ian@iangilman.com> Date: Fri, 6 Jul 2018 13:17:46 -0700 Subject: [PATCH 47/64] Tweaks to minLevel DZI patch --- changelog.txt | 3 ++- src/tiledimage.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/changelog.txt b/changelog.txt index e2eceb7a..302b3702 100644 --- a/changelog.txt +++ b/changelog.txt @@ -19,7 +19,8 @@ OPENSEADRAGON CHANGELOG * You can now prevent canvas-drag events on the navigator (#1484) * You can now prevent canvas-click events on the navigator (#1416) * The navigator can now be restricted to just horizontal or just vertical panning (#1416) - +* Fixed DziTileSource so it doesn't load levels above maxLevel or below minLevel, if set (#1492) + 2.3.1: * Debug mode now uses different colors for different tiled images (customizable via debugGridColor) (#1271) diff --git a/src/tiledimage.js b/src/tiledimage.js index 563dfc89..52012071 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -972,7 +972,7 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag // Calculations for the interval of levels to draw // can return invalid intervals; fix that here if necessary - highestLevel = Math.max(highestLevel, this.source.minLevel); + highestLevel = Math.max(highestLevel, this.source.minLevel || 0); lowestLevel = Math.min(lowestLevel, highestLevel); return { lowestLevel: lowestLevel, From 446af4dc94fada4bed502d45f4fa1d6d3dca1e56 Mon Sep 17 00:00:00 2001 From: Ian Gilman <ian@iangilman.com> Date: Fri, 20 Jul 2018 09:43:13 -0700 Subject: [PATCH 48/64] Version 2.4.0 --- changelog.txt | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog.txt b/changelog.txt index 302b3702..d7423941 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,7 +1,7 @@ OPENSEADRAGON CHANGELOG ======================= -2.4.0: (In Progress) +2.4.0: * BREAKING CHANGE: Viewer's canvas-double-click event is now fired before it initiates the zoom (#1288) * You can now flip the viewport to get a mirror image of the original (#1441) diff --git a/package.json b/package.json index a85bfdde..75a054cc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "openseadragon", - "version": "2.3.1", + "version": "2.4.0", "description": "Provides a smooth, zoomable user interface for HTML/Javascript.", "keywords": [ "image", From 1cdda569d5ad5541f85c39cc94a8f3e61ba80f05 Mon Sep 17 00:00:00 2001 From: Ian Gilman <ian@iangilman.com> Date: Fri, 20 Jul 2018 09:47:45 -0700 Subject: [PATCH 49/64] Started 2.4.1 --- changelog.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/changelog.txt b/changelog.txt index d7423941..e935148a 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,6 +1,8 @@ OPENSEADRAGON CHANGELOG ======================= +2.4.1: (In progress) + 2.4.0: * BREAKING CHANGE: Viewer's canvas-double-click event is now fired before it initiates the zoom (#1288) From 19f7b80dca70fafc8d43733cfa229aae4507264b Mon Sep 17 00:00:00 2001 From: Peter <jetic@gmx.net> Date: Mon, 30 Jul 2018 20:00:58 -0400 Subject: [PATCH 50/64] Added switch to smoothly or unsmoothly render images on the canvas: imageSmoothingEnabled (true (default), false). Medical images can thus be displayed in more pixelated, unsmoothed manner. --- src/drawer.js | 13 ++++++++++--- src/navigator.js | 10 ++++++++++ src/openseadragon.js | 5 +++++ src/tiledimage.js | 42 +++++++++++++++++++++++++++++++++++++++--- src/viewer.js | 5 +++++ 5 files changed, 69 insertions(+), 6 deletions(-) diff --git a/src/drawer.js b/src/drawer.js index fbf66a76..863f363b 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -300,12 +300,13 @@ $.Drawer.prototype = { * @param {Float} [scale=1] - Apply a scale to tile position and size. Defaults to 1. * @param {OpenSeadragon.Point} [translate] A translation vector to offset tile position */ - drawTile: function(tile, drawingHandler, useSketch, scale, translate) { + drawTile: function(tile, drawingHandler, useSketch, scale, translate, imageSmoothingEnabled) { $.console.assert(tile, '[Drawer.drawTile] tile is required'); $.console.assert(drawingHandler, '[Drawer.drawTile] drawingHandler is required'); if (this.useCanvas) { var context = this._getContext(useSketch); + context.imageSmoothingEnabled = imageSmoothingEnabled; scale = scale || 1; tile.drawCanvas(context, drawingHandler, scale, translate); } else { @@ -399,18 +400,22 @@ $.Drawer.prototype = { * @param {String} [options.compositeOperation] - How the image is * composited onto other images; see compositeOperation in * {@link OpenSeadragon.Options} for possible values. + * @param {Boolean} [options.imageSmoothingEnabled] - Wether or not the image is + * drawn smoothly on the canvas; see imageSmoothingEnabled in + * {@link OpenSeadragon.Options} for more explanation. * @param {OpenSeadragon.Rect} [options.bounds] The part of the sketch * canvas to blend in the main canvas. If specified, options.scale and * options.translate get ignored. */ - blendSketch: function(opacity, scale, translate, compositeOperation) { + blendSketch: function(opacity, scale, translate, compositeOperation, imageSmoothingEnabled) { var options = opacity; if (!$.isPlainObject(options)) { options = { opacity: opacity, scale: scale, translate: translate, - compositeOperation: compositeOperation + compositeOperation: compositeOperation, + imageSmoothingEnabled: imageSmoothingEnabled }; } if (!this.useCanvas || !this.sketchCanvas) { @@ -418,10 +423,12 @@ $.Drawer.prototype = { } opacity = options.opacity; compositeOperation = options.compositeOperation; + imageSmoothingEnabled = options.imageSmoothingEnabled; var bounds = options.bounds; this.context.save(); this.context.globalAlpha = opacity; + this.context.imageSmoothingEnabled = imageSmoothingEnabled; if (compositeOperation) { this.context.globalCompositeOperation = compositeOperation; } diff --git a/src/navigator.js b/src/navigator.js index c1bfc6f1..1e0836f4 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -377,10 +377,15 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* _this._matchCompositeOperation(myItem, original); } + function matchImageSmoothingEnabled() { + _this._matchImageSmoothingEnabled(myItem, original); + } + original.addHandler('bounds-change', matchBounds); original.addHandler('clip-change', matchBounds); original.addHandler('opacity-change', matchOpacity); original.addHandler('composite-operation-change', matchCompositeOperation); + original.addHandler('image-rendering-change', matchImageSmoothingEnabled); } }); @@ -418,6 +423,11 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* // private _matchCompositeOperation: function(myItem, theirItem) { myItem.setCompositeOperation(theirItem.compositeOperation); + }, + + // private + _matchImageSmoothingEnabled: function(myItem, theirItem) { + myItem.setImageSmoothingEnabled(theirItem.imageSmoothingEnabled); } }); diff --git a/src/openseadragon.js b/src/openseadragon.js index 8f52b599..8a8ad9ad 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -198,6 +198,10 @@ * 'destination-over', 'destination-atop', 'destination-in', * 'destination-out', 'lighter', 'copy' or 'xor' * + * @property {Boolean} [imageSmoothingEnabled=true] + * Image smoothing for canvas rendering (only if canvas is used). Not every browser + * is compatible with this option. Valid values are true (default) and false. + * * @property {String|CanvasGradient|CanvasPattern|Function} [placeholderFillStyle=null] * Draws a colored rectangle behind the tile if it is not loaded yet. * You can pass a CSS color value like "#FF8800". @@ -1178,6 +1182,7 @@ function OpenSeadragon( options ){ opacity: 1, preload: false, compositeOperation: null, + imageSmoothingEnabled: true, placeholderFillStyle: null, //REFERENCE STRIP SETTINGS diff --git a/src/tiledimage.js b/src/tiledimage.js index 52012071..4e86b073 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -73,6 +73,7 @@ * @param {Number} [options.opacity=1] - Set to draw at proportional opacity. If zero, images will not draw. * @param {Boolean} [options.preload=false] - Set true to load even when the image is hidden by zero opacity. * @param {String} [options.compositeOperation] - How the image is composited onto other images; see compositeOperation in {@link OpenSeadragon.Options} for possible values. + * @param {Boolean} [options.imageSmoothingEnabled] - How the image is rendered on the canvas; see imageSmoothingEnabled in {@link OpenSeadragon.Options} for more explanation. * @param {Boolean} [options.debugMode] - See {@link OpenSeadragon.Options}. * @param {String|CanvasGradient|CanvasPattern|Function} [options.placeholderFillStyle] - See {@link OpenSeadragon.Options}. * @param {String|Boolean} [options.crossOriginPolicy] - See {@link OpenSeadragon.Options}. @@ -177,7 +178,8 @@ $.TiledImage = function( options ) { placeholderFillStyle: $.DEFAULT_SETTINGS.placeholderFillStyle, opacity: $.DEFAULT_SETTINGS.opacity, preload: $.DEFAULT_SETTINGS.preload, - compositeOperation: $.DEFAULT_SETTINGS.compositeOperation + compositeOperation: $.DEFAULT_SETTINGS.compositeOperation, + imageSmoothingEnabled: $.DEFAULT_SETTINGS.imageSmoothingEnabled }, options ); this._preload = this.preload; @@ -899,6 +901,39 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag }); }, + /** + * @returns {Boolean} Weather of not the current TiledImage is smoothed on the canvas. + */ + getImageSmoothingEnabled: function() { + return this.imageSmoothingEnabled; + }, + + /** + * @param {Boolean} imageSmoothingEnabled if the tiled image should be drawn smoothly or not. + * @fires OpenSeadragon.TiledImage.event:image-rendering-change + */ + setImageSmoothingEnabled: function(imageSmoothingEnabled) { + if (imageSmoothingEnabled === this.imageSmoothingEnabled) { + return; + } + + this.imageSmoothingEnabled = imageSmoothingEnabled; + this._needsDraw = true; + /** + * Raised when the TiledImage's rendering option has changed. + * @event image-rendering-change + * @memberOf OpenSeadragon.TiledImage + * @type {object} + * @property {Boolean} imageSmoothingEnabled - The new image smoothing value (true or false). + * @property {OpenSeadragon.TiledImage} eventSource - A reference to the + * TiledImage which raised the event. + * @property {?Object} userData - Arbitrary subscriber-defined object. + */ + this.raiseEvent('image-rendering-change', { + imageSmoothingEnabled: this.imageSmoothingEnabled + }); + }, + // private _setScale: function(scale, immediately) { var sameTarget = (this._scaleSpring.target.value === scale); @@ -1945,8 +1980,8 @@ function drawTiles( tiledImage, lastDrawn ) { } for (var i = lastDrawn.length - 1; i >= 0; i--) { - tile = lastDrawn[ i ]; - tiledImage._drawer.drawTile( tile, tiledImage._drawingHandler, useSketch, sketchScale, sketchTranslate ); + tile = lastDrawn[i]; + tiledImage._drawer.drawTile(tile, tiledImage._drawingHandler, useSketch, sketchScale, sketchTranslate, tiledImage.imageSmoothingEnabled); tile.beingDrawn = true; if( tiledImage.viewer ){ @@ -2007,6 +2042,7 @@ function drawTiles( tiledImage, lastDrawn ) { scale: sketchScale, translate: sketchTranslate, compositeOperation: tiledImage.compositeOperation, + imageSmoothingEnabled: tiledImage.imageSmoothingEnabled, bounds: bounds }); if (sketchScale) { diff --git a/src/viewer.js b/src/viewer.js index c9bc2c99..3f299af9 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -1265,6 +1265,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, * @param {Number} [options.degrees=0] Initial rotation of the tiled image around * its top left corner in degrees. * @param {String} [options.compositeOperation] How the image is composited onto other images. + * @param {String} [options.imageSmoothingEnabled] If the image is drawn smoothly or not on the canvas. * @param {String} [options.crossOriginPolicy] The crossOriginPolicy for this specific image, * overriding viewer.crossOriginPolicy. * @param {Boolean} [options.ajaxWithCredentials] Whether to set withCredentials on tile AJAX @@ -1314,6 +1315,9 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, if (options.compositeOperation === undefined) { options.compositeOperation = this.compositeOperation; } + if (options.imageSmoothingEnabled === undefined) { + options.imageSmoothingEnabled = this.imageSmoothingEnabled; + } if (options.crossOriginPolicy === undefined) { options.crossOriginPolicy = options.tileSource.crossOriginPolicy !== undefined ? options.tileSource.crossOriginPolicy : this.crossOriginPolicy; } @@ -1427,6 +1431,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, preload: queueItem.options.preload, degrees: queueItem.options.degrees, compositeOperation: queueItem.options.compositeOperation, + imageSmoothingEnabled: queueItem.options.imageSmoothingEnabled, springStiffness: _this.springStiffness, animationTime: _this.animationTime, minZoomImageRatio: _this.minZoomImageRatio, From 17e25c0428e20dda5b373527595b67048c851391 Mon Sep 17 00:00:00 2001 From: Peter <jetic@gmx.net> Date: Fri, 3 Aug 2018 17:29:48 -0400 Subject: [PATCH 51/64] Revert "Added switch to smoothly or unsmoothly render images on the canvas: imageSmoothingEnabled (true (default), false). Medical images can thus be displayed in more pixelated, unsmoothed manner." This reverts commit 19f7b80dca70fafc8d43733cfa229aae4507264b. --- src/drawer.js | 13 +++---------- src/navigator.js | 10 ---------- src/openseadragon.js | 5 ----- src/tiledimage.js | 42 +++--------------------------------------- src/viewer.js | 5 ----- 5 files changed, 6 insertions(+), 69 deletions(-) diff --git a/src/drawer.js b/src/drawer.js index 863f363b..fbf66a76 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -300,13 +300,12 @@ $.Drawer.prototype = { * @param {Float} [scale=1] - Apply a scale to tile position and size. Defaults to 1. * @param {OpenSeadragon.Point} [translate] A translation vector to offset tile position */ - drawTile: function(tile, drawingHandler, useSketch, scale, translate, imageSmoothingEnabled) { + drawTile: function(tile, drawingHandler, useSketch, scale, translate) { $.console.assert(tile, '[Drawer.drawTile] tile is required'); $.console.assert(drawingHandler, '[Drawer.drawTile] drawingHandler is required'); if (this.useCanvas) { var context = this._getContext(useSketch); - context.imageSmoothingEnabled = imageSmoothingEnabled; scale = scale || 1; tile.drawCanvas(context, drawingHandler, scale, translate); } else { @@ -400,22 +399,18 @@ $.Drawer.prototype = { * @param {String} [options.compositeOperation] - How the image is * composited onto other images; see compositeOperation in * {@link OpenSeadragon.Options} for possible values. - * @param {Boolean} [options.imageSmoothingEnabled] - Wether or not the image is - * drawn smoothly on the canvas; see imageSmoothingEnabled in - * {@link OpenSeadragon.Options} for more explanation. * @param {OpenSeadragon.Rect} [options.bounds] The part of the sketch * canvas to blend in the main canvas. If specified, options.scale and * options.translate get ignored. */ - blendSketch: function(opacity, scale, translate, compositeOperation, imageSmoothingEnabled) { + blendSketch: function(opacity, scale, translate, compositeOperation) { var options = opacity; if (!$.isPlainObject(options)) { options = { opacity: opacity, scale: scale, translate: translate, - compositeOperation: compositeOperation, - imageSmoothingEnabled: imageSmoothingEnabled + compositeOperation: compositeOperation }; } if (!this.useCanvas || !this.sketchCanvas) { @@ -423,12 +418,10 @@ $.Drawer.prototype = { } opacity = options.opacity; compositeOperation = options.compositeOperation; - imageSmoothingEnabled = options.imageSmoothingEnabled; var bounds = options.bounds; this.context.save(); this.context.globalAlpha = opacity; - this.context.imageSmoothingEnabled = imageSmoothingEnabled; if (compositeOperation) { this.context.globalCompositeOperation = compositeOperation; } diff --git a/src/navigator.js b/src/navigator.js index 1e0836f4..c1bfc6f1 100644 --- a/src/navigator.js +++ b/src/navigator.js @@ -377,15 +377,10 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* _this._matchCompositeOperation(myItem, original); } - function matchImageSmoothingEnabled() { - _this._matchImageSmoothingEnabled(myItem, original); - } - original.addHandler('bounds-change', matchBounds); original.addHandler('clip-change', matchBounds); original.addHandler('opacity-change', matchOpacity); original.addHandler('composite-operation-change', matchCompositeOperation); - original.addHandler('image-rendering-change', matchImageSmoothingEnabled); } }); @@ -423,11 +418,6 @@ $.extend( $.Navigator.prototype, $.EventSource.prototype, $.Viewer.prototype, /* // private _matchCompositeOperation: function(myItem, theirItem) { myItem.setCompositeOperation(theirItem.compositeOperation); - }, - - // private - _matchImageSmoothingEnabled: function(myItem, theirItem) { - myItem.setImageSmoothingEnabled(theirItem.imageSmoothingEnabled); } }); diff --git a/src/openseadragon.js b/src/openseadragon.js index 8a8ad9ad..8f52b599 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -198,10 +198,6 @@ * 'destination-over', 'destination-atop', 'destination-in', * 'destination-out', 'lighter', 'copy' or 'xor' * - * @property {Boolean} [imageSmoothingEnabled=true] - * Image smoothing for canvas rendering (only if canvas is used). Not every browser - * is compatible with this option. Valid values are true (default) and false. - * * @property {String|CanvasGradient|CanvasPattern|Function} [placeholderFillStyle=null] * Draws a colored rectangle behind the tile if it is not loaded yet. * You can pass a CSS color value like "#FF8800". @@ -1182,7 +1178,6 @@ function OpenSeadragon( options ){ opacity: 1, preload: false, compositeOperation: null, - imageSmoothingEnabled: true, placeholderFillStyle: null, //REFERENCE STRIP SETTINGS diff --git a/src/tiledimage.js b/src/tiledimage.js index 4e86b073..52012071 100644 --- a/src/tiledimage.js +++ b/src/tiledimage.js @@ -73,7 +73,6 @@ * @param {Number} [options.opacity=1] - Set to draw at proportional opacity. If zero, images will not draw. * @param {Boolean} [options.preload=false] - Set true to load even when the image is hidden by zero opacity. * @param {String} [options.compositeOperation] - How the image is composited onto other images; see compositeOperation in {@link OpenSeadragon.Options} for possible values. - * @param {Boolean} [options.imageSmoothingEnabled] - How the image is rendered on the canvas; see imageSmoothingEnabled in {@link OpenSeadragon.Options} for more explanation. * @param {Boolean} [options.debugMode] - See {@link OpenSeadragon.Options}. * @param {String|CanvasGradient|CanvasPattern|Function} [options.placeholderFillStyle] - See {@link OpenSeadragon.Options}. * @param {String|Boolean} [options.crossOriginPolicy] - See {@link OpenSeadragon.Options}. @@ -178,8 +177,7 @@ $.TiledImage = function( options ) { placeholderFillStyle: $.DEFAULT_SETTINGS.placeholderFillStyle, opacity: $.DEFAULT_SETTINGS.opacity, preload: $.DEFAULT_SETTINGS.preload, - compositeOperation: $.DEFAULT_SETTINGS.compositeOperation, - imageSmoothingEnabled: $.DEFAULT_SETTINGS.imageSmoothingEnabled + compositeOperation: $.DEFAULT_SETTINGS.compositeOperation }, options ); this._preload = this.preload; @@ -901,39 +899,6 @@ $.extend($.TiledImage.prototype, $.EventSource.prototype, /** @lends OpenSeadrag }); }, - /** - * @returns {Boolean} Weather of not the current TiledImage is smoothed on the canvas. - */ - getImageSmoothingEnabled: function() { - return this.imageSmoothingEnabled; - }, - - /** - * @param {Boolean} imageSmoothingEnabled if the tiled image should be drawn smoothly or not. - * @fires OpenSeadragon.TiledImage.event:image-rendering-change - */ - setImageSmoothingEnabled: function(imageSmoothingEnabled) { - if (imageSmoothingEnabled === this.imageSmoothingEnabled) { - return; - } - - this.imageSmoothingEnabled = imageSmoothingEnabled; - this._needsDraw = true; - /** - * Raised when the TiledImage's rendering option has changed. - * @event image-rendering-change - * @memberOf OpenSeadragon.TiledImage - * @type {object} - * @property {Boolean} imageSmoothingEnabled - The new image smoothing value (true or false). - * @property {OpenSeadragon.TiledImage} eventSource - A reference to the - * TiledImage which raised the event. - * @property {?Object} userData - Arbitrary subscriber-defined object. - */ - this.raiseEvent('image-rendering-change', { - imageSmoothingEnabled: this.imageSmoothingEnabled - }); - }, - // private _setScale: function(scale, immediately) { var sameTarget = (this._scaleSpring.target.value === scale); @@ -1980,8 +1945,8 @@ function drawTiles( tiledImage, lastDrawn ) { } for (var i = lastDrawn.length - 1; i >= 0; i--) { - tile = lastDrawn[i]; - tiledImage._drawer.drawTile(tile, tiledImage._drawingHandler, useSketch, sketchScale, sketchTranslate, tiledImage.imageSmoothingEnabled); + tile = lastDrawn[ i ]; + tiledImage._drawer.drawTile( tile, tiledImage._drawingHandler, useSketch, sketchScale, sketchTranslate ); tile.beingDrawn = true; if( tiledImage.viewer ){ @@ -2042,7 +2007,6 @@ function drawTiles( tiledImage, lastDrawn ) { scale: sketchScale, translate: sketchTranslate, compositeOperation: tiledImage.compositeOperation, - imageSmoothingEnabled: tiledImage.imageSmoothingEnabled, bounds: bounds }); if (sketchScale) { diff --git a/src/viewer.js b/src/viewer.js index 3f299af9..c9bc2c99 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -1265,7 +1265,6 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, * @param {Number} [options.degrees=0] Initial rotation of the tiled image around * its top left corner in degrees. * @param {String} [options.compositeOperation] How the image is composited onto other images. - * @param {String} [options.imageSmoothingEnabled] If the image is drawn smoothly or not on the canvas. * @param {String} [options.crossOriginPolicy] The crossOriginPolicy for this specific image, * overriding viewer.crossOriginPolicy. * @param {Boolean} [options.ajaxWithCredentials] Whether to set withCredentials on tile AJAX @@ -1315,9 +1314,6 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, if (options.compositeOperation === undefined) { options.compositeOperation = this.compositeOperation; } - if (options.imageSmoothingEnabled === undefined) { - options.imageSmoothingEnabled = this.imageSmoothingEnabled; - } if (options.crossOriginPolicy === undefined) { options.crossOriginPolicy = options.tileSource.crossOriginPolicy !== undefined ? options.tileSource.crossOriginPolicy : this.crossOriginPolicy; } @@ -1431,7 +1427,6 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, preload: queueItem.options.preload, degrees: queueItem.options.degrees, compositeOperation: queueItem.options.compositeOperation, - imageSmoothingEnabled: queueItem.options.imageSmoothingEnabled, springStiffness: _this.springStiffness, animationTime: _this.animationTime, minZoomImageRatio: _this.minZoomImageRatio, From 9968025782997455fb1068f28a2e40110f9fdecb Mon Sep 17 00:00:00 2001 From: Peter <jetic@gmx.net> Date: Fri, 3 Aug 2018 18:47:16 -0400 Subject: [PATCH 52/64] Simplified imageSmoothingEnabled Option. The option can be set during viewer creation and also later with the function viewer.drawer.setImageSmoothingEnabled(). --- src/drawer.js | 22 ++++++++++++++++++++++ src/openseadragon.js | 6 ++++++ src/viewer.js | 6 ++++++ 3 files changed, 34 insertions(+) diff --git a/src/drawer.js b/src/drawer.js index fbf66a76..be3a73b7 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -600,6 +600,28 @@ $.Drawer.prototype = { } }, + + /** + * Turns image smoothing on or off for this viewer. Note: Ignored in some (especially older) browsers that do not support this property. + * + * @function + * @param {Boolean} [imageSmoothingEnabled] - Whether or not the image is + * drawn smoothly on the canvas; see imageSmoothingEnabled in + * {@link OpenSeadragon.Options} for more explanation. + */ + setImageSmoothingEnabled: function(imageSmoothingEnabled){ + if ( this.useCanvas ) { + this.context.mozImageSmoothingEnabled = imageSmoothingEnabled; + this.context.webkitImageSmoothingEnabled = imageSmoothingEnabled; + this.context.msImageSmoothingEnabled = imageSmoothingEnabled; + this.context.imageSmoothingEnabled = imageSmoothingEnabled; + + this.context.restore(); + + this.viewer.world.draw(); + } + }, + /** * Get the canvas size * @param {Boolean} sketch If set to true return the size of the sketch canvas diff --git a/src/openseadragon.js b/src/openseadragon.js index 8f52b599..77616346 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -198,6 +198,11 @@ * 'destination-over', 'destination-atop', 'destination-in', * 'destination-out', 'lighter', 'copy' or 'xor' * + * @property {Boolean} [imageSmoothingEnabled=true] + * Image smoothing for canvas rendering (only if canvas is used). Note: Ignored + * by some (especially older) browsers which do not support this canvas property. + * This property can be changed in {@link Viewer.Drawer.setImageSmoothingEnabled}. + * * @property {String|CanvasGradient|CanvasPattern|Function} [placeholderFillStyle=null] * Draws a colored rectangle behind the tile if it is not loaded yet. * You can pass a CSS color value like "#FF8800". @@ -1178,6 +1183,7 @@ function OpenSeadragon( options ){ opacity: 1, preload: false, compositeOperation: null, + imageSmoothingEnabled: true, placeholderFillStyle: null, //REFERENCE STRIP SETTINGS diff --git a/src/viewer.js b/src/viewer.js index c9bc2c99..2ccea983 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -466,6 +466,12 @@ $.Viewer = function( options ) { $.requestAnimationFrame( function(){ beginControlsAutoHide( _this ); } ); + + // Initial canvas options + if ( this.imageSmoothingEnabled !== undefined && !this.imageSmoothingEnabled){ + this.drawer.setImageSmoothingEnabled(this.imageSmoothingEnabled); + } + }; $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, /** @lends OpenSeadragon.Viewer.prototype */{ From d892dcfbc7436571633892a0510784d90c0f9e73 Mon Sep 17 00:00:00 2001 From: Peter <jetic@gmx.net> Date: Wed, 8 Aug 2018 20:05:46 -0400 Subject: [PATCH 53/64] Repaired Minor issues --- src/drawer.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/drawer.js b/src/drawer.js index be3a73b7..24023c84 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -611,14 +611,16 @@ $.Drawer.prototype = { */ setImageSmoothingEnabled: function(imageSmoothingEnabled){ if ( this.useCanvas ) { - this.context.mozImageSmoothingEnabled = imageSmoothingEnabled; - this.context.webkitImageSmoothingEnabled = imageSmoothingEnabled; - this.context.msImageSmoothingEnabled = imageSmoothingEnabled; - this.context.imageSmoothingEnabled = imageSmoothingEnabled; + var context = this.context; + context.save(); + context.mozImageSmoothingEnabled = imageSmoothingEnabled; + context.webkitImageSmoothingEnabled = imageSmoothingEnabled; + context.msImageSmoothingEnabled = imageSmoothingEnabled; + context.imageSmoothingEnabled = imageSmoothingEnabled; - this.context.restore(); + context.restore(); - this.viewer.world.draw(); + this.viewer.forceRedraw(); } }, From 9511cf2d00e0b7fa995259824a5c346f6e38050c Mon Sep 17 00:00:00 2001 From: Peter <jetic@gmx.net> Date: Fri, 10 Aug 2018 03:46:25 -0400 Subject: [PATCH 54/64] Removed save/restore for canvas --- src/drawer.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/drawer.js b/src/drawer.js index 24023c84..f3ecada4 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -612,14 +612,11 @@ $.Drawer.prototype = { setImageSmoothingEnabled: function(imageSmoothingEnabled){ if ( this.useCanvas ) { var context = this.context; - context.save(); context.mozImageSmoothingEnabled = imageSmoothingEnabled; context.webkitImageSmoothingEnabled = imageSmoothingEnabled; context.msImageSmoothingEnabled = imageSmoothingEnabled; context.imageSmoothingEnabled = imageSmoothingEnabled; - context.restore(); - this.viewer.forceRedraw(); } }, From b055f6fe5409669160a0183d14e0ee8894ff85d2 Mon Sep 17 00:00:00 2001 From: Fabien Rohman <fabien.rohman@geotoolkit.net> Date: Fri, 10 Aug 2018 10:23:33 +0200 Subject: [PATCH 55/64] Fix issue #1504 --- package-lock.json | 75 +++++++++++++++++++------- src/viewer.js | 5 +- test/demo/customnavigatorlocation.html | 43 +++++++++++++++ 3 files changed, 102 insertions(+), 21 deletions(-) create mode 100644 test/demo/customnavigatorlocation.html diff --git a/package-lock.json b/package-lock.json index 00b3285f..f9bcc1ed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "openseadragon", - "version": "2.3.1", + "version": "2.4.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2150,6 +2150,7 @@ "version": "2.2.4", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, "requires": { "is-number": "^2.1.0", "isobject": "^2.0.0", @@ -2475,6 +2476,7 @@ "version": "0.0.9", "bundled": true, "dev": true, + "optional": true, "requires": { "inherits": "~2.0.0" } @@ -2499,7 +2501,8 @@ "buffer-shims": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "caseless": { "version": "0.12.0", @@ -2516,12 +2519,14 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "combined-stream": { "version": "1.0.5", "bundled": true, "dev": true, + "optional": true, "requires": { "delayed-stream": "~1.0.0" } @@ -2534,17 +2539,20 @@ "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "cryptiles": { "version": "2.0.5", "bundled": true, "dev": true, + "optional": true, "requires": { "boom": "2.x.x" } @@ -2584,7 +2592,8 @@ "delayed-stream": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "delegates": { "version": "1.0.0", @@ -2616,7 +2625,8 @@ "extsprintf": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "forever-agent": { "version": "0.6.1", @@ -2739,6 +2749,7 @@ "version": "3.1.3", "bundled": true, "dev": true, + "optional": true, "requires": { "boom": "2.x.x", "cryptiles": "2.x.x", @@ -2786,6 +2797,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2799,7 +2811,8 @@ "isarray": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "isstream": { "version": "0.1.2", @@ -2872,12 +2885,14 @@ "mime-db": { "version": "1.27.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "mime-types": { "version": "2.1.15", "bundled": true, "dev": true, + "optional": true, "requires": { "mime-db": "~1.27.0" } @@ -2953,7 +2968,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "oauth-sign": { "version": "0.8.2", @@ -3011,7 +3027,8 @@ "process-nextick-args": { "version": "1.0.7", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "punycode": { "version": "1.4.1", @@ -3049,6 +3066,7 @@ "version": "2.2.9", "bundled": true, "dev": true, + "optional": true, "requires": { "buffer-shims": "~1.0.0", "core-util-is": "~1.0.0", @@ -3100,7 +3118,8 @@ "safe-buffer": { "version": "5.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "semver": { "version": "5.3.0", @@ -3124,6 +3143,7 @@ "version": "1.0.9", "bundled": true, "dev": true, + "optional": true, "requires": { "hoek": "2.x.x" } @@ -3157,6 +3177,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3167,6 +3188,7 @@ "version": "1.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.0.1" } @@ -3195,6 +3217,7 @@ "version": "2.2.1", "bundled": true, "dev": true, + "optional": true, "requires": { "block-stream": "*", "fstream": "^1.0.2", @@ -3250,7 +3273,8 @@ "util-deprecate": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "uuid": { "version": "3.0.1", @@ -5077,7 +5101,8 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true }, "is-builtin-module": { "version": "1.0.0", @@ -5143,6 +5168,7 @@ "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.0.2" } @@ -5222,7 +5248,8 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "isexe": { "version": "2.0.0", @@ -5234,6 +5261,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, "requires": { "isarray": "1.0.0" } @@ -5386,6 +5414,7 @@ "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.5" } @@ -5485,7 +5514,8 @@ "math-random": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true }, "maxmin": { "version": "1.1.0", @@ -6396,6 +6426,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", + "dev": true, "requires": { "is-number": "^4.0.0", "kind-of": "^6.0.0", @@ -6405,12 +6436,14 @@ "is-number": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -6541,12 +6574,14 @@ "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + "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=" + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true }, "repeating": { "version": "2.0.1", diff --git a/src/viewer.js b/src/viewer.js index c9bc2c99..658f4054 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -1168,7 +1168,10 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype, } } if ( _this.navigator && _this.viewport ) { - _this.navigator.update( _this.viewport ); + //09/08/2018 - Fabroh : Fix issue #1504 : Ensure to get the navigator updated on fullscreen out with custom location with a timeout + setTimeout(function(){ + _this.navigator.update( _this.viewport ); + }); } /** * Raised when the viewer has changed to/from full-screen mode (see {@link OpenSeadragon.Viewer#setFullScreen}). diff --git a/test/demo/customnavigatorlocation.html b/test/demo/customnavigatorlocation.html new file mode 100644 index 00000000..d4a82dcf --- /dev/null +++ b/test/demo/customnavigatorlocation.html @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<html> +<head> + <title>OpenSeadragon With Custom Navigator Location</title> + <script type="text/javascript" src='../../build/openseadragon/openseadragon.js'></script> + <script type="text/javascript" src='../lib/jquery-1.9.1.min.js'></script> + <style type="text/css"> + + .openseadragon1 { + width: 800px; + height: 600px; + } + .openseadragon-small + { + width: 100px; + height: 80px; + border: 1px solid black; + color: #333; /* text color for messages */ + background-color: black; + } + + </style> +</head> +<body> + <div> + Simple demo page to show custom location for navigator. + </div> + <div id="navigatorDiv" class="openseadragon-small"></div> + <div id="contentDiv" class="openseadragon1"></div> + <script type="text/javascript"> + + var viewer = OpenSeadragon({ + // debugMode: true, + id: "contentDiv", + prefixUrl: "../../build/openseadragon/images/", + tileSources: "../data/testpattern.dzi", + showNavigator:true, + navigatorId: "navigatorDiv", + }); + + </script> +</body> +</html> From 3bc3be5c1963c7f6150d2e5b039c926701cdd27f Mon Sep 17 00:00:00 2001 From: Ian Gilman <ian@iangilman.com> Date: Fri, 10 Aug 2018 09:40:07 -0700 Subject: [PATCH 56/64] 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 <ian@iangilman.com> Date: Fri, 10 Aug 2018 09:51:15 -0700 Subject: [PATCH 57/64] 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 <jonathan.lake@uphs.upenn.edu> Date: Tue, 21 Aug 2018 17:39:46 -0400 Subject: [PATCH 58/64] 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 <ian@iangilman.com> Date: Wed, 22 Aug 2018 09:26:12 -0700 Subject: [PATCH 59/64] 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 <sw@weilnetz.de> Date: Sat, 1 Sep 2018 10:59:20 +0200 Subject: [PATCH 60/64] Fix some typos in comments (found by codespell) Signed-off-by: Stefan Weil <sw@weilnetz.de> --- 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 <sw@weilnetz.de> Date: Sat, 1 Sep 2018 14:34:14 +0200 Subject: [PATCH 61/64] Fix typo in comment Signed-off-by: Stefan Weil <sw@weilnetz.de> --- 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 <sw@weilnetz.de> Date: Sat, 1 Sep 2018 14:36:31 +0200 Subject: [PATCH 62/64] Fix more similar typos in comments Signed-off-by: Stefan Weil <sw@weilnetz.de> --- 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" <mmatney@library.ucla.edu> Date: Mon, 10 Sep 2018 00:58:24 -0700 Subject: [PATCH 63/64] 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 @@ +<!DOCTYPE html> +<html> +<head> + <title>OpenSeadragon Demo - Timeout Certain</title> + <script type="text/javascript" src='../../build/openseadragon/openseadragon.js'></script> + <script type="text/javascript" src='../lib/jquery-1.9.1.min.js'></script> + <style type="text/css"> + + .openseadragon1 { + width: 800px; + height: 600px; + } + + </style> +</head> +<body> +<div> + <p>The ImageLoader timeout is set to 0 ms, and the tile source is remote.</p> + <p>In any web browser on any network connection, OpenSeadragon should not load properly, and the browser console log should show tile loading errors.</p> +</div> +<div id="contentDiv" class="openseadragon1"></div> +<script type="text/javascript"> + + var viewer = OpenSeadragon({ + // debugMode: true, + id: "contentDiv", + prefixUrl: "../../build/openseadragon/images/", + tileSources: "http://wellcomelibrary.org/iiif-img/b11768265-0/a6801943-b8b4-4674-908c-7d5b27e70569/info.json", + showNavigator:true, + timeout: 0 + }); + +</script> +</body> +</html> 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 @@ +<!DOCTYPE html> +<html> +<head> + <title>OpenSeadragon Demo - Timeout Unlikely</title> + <script type="text/javascript" src='../../build/openseadragon/openseadragon.js'></script> + <script type="text/javascript" src='../lib/jquery-1.9.1.min.js'></script> + <style type="text/css"> + + .openseadragon1 { + width: 800px; + height: 600px; + } + + </style> +</head> +<body> +<div> + <p>The ImageLoader timeout is set to 24 hours, and the tile source is remote.</p> + <p>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.</p> +</div> +<div id="contentDiv" class="openseadragon1"></div> +<script type="text/javascript"> + + var viewer = OpenSeadragon({ + // debugMode: true, + id: "contentDiv", + prefixUrl: "../../build/openseadragon/images/", + tileSources: "http://wellcomelibrary.org/iiif-img/b11768265-0/a6801943-b8b4-4674-908c-7d5b27e70569/info.json", + showNavigator:true, + timeout: 1000 * 60 * 60 * 24 + }); + +</script> +</body> +</html> From f94aa78cc68d335c8ee156874673f7679d787695 Mon Sep 17 00:00:00 2001 From: "Mark Allen Matney, Jr" <mmatney@library.ucla.edu> Date: Mon, 10 Sep 2018 00:59:25 -0700 Subject: [PATCH 64/64] 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);