From c5cd54b157e311580a87c48250538f3027bdc39d Mon Sep 17 00:00:00 2001 From: rhyneav Date: Tue, 31 Oct 2017 08:08:47 -0400 Subject: [PATCH 001/457] Update download link to 1.0.1 --- index.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index 9c854bb..13ebb5a 100644 --- a/index.html +++ b/index.html @@ -807,10 +807,10 @@ function add(x, y) {

Download

-

Download the latest version (0.0.0) using either of the links below. Or download an older release via Github.

+

Download the latest version (1.0.1) using either of the links below. Or download an older release via Github.

If you'd rather customize things, you can build the CSS yourself via the git repo

From 0863e081d8924b72fa96df93a20639f5e0ea343f Mon Sep 17 00:00:00 2001 From: Fraham Date: Tue, 31 Oct 2017 17:18:52 +0000 Subject: [PATCH 002/457] Adding more border styles, dashed, dotted, thich --- index.html | 26 +++++++++++++++++++++----- src/borders.less | 9 +++++++++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/index.html b/index.html index 13ebb5a..d99c87b 100644 --- a/index.html +++ b/index.html @@ -246,10 +246,10 @@
Some Radio Buttons -
@@ -292,10 +292,10 @@ </div> <fieldset class="form-group"> <legend>Some Radio Buttons</legend> - <label for="paperRadios1" class="paper-radio"> + <label for="paperRadios1" class="paper-radio"> <input type="radio" name="paperRadios" id="paperRadios1" value="option 1"> <span>This is the first option<span> </label> - <label for="paperRadios2" class="paper-radio"> + <label for="paperRadios2" class="paper-radio"> <input type="radio" name="paperRadios" id="paperRadios2" value="option 2"> <span>This is the second option<span> </label> </fieldset> @@ -661,7 +661,7 @@ function add(x, y) { <div class="sm-2 col border border-warning">Border warning</div> <div class="sm-2 col border border-danger">Border danger</div> <div class="sm-2 col border background-primary border-white">Border white</div> -</div> +</div> <div class="row child-borders"> <div class="sm-2 col border border-primary">Border primary</div> <div class="sm-2 col border border-secondary">Border secondary</div> @@ -690,6 +690,22 @@ function add(x, y) { <div class="sm-2 col">4</div> <div class="sm-2 col">5</div> <div class="sm-2 col">6</div> +</div> + +

Border Styles

+
+
Dashed
+
Dotted
+
Dashed Thick
+
Dotted Thick
+
+
+
+<div class="row flex-spaces child-borders">
+  <div class="sm-3 col border-dashed">Dashed</div>
+  <div class="sm-3 col border-dotted">Dotted</div>
+  <div class="sm-3 col border-dashed border-thick">Dashed Thick</div>
+  <div class="sm-3 col border-dotted border-thick">Dotted Thick</div>
 </div>

Shadows

diff --git a/src/borders.less b/src/borders.less index e547d07..673a55e 100644 --- a/src/borders.less +++ b/src/borders.less @@ -55,4 +55,13 @@ } .border-white { border-color: #FFF; +} +.border-dotted { + border-style: dotted; +} +.border-dashed { + border-style: dashed; +} +.border-thick { + border-width: 5px; } \ No newline at end of file From e510e2259490423bf0762399dc0ab2a5270a0ec2 Mon Sep 17 00:00:00 2001 From: Fraham Date: Tue, 31 Oct 2017 17:30:43 +0000 Subject: [PATCH 003/457] Fix child border issue --- src/borders.less | 1 - 1 file changed, 1 deletion(-) diff --git a/src/borders.less b/src/borders.less index e547d07..af595f5 100644 --- a/src/borders.less +++ b/src/borders.less @@ -1,5 +1,4 @@ .border, .border-1, .child-borders > *:nth-child(6n+1) { - border: 2px solid @primary; border-top-left-radius: 255px 15px; border-top-right-radius: 15px 225px; border-bottom-right-radius: 225px 15px; From d5119c94a1ecfda8f1eacaaecd7ae07e625a7d3b Mon Sep 17 00:00:00 2001 From: rhyneav Date: Tue, 31 Oct 2017 18:19:52 -0400 Subject: [PATCH 004/457] Move border size to just .border to prevent override on child borders --- src/borders.less | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/borders.less b/src/borders.less index b4aad85..880a0d3 100644 --- a/src/borders.less +++ b/src/borders.less @@ -1,3 +1,6 @@ +.border { + border: 2px solid @primary; +} .border, .border-1, .child-borders > *:nth-child(6n+1) { border-top-left-radius: 255px 15px; border-top-right-radius: 15px 225px; From c92cd319f3fca039dec2335b6edea03ea9fd8a0f Mon Sep 17 00:00:00 2001 From: Thomas Cazade Date: Wed, 1 Nov 2017 15:48:02 +0100 Subject: [PATCH 005/457] Added default card, more types to come --- index.html | 33 +++++++++++++++++++++++++++++++++ src/cards.less | 42 ++++++++++++++++++++++++++++++++++++++++++ src/styles.less | 3 ++- 3 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 src/cards.less diff --git a/index.html b/index.html index d99c87b..f0c5367 100644 --- a/index.html +++ b/index.html @@ -582,6 +582,39 @@ function add(x, y) { <button popover="Popover on top" popover-position="top">Popover on top and on a button!</button> + +
+

Cards

+ +

Default card

+
+
+ Card example image + +
+

My awesome Paper card!

+
Nice looking subtitle.
+

Notice that the card width in this example have been set to 20rem, otherwise it will try to fill the current container/row where the card is.

+ +
+
+
+ +
+
+<div class="card" style="width: 20rem;">
+  <img src="https://picsum.photos/768" alt="Card example image">
+
+  <div class="card-body">
+    <h4 class="card-title">My awesome Paper card!</h4>
+    <h5 class="card-subtitle">Nice looking subtitle.</h5>
+    <p class="card-text">Notice that the card width in this example have been set to 20rem, otherwise it will try to fill the current container/row where the card is.</p>
+    <button>Let me go here!</button>
+  </div>
+</div>
+
+
+

Colors

Text

diff --git a/src/cards.less b/src/cards.less new file mode 100644 index 0000000..d739485 --- /dev/null +++ b/src/cards.less @@ -0,0 +1,42 @@ +.card { + // Card border can't be changed with .border-x classes + // since we want to avoid the little blank space between + // image and border-top-left/right-radius, so we force + // the default border class and customize it on the img + .border; + + position: relative; + display: flex; + flex-direction: column; + word-wrap: break-word; + + .card-body { + flex: 1 1 auto; + padding: 1.25rem; + + .card-title, h4 { + margin-top: 0; + margin-bottom: 0.5rem; + } + + .card-subtitle, h5 { + .text-secondary; + + margin-top: 0; + margin-bottom: 0.5rem; + } + + .card-text, p { + margin-top: 0; + margin-bottom: 1rem; + } + } + + img { + border: 0; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + border-top-left-radius: 255px 14px !important; + border-top-right-radius: 13px 225px !important; + } +} \ No newline at end of file diff --git a/src/styles.less b/src/styles.less index 3e8b4bd..1df3db0 100644 --- a/src/styles.less +++ b/src/styles.less @@ -13,4 +13,5 @@ @import (less) "./tables.less"; @import (less) "./images.less"; @import (less) "./utilities.less"; -@import (less) "./popovers.less"; \ No newline at end of file +@import (less) "./popovers.less"; +@import (less) "./cards.less"; \ No newline at end of file From d8f1fa2eb7dc3d1ab1c07391f81b7fd2ef066a03 Mon Sep 17 00:00:00 2001 From: Thomas Cazade Date: Wed, 1 Nov 2017 15:48:26 +0100 Subject: [PATCH 006/457] Added white-space to pre-tags --- src/code.less | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/code.less b/src/code.less index d2948c9..c0724ec 100644 --- a/src/code.less +++ b/src/code.less @@ -23,5 +23,6 @@ pre { background-color: lighten(@primary, 73%); border: 1px solid lighten(@primary, 50%); border-radius: 3px; - overflow-x: auto; + overflow-x: auto; + white-space: pre-wrap; } \ No newline at end of file From a1f5bea832a3e5eb8507d45befad01a899974e18 Mon Sep 17 00:00:00 2001 From: Fraham Date: Wed, 1 Nov 2017 15:37:52 +0000 Subject: [PATCH 007/457] Refactored colours to make them more dynamic --- src/borders.less | 27 +++++++++++---------------- src/colors.less | 43 ++++++++++++------------------------------- 2 files changed, 23 insertions(+), 47 deletions(-) diff --git a/src/borders.less b/src/borders.less index 880a0d3..a9aa2ba 100644 --- a/src/borders.less +++ b/src/borders.less @@ -40,21 +40,6 @@ .child-borders > * { border: 2px solid @primary; } -.border-primary { - border-color: @primary; -} -.border-secondary { - border-color: @secondary; -} -.border-success { - border-color: @success; -} -.border-warning { - border-color: @warning; -} -.border-danger { - border-color: @danger; -} .border-white { border-color: #FFF; } @@ -66,4 +51,14 @@ } .border-thick { border-width: 5px; -} \ No newline at end of file +} + +.make-border-color-classes(@i: length(@colors)) when (@i > 0) { + .make-border-color-classes(@i - 1); + @color: extract(@colors, @i); + .border-@{color} { + color: @@color; + } +} + +.make-border-color-classes(); \ No newline at end of file diff --git a/src/colors.less b/src/colors.less index 5822b7a..3a8f2ae 100644 --- a/src/colors.less +++ b/src/colors.less @@ -13,36 +13,17 @@ @warning-light: lighten(@warning, 30%); @danger-light: lighten(@danger, 45%); -// Mixin to create colors from list -.text-primary { - color: @primary; -} -.text-secondary { - color: @secondary; -} -.text-success { - color: @success; -} -.text-warning { - color: @warning; -} -.text-danger { - color: @danger; -} -.background { - &-primary { - background-color: @primary-light; +@colors: primary, secondary, success, warning, danger; + +.make-text-color-classes(@i: length(@colors)) when (@i > 0) { + .make-text-color-classes(@i - 1); + @color: extract(@colors, @i); + .text-@{color} { + color: @@color; } - &-secondary { - background-color: @secondary-light; + .background-@{color}{ + color: ~"@{@{color}-light}"; } - &-success { - background-color: @success-light; - } - &-warning { - background-color: @warning-light; - } - &-danger { - background-color: @danger-light; - } -} \ No newline at end of file +} + +.make-text-color-classes(); \ No newline at end of file From 5febaa892eaaa2dd8e1e81d39f979435fc4188e0 Mon Sep 17 00:00:00 2001 From: Fraham Date: Wed, 1 Nov 2017 15:39:55 +0000 Subject: [PATCH 008/457] Remove redundant line --- src/colors.less | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/colors.less b/src/colors.less index 3a8f2ae..711acad 100644 --- a/src/colors.less +++ b/src/colors.less @@ -5,8 +5,6 @@ @warning: #ddcd45; @danger: #a7342d; -@main-colors: @primary, @secondary, @success, @warning, @danger; - @primary-light: lighten(@primary, 50%); @secondary-light: lighten(@secondary, 50%); @success-light: lighten(@success, 30%); From bd3e103be5f3ad203358c61f32160cea4cdcc843 Mon Sep 17 00:00:00 2001 From: Fraham Date: Wed, 1 Nov 2017 15:49:23 +0000 Subject: [PATCH 009/457] Add readme --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 2b61f63..c2e85b4 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,13 @@ Here's the full workflow for customization: - preview changes with `npm start` and go to http://localhost:8080 (changes are automatically reloaded on page) - OR run `npm run build` to create the new CSS in the /dist folder +### Adding a new color +- Go to file `src/color.less` +- Add a new varable and assign it to a color hex value +- Add the new variable to the list of colors +- Add a new variable for the light variation +- Once `npm start` or `npm run build` has been run then it will create the new css so that the new color can be used as a text, border or background + ## Contributing This project is open source and contributions are very welcomed. It is also as beginner friendly as possible, so don't be afraid to jump in if you've never contributed to any Git project before! Feel free to reach out if you are new and need help with the process. From 73df749cc90730faf080a446eb5acb0f81e87e04 Mon Sep 17 00:00:00 2001 From: Thomas Cazade Date: Wed, 1 Nov 2017 17:20:05 +0100 Subject: [PATCH 010/457] Finished cards --- index.html | 59 +++++++++++++++++++++++++++++++++++++++++++++++--- src/cards.less | 17 +++++++++++++-- 2 files changed, 71 insertions(+), 5 deletions(-) diff --git a/index.html b/index.html index f0c5367..aef4650 100644 --- a/index.html +++ b/index.html @@ -585,11 +585,11 @@ function add(x, y) {

Cards

- -

Default card

+

Full card example

+

It is possible to not put all the sub-classes like card-title, card-subtitle, card-text, ... But instead the framework will recognize the element properly if it's a h4, h5, p, ... And you need to put all this content on a div with card class.

- Card example image + Card example image

My awesome Paper card!

@@ -611,6 +611,59 @@ function add(x, y) { <p class="card-text">Notice that the card width in this example have been set to 20rem, otherwise it will try to fill the current container/row where the card is.</p> <button>Let me go here!</button> </div> +</div> +
+ +

Card title, text, links

+
+
+
+

My awesome Paper card!

+
Nice looking subtitle.
+

This is another example of a card without image. Cards are also meant to be used without images, but with text/links/buttons.

+ First link + Second link +
+
+
+ +
+
+<div class="card" style="width: 20rem;">
+  <div class="card-body">
+    <h4 class="card-title">My awesome Paper card!</h4>
+    <h5 class="card-subtitle">Nice looking subtitle.</h5>
+    <p class="card-text">This is another example of a card without image. Cards are also meant to be used without images, but with text/links/buttons.</p>
+    <a class="card-link" href="#">First link</a>
+    <a class="card-link" href="#">Second link</a>
+  </div>
+</div>
+
+ +

Image on top or bottom

+

+
+
+
+

My awesome Paper card!

+
Nice looking subtitle.
+

You can also place image on the bottom of the card.

+ +
+ Card example image +
+
+ +
+
+<div class="card" style="width: 20rem;">
+  <div class="card-body">
+    <h4 class="card-title">My awesome Paper card!</h4>
+    <h5 class="card-subtitle">Nice looking subtitle.</h5>
+    <p class="card-text">You can also place image on the bottom of the card.</p>
+    <button>Let me go here!</button>
+  </div>
+  <img class="image-bottom" src="http://via.placeholder.com/550x250" alt="Card example image">
 </div>
diff --git a/src/cards.less b/src/cards.less index d739485..59856cd 100644 --- a/src/cards.less +++ b/src/cards.less @@ -30,12 +30,25 @@ margin-top: 0; margin-bottom: 1rem; } + + .card-link + .card-link, + a + a { + margin-left: 1.25rem; + } } + .image-bottom { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; + border-bottom-right-radius: 255px 18px !important; + border-bottom-left-radius: 18px 225px !important; + } + + .image-top, img { border: 0; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; border-top-left-radius: 255px 14px !important; border-top-right-radius: 13px 225px !important; } From 76007dfdebab177c85012af4aef12319ddc2292d Mon Sep 17 00:00:00 2001 From: Thomas Cazade Date: Wed, 1 Nov 2017 17:44:09 +0100 Subject: [PATCH 011/457] Added badges --- index.html | 23 +++++++++++++++++++++++ src/badges.less | 35 +++++++++++++++++++++++++++++++++++ src/styles.less | 3 ++- 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 src/badges.less diff --git a/index.html b/index.html index aef4650..b660351 100644 --- a/index.html +++ b/index.html @@ -668,6 +668,29 @@ function add(x, y) {
+
+

Badges

+

Default

+

You can customize badges colors with secondary, success, warning, danger classes.

+ +

Example h1 heading 123

+

Example h2 heading 123

+

Example h3 heading 123

+

Example h4 heading 123

+
Example h5 heading 123
+
Example h6 heading 123
+ +
+
+<h1>Example h1 heading <span class="badge">123</span></h1>
+<h2>Example h2 heading <span class="badge secondary">123</span></h2>
+<h3>Example h3 heading <span class="badge success">123</span></h3>
+<h4>Example h4 heading <span class="badge warning">123</span></h4>
+<h5>Example h5 heading <span class="badge danger">123</span></h5>
+<h6>Example h6 heading <span class="badge">123</span></h6>
+
+
+

Colors

Text

diff --git a/src/badges.less b/src/badges.less new file mode 100644 index 0000000..1a79188 --- /dev/null +++ b/src/badges.less @@ -0,0 +1,35 @@ +.badge { + .border; + + display: inline-block; + padding: .25em .4em; + font-size: 75%; + font-weight: 700; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #868e96; + color: white; + border-color: transparent; + + &.primary { + background-color: @primary; + } + + &.secondary { + background-color: @secondary; + } + + &.success { + background-color: @success; + } + + &.warning { + background-color: @warning; + } + + &.danger { + background-color: @danger; + } +} \ No newline at end of file diff --git a/src/styles.less b/src/styles.less index 1df3db0..98994c5 100644 --- a/src/styles.less +++ b/src/styles.less @@ -14,4 +14,5 @@ @import (less) "./images.less"; @import (less) "./utilities.less"; @import (less) "./popovers.less"; -@import (less) "./cards.less"; \ No newline at end of file +@import (less) "./cards.less"; +@import (less) "./badges.less"; \ No newline at end of file From f10523bc3af91b79b06fd12781a66db26f2d25c6 Mon Sep 17 00:00:00 2001 From: Fraham Date: Wed, 1 Nov 2017 22:28:20 +0000 Subject: [PATCH 012/457] Fix border colour issue --- src/borders.less | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/borders.less b/src/borders.less index a9aa2ba..3463b3d 100644 --- a/src/borders.less +++ b/src/borders.less @@ -57,8 +57,8 @@ .make-border-color-classes(@i - 1); @color: extract(@colors, @i); .border-@{color} { - color: @@color; + border-color: @@color; } } -.make-border-color-classes(); \ No newline at end of file +.make-border-color-classes(); From ce2734ec97acd9b2fa2074f8ac973719c376448a Mon Sep 17 00:00:00 2001 From: Fraham Date: Wed, 1 Nov 2017 22:29:07 +0000 Subject: [PATCH 013/457] Fix background colour issue --- src/colors.less | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/colors.less b/src/colors.less index 711acad..8aae2b6 100644 --- a/src/colors.less +++ b/src/colors.less @@ -20,8 +20,8 @@ color: @@color; } .background-@{color}{ - color: ~"@{@{color}-light}"; + background-color: ~"@{@{color}-light}"; } } -.make-text-color-classes(); \ No newline at end of file +.make-text-color-classes(); From 176ee2f3f0ace7fc44cd0ddb5aef472955124498 Mon Sep 17 00:00:00 2001 From: Fraham Date: Wed, 1 Nov 2017 23:23:44 +0000 Subject: [PATCH 014/457] Alert components --- index.html | 30 ++++++++++++++++++++++++++++++ src/alerts.less | 18 ++++++++++++++++++ src/styles.less | 3 ++- 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 src/alerts.less diff --git a/index.html b/index.html index d99c87b..6b0934f 100644 --- a/index.html +++ b/index.html @@ -821,6 +821,36 @@ function add(x, y) { <img src="https://unsplash.it/300" class="no-responsive no-border">
+
+

Alerts

+
+
+ Alert-primary +
+
+ Alert-secondary +
+
+ Alert-success +
+
+ Alert-warning +
+
+ Alert-danger +
+
+
+
+  <div class="row flex-spaces">
+    <div class="alert alert-primary">Alert-primary</div>
+    <div class="alert alert-secondary">Alert-secondary</div>
+    <div class="alert alert-success">Alert-success</div>
+    <div class="alert alert-warning">Alert-warning</div>
+    <div class="alert alert-danger">Alert-danger</div>
+  </div>
+
+

Download

Download the latest version (1.0.1) using either of the links below. Or download an older release via Github.

diff --git a/src/alerts.less b/src/alerts.less new file mode 100644 index 0000000..a213649 --- /dev/null +++ b/src/alerts.less @@ -0,0 +1,18 @@ +.alert{ + .border; + padding: 15px; + margin-bottom: 20px; + width: 100%; +} + +.make-alert-color-classes(@a: length(@colors)) when (@a > 0) { + .make-alert-color-classes(@a - 1); + @color: extract(@colors, @a); + .alert-@{color} { + border-color: @@color; + color: @@color; + background-color: ~"@{@{color}-light}"; + } +} + +.make-alert-color-classes(); \ No newline at end of file diff --git a/src/styles.less b/src/styles.less index 3e8b4bd..10bf18f 100644 --- a/src/styles.less +++ b/src/styles.less @@ -13,4 +13,5 @@ @import (less) "./tables.less"; @import (less) "./images.less"; @import (less) "./utilities.less"; -@import (less) "./popovers.less"; \ No newline at end of file +@import (less) "./popovers.less"; +@import (less) "./alerts.less"; \ No newline at end of file From d1947ea76453e26605814f1c12a2519ceeddfb92 Mon Sep 17 00:00:00 2001 From: Thomas Cazade Date: Thu, 2 Nov 2017 14:58:35 +0100 Subject: [PATCH 015/457] Added muted color and fixed edgy badges corners --- src/badges.less | 7 +++---- src/cards.less | 20 ++++---------------- src/colors.less | 5 +++++ 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/src/badges.less b/src/badges.less index 1a79188..af17926 100644 --- a/src/badges.less +++ b/src/badges.less @@ -1,6 +1,4 @@ .badge { - .border; - display: inline-block; padding: .25em .4em; font-size: 75%; @@ -9,9 +7,10 @@ text-align: center; white-space: nowrap; vertical-align: baseline; - background-color: #868e96; + background-color: @muted; color: white; - border-color: transparent; + border: 2px solid transparent; + border-radius: 20px; &.primary { background-color: @primary; diff --git a/src/cards.less b/src/cards.less index 59856cd..9ca07b2 100644 --- a/src/cards.less +++ b/src/cards.less @@ -1,14 +1,11 @@ .card { - // Card border can't be changed with .border-x classes - // since we want to avoid the little blank space between - // image and border-top-left/right-radius, so we force - // the default border class and customize it on the img - .border; + .shadow; position: relative; display: flex; flex-direction: column; word-wrap: break-word; + border: 2px solid @muted-light; .card-body { flex: 1 1 auto; @@ -37,19 +34,10 @@ } } - .image-bottom { - border-top-left-radius: 0 !important; - border-top-right-radius: 0 !important; - border-bottom-right-radius: 255px 18px !important; - border-bottom-left-radius: 18px 225px !important; - } - .image-top, + .image-bottom, img { border: 0; - border-bottom-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-top-left-radius: 255px 14px !important; - border-top-right-radius: 13px 225px !important; + border-radius: 0; } } \ No newline at end of file diff --git a/src/colors.less b/src/colors.less index 5822b7a..854873b 100644 --- a/src/colors.less +++ b/src/colors.less @@ -4,6 +4,7 @@ @success: #86a361; @warning: #ddcd45; @danger: #a7342d; +@muted: #868e96; @main-colors: @primary, @secondary, @success, @warning, @danger; @@ -12,6 +13,7 @@ @success-light: lighten(@success, 30%); @warning-light: lighten(@warning, 30%); @danger-light: lighten(@danger, 45%); +@muted-light: lighten(@muted, 35%); // Mixin to create colors from list .text-primary { @@ -45,4 +47,7 @@ &-danger { background-color: @danger-light; } + &-muted { + background-color: @muted-light; + } } \ No newline at end of file From b2a2e2e6cb7875a963c997e3d32447e44296b6cb Mon Sep 17 00:00:00 2001 From: Thomas Cazade Date: Thu, 2 Nov 2017 15:05:06 +0100 Subject: [PATCH 016/457] Add text-muted class --- index.html | 4 +++- src/colors.less | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index b660351..2c1dc67 100644 --- a/index.html +++ b/index.html @@ -699,13 +699,15 @@ function add(x, y) {

Text success

Text warning

Text danger

+

Text muted

 <p class="text-primary">Text primary</p>
 <p class="text-secondary">Text secondary</p>
 <p class="text-success">Text success</p>
 <p class="text-warning">Text warning</p>
-<p class="text-danger">Text danger</p> 
+<p class="text-danger">Text danger</p> +<p class="text-muted">Text muted</p>

Backgrounds

diff --git a/src/colors.less b/src/colors.less index 854873b..723f6ec 100644 --- a/src/colors.less +++ b/src/colors.less @@ -31,6 +31,9 @@ .text-danger { color: @danger; } +.text-muted { + color: @muted; +} .background { &-primary { background-color: @primary-light; From 203630eaccff71882a5a461e189f86ed4cb0032e Mon Sep 17 00:00:00 2001 From: Fraham Date: Thu, 2 Nov 2017 16:08:22 +0000 Subject: [PATCH 017/457] Adding colours and hover:active to buttons --- index.html | 15 +++++++++++++++ src/buttons.less | 25 +++++++++++++++++++++---- src/colors.less | 6 ++++++ 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 6b0934f..0239fe2 100644 --- a/index.html +++ b/index.html @@ -215,6 +215,21 @@ </div> </div>
+

Colors

+ + + + + +
+
+  <input type="button" class="paper-btn btn-primary" value="Primary"/>
+  <input type="button" class="btn-secondary" value="Secondary"/>
+  <button class="btn-success">Success</button>
+  <button class="btn-warning">Warning</button>
+  <button class="btn-danger">Danger</button>
+          
+

Forms

diff --git a/src/buttons.less b/src/buttons.less index 90fa550..7458150 100644 --- a/src/buttons.less +++ b/src/buttons.less @@ -1,15 +1,16 @@ -button, .paper-btn { +button, .paper-btn, [type="button"] { + .shadow; align-self:center; background:transparent; - transition:all .5s ease; + transition:background-color .1s ease; color: @primary; + display: inline; outline:none; border:solid 2px @primary; .border; font-size: 1rem; padding: .75rem .75rem; cursor: pointer; - .shadow; &.btn-large { .shadow-large; font-size:2rem; @@ -43,4 +44,20 @@ a { text-decoration: none; color: @primary; } -} \ No newline at end of file +} + +.make-button-color-classes(@i: length(@colors)) when (@i > 0) { + .make-button-color-classes(@i - 1); + @color: extract(@colors, @i); + button.btn-@{color}, .paper-btn.btn-@{color}, [type="button"].btn-@{color} { + border-color: @@color; + background-color: ~"@{@{color}-light}"; + color: ~"@{@{color}-text}"; + &:hover:active{ + @darkcolour: ~"@{color}-light"; + background-color: darken(@@darkcolour, 10%); + } + } +} + +.make-button-color-classes(); \ No newline at end of file diff --git a/src/colors.less b/src/colors.less index 8aae2b6..c75b210 100644 --- a/src/colors.less +++ b/src/colors.less @@ -11,6 +11,12 @@ @warning-light: lighten(@warning, 30%); @danger-light: lighten(@danger, 45%); +@primary-text: #FFF; +@secondary-text: @primary; +@success-text: @primary; +@warning-text: @primary; +@danger-text: @primary; + @colors: primary, secondary, success, warning, danger; .make-text-color-classes(@i: length(@colors)) when (@i > 0) { From 13829d30d6162e52c0b91e2a3f820d450bc4a1f8 Mon Sep 17 00:00:00 2001 From: Thomas Cazade Date: Thu, 2 Nov 2017 20:14:00 +0100 Subject: [PATCH 018/457] Badges borders --- src/badges.less | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/badges.less b/src/badges.less index af17926..bfd7f3c 100644 --- a/src/badges.less +++ b/src/badges.less @@ -1,4 +1,6 @@ .badge { + .border; + display: inline-block; padding: .25em .4em; font-size: 75%; @@ -9,8 +11,7 @@ vertical-align: baseline; background-color: @muted; color: white; - border: 2px solid transparent; - border-radius: 20px; + border-color: transparent; &.primary { background-color: @primary; From 9cf51f444d9fb6a5655cdc2f991dc4fa634f6301 Mon Sep 17 00:00:00 2001 From: Thomas Cazade Date: Thu, 2 Nov 2017 20:29:20 +0100 Subject: [PATCH 019/457] Add header/footer and card hover box-shadow --- index.html | 15 ++++++++++++++- src/cards.less | 20 +++++++++++++++++++- src/colors.less | 2 ++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index b025247..b8b6f36 100644 --- a/index.html +++ b/index.html @@ -641,7 +641,6 @@ function add(x, y) {

Image on top or bottom

-

@@ -666,6 +665,20 @@ function add(x, y) { <img class="image-bottom" src="http://via.placeholder.com/550x250" alt="Card example image"> </div>
+ +

Header and footer

+
+
+
Header
+
+

My awesome Paper card!

+
Nice looking subtitle.
+

You can also place image on the bottom of the card.

+ +
+ +
+
diff --git a/src/cards.less b/src/cards.less index 9ca07b2..f02c5d9 100644 --- a/src/cards.less +++ b/src/cards.less @@ -5,7 +5,25 @@ display: flex; flex-direction: column; word-wrap: break-word; - border: 2px solid @muted-light; + border: 2px solid @muted-light; + + &:hover { + .shadow-hover; + } + + .card-header, + .card-footer { + padding: .75rem 1.25rem; + background-color: @white-dark; + } + + .card-header { + border-bottom: 2px solid @muted-light; + } + + .card-footer { + border-top: 2px solid @muted-light; + } .card-body { flex: 1 1 auto; diff --git a/src/colors.less b/src/colors.less index a5c91ba..0ce528d 100644 --- a/src/colors.less +++ b/src/colors.less @@ -13,6 +13,8 @@ @danger-light: lighten(@danger, 45%); @muted-light: lighten(@muted, 35%); +@white-dark: rgba(0, 0, 0, .03); + @colors: primary, secondary, success, warning, danger, muted; .make-text-color-classes(@i: length(@colors)) when (@i > 0) { From 2c0368a8fc14dfbf403b5857dbb02f4aa97f3e98 Mon Sep 17 00:00:00 2001 From: Thomas Cazade Date: Thu, 2 Nov 2017 20:29:29 +0100 Subject: [PATCH 020/457] Update docs --- index.html | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/index.html b/index.html index b8b6f36..c842dfd 100644 --- a/index.html +++ b/index.html @@ -679,6 +679,21 @@ function add(x, y) {
+ +
+
+<div class="card" style="width: 20rem;">
+  <div class="card-header">Header</div>
+    <div class="card-body">
+      <h4 class="card-title">My awesome Paper card!</h4>
+      <h5 class="card-subtitle">Nice looking subtitle.</h5>
+      <p class="card-text">You can also place image on the bottom of the card.</p>
+      <button>Let me go here!</button>
+    </div>
+  <div class="card-footer">Footer</div>
+</div>
+
+
From 986989e072dcc486157c74be728853724c2674fd Mon Sep 17 00:00:00 2001 From: Thomas Cazade Date: Fri, 3 Nov 2017 11:36:39 +0100 Subject: [PATCH 021/457] Updated packages and add yarn.lock --- package-lock.json | 83 +- yarn.lock | 4905 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 4960 insertions(+), 28 deletions(-) create mode 100644 yarn.lock diff --git a/package-lock.json b/package-lock.json index 71b97f6..6052bd6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -515,6 +515,15 @@ "readdirp": "2.1.0" } }, + "clean-css": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", + "integrity": "sha1-Nc7ornaHpJuYA09w3gDE7dOCYwE=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, "cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", @@ -1911,6 +1920,18 @@ "stream-array": "0.1.3" } }, + "gulp-clean-css": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/gulp-clean-css/-/gulp-clean-css-3.9.0.tgz", + "integrity": "sha512-CsqaSO2ZTMQI/WwbWloZWBudhsRMKgxBthzxt4bbcbWrjOY4pRFziyK9IH6YbTpaWAPKEwWpopPkpiAEoDofxw==", + "dev": true, + "requires": { + "clean-css": "4.1.9", + "gulp-util": "3.0.8", + "through2": "2.0.3", + "vinyl-sourcemaps-apply": "0.2.1" + } + }, "gulp-connect": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/gulp-connect/-/gulp-connect-5.0.0.tgz", @@ -1956,6 +1977,12 @@ "through2": "2.0.3" } }, + "gulp-rename": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz", + "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc=", + "dev": true + }, "gulp-util": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", @@ -3402,6 +3429,7 @@ "integrity": "sha512-ZJsOWVJ25E2C5Qedf4w9ePIv5hrPCdDIsHhq89tRxSJCqyIfDAMh0KoU9xeTu7yHT9ZrxPF7mopq1TCWxtMfkw==", "dev": true, "requires": { + "JSONStream": "1.3.1", "abbrev": "1.1.0", "ansi-regex": "3.0.0", "ansicolors": "0.3.2", @@ -3433,7 +3461,6 @@ "inherits": "2.0.3", "ini": "1.3.4", "init-package-json": "1.10.1", - "JSONStream": "1.3.1", "lazy-property": "1.0.0", "libnpx": "9.2.0", "lockfile": "1.0.3", @@ -3501,6 +3528,27 @@ "write-file-atomic": "2.1.0" }, "dependencies": { + "JSONStream": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + }, + "dependencies": { + "jsonparse": { + "version": "1.3.1", + "bundled": true, + "dev": true + }, + "through": { + "version": "2.3.8", + "bundled": true, + "dev": true + } + } + }, "abbrev": { "version": "1.1.0", "bundled": true, @@ -3912,27 +3960,6 @@ } } }, - "JSONStream": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "jsonparse": "1.3.1", - "through": "2.3.8" - }, - "dependencies": { - "jsonparse": { - "version": "1.3.1", - "bundled": true, - "dev": true - }, - "through": { - "version": "2.3.8", - "bundled": true, - "dev": true - } - } - }, "lazy-property": { "version": "1.0.0", "bundled": true, @@ -7934,12 +7961,6 @@ "integrity": "sha1-wMRFXlTOWhecqHNuczNLTn/WdVM=", "dev": true }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -7951,6 +7972,12 @@ "strip-ansi": "3.0.1" } }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..5d20293 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4905 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +JSONStream@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.1.tgz#707f761e01dae9e16f1bcf93703b78c70966579a" + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +abbrev@1, abbrev@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +accepts@~1.2.12, accepts@~1.2.13: + version "1.2.13" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.2.13.tgz#e5f1f3928c6d95fd96558c36ec3d9d0de4a6ecea" + dependencies: + mime-types "~2.1.6" + negotiator "0.5.3" + +accepts@~1.3.0, accepts@~1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f" + dependencies: + mime-types "~2.1.16" + negotiator "0.6.1" + +accord@^0.27.3: + version "0.27.3" + resolved "https://registry.yarnpkg.com/accord/-/accord-0.27.3.tgz#7fb9129709285caea84eb372c4e882031b7138e8" + dependencies: + convert-source-map "^1.5.0" + glob "^7.0.5" + indx "^0.2.3" + lodash.clone "^4.3.2" + lodash.defaults "^4.0.1" + lodash.flatten "^4.2.0" + lodash.merge "^4.4.0" + lodash.partialright "^4.1.4" + lodash.pick "^4.2.1" + lodash.uniq "^4.3.0" + resolve "^1.3.3" + semver "^5.3.0" + uglify-js "^2.8.22" + when "^3.7.8" + +agent-base@4, agent-base@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.1.1.tgz#92d8a4fc2524a3b09b3666a33b6c97960f23d6a4" + dependencies: + es6-promisify "^5.0.0" + +agentkeepalive@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.3.0.tgz#6d5de5829afd3be2712201a39275fd11c651857c" + dependencies: + humanize-ms "^1.2.1" + +ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +ajv@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.3.0.tgz#4414ff74a50879c208ee5fdc826e32c303549eda" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-align@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" + dependencies: + string-width "^2.0.0" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0, ansi-regex@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" + dependencies: + color-convert "^1.9.0" + +ansicolors@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" + +ansistyles@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" + +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + +aproba@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1" + +archy@^1.0.0, archy@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + +array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + +array-flatten@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" + +array-slice@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.0.0.tgz#e73034f00dcc1f40876008fd20feae77bd4b7c2f" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1, array-uniq@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +asap@^2.0.0, asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + +asap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/asap/-/asap-1.0.0.tgz#b2a45da5fdfa20b0496fc3768cc27c12fa916a7d" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +async-done@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/async-done/-/async-done-0.4.0.tgz#ab8053f5f62290f8bfc58f37cd9b73070b3307b9" + dependencies: + end-of-stream "^0.1.4" + next-tick "^0.2.2" + once "^1.3.0" + stream-exhaust "^1.0.0" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + +aws4@^1.2.1, aws4@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base64-url@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/base64-url/-/base64-url-1.2.1.tgz#199fd661702a0e7b7dcae6e0698bb089c52f6d78" + +basic-auth-connect@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz#fdb0b43962ca7b40456a7c2bb48fe173da2d2122" + +basic-auth@~1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-1.0.4.tgz#030935b01de7c9b94a824b29f3fccb750d3a5290" + +batch@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +beeper@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + +binary-extensions@^1.0.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0" + +bl@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" + dependencies: + readable-stream "^2.0.5" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +bluebird@^3.5.0, bluebird@~3.5.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + +body-parser@1.18.2: + version "1.18.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.1" + http-errors "~1.6.2" + iconv-lite "0.4.19" + on-finished "~2.3.0" + qs "6.5.1" + raw-body "2.3.2" + type-is "~1.6.15" + +body-parser@~1.13.3: + version "1.13.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.13.3.tgz#c08cf330c3358e151016a05746f13f029c97fa97" + dependencies: + bytes "2.1.0" + content-type "~1.0.1" + debug "~2.2.0" + depd "~1.0.1" + http-errors "~1.3.1" + iconv-lite "0.4.11" + on-finished "~2.3.0" + qs "4.0.0" + raw-body "~2.1.2" + type-is "~1.6.6" + +body-parser@~1.14.0: + version "1.14.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.14.2.tgz#1015cb1fe2c443858259581db53332f8d0cf50f9" + dependencies: + bytes "2.2.0" + content-type "~1.0.1" + debug "~2.2.0" + depd "~1.1.0" + http-errors "~1.3.1" + iconv-lite "0.4.13" + on-finished "~2.3.0" + qs "5.2.0" + raw-body "~2.1.5" + type-is "~1.6.10" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +boom@4.x.x: + version "4.3.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" + dependencies: + hoek "4.x.x" + +boom@5.x.x: + version "5.2.0" + resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" + dependencies: + hoek "4.x.x" + +boxen@^1.0.0, boxen@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.2.2.tgz#3f1d4032c30ffea9d4b02c322eaf2ea741dcbce5" + dependencies: + ansi-align "^2.0.0" + camelcase "^4.0.0" + chalk "^2.0.1" + cli-boxes "^1.0.0" + string-width "^2.0.0" + term-size "^1.2.0" + widest-line "^1.0.0" + +brace-expansion@^1.0.0, brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + +bytes@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.1.0.tgz#ac93c410e2ffc9cc7cf4b464b38289067f5e47b4" + +bytes@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.2.0.tgz#fd35464a403f6f9117c2de3609ecff9cae000588" + +bytes@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + +cacache@^9.2.9: + version "9.3.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-9.3.0.tgz#9cd58f2dd0b8c8cacf685b7067b416d6d3cf9db1" + dependencies: + bluebird "^3.5.0" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^1.3.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.1" + ssri "^4.1.6" + unique-filename "^1.1.0" + y18n "^3.2.1" + +cacache@~9.2.9: + version "9.2.9" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-9.2.9.tgz#f9d7ffe039851ec94c28290662afa4dd4bb9e8dd" + dependencies: + bluebird "^3.5.0" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^1.3.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.1" + ssri "^4.1.6" + unique-filename "^1.1.0" + y18n "^3.2.1" + +call-limit@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.0.tgz#6fd61b03f3da42a2cd0ec2b60f02bd0e71991fea" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + +camelcase@^4.0.0, camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + +capture-stack-trace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@^1.0.0, chalk@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + 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" + +chalk@^2.0.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + +chokidar@^1.6.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + dependencies: + anymatch "^1.3.0" + async-each "^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" + optionalDependencies: + fsevents "^1.0.0" + +chownr@^1.0.1, chownr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + +clean-css@4.1.9: + version "4.1.9" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz#35cee8ae7687a49b98034f70de00c4edd3826301" + dependencies: + source-map "0.5.x" + +cli-boxes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone-stats@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + +clone@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" + +clone@^1.0.0, clone@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" + +cmd-shim@~2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" + dependencies: + graceful-fs "^4.1.2" + mkdirp "~0.5.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +color-convert@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" + dependencies: + color-name "^1.1.1" + +color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +columnify@~1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" + dependencies: + strip-ansi "^3.0.0" + wcwidth "^1.0.0" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +compressible@~2.0.11, compressible@~2.0.5: + version "2.0.12" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.12.tgz#c59a5c99db76767e9876500e271ef63b3493bd66" + dependencies: + mime-db ">= 1.30.0 < 2" + +compression@^1.5.2: + version "1.7.1" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.1.tgz#eff2603efc2e22cf86f35d2eb93589f9875373db" + dependencies: + accepts "~1.3.4" + bytes "3.0.0" + compressible "~2.0.11" + debug "2.6.9" + on-headers "~1.0.1" + safe-buffer "5.1.1" + vary "~1.1.2" + +compression@~1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.5.2.tgz#b03b8d86e6f8ad29683cba8df91ddc6ffc77b395" + dependencies: + accepts "~1.2.12" + bytes "2.1.0" + compressible "~2.0.5" + debug "~2.2.0" + on-headers "~1.0.0" + vary "~1.0.1" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.5.0, concat-stream@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +config-chain@~1.1.11: + version "1.1.11" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2" + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +configstore@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90" + dependencies: + dot-prop "^4.1.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + unique-string "^1.0.0" + write-file-atomic "^2.0.0" + xdg-basedir "^3.0.0" + +connect-history-api-fallback@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.4.0.tgz#3db24f973f4b923b0e82f619ce0df02411ca623d" + +connect-livereload@^0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/connect-livereload/-/connect-livereload-0.5.4.tgz#80157d1371c9f37cc14039ab1895970d119dc3bc" + +connect-timeout@~1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/connect-timeout/-/connect-timeout-1.6.2.tgz#de9a5ec61e33a12b6edaab7b5f062e98c599b88e" + dependencies: + debug "~2.2.0" + http-errors "~1.3.1" + ms "0.7.1" + on-headers "~1.0.0" + +connect@^2.30.0: + version "2.30.2" + resolved "https://registry.yarnpkg.com/connect/-/connect-2.30.2.tgz#8da9bcbe8a054d3d318d74dfec903b5c39a1b609" + dependencies: + basic-auth-connect "1.0.0" + body-parser "~1.13.3" + bytes "2.1.0" + compression "~1.5.2" + connect-timeout "~1.6.2" + content-type "~1.0.1" + cookie "0.1.3" + cookie-parser "~1.3.5" + cookie-signature "1.0.6" + csurf "~1.8.3" + debug "~2.2.0" + depd "~1.0.1" + errorhandler "~1.4.2" + express-session "~1.11.3" + finalhandler "0.4.0" + fresh "0.3.0" + http-errors "~1.3.1" + method-override "~2.3.5" + morgan "~1.6.1" + multiparty "3.3.2" + on-headers "~1.0.0" + parseurl "~1.3.0" + pause "0.1.0" + qs "4.0.0" + response-time "~2.3.1" + serve-favicon "~2.3.0" + serve-index "~1.7.2" + serve-static "~1.10.0" + type-is "~1.6.6" + utils-merge "1.0.0" + vhost "~3.0.1" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + +content-type@~1.0.1, content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + +convert-source-map@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" + +cookie-parser@~1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.3.5.tgz#9d755570fb5d17890771227a02314d9be7cf8356" + dependencies: + cookie "0.1.3" + cookie-signature "1.0.6" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + +cookie@0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.1.3.tgz#e734a5c1417fce472d5aef82c381cabb64d1a435" + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +crc@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.3.0.tgz#fa622e1bc388bf257309082d6b65200ce67090ba" + +create-error-class@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + dependencies: + capture-stack-trace "^1.0.0" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +cryptiles@3.x.x: + version "3.1.2" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" + dependencies: + boom "5.x.x" + +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + +csrf@~3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/csrf/-/csrf-3.0.6.tgz#b61120ddceeafc91e76ed5313bb5c0b2667b710a" + dependencies: + rndm "1.2.0" + tsscmp "1.0.5" + uid-safe "2.1.4" + +csurf@~1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/csurf/-/csurf-1.8.3.tgz#23f2a13bf1d8fce1d0c996588394442cba86a56a" + dependencies: + cookie "0.1.3" + cookie-signature "1.0.6" + csrf "~3.0.0" + http-errors "~1.3.1" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + +cyclist@~0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +dateformat@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" + +debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.4.1, debug@^2.6.6, debug@^2.6.8: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +debug@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + +debuglog@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + +deep-extend@~0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + +defaults@^1.0.0, defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + dependencies: + clone "^1.0.2" + +del@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + dependencies: + globby "^6.1.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.0.0" + rimraf "^2.2.8" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +depd@1.1.1, depd@~1.1.0, depd@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + +depd@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.0.1.tgz#80aec64c9d6d97e65cc2a9caa93c0aa6abf73aaa" + +deprecated@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + +detect-file@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63" + dependencies: + fs-exists-sync "^0.1.0" + +detect-indent@~5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + +detect-libc@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.2.tgz#71ad5d204bf17a6a6ca8f450c61454066ef461e1" + +detect-node@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" + +dezalgo@^1.0.0, dezalgo@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" + dependencies: + asap "^2.0.0" + wrappy "1" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + +dns-packet@^1.0.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.2.2.tgz#a8a26bec7646438963fc86e06f8f8b16d6c8bf7a" + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + dependencies: + buffer-indexof "^1.0.0" + +dot-prop@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + dependencies: + is-obj "^1.0.0" + +dotenv@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d" + +duplexer2@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + dependencies: + readable-stream "~1.1.9" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + +duplexer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + +duplexify@^3.1.2, duplexify@^3.4.2: + version "3.5.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.1.tgz#4e1516be68838bc90a49994f0b39a6e5960befcd" + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +editor@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +encodeurl@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + dependencies: + iconv-lite "~0.4.13" + +end-of-stream@^0.1.4, end-of-stream@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf" + dependencies: + once "~1.3.0" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" + dependencies: + once "^1.4.0" + +err-code@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" + +errno@^0.1.1, errno@^0.1.3, errno@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" + dependencies: + prr "~0.0.0" + +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +errorhandler@~1.4.2: + version "1.4.3" + resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.4.3.tgz#b7b70ed8f359e9db88092f2d20c0f831420ad83f" + dependencies: + accepts "~1.3.0" + escape-html "~1.0.3" + +es6-promise@^4.0.3: + version "4.1.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a" + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + dependencies: + es6-promise "^4.0.3" + +escape-html@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.2.tgz#d77d32fa98e38c2f41ae85e9278e0e0e6ba1022c" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +etag@~1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8" + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + +event-stream@^3.3.2: + version "3.3.4" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + +eventemitter3@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" + +eventsource@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + dependencies: + original ">=0.0.5" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +expand-tilde@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" + dependencies: + os-homedir "^1.0.1" + +expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + dependencies: + homedir-polyfill "^1.0.1" + +express-session@~1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.11.3.tgz#5cc98f3f5ff84ed835f91cbf0aabd0c7107400af" + dependencies: + cookie "0.1.3" + cookie-signature "1.0.6" + crc "3.3.0" + debug "~2.2.0" + depd "~1.0.1" + on-headers "~1.0.0" + parseurl "~1.3.0" + uid-safe "~2.0.0" + utils-merge "1.0.0" + +express@^4.13.3: + version "4.16.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c" + dependencies: + accepts "~1.3.4" + array-flatten "1.1.1" + body-parser "1.18.2" + content-disposition "0.5.2" + content-type "~1.0.4" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.1" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.1.0" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.2" + path-to-regexp "0.1.7" + proxy-addr "~2.0.2" + qs "6.5.1" + range-parser "~1.2.0" + safe-buffer "5.1.1" + send "0.16.1" + serve-static "1.13.1" + setprototypeof "1.1.0" + statuses "~1.3.1" + type-is "~1.6.15" + utils-merge "1.0.1" + vary "~1.1.2" + +extend@^3.0.0, extend@~3.0.0, extend@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extsprintf@1.3.0, extsprintf@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +fancy-log@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948" + dependencies: + chalk "^1.1.1" + time-stamp "^1.0.0" + +fast-deep-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + +fastqueue@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/fastqueue/-/fastqueue-0.1.0.tgz#6c691016b3806186476eeb05a717babb8f633c19" + +faye-websocket@^0.10.0, faye-websocket@~0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" + dependencies: + websocket-driver ">=0.5.1" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +finalhandler@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.4.0.tgz#965a52d9e8d05d2b857548541fb89b53a2497d9b" + dependencies: + debug "~2.2.0" + escape-html "1.0.2" + on-finished "~2.3.0" + unpipe "~1.0.0" + +finalhandler@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" + dependencies: + 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" + +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +findup-sync@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12" + dependencies: + detect-file "^0.1.0" + is-glob "^2.0.1" + micromatch "^2.3.7" + resolve-dir "^0.1.0" + +fined@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.1.0.tgz#b37dc844b76a2f5e7081e884f7c0ae344f153476" + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" + +first-chunk-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" + +flagged-respawn@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5" + +flush-write-stream@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.2.tgz#c81b90d8746766f1a609a46809946c45dd8ae417" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.4" + +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + dependencies: + for-in "^1.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +form-data@~2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + +fresh@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + +from2@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-1.3.0.tgz#88413baaa5f9a597cfde9221d86986cd3c061dfd" + dependencies: + inherits "~2.0.1" + readable-stream "~1.1.10" + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + +fs-exists-sync@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" + +fs-vacuum@~1.2.10: + version "1.2.10" + resolved "https://registry.yarnpkg.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz#b7629bec07a4031a2548fdf99f5ecf1cc8b31e36" + dependencies: + graceful-fs "^4.1.2" + path-is-inside "^1.0.1" + rimraf "^2.5.2" + +fs-write-stream-atomic@^1.0.8, fs-write-stream-atomic@~1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.36" + +fstream-ignore@^1.0.0, fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream-npm@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/fstream-npm/-/fstream-npm-1.2.1.tgz#08c4a452f789dcbac4c89a4563c902b2c862fd5b" + dependencies: + fstream-ignore "^1.0.0" + inherits "2" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2, fstream@~1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + 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" + +gaze@0.5.x, gaze@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f" + dependencies: + globule "~0.1.0" + +genfun@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/genfun/-/genfun-4.0.1.tgz#ed10041f2e4a7f1b0a38466d17a5c3e27df1dfc1" + +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob-stream@^3.1.5: + version "3.1.18" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz#9170a5f12b790306fdfe598f313f8f7954fd143b" + dependencies: + glob "^4.3.1" + glob2base "^0.0.12" + minimatch "^2.0.1" + ordered-read-streams "^0.1.0" + through2 "^0.6.1" + unique-stream "^1.0.0" + +glob-watcher@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz#b95b4a8df74b39c83298b0c05c978b4d9a3b710b" + dependencies: + gaze "^0.5.1" + +glob2base@^0.0.12, glob2base@~0.0.11: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + dependencies: + find-index "^0.1.1" + +glob@^4.0.5, glob@^4.3.1: + version "4.5.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "^2.0.1" + once "^1.3.0" + +glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + 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" + +glob@~3.1.21: + version "3.1.21" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd" + dependencies: + graceful-fs "~1.2.0" + inherits "1" + minimatch "~0.2.11" + +global-dirs@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.0.tgz#10d34039e0df04272e262cf24224f7209434df4f" + dependencies: + ini "^1.3.4" + +global-modules@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" + dependencies: + global-prefix "^0.1.4" + is-windows "^0.2.0" + +global-prefix@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" + dependencies: + homedir-polyfill "^1.0.0" + ini "^1.3.4" + is-windows "^0.2.0" + which "^1.2.12" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globule@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5" + dependencies: + glob "~3.1.21" + lodash "~1.0.1" + minimatch "~0.2.11" + +glogg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5" + dependencies: + sparkles "^1.0.0" + +got@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + dependencies: + create-error-class "^3.0.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + unzip-response "^2.0.1" + url-parse-lax "^1.0.0" + +graceful-fs@^3.0.0, graceful-fs@^3.0.2, graceful-fs@^3.0.5: + version "3.0.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" + dependencies: + natives "^1.1.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@~4.1.11: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +graceful-fs@~1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" + +gulp-batch@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gulp-batch/-/gulp-batch-1.0.1.tgz#d9a6a1abb504b3a41472d9ea272d4919e11b0f86" + dependencies: + async-done "^0.4.0" + stream-array "^0.1.3" + +gulp-clean-css@3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/gulp-clean-css/-/gulp-clean-css-3.9.0.tgz#e43e4c8d695060f6ba08a154d8e76d0d87b1c822" + dependencies: + clean-css "4.1.9" + gulp-util "3.0.8" + through2 "2.0.3" + vinyl-sourcemaps-apply "0.2.1" + +gulp-connect@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/gulp-connect/-/gulp-connect-5.0.0.tgz#f2fdf306ae911468368c2285f2d782f13eddaf4e" + dependencies: + connect "^2.30.0" + connect-livereload "^0.5.4" + event-stream "^3.3.2" + gulp-util "^3.0.6" + tiny-lr "^0.2.1" + +gulp-less@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/gulp-less/-/gulp-less-3.3.2.tgz#f6636adcc66150a8902719fa59963fc7f862a49a" + dependencies: + accord "^0.27.3" + gulp-util "^3.0.7" + less "2.6.x || ^2.7.1" + object-assign "^4.0.1" + through2 "^2.0.0" + vinyl-sourcemaps-apply "^0.2.0" + +gulp-plumber@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/gulp-plumber/-/gulp-plumber-1.1.0.tgz#f12176c2d0422f60306c242fff6a01a394faba09" + dependencies: + gulp-util "^3" + through2 "^2" + +gulp-rename@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-1.2.2.tgz#3ad4428763f05e2764dec1c67d868db275687817" + +gulp-util@3.0.8, gulp-util@^3, gulp-util@^3.0.0, gulp-util@^3.0.6, gulp-util@^3.0.7, gulp-util@~3.0.0: + version "3.0.8" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" + dependencies: + array-differ "^1.0.0" + array-uniq "^1.0.2" + beeper "^1.0.0" + chalk "^1.0.0" + dateformat "^2.0.0" + fancy-log "^1.1.0" + gulplog "^1.0.0" + has-gulplog "^0.1.0" + lodash._reescape "^3.0.0" + lodash._reevaluate "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.template "^3.0.0" + minimist "^1.1.0" + multipipe "^0.1.2" + object-assign "^3.0.0" + replace-ext "0.0.1" + through2 "^2.0.0" + vinyl "^0.5.0" + +gulp-watch-less@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gulp-watch-less/-/gulp-watch-less-1.0.1.tgz#139ae37a38a2a596421eec97b2bd0bd50e2cb1c4" + dependencies: + gulp-util "^3.0.0" + gulp-watch "^1.1.0" + less "~2.3.1" + lodash.defaults "^2.4.1" + through2 "^0.6.1" + +gulp-watch@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/gulp-watch/-/gulp-watch-1.2.1.tgz#43035e76046cd8fed303365cb09e040a2e2aa09b" + dependencies: + gaze "0.5.x" + glob2base "~0.0.11" + gulp-batch "1.0.1" + gulp-util "~3.0.0" + path2glob "0.0.2" + readable-stream "^1.0.31" + vinyl "^0.4.3" + vinyl-file "~1.1.0" + +gulp@3.9.1: + version "3.9.1" + resolved "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz#571ce45928dd40af6514fc4011866016c13845b4" + dependencies: + archy "^1.0.0" + chalk "^1.0.0" + deprecated "^0.0.1" + gulp-util "^3.0.0" + interpret "^1.0.0" + liftoff "^2.1.0" + minimist "^1.1.0" + orchestrator "^0.3.0" + pretty-hrtime "^1.0.0" + semver "^4.1.0" + tildify "^1.0.0" + v8flags "^2.0.2" + vinyl-fs "^0.3.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + dependencies: + glogg "^1.0.0" + +handle-thing@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +har-validator@~5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" + dependencies: + ajv "^5.1.0" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +has-gulplog@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" + dependencies: + sparkles "^1.0.0" + +has-unicode@^2.0.0, has-unicode@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +hawk@3.1.3, hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hawk@~6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" + dependencies: + boom "4.x.x" + cryptiles "3.x.x" + hoek "4.x.x" + sntp "2.x.x" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +hoek@4.x.x: + version "4.2.0" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" + +homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@^2.1.4, hosted-git-info@^2.4.2, hosted-git-info@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-entities@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + +http-cache-semantics@^3.7.3: + version "3.8.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.0.tgz#1e3ce248730e189ac692a6697b9e3fdea2ff8da3" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + +http-errors@1.6.2, http-errors@~1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" + dependencies: + depd "1.1.1" + inherits "2.0.3" + setprototypeof "1.0.3" + statuses ">= 1.3.1 < 2" + +http-errors@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.3.1.tgz#197e22cdebd4198585e8694ef6786197b91ed942" + dependencies: + inherits "~2.0.1" + statuses "1" + +http-parser-js@>=0.4.0: + version "0.4.9" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.9.tgz#ea1a04fb64adff0242e9974f297dd4c3cad271e1" + +http-proxy-agent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.0.0.tgz#46482a2f0523a4d6082551709f469cb3e4a85ff4" + dependencies: + agent-base "4" + debug "2" + +http-proxy-middleware@~0.17.4: + version "0.17.4" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" + dependencies: + http-proxy "^1.16.2" + is-glob "^3.1.0" + lodash "^4.17.2" + micromatch "^2.3.11" + +http-proxy@^1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" + dependencies: + eventemitter3 "1.x.x" + requires-port "1.x.x" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-proxy-agent@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.1.0.tgz#1391bee7fd66aeabc0df2a1fa90f58954f43e443" + dependencies: + agent-base "^4.1.0" + debug "^2.4.1" + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + dependencies: + ms "^2.0.0" + +iconv-lite@0.4.11: + version "0.4.11" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.11.tgz#2ecb42fd294744922209a2e7c404dac8793d8ade" + +iconv-lite@0.4.13: + version "0.4.13" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" + +iconv-lite@0.4.19, iconv-lite@~0.4.13: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + +iferr@^0.1.5, iferr@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + +image-size@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.3.5.tgz#83240eab2fb5b00b04aab8c74b0471e9cba7ad8c" + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +indx@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/indx/-/indx-0.2.3.tgz#15dcf56ee9cf65c0234c513c27fbd580e70fbc50" + +inflight@^1.0.4, inflight@~1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +ini@^1.3.4, ini@~1.3.0, ini@~1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + +init-package-json@~1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.1.tgz#cd873a167796befb99612b28762a0b6393fd8f6a" + dependencies: + glob "^7.1.1" + npm-package-arg "^4.0.0 || ^5.0.0" + promzard "^0.3.0" + read "~1.0.1" + read-package-json "1 || 2" + semver "2.x || 3.x || 4 || 5" + validate-npm-package-license "^3.0.1" + validate-npm-package-name "^3.0.0" + +install@0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/install/-/install-0.10.1.tgz#1c7b53c8dd7335ef534c2648de28f599df1bdd97" + +internal-ip@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c" + dependencies: + meow "^3.3.0" + +interpret@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +ip@^1.1.0, ip@^1.1.4, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + +ipaddr.js@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.5.2.tgz#d4b505bde9946987ccf0fc58d9010ff9607e3fa0" + +is-absolute@^0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" + dependencies: + is-relative "^0.2.1" + is-windows "^0.2.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-extglob@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + +is-installed-globally@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + dependencies: + global-dirs "^0.1.0" + is-path-inside "^1.0.0" + +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" + dependencies: + path-is-inside "^1.0.1" + +is-plain-object@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + +is-relative@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5" + dependencies: + is-unc-path "^0.1.1" + +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-stream@^1.0.0, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-unc-path@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9" + dependencies: + unc-path-regex "^0.1.0" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +is-windows@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +json-parse-better-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz#50183cd1b2d25275de069e9e71b467ac9eab973a" + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json3@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +latest-version@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + dependencies: + package-json "^4.0.0" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lazy-property@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazy-property/-/lazy-property-1.0.0.tgz#84ddc4b370679ba8bd4cdcfa4c06b43d57111147" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +"less@2.6.x || ^2.7.1": + version "2.7.3" + resolved "https://registry.yarnpkg.com/less/-/less-2.7.3.tgz#cc1260f51c900a9ec0d91fb6998139e02507b63b" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + mime "^1.2.11" + mkdirp "^0.5.0" + promise "^7.1.1" + request "2.81.0" + source-map "^0.5.3" + +less@2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/less/-/less-2.7.2.tgz#368d6cc73e1fb03981183280918743c5dcf9b3df" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + mime "^1.2.11" + mkdirp "^0.5.0" + promise "^7.1.1" + request "^2.72.0" + source-map "^0.5.3" + +less@~2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/less/-/less-2.3.1.tgz#c10ec082b2f2950f6e1c750e4da14bcc543ed845" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^3.0.5" + image-size "~0.3.5" + mime "^1.2.11" + mkdirp "^0.5.0" + promise "^6.0.1" + request "^2.51.0" + source-map "^0.2.0" + +libnpx@~9.2.0: + version "9.2.3" + resolved "https://registry.yarnpkg.com/libnpx/-/libnpx-9.2.3.tgz#f6fb833dae64044c93dc31eff99cff4a019dc304" + dependencies: + dotenv "^4.0.0" + npm-package-arg "^5.1.2" + rimraf "^2.6.1" + safe-buffer "^5.1.0" + update-notifier "^2.2.0" + which "^1.2.14" + y18n "^3.2.1" + yargs "^8.0.2" + +liftoff@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.3.0.tgz#a98f2ff67183d8ba7cfaca10548bd7ff0550b385" + dependencies: + extend "^3.0.0" + findup-sync "^0.4.2" + fined "^1.0.1" + flagged-respawn "^0.3.2" + lodash.isplainobject "^4.0.4" + lodash.isstring "^4.0.1" + lodash.mapvalues "^4.4.0" + rechoir "^0.6.2" + resolve "^1.1.7" + +livereload-js@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-2.2.2.tgz#6c87257e648ab475bc24ea257457edcc1f8d0bc2" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lockfile@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.3.tgz#2638fc39a0331e9cac1a04b71799931c9c50df79" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basetostring@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" + +lodash._baseuniq@~4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" + dependencies: + lodash._createset "~4.0.0" + lodash._root "~3.0.0" + +lodash._basevalues@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + +lodash._createset@~4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash._isnative@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._isnative/-/lodash._isnative-2.4.1.tgz#3ea6404b784a7be836c7b57580e1cdf79b14832c" + +lodash._objecttypes@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz#7c0b7f69d98a1f76529f890b0cdb1b4dfec11c11" + +lodash._reescape@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" + +lodash._reevaluate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + +lodash._root@^3.0.0, lodash._root@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + +lodash._shimkeys@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash._shimkeys/-/lodash._shimkeys-2.4.1.tgz#6e9cc9666ff081f0b5a6c978b83e242e6949d203" + dependencies: + lodash._objecttypes "~2.4.1" + +lodash.clone@^4.3.2: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" + +lodash.clonedeep@~4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + +lodash.defaults@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-2.4.1.tgz#a7e8885f05e68851144b6e12a8f3678026bc4c54" + dependencies: + lodash._objecttypes "~2.4.1" + lodash.keys "~2.4.1" + +lodash.defaults@^4.0.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + +lodash.escape@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" + dependencies: + lodash._root "^3.0.0" + +lodash.flatten@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.isobject@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-2.4.1.tgz#5a2e47fe69953f1ee631a7eba1fe64d2d06558f5" + dependencies: + lodash._objecttypes "~2.4.1" + +lodash.isplainobject@^4.0.4: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.keys@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-2.4.1.tgz#48dea46df8ff7632b10d706b8acb26591e2b3727" + dependencies: + lodash._isnative "~2.4.1" + lodash._shimkeys "~2.4.1" + lodash.isobject "~2.4.1" + +lodash.mapvalues@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" + +lodash.merge@^4.4.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" + +lodash.partialright@^4.1.4: + version "4.2.1" + resolved "https://registry.yarnpkg.com/lodash.partialright/-/lodash.partialright-4.2.1.tgz#0130d80e83363264d40074f329b8a3e7a8a1cc4b" + +lodash.pick@^4.2.1: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" + +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + +lodash.template@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" + dependencies: + lodash._basecopy "^3.0.0" + lodash._basetostring "^3.0.0" + lodash._basevalues "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + lodash.keys "^3.0.0" + lodash.restparam "^3.0.0" + lodash.templatesettings "^3.0.0" + +lodash.templatesettings@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + +lodash.union@~4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + +lodash.uniq@^4.3.0, lodash.uniq@~4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + +lodash.without@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" + +lodash@^4.17.2: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + +lodash@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" + +loglevel@^1.4.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.5.1.tgz#189078c94ab9053ee215a0acdbf24244ea0f6502" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lowercase-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + +lru-cache@2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + +lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@~4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +make-dir@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51" + dependencies: + pify "^3.0.0" + +make-fetch-happen@^2.4.13: + version "2.5.0" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-2.5.0.tgz#08c22d499f4f30111addba79fe87c98cf01b6bc8" + dependencies: + agentkeepalive "^3.3.0" + cacache "^9.2.9" + http-cache-semantics "^3.7.3" + http-proxy-agent "^2.0.0" + https-proxy-agent "^2.0.0" + lru-cache "^4.1.1" + mississippi "^1.2.0" + node-fetch-npm "^2.0.1" + promise-retry "^1.1.1" + socks-proxy-agent "^3.0.0" + ssri "^4.1.6" + +map-cache@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + +map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + +memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +meow@^3.3.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + 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" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + +method-override@~2.3.5: + version "2.3.10" + resolved "https://registry.yarnpkg.com/method-override/-/method-override-2.3.10.tgz#e3daf8d5dee10dd2dce7d4ae88d62bbee77476b4" + dependencies: + debug "2.6.9" + methods "~1.1.2" + parseurl "~1.3.2" + vary "~1.1.2" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + +micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + 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-db@>= 1.30.0 < 2": + version "1.31.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.31.0.tgz#a49cd8f3ebf3ed1a482b60561d9105ad40ca74cb" + +mime-db@~1.30.0: + version "1.30.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" + +mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.17, mime-types@~2.1.6, mime-types@~2.1.7, mime-types@~2.1.9: + version "2.1.17" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" + dependencies: + mime-db "~1.30.0" + +mime@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" + +mime@1.4.1, mime@^1.2.11, mime@^1.3.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + +mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + +minimalistic-assert@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" + +minimatch@^2.0.1: + version "2.0.10" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + dependencies: + brace-expansion "^1.0.0" + +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimatch@~0.2.11: + version "0.2.14" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +mississippi@^1.2.0, mississippi@^1.3.0, mississippi@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-1.3.0.tgz#d201583eb12327e3c5c1642a404a9cacf94e34f5" + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^1.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +morgan@~1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.6.1.tgz#5fd818398c6819cba28a7cd6664f292fe1c0bbf2" + dependencies: + basic-auth "~1.0.3" + debug "~2.2.0" + depd "~1.0.1" + on-finished "~2.3.0" + on-headers "~1.0.0" + +move-concurrently@^1.0.1, move-concurrently@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + +ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + +ms@2.0.0, ms@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + +multicast-dns@^6.0.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.1.1.tgz#6e7de86a570872ab17058adea7160bbeca814dde" + dependencies: + dns-packet "^1.0.1" + thunky "^0.1.0" + +multiparty@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/multiparty/-/multiparty-3.3.2.tgz#35de6804dc19643e5249f3d3e3bdc6c8ce301d3f" + dependencies: + readable-stream "~1.1.9" + stream-counter "~0.2.0" + +multipipe@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + dependencies: + duplexer2 "0.0.2" + +mute-stream@~0.0.4: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + +nan@^2.3.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" + +natives@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" + +negotiator@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.5.3.tgz#269d5c476810ec92edbe7b6c2f28316384f9a7e8" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + +next-tick@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-0.2.2.tgz#75da4a927ee5887e39065880065b7336413b310d" + +node-fetch-npm@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" + dependencies: + encoding "^0.1.11" + json-parse-better-errors "^1.0.0" + safe-buffer "^5.1.1" + +node-forge@0.6.33: + version "0.6.33" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.6.33.tgz#463811879f573d45155ad6a9f43dc296e8e85ebc" + +node-gyp@~3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60" + dependencies: + 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" + +node-pre-gyp@^0.6.36: + version "0.6.39" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" + dependencies: + detect-libc "^1.0.2" + hawk "3.1.3" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +nopt@^4.0.1, nopt@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0, "normalize-package-data@~1.0.1 || ^2.0.0", normalize-package-data@~2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + 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@^2.0.0, normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +normalize.css@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-7.0.0.tgz#abfb1dd82470674e0322b53ceb1aaf412938e4bf" + +npm-cache-filename@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" + +npm-install-checks@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.0.tgz#d4aecdfd51a53e3723b7b2f93b2ee28e307bc0d7" + dependencies: + semver "^2.3.0 || 3.x || 4 || 5" + +"npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0", "npm-package-arg@^4.0.0 || ^5.0.0", npm-package-arg@^5.1.2, npm-package-arg@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-5.1.2.tgz#fb18d17bb61e60900d6312619919bd753755ab37" + dependencies: + hosted-git-info "^2.4.2" + osenv "^0.1.4" + semver "^5.1.0" + validate-npm-package-name "^3.0.0" + +npm-pick-manifest@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-1.0.4.tgz#a5ee6510c1fe7221c0bc0414e70924c14045f7e8" + dependencies: + npm-package-arg "^5.1.2" + semver "^5.3.0" + +npm-registry-client@~8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.4.0.tgz#d52b901685647fc62a4c03eafecb6ceaa5018d4c" + dependencies: + concat-stream "^1.5.2" + graceful-fs "^4.1.6" + normalize-package-data "~1.0.1 || ^2.0.0" + npm-package-arg "^3.0.0 || ^4.0.0 || ^5.0.0" + once "^1.3.3" + request "^2.74.0" + retry "^0.10.0" + semver "2 >=2.2.1 || 3.x || 4 || 5" + slide "^1.1.3" + ssri "^4.1.2" + optionalDependencies: + npmlog "2 || ^3.1.0 || ^4.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +npm-user-validate@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.0.tgz#8ceca0f5cea04d4e93519ef72d0557a75122e951" + +npm@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/npm/-/npm-5.3.0.tgz#e2ae85ef09d53f7f570a05578692899bf7879f17" + dependencies: + JSONStream "~1.3.1" + abbrev "~1.1.0" + ansi-regex "~3.0.0" + ansicolors "~0.3.2" + ansistyles "~0.1.3" + aproba "~1.1.2" + archy "~1.0.0" + bluebird "~3.5.0" + cacache "~9.2.9" + call-limit "~1.1.0" + chownr "~1.0.1" + cmd-shim "~2.0.2" + columnify "~1.5.4" + config-chain "~1.1.11" + detect-indent "~5.0.0" + dezalgo "~1.0.3" + editor "~1.0.0" + fs-vacuum "~1.2.10" + fs-write-stream-atomic "~1.0.10" + fstream "~1.0.11" + fstream-npm "~1.2.1" + glob "~7.1.2" + graceful-fs "~4.1.11" + has-unicode "~2.0.1" + hosted-git-info "~2.5.0" + iferr "~0.1.5" + inflight "~1.0.6" + inherits "~2.0.3" + ini "~1.3.4" + init-package-json "~1.10.1" + lazy-property "~1.0.0" + libnpx "~9.2.0" + lockfile "~1.0.3" + lodash._baseuniq "~4.6.0" + lodash.clonedeep "~4.5.0" + lodash.union "~4.6.0" + lodash.uniq "~4.5.0" + lodash.without "~4.4.0" + lru-cache "~4.1.1" + mississippi "~1.3.0" + mkdirp "~0.5.1" + move-concurrently "~1.0.1" + node-gyp "~3.6.2" + nopt "~4.0.1" + normalize-package-data "~2.4.0" + npm-cache-filename "~1.0.2" + npm-install-checks "~3.0.0" + npm-package-arg "~5.1.2" + npm-registry-client "~8.4.0" + npm-user-validate "~1.0.0" + npmlog "~4.1.2" + once "~1.4.0" + opener "~1.4.3" + osenv "~0.1.4" + pacote "~2.7.38" + path-is-inside "~1.0.2" + promise-inflight "~1.0.1" + read "~1.0.7" + read-cmd-shim "~1.0.1" + read-installed "~4.0.3" + read-package-json "~2.0.10" + read-package-tree "~5.1.6" + readable-stream "~2.3.3" + request "~2.81.0" + retry "~0.10.1" + rimraf "~2.6.1" + safe-buffer "~5.1.1" + semver "~5.3.0" + sha "~2.0.1" + slide "~1.1.6" + sorted-object "~2.0.1" + sorted-union-stream "~2.1.3" + ssri "~4.1.6" + strip-ansi "~4.0.0" + tar "~2.2.1" + text-table "~0.2.0" + uid-number "0.0.6" + umask "~1.1.0" + unique-filename "~1.1.0" + unpipe "~1.0.0" + update-notifier "~2.2.0" + uuid "~3.1.0" + validate-npm-package-name "~3.0.0" + which "~1.2.14" + worker-farm "~1.4.1" + wrappy "~1.0.2" + write-file-atomic "~2.1.0" + +"npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.2, npmlog@~4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + 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@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +oauth-sign@~0.8.1, oauth-sign@~0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.pick@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + +obuf@^1.0.0, obuf@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.0, on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + +once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0, once@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +once@~1.3.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" + dependencies: + wrappy "1" + +opener@~1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" + +opn@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95" + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + +orchestrator@^0.3.0: + version "0.3.8" + resolved "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e" + dependencies: + end-of-stream "~0.1.5" + sequencify "~0.0.7" + stream-consume "~0.1.0" + +ordered-read-streams@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126" + +original@>=0.0.5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" + dependencies: + url-parse "1.0.x" + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-tmpdir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@0, osenv@^0.1.4, osenv@~0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + +package-json@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + dependencies: + got "^6.7.1" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + +pacote@~2.7.38: + version "2.7.38" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-2.7.38.tgz#5091f8774298c26c3eca24606037f1bb73db74c1" + dependencies: + bluebird "^3.5.0" + cacache "^9.2.9" + glob "^7.1.2" + lru-cache "^4.1.1" + make-fetch-happen "^2.4.13" + minimatch "^3.0.4" + mississippi "^1.2.0" + normalize-package-data "^2.4.0" + npm-package-arg "^5.1.2" + npm-pick-manifest "^1.0.4" + osenv "^0.1.4" + promise-inflight "^1.0.1" + promise-retry "^1.1.1" + protoduck "^4.0.0" + safe-buffer "^5.1.1" + semver "^5.3.0" + ssri "^4.1.6" + tar-fs "^1.15.3" + tar-stream "^1.5.4" + unique-filename "^1.1.0" + which "^1.2.12" + +parallel-transform@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + dependencies: + cyclist "~0.2.2" + inherits "^2.0.3" + readable-stream "^2.1.5" + +parse-filepath@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.1.tgz#159d6155d43904d16c10ef698911da1e91969b73" + dependencies: + is-absolute "^0.2.3" + map-cache "^0.2.0" + path-root "^0.1.1" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + +parseurl@~1.3.0, parseurl@~1.3.1, parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1, path-is-inside@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + dependencies: + path-root-regex "^0.1.0" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + +path2glob@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/path2glob/-/path2glob-0.0.2.tgz#29e8ce0d15407c2a50b633ef8050b2f297c04702" + dependencies: + glob "^4.0.5" + +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + dependencies: + through "~2.3" + +pause@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/pause/-/pause-0.1.0.tgz#ebc8a4a8619ff0b8a81ac1513c3434ff469fdb74" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +portfinder@^1.0.9: + version "1.0.13" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +pretty-hrtime@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +promise-inflight@^1.0.1, promise-inflight@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + +promise-retry@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" + dependencies: + err-code "^1.0.0" + retry "^0.10.0" + +promise@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-6.1.0.tgz#2ce729f6b94b45c26891ad0602c5c90e04c6eef6" + dependencies: + asap "~1.0.0" + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + dependencies: + asap "~2.0.3" + +promzard@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + dependencies: + read "1" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + +protoduck@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-4.0.0.tgz#fe4874d8c7913366cfd9ead12453a22cd3657f8e" + dependencies: + genfun "^4.0.1" + +proxy-addr@~2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec" + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.5.2" + +prr@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +pump@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.2.tgz#3b3ee6512f94f0e575538c17995f9f16990a5d51" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.3.5" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.3.5.tgz#1b671c619940abcaeac0ad0e3a3c164be760993b" + dependencies: + duplexify "^3.1.2" + inherits "^2.0.1" + pump "^1.0.0" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +qs@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-4.0.0.tgz#c31d9b74ec27df75e543a86c78728ed8d4623607" + +qs@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-5.2.0.tgz#a9f31142af468cb72b25b30136ba2456834916be" + +qs@6.5.1, qs@~6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + +qs@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-5.1.0.tgz#4d932e5c7ea411cca76a312d39a606200fd50cd9" + +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +querystringify@0.0.x: + version "0.0.4" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" + +querystringify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" + +random-bytes@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" + +randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +range-parser@^1.0.3, range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + +range-parser@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.0.3.tgz#6872823535c692e2c2a0103826afd82c2e0ff175" + +raw-body@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" + dependencies: + bytes "3.0.0" + http-errors "1.6.2" + iconv-lite "0.4.19" + unpipe "1.0.0" + +raw-body@~2.1.2, raw-body@~2.1.5: + version "2.1.7" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.1.7.tgz#adfeace2e4fb3098058014d08c072dcc59758774" + dependencies: + bytes "2.4.0" + iconv-lite "0.4.13" + unpipe "1.0.0" + +rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: + version "1.2.2" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-cmd-shim@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" + dependencies: + graceful-fs "^4.1.2" + +read-installed@~4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067" + dependencies: + debuglog "^1.0.1" + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + semver "2 || 3 || 4 || 5" + slide "~1.1.3" + util-extend "^1.0.1" + optionalDependencies: + graceful-fs "^4.1.2" + +"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@~2.0.10: + version "2.0.12" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.12.tgz#68ea45f98b3741cb6e10ae3bbd42a605026a6951" + dependencies: + glob "^7.1.1" + json-parse-better-errors "^1.0.0" + normalize-package-data "^2.0.0" + slash "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.2" + +read-package-tree@~5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.1.6.tgz#4f03e83d0486856fb60d97c94882841c2a7b1b7a" + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" + once "^1.3.0" + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read@1, read@~1.0.1, read@~1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + dependencies: + mute-stream "~0.0.4" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + +"readable-stream@>=1.0.33-1 <1.1.0-0": + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^1.0.31, readable-stream@~1.1.0, readable-stream@~1.1.10, readable-stream@~1.1.8, readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdir-scoped-modules@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747" + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" + graceful-fs "^4.1.2" + once "^1.3.0" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + dependencies: + is-equal-shallow "^0.1.3" + +registry-auth-token@^3.0.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.1.tgz#fb0d3289ee0d9ada2cbb52af5dfe66cb070d3006" + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + dependencies: + rc "^1.0.1" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +replace-ext@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + +request@2, request@^2.51.0, request@^2.72.0, request@^2.74.0: + version "2.83.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" + dependencies: + 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@2.81.0, request@~2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + 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" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +requires-port@1.0.x, requires-port@1.x.x, requires-port@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + +resolve-dir@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" + dependencies: + expand-tilde "^1.2.2" + global-modules "^0.2.3" + +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.3: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" + dependencies: + path-parse "^1.0.5" + +response-time@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/response-time/-/response-time-2.3.2.tgz#ffa71bab952d62f7c1d49b7434355fbc68dffc5a" + dependencies: + depd "~1.1.0" + on-headers "~1.0.1" + +retry@^0.10.0, retry@~0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@~2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +rndm@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/rndm/-/rndm-1.2.0.tgz#f33fe9cfb52bbfd520aa18323bc65db110a1b76c" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + dependencies: + aproba "^1.1.1" + +safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + +selfsigned@^1.9.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.1.tgz#bf8cb7b83256c4551e31347c6311778db99eec52" + dependencies: + node-forge "0.6.33" + +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + dependencies: + semver "^5.0.3" + +"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + +semver@^4.1.0: + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + +send@0.13.2: + version "0.13.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.13.2.tgz#765e7607c8055452bba6f0b052595350986036de" + dependencies: + debug "~2.2.0" + depd "~1.1.0" + destroy "~1.0.4" + escape-html "~1.0.3" + etag "~1.7.0" + fresh "0.3.0" + http-errors "~1.3.1" + mime "1.3.4" + ms "0.7.1" + on-finished "~2.3.0" + range-parser "~1.0.3" + statuses "~1.2.1" + +send@0.16.1: + version "0.16.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3" + dependencies: + debug "2.6.9" + depd "~1.1.1" + destroy "~1.0.4" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.3.1" + +sequencify@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c" + +serve-favicon@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.3.2.tgz#dd419e268de012ab72b319d337f2105013f9381f" + dependencies: + etag "~1.7.0" + fresh "0.3.0" + ms "0.7.2" + parseurl "~1.3.1" + +serve-index@^1.7.2: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + dependencies: + 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" + +serve-index@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.7.3.tgz#7a057fc6ee28dc63f64566e5fa57b111a86aecd2" + dependencies: + accepts "~1.2.13" + batch "0.5.3" + debug "~2.2.0" + escape-html "~1.0.3" + http-errors "~1.3.1" + mime-types "~2.1.9" + parseurl "~1.3.1" + +serve-static@1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz#4c57d53404a761d8f2e7c1e8a18a47dbf278a719" + dependencies: + encodeurl "~1.0.1" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.1" + +serve-static@~1.10.0: + version "1.10.3" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.10.3.tgz#ce5a6ecd3101fed5ec09827dac22a9c29bfb0535" + dependencies: + escape-html "~1.0.3" + parseurl "~1.3.1" + send "0.13.2" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +setprototypeof@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + +sha@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/sha/-/sha-2.0.1.tgz#6030822fbd2c9823949f8f72ed6411ee5cf25aae" + dependencies: + graceful-fs "^4.1.2" + readable-stream "^2.0.2" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +sigmund@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slide@^1.1.3, slide@^1.1.5, slide@~1.1.3, slide@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + +smart-buffer@^1.0.13: + version "1.1.15" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sntp@2.x.x: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" + dependencies: + hoek "4.x.x" + +sockjs-client@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" + dependencies: + debug "^2.6.6" + eventsource "0.1.6" + faye-websocket "~0.11.0" + inherits "^2.0.1" + json3 "^3.3.2" + url-parse "^1.1.8" + +sockjs@0.3.18: + version "0.3.18" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207" + dependencies: + faye-websocket "^0.10.0" + uuid "^2.0.2" + +socks-proxy-agent@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz#2eae7cf8e2a82d34565761539a7f9718c5617659" + dependencies: + agent-base "^4.1.0" + socks "^1.1.10" + +socks@^1.1.10: + version "1.1.10" + resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a" + dependencies: + ip "^1.1.4" + smart-buffer "^1.0.13" + +sorted-object@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/sorted-object/-/sorted-object-2.0.1.tgz#7d631f4bd3a798a24af1dffcfbfe83337a5df5fc" + +sorted-union-stream@~2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/sorted-union-stream/-/sorted-union-stream-2.1.3.tgz#c7794c7e077880052ff71a8d4a2dbb4a9a638ac7" + dependencies: + from2 "^1.3.0" + stream-iterate "^1.1.0" + +source-map@0.5.x, source-map@^0.5.1, source-map@^0.5.3, source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +source-map@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + dependencies: + amdefine ">=0.0.4" + +sparkles@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +spdy-transport@^2.0.18: + version "2.0.20" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.20.tgz#735e72054c486b2354fe89e702256004a39ace4d" + dependencies: + debug "^2.6.8" + detect-node "^2.0.3" + hpack.js "^2.1.6" + obuf "^1.1.1" + readable-stream "^2.2.9" + safe-buffer "^5.0.1" + wbuf "^1.7.2" + +spdy@^3.4.1: + version "3.4.7" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" + dependencies: + debug "^2.6.8" + handle-thing "^1.2.5" + http-deceiver "^1.2.7" + safe-buffer "^5.0.1" + select-hose "^2.0.0" + spdy-transport "^2.0.18" + +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + dependencies: + through "2" + +sshpk@^1.7.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +ssri@^4.1.2, ssri@^4.1.6, ssri@~4.1.6: + version "4.1.6" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-4.1.6.tgz#0cb49b6ac84457e7bdd466cb730c3cb623e9a25b" + dependencies: + safe-buffer "^5.1.0" + +statuses@1, "statuses@>= 1.3.1 < 2": + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + +statuses@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.2.1.tgz#dded45cc18256d51ed40aec142489d5c61026d28" + +statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + +stream-array@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/stream-array/-/stream-array-0.1.3.tgz#6e374e89c9aaa1aa489951c07011f245611fc98b" + dependencies: + fastqueue "~0.1.0" + readable-stream "~1.1.0" + +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + dependencies: + duplexer "~0.1.1" + +stream-consume@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" + +stream-counter@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/stream-counter/-/stream-counter-0.2.0.tgz#ded266556319c8b0e222812b9cf3b26fa7d947de" + dependencies: + readable-stream "~1.1.8" + +stream-each@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd" + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-exhaust@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" + +stream-iterate@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/stream-iterate/-/stream-iterate-1.2.0.tgz#2bd7c77296c1702a46488b8ad41f79865eecd4e1" + dependencies: + readable-stream "^2.1.5" + stream-shift "^1.0.0" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + +stringstream@~0.0.4, stringstream@~0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0, strip-ansi@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-bom@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794" + dependencies: + first-chunk-stream "^1.0.0" + is-utf8 "^0.2.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^3.1.1: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + +supports-color@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + dependencies: + has-flag "^2.0.0" + +tar-fs@^1.15.3: + version "1.16.0" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.0.tgz#e877a25acbcc51d8c790da1c57c9cf439817b896" + dependencies: + chownr "^1.0.1" + mkdirp "^0.5.1" + pump "^1.0.0" + tar-stream "^1.1.2" + +tar-pack@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" + dependencies: + 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" + +tar-stream@^1.1.2, tar-stream@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.4.tgz#36549cf04ed1aee9b2a30c0143252238daf94016" + dependencies: + bl "^1.0.0" + end-of-stream "^1.0.0" + readable-stream "^2.0.0" + xtend "^4.0.0" + +tar@^2.0.0, tar@^2.2.1, tar@~2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +term-size@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + dependencies: + execa "^0.7.0" + +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +through2@2.0.3, through2@^2, through2@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through2@^0.6.1: + version "0.6.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + dependencies: + readable-stream ">=1.0.33-1 <1.1.0-0" + xtend ">=4.0.0 <4.1.0-0" + +through@2, "through@>=2.2.7 <3", through@~2.3, through@~2.3.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +thunky@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-0.1.0.tgz#bf30146824e2b6e67b0f2d7a4ac8beb26908684e" + +tildify@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a" + dependencies: + os-homedir "^1.0.0" + +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + +time-stamp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357" + +timed-out@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + +tiny-lr@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tiny-lr/-/tiny-lr-0.2.1.tgz#b3fdba802e5d56a33c2f6f10794b32e477ac729d" + dependencies: + body-parser "~1.14.0" + debug "~2.2.0" + faye-websocket "~0.10.0" + livereload-js "^2.2.0" + parseurl "~1.3.0" + qs "~5.1.0" + +tough-cookie@~2.3.0, tough-cookie@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" + dependencies: + punycode "^1.4.1" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + +tsscmp@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.5.tgz#7dc4a33af71581ab4337da91d85ca5427ebd9a97" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-is@~1.6.10, type-is@~1.6.15, type-is@~1.6.6: + version "1.6.15" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.15" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +uglify-js@^2.8.22: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +uid-number@0.0.6, uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +uid-safe@2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.4.tgz#3ad6f38368c6d4c8c75ec17623fb79aa1d071d81" + dependencies: + random-bytes "~1.0.0" + +uid-safe@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.0.0.tgz#a7f3c6ca64a1f6a5d04ec0ef3e4c3d5367317137" + dependencies: + base64-url "1.2.1" + +umask@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" + +unc-path-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + +unique-filename@^1.1.0, unique-filename@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" + dependencies: + imurmurhash "^0.1.4" + +unique-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz#d59a4a75427447d9aa6c91e70263f8d26a4b104b" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + dependencies: + crypto-random-string "^1.0.0" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + +unzip-response@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + +update-notifier@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451" + dependencies: + boxen "^1.2.1" + chalk "^2.0.1" + configstore "^3.0.0" + import-lazy "^2.1.0" + is-installed-globally "^0.1.0" + is-npm "^1.0.0" + latest-version "^3.0.0" + semver-diff "^2.0.0" + xdg-basedir "^3.0.0" + +update-notifier@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.2.0.tgz#1b5837cf90c0736d88627732b661c138f86de72f" + dependencies: + boxen "^1.0.0" + chalk "^1.0.0" + configstore "^3.0.0" + import-lazy "^2.1.0" + is-npm "^1.0.0" + latest-version "^3.0.0" + semver-diff "^2.0.0" + xdg-basedir "^3.0.0" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + +url-parse@1.0.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" + dependencies: + querystringify "0.0.x" + requires-port "1.0.x" + +url-parse@^1.1.8: + version "1.2.0" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.2.0.tgz#3a19e8aaa6d023ddd27dcc44cb4fc8f7fec23986" + dependencies: + querystringify "~1.0.0" + requires-port "~1.0.0" + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util-extend@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" + +utils-merge@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + +uuid@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + +uuid@^3.0.0, uuid@^3.1.0, uuid@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" + +v8flags@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + dependencies: + user-home "^1.1.1" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + dependencies: + builtins "^1.0.3" + +vary@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.0.1.tgz#99e4981566a286118dfb2b817357df7993376d10" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vhost@~3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/vhost/-/vhost-3.0.2.tgz#2fb1decd4c466aa88b0f9341af33dc1aff2478d5" + +vinyl-file@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-1.1.1.tgz#81b655f26e658bd2e8829f28d63f847d6843d6d0" + dependencies: + graceful-fs "^3.0.2" + strip-bom "^1.0.0" + vinyl "^0.4.3" + +vinyl-fs@^0.3.0: + version "0.3.14" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6" + dependencies: + defaults "^1.0.0" + glob-stream "^3.1.5" + glob-watcher "^0.0.6" + graceful-fs "^3.0.0" + mkdirp "^0.5.0" + strip-bom "^1.0.0" + through2 "^0.6.1" + vinyl "^0.4.0" + +vinyl-sourcemaps-apply@0.2.1, vinyl-sourcemaps-apply@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" + dependencies: + source-map "^0.5.1" + +vinyl@^0.4.0, vinyl@^0.4.3: + version "0.4.6" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" + dependencies: + clone "^0.2.0" + clone-stats "^0.0.1" + +vinyl@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +wbuf@^1.1.0, wbuf@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe" + dependencies: + minimalistic-assert "^1.0.0" + +wcwidth@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + dependencies: + defaults "^1.0.3" + +webpack-dev-middleware@^1.11.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz#d34efefb2edda7e1d3b5dbe07289513219651709" + dependencies: + memory-fs "~0.4.1" + mime "^1.3.4" + path-is-absolute "^1.0.0" + range-parser "^1.0.3" + time-stamp "^2.0.0" + +webpack-dev-server@2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.7.1.tgz#21580f5a08cd065c71144cf6f61c345bca59a8b8" + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^1.6.0" + compression "^1.5.2" + connect-history-api-fallback "^1.3.0" + del "^3.0.0" + express "^4.13.3" + html-entities "^1.2.0" + http-proxy-middleware "~0.17.4" + internal-ip "^1.2.0" + ip "^1.1.5" + loglevel "^1.4.1" + opn "4.0.2" + portfinder "^1.0.9" + selfsigned "^1.9.1" + serve-index "^1.7.2" + sockjs "0.3.18" + sockjs-client "1.1.4" + spdy "^3.4.1" + strip-ansi "^3.0.0" + supports-color "^3.1.1" + webpack-dev-middleware "^1.11.0" + yargs "^6.0.0" + +websocket-driver@>=0.5.1: + version "0.7.0" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" + dependencies: + http-parser-js ">=0.4.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.2.tgz#0e18781de629a18308ce1481650f67ffa2693a5d" + +when@^3.7.8: + version "3.7.8" + resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which@1, which@^1.2.12, which@^1.2.14, which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +which@~1.2.14: + version "1.2.14" + resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + +widest-line@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" + dependencies: + string-width "^1.0.1" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +worker-farm@~1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.4.1.tgz#a438bc993a7a7d133bcb6547c95eca7cff4897d8" + dependencies: + errno "^0.1.4" + xtend "^4.0.1" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1, wrappy@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write-file-atomic@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-file-atomic@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.1.0.tgz#1769f4b551eedce419f0505deae2e26763542d37" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + slide "^1.1.5" + +xdg-basedir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" + dependencies: + camelcase "^3.0.0" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + dependencies: + camelcase "^4.1.0" + +yargs@^6.0.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^4.2.0" + +yargs@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" From 5af16d2a8fe8c54383addd4195d07f7af2d7cf05 Mon Sep 17 00:00:00 2001 From: Thomas Cazade Date: Fri, 3 Nov 2017 11:36:46 +0100 Subject: [PATCH 022/457] Added SEO tags --- index.html | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 6b0934f..97bb9f9 100644 --- a/index.html +++ b/index.html @@ -2,27 +2,46 @@ + + + PaperCSS · the less formal CSS framework + + + + + + + + + + + + + +
+

PaperCSS

-

the less formal css framework

+

the less formal CSS framework

+

Flexbox

Flexgrid

From 832be3789b5eca5676e5db6d02d49fdd881eb214 Mon Sep 17 00:00:00 2001 From: Thomas Cazade Date: Fri, 3 Nov 2017 11:48:32 +0100 Subject: [PATCH 023/457] Added sumarry --- demo.css | 3 +++ index.html | 41 ++++++++++++++++++++++++++++++----------- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/demo.css b/demo.css index 1bbf4bd..345c00e 100644 --- a/demo.css +++ b/demo.css @@ -10,4 +10,7 @@ body { .docs { margin-top: 2rem; margin-bottom: 2rem; +} +.summary a { + color: #41403e; } \ No newline at end of file diff --git a/index.html b/index.html index 97bb9f9..9a7dacc 100644 --- a/index.html +++ b/index.html @@ -34,12 +34,31 @@

the less formal CSS framework

+ + +

Summary:

+ +
@@ -184,7 +203,7 @@
-
+

Typography

How pretty is the text?

Heading 1

@@ -209,7 +228,7 @@ <p>Lorem ipsum dolor....</p>
-
+

Buttons

Insprired by Imprefect Buttons

@@ -235,7 +254,7 @@ </div>
-
+

Forms

@@ -330,7 +349,7 @@
-
+

Lists

Ordered Lists

    @@ -406,7 +425,7 @@ <!-- Replace ol with ul for unordered lists. Go up to 5 levels deep! -->
-
+

Code

Let's make some pretty <code>

Print files backwards using tac

@@ -427,7 +446,7 @@ function add(x, y) { </pre>
-
+

Tables

Regular

@@ -560,7 +579,7 @@ function add(x, y) { <table class="table-alternating"> -
+

Popovers

Basic usage

You can add popovers, also called tooltips, on your elements. popover attribute is the popover text content, popover-position attribute can be: top, left, right, bottom.

@@ -601,7 +620,7 @@ function add(x, y) { <button popover="Popover on top" popover-position="top">Popover on top and on a button!</button>
-
+

Colors

Text

Text primary

@@ -636,7 +655,7 @@ function add(x, y) { </div>
-
+

Borders & Shadows

Borders

@@ -805,7 +824,7 @@ function add(x, y) { </div>
-
+

Images

Responsive

Images by default are responsive

@@ -840,7 +859,7 @@ function add(x, y) { <img src="https://unsplash.it/300" class="no-responsive no-border">
-
+

Alerts

From e6b1629a500a5e6f5394859de32d20f63244f391 Mon Sep 17 00:00:00 2001 From: Thomas Cazade Date: Fri, 3 Nov 2017 13:50:24 +0100 Subject: [PATCH 024/457] Fix utilities link from summary --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index d5932bd..137225d 100644 --- a/index.html +++ b/index.html @@ -933,7 +933,7 @@ function add(x, y) { </div>
-
+

Utilities

Margin

@@ -1059,4 +1059,4 @@ function add(x, y) {
- \ No newline at end of file + From da5428e495cf8293d3afd32b0fe95cd436c61c37 Mon Sep 17 00:00:00 2001 From: Fraham Date: Fri, 3 Nov 2017 12:51:23 +0000 Subject: [PATCH 025/457] Fix @muted-text issue --- src/colors.less | 1 + 1 file changed, 1 insertion(+) diff --git a/src/colors.less b/src/colors.less index 191b0ef..2ecfc36 100644 --- a/src/colors.less +++ b/src/colors.less @@ -19,6 +19,7 @@ @success-text: @primary; @warning-text: @primary; @danger-text: @primary; +@muted-text: @primary; @white-dark: rgba(0, 0, 0, .03); From 45007f7d0d1a29e9e98c9310b764836e1ea2891a Mon Sep 17 00:00:00 2001 From: Fraham Date: Fri, 3 Nov 2017 16:50:04 +0000 Subject: [PATCH 026/457] Adding disbaled styling for inputs --- index.html | 16 ++++++++++++++-- src/buttons.less | 5 ++++- src/forms.less | 28 ++++++++++++++++++---------- 3 files changed, 36 insertions(+), 13 deletions(-) diff --git a/index.html b/index.html index c842dfd..1427d3f 100644 --- a/index.html +++ b/index.html @@ -202,6 +202,8 @@
+ +
 <p>Insprired by <a href="https://codepen.io/tmrDevelops/pen/VeRvKX" target="_blank">Imprefect Buttons</a></p>
@@ -213,7 +215,9 @@
   <div class="col-6 col">
     <button class="btn-block">Block level</button>
   </div>
-</div>
+</div> +<button class="disabled">Disabled</button> +<button disabled>Disabled</button>
@@ -236,6 +240,10 @@
+
+ + +
+
+ + +
+
+ + +
+ +
- - + +
- - + +
- - + +
- - @@ -311,30 +311,30 @@
 <div class="form-group">
-  <label>Input</label>
-  <input type="text" placeholder="Nice input">
+  <label for="paperInputs1">Input</label>
+  <input type="text" placeholder="Nice input" id="paperInputs1">
 </div>
 <div class="row">
   <div class="col sm-4">
     <div class="form-group">
-      <label>Block Level</label>
-      <input class="input-block" type="text">
+      <label for="paperInputs2">Block Level</label>
+      <input class="input-block" type="text" id="paperInputs2">
     </div>
   </div>
   <div class="col sm-8">
     <div class="form-group">
-      <label>Block Level</label>
-      <input class="input-block" type="text">
+      <label for="paperInputs3">Block Level</label>
+      <input class="input-block" type="text" id="paperInputs3">
     </div>
   </div>
 </div>
 <div class="form-group">
-  <label>Disabled</label>
-  <input type="text" placeholder="Disabled" disabled>
+  <label for="paperInputs4">Disabled</label>
+  <input type="text" placeholder="Disabled" id="paperInputs4" disabled>
 </div>
 <div class="form-group">
-  <label>Select</label>
-  <select>
+  <label for="paperSelects1">Select</label>
+  <select id="paperSelects1">
     <option value="1">Option 1</option>
     <option value="2">Option 2</option>
     <option value="3">Option 3</option>

From 1fcceefb80c79af2d1936966c9b2fc1185f86b84 Mon Sep 17 00:00:00 2001
From: Nilanno 
Date: Wed, 22 Nov 2017 15:19:41 +0100
Subject: [PATCH 064/457] Update buttons.less

Button click state for issue #63
---
 src/buttons.less | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/buttons.less b/src/buttons.less
index f056a3d..faa8179 100644
--- a/src/buttons.less
+++ b/src/buttons.less
@@ -27,6 +27,10 @@ button, .paper-btn, input[type="button"] {
     &:hover{
         .shadow-hover;
     }
+    :active {
+      border-color: hsla(0,0%,0%,.2);
+      transition: none;
+    }
     &.disabled, &[disabled]{
         .disabled;
     }
@@ -46,4 +50,4 @@ a {
         text-decoration: none;
         color: @primary;
     }
-}
\ No newline at end of file
+}

From d91cc79b791ead465f2f3bfc6771d3d37f1e2403 Mon Sep 17 00:00:00 2001
From: Nilanno 
Date: Wed, 22 Nov 2017 16:52:51 +0100
Subject: [PATCH 065/457] Update buttons.less

---
 src/buttons.less | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/buttons.less b/src/buttons.less
index faa8179..4a7f5d9 100644
--- a/src/buttons.less
+++ b/src/buttons.less
@@ -27,7 +27,7 @@ button, .paper-btn, input[type="button"] {
     &:hover{
         .shadow-hover;
     }
-    :active {
+    &:active {
       border-color: hsla(0,0%,0%,.2);
       transition: none;
     }

From 55f4d5600973e3c037acbd05238bf7549a526959 Mon Sep 17 00:00:00 2001
From: Danny Feliz 
Date: Tue, 21 Nov 2017 15:19:07 -0400
Subject: [PATCH 066/457] Add syntax highlighting

---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 27d21d1..21e8058 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,7 @@ Don't want to download it? That's cool. You can just link to PaperCSS via unpkg'
 - https://unpkg.com/papercss@1.1.0/dist/paper.min.css
 
 ## Quick Start
-```
+```html
 
 
 

From ced425394e71578ee28b2b16ab027bdef6e5fb27 Mon Sep 17 00:00:00 2001
From: Afzal Sayed 
Date: Wed, 22 Nov 2017 22:09:42 +0530
Subject: [PATCH 067/457] Fix for summary links

---
 index.html | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/index.html b/index.html
index 5511dae..2718860 100644
--- a/index.html
+++ b/index.html
@@ -53,6 +53,8 @@
         
  • Code
  • Tables
  • Popovers
  • +
  • Cards
  • +
  • Badges
  • Colors
  • Borders & shadows
  • Utilities
  • @@ -633,7 +635,7 @@ function add(x, y) {
    -
    +

    Cards

    Full card example

    It is possible to not put all the sub-classes like card-title, card-subtitle, card-text, ... But instead the framework will recognize the element properly if it's a h4, h5, p, ... And you need to put all this content on a div with card class.

    @@ -746,7 +748,7 @@ function add(x, y) {
    -
    +

    Badges

    Default

    You can customize badges colors with secondary, success, warning, danger classes.

    From 3827ef5d3596cd8cf5662835029e292a4653979f Mon Sep 17 00:00:00 2001 From: Thomas Cazade Date: Thu, 23 Nov 2017 16:33:08 +0100 Subject: [PATCH 068/457] Added a basic .editorconfig --- .editorconfig | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..b2dadf3 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +indent_style = space +indent_size = 2 From 0904f017bb224850c44d7b117e78aeafff688829 Mon Sep 17 00:00:00 2001 From: Danny Feliz Date: Tue, 21 Nov 2017 15:19:07 -0400 Subject: [PATCH 069/457] Add syntax highlighting --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 27d21d1..21e8058 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Don't want to download it? That's cool. You can just link to PaperCSS via unpkg' - https://unpkg.com/papercss@1.1.0/dist/paper.min.css ## Quick Start -``` +```html From 6ae8c9d304e267e8800ad031fb85d9215fb60d03 Mon Sep 17 00:00:00 2001 From: Danny Feliz Date: Tue, 21 Nov 2017 15:19:07 -0400 Subject: [PATCH 070/457] Add syntax highlighting --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 27d21d1..21e8058 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Don't want to download it? That's cool. You can just link to PaperCSS via unpkg' - https://unpkg.com/papercss@1.1.0/dist/paper.min.css ## Quick Start -``` +```html From cc84444df37800ae4286872d5df1c2396689e871 Mon Sep 17 00:00:00 2001 From: Afzal Sayed Date: Wed, 22 Nov 2017 22:09:42 +0530 Subject: [PATCH 071/457] Fix for summary links --- index.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 5511dae..2718860 100644 --- a/index.html +++ b/index.html @@ -53,6 +53,8 @@
  • Code
  • Tables
  • Popovers
  • +
  • Cards
  • +
  • Badges
  • Colors
  • Borders & shadows
  • Utilities
  • @@ -633,7 +635,7 @@ function add(x, y) {
    -
    +

    Cards

    Full card example

    It is possible to not put all the sub-classes like card-title, card-subtitle, card-text, ... But instead the framework will recognize the element properly if it's a h4, h5, p, ... And you need to put all this content on a div with card class.

    @@ -746,7 +748,7 @@ function add(x, y) {
    -
    +

    Badges

    Default

    You can customize badges colors with secondary, success, warning, danger classes.

    From e2cbb26da76322553f89871dc8979604009e7a63 Mon Sep 17 00:00:00 2001 From: Afzal Sayed Date: Thu, 23 Nov 2017 21:24:49 +0530 Subject: [PATCH 072/457] Create CODE_OF_CONDUCT.md --- CODE_OF_CONDUCT.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..d0096a4 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,46 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at contact@vlaservich.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ From d0fd9a51c126a65f22c99ddd4e9983f0da292556 Mon Sep 17 00:00:00 2001 From: Danny Feliz Date: Tue, 21 Nov 2017 15:19:07 -0400 Subject: [PATCH 073/457] Add syntax highlighting --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 27d21d1..21e8058 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Don't want to download it? That's cool. You can just link to PaperCSS via unpkg' - https://unpkg.com/papercss@1.1.0/dist/paper.min.css ## Quick Start -``` +```html From 2b01b99ec894c0546d7e65bffcc2bf466c162399 Mon Sep 17 00:00:00 2001 From: Daniel Ruf Date: Tue, 21 Nov 2017 23:51:56 +0100 Subject: [PATCH 074/457] fix position value --- src/forms.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/forms.less b/src/forms.less index e69fe46..d39dd0e 100644 --- a/src/forms.less +++ b/src/forms.less @@ -53,7 +53,7 @@ input, select { input + span:before { content: ''; display: inline-block; - position: -.25rem; + position: relative; width: 1rem; height: 1rem; border: 2px solid @primary; From 745be5a79c035c3f981c2776eaa0d492292c65c3 Mon Sep 17 00:00:00 2001 From: Afzal Sayed Date: Wed, 22 Nov 2017 22:09:42 +0530 Subject: [PATCH 075/457] Fix for summary links --- index.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index b8b5d67..82af0cb 100644 --- a/index.html +++ b/index.html @@ -53,6 +53,8 @@
  • Code
  • Tables
  • Popovers
  • +
  • Cards
  • +
  • Badges
  • Colors
  • Borders & shadows
  • Utilities
  • @@ -633,7 +635,7 @@ function add(x, y) {
    -
    +

    Cards

    Full card example

    It is possible to not put all the sub-classes like card-title, card-subtitle, card-text, ... But instead the framework will recognize the element properly if it's a h4, h5, p, ... And you need to put all this content on a div with card class.

    @@ -746,7 +748,7 @@ function add(x, y) {
    -
    +

    Badges

    Default

    You can customize badges colors with secondary, success, warning, danger classes.

    From 2c4ee9ef2d8d933de7c32991eb58c461e21798e2 Mon Sep 17 00:00:00 2001 From: Afzal Sayed Date: Thu, 23 Nov 2017 21:43:09 +0530 Subject: [PATCH 076/457] Create CONTRIBUTING.md --- CONTRIBUTING.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..c39d4a7 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,3 @@ +*Contribution guidelines to PaperCSS* + +_TODO_ From c52b4d927f4e5c13c2dd801a71c95c004f78e7ae Mon Sep 17 00:00:00 2001 From: Afzal Sayed Date: Thu, 23 Nov 2017 23:13:46 +0530 Subject: [PATCH 077/457] Fix for overflow x-axis in mobile view --- index.html | 5 +++-- src/tables.less | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 5511dae..474bb6c 100644 --- a/index.html +++ b/index.html @@ -25,8 +25,8 @@ -
    - +
    +
    @@ -1102,6 +1102,7 @@ function add(x, y) {

    Made with 💛 by Rhyne and some fantastic contributors!

    +
    diff --git a/src/tables.less b/src/tables.less index 1db0b9e..aa12870 100644 --- a/src/tables.less +++ b/src/tables.less @@ -14,6 +14,14 @@ table { vertical-align: top; border-top: 1px dashed lighten(@primary, 60%); } + @media screen and (max-width:480px) { + thead tr th { + padding: 2%; + } + tbody tr td { + padding: 2%; + } + } &.table-hover tbody tr:hover { color: @secondary; } From 4b51f29e30674f120da71ab36ea362c81bb196ad Mon Sep 17 00:00:00 2001 From: Afzal Sayed Date: Thu, 23 Nov 2017 23:17:03 +0530 Subject: [PATCH 078/457] Update contact person email Added getpapercss@gmail.com --- CODE_OF_CONDUCT.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index d0096a4..e5d7c99 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -34,7 +34,7 @@ This Code of Conduct applies both within project spaces and in public spaces whe ## Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at contact@vlaservich.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at getpapercss@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. From ede44c4f4d5b9c6174906ec782c88dedc47c1672 Mon Sep 17 00:00:00 2001 From: Afzal Sayed Date: Thu, 23 Nov 2017 23:34:06 +0530 Subject: [PATCH 079/457] Initial framework Added contribution part from README --- CONTRIBUTING.md | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c39d4a7..57362ee 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,3 +1,19 @@ -*Contribution guidelines to PaperCSS* +## Contributing +Check out what's been added but not yet releases at [develop.getpapercss.com](https://develop.getpapercss.com) -_TODO_ +This project is open source and contributions are very welcomed. It is also as beginner friendly as possible, so don't be afraid to jump in if you've never contributed to any Git project before! Feel free to reach out if you are new and need help with the process. + +Similar to customizing, make sure you have Git, Node, and NPM on your system. +- fork the repo via the fork button in the upper left +- run `git clone https://github.com/[your_username]/papercss.git` +- change directories to papercss `cd papercss` +- run `npm install` +- switch to the develop branch `git checkout develop`. This is the branch where features are added. Checking it out will set up the remote tracking to the develop branch on Github. +- create a new branch for your feature off of the develop branch `git checkout -b feature-thing develop`. Please be sure to prepend your new feature branch with "feature-" +- Start the local server to view changes with `npm start` +- _code and stuff_ +- Once done, commit and push your changes to your fork +- Finally, open a pull request on this repo. Be sure to include any pictures and details on what you changed! +- Once approved, your changes will be merged to the develop branch where it will eventually be added to a release that ends up in the master branch. Check out [Vincent Driessen's blog post](http://nvie.com/posts/a-successful-git-branching-model/), [GitFlow](https://datasift.github.io/gitflow/IntroducingGitFlow.html), or [#27](https://github.com/rhyneav/papercss/issues/27) for more details on how this works. + +Note: If you have a hotfix, create your hotfix branch off of the master branch instead of develop: `git checkout -b hotfix-1.X.X master` From 7dee3d0e83785bb22485e0923e366f61beef5f39 Mon Sep 17 00:00:00 2001 From: Fraham Date: Thu, 23 Nov 2017 20:10:51 +0000 Subject: [PATCH 080/457] Merge --- index.html | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/index.html b/index.html index 01f1366..7bc4ec9 100644 --- a/index.html +++ b/index.html @@ -649,10 +649,7 @@ function add(x, y) { <button popover-top="Popover on top">Popover on top and on a button!</button>
    -<<<<<<< HEAD -======= - ->>>>>>> refs/remotes/rhyneav/master +

    Cards

    Full card example

    From 70811b40ebc035ebbcd4d792380f0c57013c01ff Mon Sep 17 00:00:00 2001 From: Ilham Wibawa Date: Fri, 24 Nov 2017 14:56:46 +0700 Subject: [PATCH 081/457] article component --- index.html | 42 ++++++++++++++++++++++++++++++++++++++++++ src/article.less | 26 ++++++++++++++++++++++++++ src/styles.less | 1 + 3 files changed, 69 insertions(+) create mode 100644 src/article.less diff --git a/index.html b/index.html index 08adcf6..1f4679d 100644 --- a/index.html +++ b/index.html @@ -63,6 +63,7 @@
  • Utilities
  • Images
  • Alerts
  • +
  • Article
  • @@ -1076,6 +1077,47 @@ function add(x, y) { </div>
    + + + +
    +

    Article

    + +
    +

    Article Title

    + +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Pariatur repellendus excepturi, consequatur illo rerum, non sint asperiores dolore sapiente, vitae blanditiis. Officiis at quaerat modi earum, fugiat magni impedit, aperiam.

    +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corrupti iure totam nam debitis aliquid impedit, et quas omnis aspernatur optio molestias ex laborum quia. Ducimus culpa tempore, veritatis officia delectus dolore dignissimos reprehenderit vero, sunt odit placeat est non molestiae ipsa nam velit in iusto hic quasi similique facere. Maxime?

    + +

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Corrupti iure totam nam debitis aliquid impedit, et quas omnis aspernatur optio molestias ex laborum quia. Ducimus culpa tempore, veritatis officia delectus dolore dignissimos reprehenderit vero, sunt odit placeat est non molestiae ipsa nam velit in iusto hic quasi similique facere. Maxime?

    + +
    + + +
    +
    + +
    +
    +<article class="article">
    +  <h1 class="article-title"><a href="">Article Title</a></h1>
    +  <p class="article-meta">Written by <a href="#">Super User</a></p>
    +  <p class="text-lead"> Lorem... </p>
    +  <p>Lorem...</p>
    +
    +  <div class="row">
    +    <button>Read More</button>
    +    <button>5 Comments</button>
    +  </div>
    +</article>
    +        
    +
    +
    + + + + +

    Download and Link

    Download

    diff --git a/src/article.less b/src/article.less new file mode 100644 index 0000000..4cf20fa --- /dev/null +++ b/src/article.less @@ -0,0 +1,26 @@ +article { + + .article-title { + font-size: 3rem; + } + + .article-meta { + font-size: 15px; + color: @muted; + + a { + color: @muted-text; + background-image: none; + + &:hover { + color: #000; + } + } + } + + .text-lead { + font-size: 30px; + line-height: 1.3; + margin: 35px 0px; + } +} \ No newline at end of file diff --git a/src/styles.less b/src/styles.less index c44d16e..4071159 100644 --- a/src/styles.less +++ b/src/styles.less @@ -17,3 +17,4 @@ @import (less) "./cards.less"; @import (less) "./badges.less"; @import (less) "./alerts.less"; +@import (less) "./article.less"; \ No newline at end of file From 341239c97fdc66197db1981029360df7482c566b Mon Sep 17 00:00:00 2001 From: Valery Melou Date: Fri, 24 Nov 2017 11:40:54 +0100 Subject: [PATCH 082/457] Change the display of focused buttons This will visually update the display of focused buttons so that users using a keyboard will differenciate them from other buttons. --- src/buttons.less | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/buttons.less b/src/buttons.less index 0d9d32d..15971c6 100644 --- a/src/buttons.less +++ b/src/buttons.less @@ -30,6 +30,12 @@ button, .paper-btn, [type="button"] { &:hover { .shadow-hover; } + &:focus{ + border: 2px solid @secondary; + -webkit-box-shadow:2px 8px 4px -6px hsla(0,0%,0%,.3); + -moz-box-shadow:2px 8px 4px -6px hsla(0,0%,0%,.3); + box-shadow:2px 8px 4px -6px hsla(0,0%,0%,.3); + } &:active { border-color: hsla(0,0%,0%,.2); transition: none; From b3176b76f32e3bbc459688d864d8f2ee8aec8c1b Mon Sep 17 00:00:00 2001 From: Daniel Ruf Date: Tue, 21 Nov 2017 23:51:56 +0100 Subject: [PATCH 083/457] fix position value --- src/forms.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/forms.less b/src/forms.less index e69fe46..d39dd0e 100644 --- a/src/forms.less +++ b/src/forms.less @@ -53,7 +53,7 @@ input, select { input + span:before { content: ''; display: inline-block; - position: -.25rem; + position: relative; width: 1rem; height: 1rem; border: 2px solid @primary; From e5d225e6d52099f0b821be6c9efcf12d874c1cf8 Mon Sep 17 00:00:00 2001 From: Valery Melou Date: Wed, 22 Nov 2017 08:59:58 +0100 Subject: [PATCH 084/457] Add IDs to inputs and selects --- index.html | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/index.html b/index.html index 2718860..82af0cb 100644 --- a/index.html +++ b/index.html @@ -263,30 +263,30 @@

    Forms

    - - + +
    - - + +
    - - + +
    - - + +
    - - @@ -313,30 +313,30 @@
     <div class="form-group">
    -  <label>Input</label>
    -  <input type="text" placeholder="Nice input">
    +  <label for="paperInputs1">Input</label>
    +  <input type="text" placeholder="Nice input" id="paperInputs1">
     </div>
     <div class="row">
       <div class="col sm-4">
         <div class="form-group">
    -      <label>Block Level</label>
    -      <input class="input-block" type="text">
    +      <label for="paperInputs2">Block Level</label>
    +      <input class="input-block" type="text" id="paperInputs2">
         </div>
       </div>
       <div class="col sm-8">
         <div class="form-group">
    -      <label>Block Level</label>
    -      <input class="input-block" type="text">
    +      <label for="paperInputs3">Block Level</label>
    +      <input class="input-block" type="text" id="paperInputs3">
         </div>
       </div>
     </div>
     <div class="form-group">
    -  <label>Disabled</label>
    -  <input type="text" placeholder="Disabled" disabled>
    +  <label for="paperInputs4">Disabled</label>
    +  <input type="text" placeholder="Disabled" id="paperInputs4" disabled>
     </div>
     <div class="form-group">
    -  <label>Select</label>
    -  <select>
    +  <label for="paperSelects1">Select</label>
    +  <select id="paperSelects1">
         <option value="1">Option 1</option>
         <option value="2">Option 2</option>
         <option value="3">Option 3</option>
    
    From 179d3e1a8217975bb72e5877ec39ac538ea07ee9 Mon Sep 17 00:00:00 2001
    From: Rhyne 
    Date: Fri, 24 Nov 2017 10:33:37 -0500
    Subject: [PATCH 085/457] Fix little typo
    
    ---
     CONTRIBUTING.md | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
    index 57362ee..a33eb03 100644
    --- a/CONTRIBUTING.md
    +++ b/CONTRIBUTING.md
    @@ -1,5 +1,5 @@
     ## Contributing
    -Check out what's been added but not yet releases at [develop.getpapercss.com](https://develop.getpapercss.com)
    +Check out what's been added but not yet released at [develop.getpapercss.com](https://develop.getpapercss.com)
     
     This project is open source and contributions are very welcomed. It is also as beginner friendly as possible, so don't be afraid to jump in if you've never contributed to any Git project before! Feel free to reach out if you are new and need help with the process.
     
    
    From 8818867648b12d0d70cbcafa38936aa757698bf2 Mon Sep 17 00:00:00 2001
    From: Afzal Sayed 
    Date: Thu, 23 Nov 2017 21:24:49 +0530
    Subject: [PATCH 086/457] Create CODE_OF_CONDUCT.md
    
    ---
     CODE_OF_CONDUCT.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++
     1 file changed, 46 insertions(+)
     create mode 100644 CODE_OF_CONDUCT.md
    
    diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
    new file mode 100644
    index 0000000..d0096a4
    --- /dev/null
    +++ b/CODE_OF_CONDUCT.md
    @@ -0,0 +1,46 @@
    +# Contributor Covenant Code of Conduct
    +
    +## Our Pledge
    +
    +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
    +
    +## Our Standards
    +
    +Examples of behavior that contributes to creating a positive environment include:
    +
    +* Using welcoming and inclusive language
    +* Being respectful of differing viewpoints and experiences
    +* Gracefully accepting constructive criticism
    +* Focusing on what is best for the community
    +* Showing empathy towards other community members
    +
    +Examples of unacceptable behavior by participants include:
    +
    +* The use of sexualized language or imagery and unwelcome sexual attention or advances
    +* Trolling, insulting/derogatory comments, and personal or political attacks
    +* Public or private harassment
    +* Publishing others' private information, such as a physical or electronic address, without explicit permission
    +* Other conduct which could reasonably be considered inappropriate in a professional setting
    +
    +## Our Responsibilities
    +
    +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
    +
    +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
    +
    +## Scope
    +
    +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
    +
    +## Enforcement
    +
    +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at contact@vlaservich.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
    +
    +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
    +
    +## Attribution
    +
    +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
    +
    +[homepage]: http://contributor-covenant.org
    +[version]: http://contributor-covenant.org/version/1/4/
    
    From b620a123a6801503459037357e114de56d45157a Mon Sep 17 00:00:00 2001
    From: Afzal Sayed 
    Date: Thu, 23 Nov 2017 23:17:03 +0530
    Subject: [PATCH 087/457] Update contact person email
    
    Added getpapercss@gmail.com
    ---
     CODE_OF_CONDUCT.md | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
    index d0096a4..e5d7c99 100644
    --- a/CODE_OF_CONDUCT.md
    +++ b/CODE_OF_CONDUCT.md
    @@ -34,7 +34,7 @@ This Code of Conduct applies both within project spaces and in public spaces whe
     
     ## Enforcement
     
    -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at contact@vlaservich.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
    +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at getpapercss@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
     
     Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
     
    
    From e21ea5cc8872565863b0eb43c9108fd4a2d38a1c Mon Sep 17 00:00:00 2001
    From: Afzal Sayed 
    Date: Fri, 24 Nov 2017 22:16:11 +0530
    Subject: [PATCH 088/457] Adding a back to top button feature
    
    ---
     index.html        |  6 ++++--
     src/back2top.less | 20 ++++++++++++++++++++
     src/styles.less   |  1 +
     3 files changed, 25 insertions(+), 2 deletions(-)
     create mode 100644 src/back2top.less
    
    diff --git a/index.html b/index.html
    index bb4a3f4..7d42001 100644
    --- a/index.html
    +++ b/index.html
    @@ -27,7 +27,7 @@
     
       
    -
    +

    PaperCSS

    @@ -62,7 +62,9 @@
  • Alerts
  • - +
    + ^ +

    Flexbox

    Flexgrid

    diff --git a/src/back2top.less b/src/back2top.less new file mode 100644 index 0000000..434305a --- /dev/null +++ b/src/back2top.less @@ -0,0 +1,20 @@ +.to-top { + opacity: 1; + display: inline-block; + padding: 1em; + position: fixed; + bottom: 1em; + right: 1em; + .paper-btn { + padding: 0.6em 1em; + background: white; + border-top-left-radius: 185px 160px; + border-top-right-radius: 200px 195px; + border-bottom-right-radius: 160px 195px; + border-bottom-left-radius: 185px 190px; + } +} + +.demo-title:hover + .to-top { + opacity: 0; +} \ No newline at end of file diff --git a/src/styles.less b/src/styles.less index c44d16e..c22317d 100644 --- a/src/styles.less +++ b/src/styles.less @@ -17,3 +17,4 @@ @import (less) "./cards.less"; @import (less) "./badges.less"; @import (less) "./alerts.less"; +@import (less) "./back2top.less"; From a7d66f4bcfa1c00ba07c61ec17a3e94f065aa5e6 Mon Sep 17 00:00:00 2001 From: Afzal Sayed Date: Fri, 24 Nov 2017 23:17:06 +0530 Subject: [PATCH 089/457] Added documentation --- README.md | 8 +++++--- index.html | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 27d21d1..f801d22 100644 --- a/README.md +++ b/README.md @@ -32,9 +32,11 @@ Don't want to download it? That's cool. You can just link to PaperCSS via unpkg' Document -
    -

    Some Fresh Title

    -

    This is where some content would go.

    +
    +
    +

    Some Fresh Title

    +

    This is where some content would go.

    +
    diff --git a/index.html b/index.html index 474bb6c..0f35e58 100644 --- a/index.html +++ b/index.html @@ -1074,9 +1074,11 @@ function add(x, y) { <title>Document</title> </head> <body> - <div class="paper container"> - <h1>Some Fresh Title</h1> - <p>This is where some content would go.</p> + <div class="container"> + <div class="paper"> + <h1>Some Fresh Title</h1> + <p>This is where some content would go.</p> + </div> </div> </body> </html>
    From 41a4f162de5633337feb59bbe98feb8df85ac956 Mon Sep 17 00:00:00 2001 From: Ilham Wibawa Date: Sat, 25 Nov 2017 13:27:15 +0700 Subject: [PATCH 090/457] change value to variable --- src/article.less | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/article.less b/src/article.less index 4cf20fa..784d4e7 100644 --- a/src/article.less +++ b/src/article.less @@ -13,7 +13,7 @@ article { background-image: none; &:hover { - color: #000; + color: @light-dark; } } } @@ -23,4 +23,4 @@ article { line-height: 1.3; margin: 35px 0px; } -} \ No newline at end of file +} From 1dc3adaf52495224e9de4b042595973d7dec08c2 Mon Sep 17 00:00:00 2001 From: Afzal Sayed Date: Sat, 25 Nov 2017 20:47:10 +0530 Subject: [PATCH 091/457] Added tabs feature --- index.html | 107 ++++++++++++++++++++++++++++++++++++++++++++++++ src/styles.less | 1 + src/tabs.less | 37 +++++++++++++++++ 3 files changed, 145 insertions(+) create mode 100644 src/tabs.less diff --git a/index.html b/index.html index bb4a3f4..d2b8eb4 100644 --- a/index.html +++ b/index.html @@ -60,6 +60,7 @@
  • Utilities
  • Images
  • Alerts
  • +
  • Tabs
  • @@ -1056,6 +1057,112 @@ function add(x, y) { </div>
    +
    +

    Tabs

    +
    + + + + + + + + + + + + +
    +

    + Bacon ipsum dolor sit amet beef venison beef ribs kielbasa. Sausage pig leberkas, t-bone sirloin shoulder bresaola. Frankfurter + rump porchetta ham. Pork belly prosciutto brisket meatloaf short ribs. +

    +

    + Brisket meatball turkey short loin boudin leberkas meatloaf chuck andouille pork loin pastrami spare ribs pancetta rump. + Frankfurter corned beef beef tenderloin short loin meatloaf swine ground round venison. +

    +
    + +
    +

    + Bacon ipsum dolor sit amet landjaeger sausage brisket, jerky drumstick fatback boudin ball tip turducken. Pork belly meatball + t-bone bresaola tail filet mignon kevin turkey ribeye shank flank doner cow kielbasa shankle. Pig swine + chicken hamburger, tenderloin turkey rump ball tip sirloin frankfurter meatloaf boudin brisket ham hock. + Hamburger venison brisket tri-tip andouille pork belly ball tip short ribs biltong meatball chuck. Pork + chop ribeye tail short ribs, beef hamburger meatball kielbasa rump corned beef porchetta landjaeger flank. + Doner rump frankfurter meatball meatloaf, cow kevin pork pork loin venison fatback spare ribs salami + beef ribs. +

    +
    + +
    +

    + Bacon ipsum dolor sit amet beef venison beef ribs kielbasa. Sausage pig leberkas, t-bone sirloin shoulder bresaola. Frankfurter + rump porchetta ham. Pork belly prosciutto brisket meatloaf short ribs. +

    +

    + Brisket meatball turkey short loin boudin leberkas meatloaf chuck andouille pork loin pastrami spare ribs pancetta rump. + Frankfurter corned beef beef tenderloin short loin meatloaf swine ground round venison. +

    +
    + +
    +

    + Bacon ipsum dolor sit amet landjaeger sausage brisket, jerky drumstick fatback boudin ball tip turducken. Pork belly meatball + t-bone bresaola tail filet mignon kevin turkey ribeye shank flank doner cow kielbasa shankle. Pig swine + chicken hamburger, tenderloin turkey rump ball tip sirloin frankfurter meatloaf boudin brisket ham hock. + Hamburger venison brisket tri-tip andouille pork belly ball tip short ribs biltong meatball chuck. Pork + chop ribeye tail short ribs, beef hamburger meatball kielbasa rump corned beef porchetta landjaeger flank. + Doner rump frankfurter meatball meatloaf, cow kevin pork pork loin venison fatback spare ribs salami + beef ribs. +

    +
    +
    +
    +
    +    <div class="row flex-spaces tabs">
    +      <input id="tab1" type="radio" name="tabs" checked>
    +      <label for="tab1">Tab 1</label>
    +      
    +      <input id="tab2" type="radio" name="tabs">
    +      <label for="tab2">Tab 2</label>
    +      
    +      <input id="tab3" type="radio" name="tabs">
    +      <label for="tab3">Tab 3</label>
    +      
    +      <input id="tab4" type="radio" name="tabs">
    +      <label for="tab4">Tab 4</label>
    +  
    +      <div class="content" id="content1">
    +        <p>
    +          Bacon ipsum dolor sit amet beef venison beef ribs kielbasa...
    +        </p>
    +        <p>
    +          Brisket meatball turkey short loin boudin leberkas meatloaf...
    +        </p>
    +      </div>
    +      <div class="content" id="content2">
    +        <p>
    +          Bacon ipsum dolor sit amet landjaeger sausage brisket...
    +        </p>
    +      </div>
    +      <div class="content" id="content3">
    +        <p>
    +          Bacon ipsum dolor sit amet beef venison beef ribs kielbasa...
    +        </p>
    +        <p>
    +          Brisket meatball turkey short loin boudin leberkas meatloaf...
    +        </p>
    +      </div>
    +      <div class="content" id="content4">
    +        <p>
    +          Bacon ipsum dolor sit amet landjaeger sausage brisket...
    +        </p>
    +      </div>
    +    </div>
    +
    +
    +

    Download and Link

    Download

    diff --git a/src/styles.less b/src/styles.less index c44d16e..6cf9eee 100644 --- a/src/styles.less +++ b/src/styles.less @@ -17,3 +17,4 @@ @import (less) "./cards.less"; @import (less) "./badges.less"; @import (less) "./alerts.less"; +@import (less) "./tabs.less"; \ No newline at end of file diff --git a/src/tabs.less b/src/tabs.less new file mode 100644 index 0000000..73a4b45 --- /dev/null +++ b/src/tabs.less @@ -0,0 +1,37 @@ +.tabs { + .content { + display: none; + padding: 0.75rem 0 0; + } + + input { + display: none; + } + + label { + display: inline-block; + margin: 0 0 -1px; + padding: 0.75rem 0.75rem; + font-weight: 600; + text-align: center; + color: @primary-light; + } + + label:hover { + color: @muted; + cursor: pointer; + } + + input:checked+label { + color: @primary; + border-bottom: solid 3px @secondary; + } + + #tab1:checked~#content1, + #tab2:checked~#content2, + #tab3:checked~#content3, + #tab4:checked~#content4 { + display: block; + } + +} \ No newline at end of file From c57712bb4f5e728f4d92671eba18fb1343b33e77 Mon Sep 17 00:00:00 2001 From: Thomas Cazade Date: Sat, 25 Nov 2017 18:57:07 +0100 Subject: [PATCH 092/457] Added a few lines about the editorconfig file on the README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 21e8058..68053c1 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,8 @@ Check out what's been added but not yet releases at [develop.getpapercss.com](ht This project is open source and contributions are very welcomed. It is also as beginner friendly as possible, so don't be afraid to jump in if you've never contributed to any Git project before! Feel free to reach out if you are new and need help with the process. +Please before sending a PR, make sure you are using the `.editorconfig` file with your IDE. If your IDE doesn't natively support editorconfig files, you can use an extension. For example in Atom there is the [editorconfig package](https://atom.io/packages/editorconfig), as well for [Sublime](https://github.com/sindresorhus/editorconfig-sublime), [VS Code](https://github.com/editorconfig/editorconfig-vscode), [Vim](https://github.com/editorconfig/editorconfig-vim), ... + Similar to customizing, make sure you have Git, Node, and NPM on your system. - fork the repo via the fork button in the upper left - run `git clone https://github.com/[your_username]/papercss.git` From e474fa638830420d664944f246cc28ae3330702e Mon Sep 17 00:00:00 2001 From: rhyneav Date: Sun, 26 Nov 2017 18:00:56 -0500 Subject: [PATCH 093/457] bump version numbers --- README.md | 12 ++++++------ index.html | 14 +++++++------- package-lock.json | 2 +- package.json | 2 +- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 738725c..4de1e67 100644 --- a/README.md +++ b/README.md @@ -11,14 +11,14 @@ View the demo & docs at [getpapercss.com](https://www.getpapercss.com) [![Download](/img/screenshots/download-minified.PNG)][download-minified] ### NPM -PaperCSS is now available on NPM as of version 1.1.0. Install with `npm install papercss --save` and find the CSS in: +PaperCSS is now available on NPM as of version 1.2.0. Install with `npm install papercss --save` and find the CSS in: - node_modules/papercss/dist/paper.css - node_modules/papercss/dist/paper.min.css ### CDN Don't want to download it? That's cool. You can just link to PaperCSS via unpkg's CDN. You can use either: -- https://unpkg.com/papercss@1.1.0/dist/paper.css -- https://unpkg.com/papercss@1.1.0/dist/paper.min.css +- https://unpkg.com/papercss@1.2.0/dist/paper.css +- https://unpkg.com/papercss@1.2.0/dist/paper.min.css ## Quick Start ```html @@ -28,7 +28,7 @@ Don't want to download it? That's cool. You can just link to PaperCSS via unpkg' - + Document @@ -99,5 +99,5 @@ If you are new to Git or Less, this would be a great project to get your feet we ## Credits Shouts outs to Tiffany Rayside for creating Imperfect Buttons, which was an inspiration for this project. https://codepen.io/tmrDevelops/pen/VeRvKX -[download]: https://github.com/rhyneav/papercss/releases/download/v1.1.0/paper.css -[download-minified]: https://github.com/rhyneav/papercss/releases/download/v1.1.0/paper.min.css +[download]: https://github.com/rhyneav/papercss/releases/download/v1.2.0/paper.css +[download-minified]: https://github.com/rhyneav/papercss/releases/download/v1.2.0/paper.min.css diff --git a/index.html b/index.html index 61b82ad..26b903c 100644 --- a/index.html +++ b/index.html @@ -1121,14 +1121,14 @@ function add(x, y) {

    Download and Link

    Download

    -

    Download the latest version (1.1.0) using either of the links below. Or download an older release via Github.

    +

    Download the latest version (1.2.0) using either of the links below. Or download an older release via Github.

    NPM

    -

    PaperCSS is now available on NPM as of version 1.1.0. Install with npm install papercss --save and find the CSS in:

    +

    PaperCSS is now available on NPM as of version 1.2.0. Install with npm install papercss --save and find the CSS in:

    • node_modules/papercss/dist/paper.css
    • node_modules/papercss/dist/paper.min.css
    • @@ -1136,8 +1136,8 @@ function add(x, y) {

      CDN

      Don't want to download it? That's cool. You can just link to PaperCSS via unpkg's CDN. You can use either:

      Here's a quck snippet to get started with PaperCSS:

      @@ -1148,7 +1148,7 @@ function add(x, y) { <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> - <link rel="stylesheet" href="https://unpkg.com/papercss@1.1.0/dist/paper.min.css"> + <link rel="stylesheet" href="https://unpkg.com/papercss@1.2.0/dist/paper.min.css"> <title>Document</title> </head> <body> diff --git a/package-lock.json b/package-lock.json index 6052bd6..2b6cc17 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "papercss", - "version": "1.0.0", + "version": "1.2.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e6700b5..8ef0cc9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "papercss", - "version": "1.1.0", + "version": "1.2.0", "description": "Another CSS framework", "main": "index.js", "scripts": { From dd9c203c23e6d03294fb4fb381aa603cbbc8c1c3 Mon Sep 17 00:00:00 2001 From: Afzal Sayed Date: Mon, 27 Nov 2017 11:48:05 +0530 Subject: [PATCH 094/457] Added loop for dynamic selection of tabs id --- src/tabs.less | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/tabs.less b/src/tabs.less index 73a4b45..648b894 100644 --- a/src/tabs.less +++ b/src/tabs.less @@ -27,11 +27,12 @@ border-bottom: solid 3px @secondary; } - #tab1:checked~#content1, - #tab2:checked~#content2, - #tab3:checked~#content3, - #tab4:checked~#content4 { - display: block; + .loop(@num) when (@num > 0) { + .loop((@num - 1)); + input[id^= ~"tab@{num}"]:checked~div[id^= ~"content@{num}"]{ + display:block; + } } - + + .loop(5); } \ No newline at end of file From 93ce4731784e55abb34a22bebe0f9b8db9398ea5 Mon Sep 17 00:00:00 2001 From: Afzal Sayed Date: Mon, 27 Nov 2017 18:00:48 +0530 Subject: [PATCH 095/457] small bug fix in id selection --- src/tabs.less | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tabs.less b/src/tabs.less index 648b894..21ef056 100644 --- a/src/tabs.less +++ b/src/tabs.less @@ -29,7 +29,7 @@ .loop(@num) when (@num > 0) { .loop((@num - 1)); - input[id^= ~"tab@{num}"]:checked~div[id^= ~"content@{num}"]{ + input[id = ~"tab@{num}"]:checked~div[id = ~"content@{num}"]{ display:block; } } From 8bbcb2e3710e2ea167d99d52f211050514f1731f Mon Sep 17 00:00:00 2001 From: Yazed Jamal Date: Mon, 27 Nov 2017 21:00:28 +0000 Subject: [PATCH 096/457] added class for inline list --- index.html | 7 +++++++ src/lists.less | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/index.html b/index.html index 61b82ad..bcda14a 100644 --- a/index.html +++ b/index.html @@ -445,6 +445,13 @@
  • And now we're are the top!
  • +

    Inline List

    +
      +
    • Item 1
    • +
    • Item 2
    • +
    • Item 3
    • +
    • Item 4
    • +
     <ol>
    diff --git a/src/lists.less b/src/lists.less
    index 053a6bc..07b5078 100644
    --- a/src/lists.less
    +++ b/src/lists.less
    @@ -41,4 +41,8 @@ ul {
                 }
             }
         }
    +    &.inline li{
    +        display: inline;
    +        margin-left: 5px;
    +    }
     }
    \ No newline at end of file
    
    From c1da0dc912bfb475966b2751e360af4a14e3d673 Mon Sep 17 00:00:00 2001
    From: Fraham 
    Date: Mon, 27 Nov 2017 23:06:12 +0000
    Subject: [PATCH 097/457] Test Setup
    
    ---
     .gitignore                            |    3 +-
     tests/build/config/build_command.js   |   16 +
     tests/build/config/jshint.conf.js     |   66 +
     tests/build/config/karma.conf.js      |   75 +
     tests/build/config/paths.js           |   20 +
     tests/build/config/tested_browsers.js |   17 +
     tests/build/scripts/build.jakefile.js |  128 +
     tests/build/scripts/run_jake.bat      |    7 +
     tests/build/scripts/run_jake.sh       |    6 +
     tests/build/scripts/watch.js          |   28 +
     tests/build/util/browserify_runner.js |   21 +
     tests/build/util/karma_runner.js      |   76 +
     tests/build/util/mocha_runner.js      |   54 +
     tests/build/util/sh.js                |   48 +
     tests/build/util/version_checker.js   |   29 +
     tests/jake.bat                        |    1 +
     tests/jake.sh                         |    2 +
     tests/package.json                    |   33 +
     tests/quixote.js                      | 4195 +++++++++++++++++++
     tests/src/_media_css_test.js          |  135 +
     tests/src/icon.svg                    |   17 +
     tests/src/index.html                  |   28 +
     tests/vendor/chai-2.1.0.js            | 5332 +++++++++++++++++++++++++
     tests/vendor/quixote.js               | 4195 +++++++++++++++++++
     24 files changed, 14531 insertions(+), 1 deletion(-)
     create mode 100644 tests/build/config/build_command.js
     create mode 100644 tests/build/config/jshint.conf.js
     create mode 100644 tests/build/config/karma.conf.js
     create mode 100644 tests/build/config/paths.js
     create mode 100644 tests/build/config/tested_browsers.js
     create mode 100644 tests/build/scripts/build.jakefile.js
     create mode 100644 tests/build/scripts/run_jake.bat
     create mode 100644 tests/build/scripts/run_jake.sh
     create mode 100644 tests/build/scripts/watch.js
     create mode 100644 tests/build/util/browserify_runner.js
     create mode 100644 tests/build/util/karma_runner.js
     create mode 100644 tests/build/util/mocha_runner.js
     create mode 100644 tests/build/util/sh.js
     create mode 100644 tests/build/util/version_checker.js
     create mode 100644 tests/jake.bat
     create mode 100644 tests/jake.sh
     create mode 100644 tests/package.json
     create mode 100644 tests/quixote.js
     create mode 100644 tests/src/_media_css_test.js
     create mode 100644 tests/src/icon.svg
     create mode 100644 tests/src/index.html
     create mode 100644 tests/vendor/chai-2.1.0.js
     create mode 100644 tests/vendor/quixote.js
    
    diff --git a/.gitignore b/.gitignore
    index 8774cec..1778ff3 100644
    --- a/.gitignore
    +++ b/.gitignore
    @@ -1,3 +1,4 @@
     /node_modules
     npm-debug.log
    -/dist
    \ No newline at end of file
    +/dist
    +/tests/node_modules
    \ No newline at end of file
    diff --git a/tests/build/config/build_command.js b/tests/build/config/build_command.js
    new file mode 100644
    index 0000000..c946448
    --- /dev/null
    +++ b/tests/build/config/build_command.js
    @@ -0,0 +1,16 @@
    +// Copyright (c) 2012 Titanium I.T. LLC. All rights reserved. See LICENSE.txt for details.
    +
    +// A cross-platform mechanism for determining how to run the build.
    +(function() {
    +	"use strict";
    +
    +	var UNIX_BUILD_COMMAND = "./jake.sh";
    +	var WINDOWS_BUILD_COMMAND = "jake.bat";
    +
    +	var os = require("os");
    +
    +	exports.get = function() {
    +		return os.platform() === "win32" ? WINDOWS_BUILD_COMMAND : UNIX_BUILD_COMMAND;
    +	};
    +
    +}());
    \ No newline at end of file
    diff --git a/tests/build/config/jshint.conf.js b/tests/build/config/jshint.conf.js
    new file mode 100644
    index 0000000..68f1d81
    --- /dev/null
    +++ b/tests/build/config/jshint.conf.js
    @@ -0,0 +1,66 @@
    +// Copyright (c) 2015 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +
    +// Configuration options for JSHint. Change this to match your preferences.
    +
    +(function() {
    +	"use strict";
    +
    +	var merge = require("object-merge");
    +
    +	var universalOptions = {
    +		bitwise: true,
    +		curly: false,
    +		eqeqeq: true,
    +		forin: true,
    +		immed: true,
    +		latedef: false,
    +		newcap: true,
    +		noarg: true,
    +		noempty: true,
    +		nonew: true,
    +		regexp: true,
    +		undef: true,
    +		strict: true,
    +		globalstrict: true,     // "global" stricts are okay when using CommonJS modules
    +		trailing: true
    +	};
    +
    +	exports.nodeOptions = merge(universalOptions, {
    +		node: true
    +	});
    +
    +	exports.clientOptions = merge(universalOptions, {
    +		browser: true
    +	});
    +
    +	var universalGlobals = {
    +		// Mocha
    +		before: false,
    +		after: false,
    +		beforeEach: false,
    +		afterEach: false,
    +		describe: false,
    +		it: false
    +	};
    +
    +	exports.nodeGlobals = merge(universalGlobals, {
    +		// Jake
    +		jake: false,
    +		desc: false,
    +		task: false,
    +		directory: false,
    +		complete: false,
    +		fail: false
    +	});
    +
    +	exports.clientGlobals = merge(universalGlobals, {
    +		// CommonJS
    +		exports: false,
    +		require: false,
    +		module: false,
    +
    +		// Browser
    +		console: false
    +	});
    +
    +}());
    \ No newline at end of file
    diff --git a/tests/build/config/karma.conf.js b/tests/build/config/karma.conf.js
    new file mode 100644
    index 0000000..61f8f7c
    --- /dev/null
    +++ b/tests/build/config/karma.conf.js
    @@ -0,0 +1,75 @@
    +// Karma configuration
    +// Quixote-specific configuration starts with "QUIXOTE:"
    +
    +(function() {
    +	"use strict";
    +
    +	var paths = require("./paths.js");
    +
    +	module.exports = function(config) {
    +		config.set({
    +
    +			// base path, that will be used to resolve files and exclude
    +			basePath: '../../..',
    +
    +			// frameworks to use
    +			frameworks: ['mocha', 'commonjs', 'chai'],
    +
    +			// list of files / patterns to load in the browser
    +			files: [
    +				'tests/src/**/*.js',
    +				'tests/quixote.js',
    +				'tests/vendor/**/*.js',
    +				// QUIXOTE: Serve the CSS file so we can load it in our tests
    +				// Mark it `included: false` so Karma doesn't load it automatically
    +				{ pattern: 'dist/paper.css', included: false }
    +			],
    +
    +			// list of files to exclude
    +			exclude: [],
    +
    +			// preprocess matching files before serving them to the browser
    +			// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
    +			preprocessors: {
    +				'tests/src/**/*.js': ['commonjs'],
    +				'tests/quixote.js': ['commonjs'],
    +				'tests/vendor/**/*.js': ['commonjs']
    +			},
    +
    +			// test results reporter to use
    +			// possible values: 'dots', 'progress', 'junit', 'growl', 'coverage'
    +			reporters: ['dots'],
    +
    +			// web server port
    +			port: 9876,
    +
    +			// enable / disable colors in the output (reporters and logs)
    +			colors: true,
    +
    +			// level of logging
    +			// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
    +			logLevel: config.LOG_INFO,
    +
    +			// enable / disable watching file and executing tests whenever any file changes
    +			autoWatch: false,
    +
    +			// Start these browsers, currently available:
    +			// - Chrome
    +			// - ChromeCanary
    +			// - Firefox
    +			// - Opera
    +			// - Safari (only Mac)
    +			// - PhantomJS
    +			// - IE (only Windows)
    +			browsers: [],
    +
    +			// If browser does not capture in given timeout [ms], kill it
    +			captureTimeout: 60000,
    +
    +			// Continuous Integration mode
    +			// if true, it capture browsers, run tests and exit
    +			singleRun: false
    +		});
    +	};
    +
    +}());
    diff --git a/tests/build/config/paths.js b/tests/build/config/paths.js
    new file mode 100644
    index 0000000..f53f40e
    --- /dev/null
    +++ b/tests/build/config/paths.js
    @@ -0,0 +1,20 @@
    +// Copyright (c) 2015 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +
    +// Lists commonly-used directories. They're all relative to the project root.
    +
    +(function() {
    +	"use strict";
    +
    +	module.exports = {
    +		generatedDir: "generated",
    +		testDir: "generated/test",
    +		distDir: "generated/dist",
    +		clientDistDir: "generated/dist/client",
    +
    +		buildDir: "build",
    +		clientDir: "src",
    +		clientEntryPoint: "src/toggle.js",
    +		clientDistBundle: "generated/dist/client/bundle.js"
    +	};
    +
    +}());
    \ No newline at end of file
    diff --git a/tests/build/config/tested_browsers.js b/tests/build/config/tested_browsers.js
    new file mode 100644
    index 0000000..61cf10c
    --- /dev/null
    +++ b/tests/build/config/tested_browsers.js
    @@ -0,0 +1,17 @@
    +// Copyright (c) 2014 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +(function() {
    +	"use strict";
    +
    +	// Uncomment and modify the following list to cause the build to fail unless these browsers are tested.
    +	// There's no Quixote-specific configuration in this file.
    +
    +	module.exports = [
    +		//"IE 10.0.0 (Windows 7 0.0.0)",
    +		//"Firefox 41.0.0 (Mac OS X 10.10.0)",
    +		//"Chrome 46.0.2490 (Mac OS X 10.10.5)",
    +		//"Safari 9.0.1 (Mac OS X 10.10.5)",
    +		//"Mobile Safari 8.0.0 (iOS 8.4.0)",
    +		//"Chrome Mobile 44.0.2403 (Android 6.0.0)"
    +	];
    +
    +}());
    \ No newline at end of file
    diff --git a/tests/build/scripts/build.jakefile.js b/tests/build/scripts/build.jakefile.js
    new file mode 100644
    index 0000000..e371876
    --- /dev/null
    +++ b/tests/build/scripts/build.jakefile.js
    @@ -0,0 +1,128 @@
    +// Copyright (c) 2012-2014 Titanium I.T. LLC. All rights reserved. See LICENSE.txt for details.
    +
    +// Main build file. Contains all tasks needed for normal development.
    +// There's no Quixote-specific configuration in this file.
    +
    +(function() {
    +	"use strict";
    +
    +	var startTime = Date.now();
    +
    +	var shell = require("shelljs");
    +	var jshint = require("simplebuild-jshint");
    +	var karma = require("simplebuild-karma");
    +	var browserify = require("../util/browserify_runner.js");
    +
    +	var browsers = require("../config/tested_browsers.js");
    +	var jshintConfig = require("../config/jshint.conf.js");
    +	var paths = require("../config/paths.js");
    +
    +	var KARMA_CONFIG = "./build/config/karma.conf.js";
    +
    +	var strict = !process.env.loose;
    +
    +
    +	//*** GENERAL
    +
    +	desc("Lint and test");
    +	task("default", [ "lint", "test" ], function() {
    +		var elapsedSeconds = (Date.now() - startTime) / 1000;
    +		console.log("\n\nBUILD OK  (" + elapsedSeconds.toFixed(2) + "s)");
    +	});
    +
    +	desc("Start server (for manual testing)");
    +	task("run", [ "build" ], function() {
    +		jake.exec("node ../node_modules/http-server/bin/http-server " + paths.clientDistDir, { interactive: true }, complete);
    +	}, { async: true });
    +
    +	desc("Delete generated files");
    +	task("clean", function() {
    +		shell.rm("-rf", paths.generatedDir);
    +	});
    +
    +
    +	//*** LINT
    +
    +	desc("Lint everything");
    +	task("lint", ["lintNode", "lintClient"]);
    +
    +	task("lintNode", function() {
    +		process.stdout.write("Linting Node.js code: ");
    +		jshint.checkFiles({
    +			files: [ paths.buildDir + "/**/*.js" ],
    +			options: jshintConfig.nodeOptions,
    +			globals: jshintConfig.nodeGlobals
    +		}, complete, fail);
    +	}, { async: true });
    +
    +	task("lintClient", function() {
    +		process.stdout.write("Linting browser code: ");
    +		jshint.checkFiles({
    +			files: [ paths.clientDir + "/**/*.js" ],
    +			options: jshintConfig.clientOptions,
    +			globals: jshintConfig.clientGlobals
    +		}, complete, fail);
    +	}, { async: true });
    +
    +
    +	//*** TEST
    +
    +	desc("Start Karma server -- run this first");
    +	task("karma", function() {
    +		karma.start({
    +			configFile: KARMA_CONFIG
    +		}, complete, fail);
    +	}, { async: true });
    +
    +	desc("Run tests");
    +	task("test", function() {
    +		console.log("Testing browser code: ");
    +
    +		var browsersToCapture = process.env.capture ? process.env.capture.split(",") : [];
    +		karma.run({
    +			configFile: KARMA_CONFIG,
    +			expectedBrowsers: browsers,
    +			strict: strict,
    +			capture: browsersToCapture
    +		}, complete, fail);
    +	}, { async: true });
    +
    +
    +	//*** BUILD
    +
    +	desc("Build distribution package");
    +	task("build", [ "prepDistDir", "buildClient" ]);
    +
    +	task("prepDistDir", function() {
    +		shell.rm("-rf", paths.distDir);
    +	});
    +
    +	task("buildClient", [ paths.clientDistDir, "bundleClientJs" ], function() {
    +		console.log("Copying client code: .");
    +		shell.cp(
    +			paths.clientDir + "/*.html",
    +			paths.clientDir + "/*.css",
    +			paths.clientDir + "/*.svg",
    +			paths.clientDistDir
    +		);
    +	});
    +
    +	task("bundleClientJs", [ paths.clientDistDir ], function() {
    +		console.log("Bundling browser code with Browserify: .");
    +		browserify.bundle({
    +			entry: paths.clientEntryPoint,
    +			outfile: paths.clientDistBundle,
    +			options: {
    +				standalone: "toggle",
    +				debug: true
    +			}
    +		}, complete, fail);
    +	}, { async: true });
    +
    +
    +	//*** CREATE DIRECTORIES
    +
    +	directory(paths.testDir);
    +	directory(paths.clientDistDir);
    +
    +}());
    \ No newline at end of file
    diff --git a/tests/build/scripts/run_jake.bat b/tests/build/scripts/run_jake.bat
    new file mode 100644
    index 0000000..edbfe6b
    --- /dev/null
    +++ b/tests/build/scripts/run_jake.bat
    @@ -0,0 +1,7 @@
    +@echo off
    +REM Runs Jake from node_modules directory, preventing it from needing to be installed globally
    +REM Also ensures node modules have been installed
    +REM There's no Quixote-specific configuration in this file.
    +
    +if not exist node_modules\.bin\jake.cmd call npm install
    +node_modules\.bin\jake %*
    \ No newline at end of file
    diff --git a/tests/build/scripts/run_jake.sh b/tests/build/scripts/run_jake.sh
    new file mode 100644
    index 0000000..89804b6
    --- /dev/null
    +++ b/tests/build/scripts/run_jake.sh
    @@ -0,0 +1,6 @@
    +# Runs Jake from node_modules directory, preventing it from needing to be installed globally
    +# Also ensures node modules have been installed
    +# There's no Quixote-specific configuration in this file.
    +
    +[ ! -f node_modules/.bin/jake ] && echo "Installing npm modules:" && npm install
    +node_modules/.bin/jake $*
    \ No newline at end of file
    diff --git a/tests/build/scripts/watch.js b/tests/build/scripts/watch.js
    new file mode 100644
    index 0000000..ee4ceb3
    --- /dev/null
    +++ b/tests/build/scripts/watch.js
    @@ -0,0 +1,28 @@
    +// Copyright (c) 2015 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +
    +// Automatically runs build when files change.
    +// There's no Quixote-specific configuration in this file.
    +
    +(function() {
    +	"use strict";
    +
    +	var nodemon = require("nodemon");
    +	var buildCommand = require("../config/build_command.js");
    +	var paths = require("../config/paths.js");
    +
    +	console.log("*** Using nodemon to run " + buildCommand.get() + ". Type 'rs' to force restart.");
    +	nodemon({
    +		ext: "sh bat json js html css",
    +		ignore: paths.generatedDir,
    +		exec: buildCommand.get() + " " + process.argv.slice(2).join(" "),
    +		execMap: {
    +			sh: "/bin/sh",
    +			bat: "cmd.exe /c",
    +			cmd: "cmd.exe /c"
    +		}
    +	}).on("restart", function(files) {
    +		if (files) console.log("*** Restarting due to", files);
    +		else console.log("*** Restarting");
    +	});
    +
    +}());
    diff --git a/tests/build/util/browserify_runner.js b/tests/build/util/browserify_runner.js
    new file mode 100644
    index 0000000..353d878
    --- /dev/null
    +++ b/tests/build/util/browserify_runner.js
    @@ -0,0 +1,21 @@
    +/* Copyright (c) 2014 Titanium I.T. LLC - See LICENSE.txt for license */
    +
    +// Helper function for running Browserify
    +// There's no Quixote-specific configuration in this file.
    +
    +"use strict";
    +
    +var fs = require("fs");
    +var path = require("path");
    +var browserify = require("browserify");
    +
    +exports.bundle = function(config, success, failure) {
    +	var b = browserify(config.options);
    +
    +	b.add(path.resolve(config.entry));
    +	b.bundle(function(err, bundle) {
    +		if (err) return failure(err);
    +		fs.writeFileSync(config.outfile, bundle);
    +		return success();
    +	});
    +};
    \ No newline at end of file
    diff --git a/tests/build/util/karma_runner.js b/tests/build/util/karma_runner.js
    new file mode 100644
    index 0000000..535b22a
    --- /dev/null
    +++ b/tests/build/util/karma_runner.js
    @@ -0,0 +1,76 @@
    +// Copyright (c) 2012-2015 Titanium I.T. LLC. All rights reserved. See LICENSE.txt for details.
    +
    +// Helper functions for running Karma
    +// There's no Quixote-specific configuration in this file.
    +
    +(function() {
    +	"use strict";
    +
    +	var path = require("path");
    +	var sh = require("./sh.js");
    +	var runner = require("karma/lib/runner");
    +	var server = require("karma/lib/server");
    +
    +	var KARMA = "node node_modules/karma/bin/karma";
    +
    +	exports.serve = function(configFile, success, fail) {
    +		var command = KARMA + " start " + configFile;
    +		sh.run(command, success, function () {
    +			fail("Could not start Karma server");
    +		});
    +	};
    +
    +	exports.runTests = function(options, success, fail) {
    +		options.capture = options.capture || [];
    +		var config = {
    +			configFile: path.resolve(options.configFile),
    +			browsers: options.capture,
    +			singleRun: options.capture.length > 0
    +		};
    +
    +		var runKarma = runner.run.bind(runner);
    +		if (config.singleRun) runKarma = server.start.bind(server);
    +
    +		var stdout = new CapturedStdout();
    +		runKarma(config, function(exitCode) {
    +			stdout.restore();
    +
    +			if (exitCode) return fail("Client tests failed (did you start the Karma server?)");
    +			var browserMissing = checkRequiredBrowsers(options.browsers, stdout);
    +			if (browserMissing && options.strict) return fail("Did not test all browsers");
    +			if (stdout.capturedOutput.indexOf("TOTAL: 0 SUCCESS") !== -1) return fail("No tests were run!");
    +
    +			return success();
    +		});
    +	};
    +
    +	function checkRequiredBrowsers(requiredBrowsers, stdout) {
    +		var browserMissing = false;
    +		requiredBrowsers.forEach(function(browser) {
    +			browserMissing = lookForBrowser(browser, stdout.capturedOutput) || browserMissing;
    +		});
    +		return browserMissing;
    +	}
    +
    +	function lookForBrowser(browser, output) {
    +		var missing = output.indexOf(browser + ": Executed") === -1;
    +		if (missing) console.log("Warning: " + browser + " was not tested!");
    +		return missing;
    +	}
    +
    +	function CapturedStdout() {
    +		var self = this;
    +		self.oldStdout = process.stdout.write;
    +		self.capturedOutput = "";
    +
    +		process.stdout.write = function(data) {
    +			self.capturedOutput += data;
    +			self.oldStdout.apply(this, arguments);
    +		};
    +	}
    +
    +	CapturedStdout.prototype.restore = function() {
    +		process.stdout.write = this.oldStdout;
    +	};
    +
    +}());
    \ No newline at end of file
    diff --git a/tests/build/util/mocha_runner.js b/tests/build/util/mocha_runner.js
    new file mode 100644
    index 0000000..eb8bc86
    --- /dev/null
    +++ b/tests/build/util/mocha_runner.js
    @@ -0,0 +1,54 @@
    +// Copyright (c) 2014-2015 Titanium I.T. LLC. All rights reserved. See LICENSE.txt for details.
    +
    +// Helper function for running Mocha
    +// There's no Quixote-specific configuration in this file.
    +
    +(function() {
    +	"use strict";
    +
    +	var Mocha = require("mocha");
    +	var jake = require("jake");
    +
    +	exports.runTests = function runTests(options, success, failure) {
    +		var mocha = new Mocha(options.options);
    +		var files = deglob(options.files);
    +		files.forEach(mocha.addFile.bind(mocha));
    +
    +		//   This is a bit of a hack. The issue is this: during test execution, if an exception is thrown inside
    +		// of a callback (and keep in mind that assertions throw exceptions), there's no way for Mocha to catch
    +		// that exception.
    +		//   So Mocha registers an 'uncaughtException' handler on Node's process object. That way any unhandled
    +		// exception is passed to Mocha.
    +		//   The problem is that Jake ALSO listens for 'uncaughtException'. Its handler and Mocha's handler don't
    +		// get along. Somehow the Jake handler seems to terminate Mocha's test run... not sure why. We need to
    +		// disable Jake's handler while Mocha is running.
    +		//   This code disables ALL uncaughtException handlers and then restores them after Mocha is done. It's
    +		// very hacky and likely to cause problems in certain edge cases (for example, '.once' listeners aren't
    +		// restored properly), but it seems to be working for now.
    +		//   It might be possible to create a better solution by using Node's 'domain' module. Something to look
    +		// into if you're reading this. Another solution is to just spawn Mocha in a separate process, but I
    +		// didn't want the time penalty involved. Besides, this seems to be working okay.
    +		var savedListeners = disableExceptionListeners();
    +
    +		var runner = mocha.run(function(failures) {
    +			restoreExceptionListeners(savedListeners);
    +			if (failures) return failure("Tests failed");
    +			else return success();
    +		});
    +	};
    +
    +	function deglob(globs) {
    +		return new jake.FileList(globs).toArray();
    +	}
    +
    +	function disableExceptionListeners() {
    +		var listeners = process.listeners("uncaughtException");
    +		process.removeAllListeners("uncaughtException");
    +		return listeners;
    +	}
    +
    +	function restoreExceptionListeners(listeners) {
    +		listeners.forEach(process.addListener.bind(process, "uncaughtException"));
    +	}
    +
    +}());
    diff --git a/tests/build/util/sh.js b/tests/build/util/sh.js
    new file mode 100644
    index 0000000..78b3881
    --- /dev/null
    +++ b/tests/build/util/sh.js
    @@ -0,0 +1,48 @@
    +// Copyright (c) 2012-2015 Titanium I.T. LLC. All rights reserved. See LICENSE.txt for details.
    +
    +// Helper functions for running processes.
    +// There's no Quixote-specific configuration in this file.
    +
    +(function() {
    +	"use strict";
    +
    +	var jake = require("jake");
    +
    +	exports.runMany = function(commands, successCallback, failureCallback) {
    +		var stdout = [];
    +		function serializedSh(command) {
    +			if (command) {
    +				run(command, function(oneStdout) {
    +					stdout.push(oneStdout);
    +					serializedSh(commands.shift());
    +				}, failureCallback);
    +			}
    +			else {
    +				successCallback(stdout);
    +			}
    +		}
    +		serializedSh(commands.shift());
    +	};
    +
    +	var run = exports.run = function(oneCommand, successCallback, failureCallback) {
    +		var stdout = "";
    +		var child = jake.createExec(oneCommand);
    +		child.on("stdout", function(data) {
    +			process.stdout.write(data);
    +			stdout += data;
    +		});
    +		child.on("stderr", function(data) {
    +			process.stderr.write(data);
    +		});
    +		child.on("cmdEnd", function() {
    +			successCallback(stdout);
    +		});
    +		child.on("error", function() {
    +			failureCallback(stdout);
    +		});
    +
    +		console.log("> " + oneCommand);
    +		child.run();
    +	};
    +
    +}());
    \ No newline at end of file
    diff --git a/tests/build/util/version_checker.js b/tests/build/util/version_checker.js
    new file mode 100644
    index 0000000..f4bbd1e
    --- /dev/null
    +++ b/tests/build/util/version_checker.js
    @@ -0,0 +1,29 @@
    +// Copyright (c) 2013 Titanium I.T. LLC. All rights reserved. See LICENSE.TXT for details.
    +
    +// Helper function for checking version numbers.
    +// There's no Quixote-specific configuration in this file.
    +
    +
    +(function() {
    +	"use strict";
    +
    +	var semver = require("semver");
    +
    +	exports.check = function(options, success, fail) {
    +		if (options.strict) {
    +			if (semver.neq(options.actual, options.expected)) return failWithQualifier("exactly");
    +		}
    +		else {
    +			if (semver.lt(options.actual, options.expected)) return failWithQualifier("at least");
    +			if (semver.neq(options.actual, options.expected)) console.log("Warning: Newer " + options.name +
    +				" version than expected. Expected " + options.expected + ", but was " + options.actual + ".");
    +		}
    +		return success();
    +
    +		function failWithQualifier(qualifier) {
    +			return fail("Incorrect " + options.name + " version. Expected " + qualifier +
    +				" " + options.expected + ", but was " + options.actual + ".");
    +		}
    +	};
    +
    +}());
    \ No newline at end of file
    diff --git a/tests/jake.bat b/tests/jake.bat
    new file mode 100644
    index 0000000..774c0fc
    --- /dev/null
    +++ b/tests/jake.bat
    @@ -0,0 +1 @@
    +@call build\scripts\run_jake -f build\scripts\build.jakefile.js %*
    diff --git a/tests/jake.sh b/tests/jake.sh
    new file mode 100644
    index 0000000..a3bff26
    --- /dev/null
    +++ b/tests/jake.sh
    @@ -0,0 +1,2 @@
    +#!/bin/sh
    +. build/scripts/run_jake.sh -f build/scripts/build.jakefile.js $*
    diff --git a/tests/package.json b/tests/package.json
    new file mode 100644
    index 0000000..1055f55
    --- /dev/null
    +++ b/tests/package.json
    @@ -0,0 +1,33 @@
    +{
    +  "name": "papercss-tests",
    +  "version": "1.1.0",
    +  "description": "Another CSS framework",
    +  "dependencies": {
    +    "http-server": "^0.9.0"
    +  },
    +  "devDependencies": {
    +    "browserify": "^14.1.0",
    +    "chai": "^4.1.2",
    +    "jake": "^8.0.15",
    +    "jshint": "^2.9.4",
    +    "karma": "^1.7.1",
    +    "karma-chai": "^0.1.0",
    +    "karma-commonjs": "1.0.0",
    +    "karma-firefox-launcher": "^1.0.0",
    +    "karma-mocha": "^1.3.0",
    +    "karma-quixote": "^1.0.0",
    +    "less": "2.7.2",
    +    "mocha": "^4.0.1",
    +    "nodemon": "^1.11.0",
    +    "normalize.css": "7.0.0",
    +    "npm": "5.3.0",
    +    "object-merge": "^2.5.1",
    +    "procfile": "^0.1.1",
    +    "quixote": "^0.14.0",
    +    "semver": "^5.3.0",
    +    "shelljs": "^0.7.6",
    +    "simplebuild-jshint": "^1.3.0",
    +    "simplebuild-karma": "^1.0.0",
    +    "webpack-dev-server": "2.7.1"
    +  }
    +}
    diff --git a/tests/quixote.js b/tests/quixote.js
    new file mode 100644
    index 0000000..bd9f804
    --- /dev/null
    +++ b/tests/quixote.js
    @@ -0,0 +1,4195 @@
    +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.quixote = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 1) {
    +        for (var i = 1; i < arguments.length; i++) {
    +            args[i - 1] = arguments[i];
    +        }
    +    }
    +    queue.push(new Item(fun, args));
    +    if (queue.length === 1 && !draining) {
    +        runTimeout(drainQueue);
    +    }
    +};
    +
    +// v8 likes predictible objects
    +function Item(fun, array) {
    +    this.fun = fun;
    +    this.array = array;
    +}
    +Item.prototype.run = function () {
    +    this.fun.apply(null, this.array);
    +};
    +process.title = 'browser';
    +process.browser = true;
    +process.env = {};
    +process.argv = [];
    +process.version = ''; // empty string to avoid regexp issues
    +process.versions = {};
    +
    +function noop() {}
    +
    +process.on = noop;
    +process.addListener = noop;
    +process.once = noop;
    +process.off = noop;
    +process.removeListener = noop;
    +process.removeAllListeners = noop;
    +process.emit = noop;
    +process.prependListener = noop;
    +process.prependOnceListener = noop;
    +
    +process.listeners = function (name) { return [] }
    +
    +process.binding = function (name) {
    +    throw new Error('process.binding is not supported');
    +};
    +
    +process.cwd = function () { return '/' };
    +process.chdir = function (dir) {
    +    throw new Error('process.chdir is not supported');
    +};
    +process.umask = function() { return 0; };
    +
    +},{}],2:[function(require,module,exports){
    +// Copyright (c) 2015 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +"use strict";
    +
    +var ensure = require("./util/ensure.js");
    +var oop = require("./util/oop.js");
    +var shim = require("./util/shim.js");
    +
    +var Me = module.exports = function Assertable() {
    +	ensure.unreachable("Assertable is abstract and should not be constructed directly.");
    +};
    +Me.extend = oop.extendFn(Me);
    +oop.makeAbstract(Me, []);
    +
    +Me.prototype.assert = function assert(expected, message) {
    +	ensure.signature(arguments, [ Object, [undefined, String] ]);
    +	if (message === undefined) message = "Differences found";
    +
    +	var diff = this.diff(expected);
    +	if (diff !== "") throw new Error(message + ":\n" + diff + "\n");
    +};
    +
    +Me.prototype.diff = function diff(expected) {
    +	ensure.signature(arguments, [ Object ]);
    +
    +	var result = [];
    +	var keys = shim.Object.keys(expected);
    +	var key, oneDiff, descriptor;
    +	for (var i = 0; i < keys.length; i++) {
    +		key = keys[i];
    +		descriptor = this[key];
    +		ensure.that(
    +				descriptor !== undefined,
    +				this + " doesn't have a property named '" + key + "'. Did you misspell it?"
    +		);
    +		oneDiff = descriptor.diff(expected[key]);
    +		if (oneDiff !== "") result.push(oneDiff);
    +	}
    +
    +	return result.join("\n");
    +};
    +
    +},{"./util/ensure.js":23,"./util/oop.js":24,"./util/shim.js":25}],3:[function(require,module,exports){
    +// Copyright (c) 2017 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +"use strict";
    +
    +var ensure = require("../util/ensure.js");
    +var PositionDescriptor = require("./position_descriptor.js");
    +var Position = require("../values/position.js");
    +
    +var X_DIMENSION = "x";
    +var Y_DIMENSION = "y";
    +
    +var Me = module.exports = function AbsolutePosition(dimension, value) {
    +  ensure.signature(arguments, [ String, Number ]);
    +
    +  switch(dimension) {
    +		case X_DIMENSION:
    +			PositionDescriptor.x(this);
    +			this._value = Position.x(value);
    +			break;
    +		case Y_DIMENSION:
    +			PositionDescriptor.y(this);
    +			this._value = Position.y(value);
    +			break;
    +		default: ensure.unreachable("Unknown dimension: " + dimension);
    +  }
    +  this._dimension = dimension;
    +};
    +PositionDescriptor.extend(Me);
    +
    +Me.x = function(value) {
    +	ensure.signature(arguments, [ Number ]);
    +  return new Me(X_DIMENSION, value);
    +};
    +
    +Me.y = function(value) {
    +	ensure.signature(arguments, [ Number ]);
    +	return new Me(Y_DIMENSION, value);
    +};
    +
    +Me.prototype.value = function() {
    +  return this._value;
    +};
    +
    +Me.prototype.toString = function() {
    +  return this._value + " " + this._dimension + "-coordinate";
    +};
    +
    +},{"../util/ensure.js":23,"../values/position.js":27,"./position_descriptor.js":11}],4:[function(require,module,exports){
    +// Copyright (c) 2014 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +"use strict";
    +
    +var ensure = require("../util/ensure.js");
    +var PositionDescriptor = require("./position_descriptor.js");
    +var Position = require("../values/position.js");
    +var RelativePosition = require("./relative_position.js");
    +
    +var X_DIMENSION = "x";
    +var Y_DIMENSION = "y";
    +
    +var Me = module.exports = function Center(dimension, position1, position2, description) {
    +	ensure.signature(arguments, [ String, PositionDescriptor, PositionDescriptor, String ]);
    +
    +	if (dimension === X_DIMENSION) PositionDescriptor.x(this);
    +	else if (dimension === Y_DIMENSION) PositionDescriptor.y(this);
    +	else ensure.unreachable("Unknown dimension: " + dimension);
    +
    +	this._dimension = dimension;
    +	this._position1 = position1;
    +	this._position2 = position2;
    +	this._description = description;
    +};
    +PositionDescriptor.extend(Me);
    +
    +Me.x = factoryFn(X_DIMENSION);
    +Me.y = factoryFn(Y_DIMENSION);
    +
    +Me.prototype.value = function value() {
    +	ensure.signature(arguments, []);
    +	return this._position1.value().midpoint(this._position2.value());
    +};
    +
    +Me.prototype.toString = function toString() {
    +	ensure.signature(arguments, []);
    +	return this._description;
    +};
    +
    +function factoryFn(dimension) {
    +	return function(position1, position2, description) {
    +		return new Me(dimension, position1, position2, description);
    +	};
    +}
    +
    +},{"../util/ensure.js":23,"../values/position.js":27,"./position_descriptor.js":11,"./relative_position.js":12}],5:[function(require,module,exports){
    +// Copyright (c) 2014 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +"use strict";
    +
    +var ensure = require("../util/ensure.js");
    +var oop = require("../util/oop.js");
    +var Value = require("../values/value.js");
    +
    +var Me = module.exports = function Descriptor() {
    +	ensure.unreachable("Descriptor is abstract and should not be constructed directly.");
    +};
    +Me.extend = oop.extendFn(Me);
    +oop.makeAbstract(Me, [
    +	"value",
    +	"toString"
    +]);
    +
    +Me.prototype.diff = function diff(expected) {
    +	expected = normalizeType(this, expected);
    +	try {
    +		var actualValue = this.value();
    +		var expectedValue = expected.value();
    +
    +		if (actualValue.equals(expectedValue)) return "";
    +
    +		var difference = actualValue.diff(expectedValue);
    +		var expectedDesc = expectedValue.toString();
    +		if (expected instanceof Me) expectedDesc += " (" + expected + ")";
    +
    +		return this + " was " + difference + ".\n" +
    +			"  Expected: " + expectedDesc + "\n" +
    +			"  But was:  " + actualValue;
    +	}
    +	catch (err) {
    +		throw new Error("Can't compare " + this + " to " + expected + ": " + err.message);
    +	}
    +};
    +
    +Me.prototype.convert = function convert(arg, type) {
    +	// This method is meant to be overridden by subclasses. It should return 'undefined' when an argument
    +	// can't be converted. In this default implementation, no arguments can be converted, so we always
    +	// return 'undefined'.
    +	return undefined;
    +};
    +
    +Me.prototype.equals = function equals(that) {
    +	// Descriptors aren't value objects. They're never equal to anything. But sometimes
    +	// they're used in the same places value objects are used, and this method gets called.
    +	return false;
    +};
    +
    +function normalizeType(self, expected) {
    +	var expectedType = typeof expected;
    +	if (expected === null) expectedType = "null";
    +
    +	if (expectedType === "object" && (expected instanceof Me || expected instanceof Value)) return expected;
    +
    +	if (expected === undefined) {
    +		throw new Error("Can't compare " + self + " to " + expected + ". Did you misspell a property name?");
    +	}
    +	else if (expectedType === "object") {
    +		throw new Error("Can't compare " + self + " to " + oop.instanceName(expected) + " instances.");
    +	}
    +	else {
    +		var converted = self.convert(expected, expectedType);
    +		if (converted !== undefined) return converted;
    +
    +		var explanation = expected;
    +		if (expectedType === "string") explanation = "'" + explanation + "'";
    +		if (expectedType === "function") explanation = "a function";
    +
    +		throw new Error("Can't compare " + self + " to " + explanation + ".");
    +	}
    +
    +}
    +
    +},{"../util/ensure.js":23,"../util/oop.js":24,"../values/value.js":30}],6:[function(require,module,exports){
    +// Copyright (c) 2014-2017 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +"use strict";
    +
    +var ensure = require("../util/ensure.js");
    +var Position = require("../values/position.js");
    +var PositionDescriptor = require("./position_descriptor.js");
    +
    +var TOP = "top";
    +var RIGHT = "right";
    +var BOTTOM = "bottom";
    +var LEFT = "left";
    +
    +var Me = module.exports = function ElementEdge(element, position) {
    +	var QElement = require("../q_element.js");      // break circular dependency
    +	ensure.signature(arguments, [QElement, String]);
    +
    +	if (position === LEFT || position === RIGHT) PositionDescriptor.x(this);
    +	else if (position === TOP || position === BOTTOM) PositionDescriptor.y(this);
    +	else ensure.unreachable("Unknown position: " + position);
    +
    +	this._element = element;
    +	this._position = position;
    +};
    +PositionDescriptor.extend(Me);
    +
    +Me.top = factoryFn(TOP);
    +Me.right = factoryFn(RIGHT);
    +Me.bottom = factoryFn(BOTTOM);
    +Me.left = factoryFn(LEFT);
    +
    +Me.prototype.value = function value() {
    +	ensure.signature(arguments, []);
    +
    +	var rawPosition = this._element.getRawPosition();
    +
    +	var edge = rawPosition[this._position];
    +	var scroll = this._element.frame.getRawScrollPosition();
    +
    +	if (this._position === RIGHT || this._position === LEFT) {
    +		if (!elementRendered(this, rawPosition)) return Position.noX();
    +		return Position.x(edge + scroll.x);
    +	}
    +	else {
    +		if (!elementRendered(this, rawPosition)) return Position.noY();
    +		return Position.y(edge + scroll.y);
    +	}
    +};
    +
    +Me.prototype.toString = function toString() {
    +	ensure.signature(arguments, []);
    +	return this._position + " edge of " + this._element;
    +};
    +
    +function factoryFn(position) {
    +	return function factory(element) {
    +		return new Me(element, position);
    +	};
    +}
    +
    +function elementRendered(self, rawPosition) {
    +	var element = self._element;
    +
    +	var inDom = element.frame.body().toDomElement().contains(element.toDomElement());
    +	var displayNone = element.getRawStyle("display") === "none";
    +
    +	return inDom && !displayNone;
    +}
    +
    +},{"../q_element.js":17,"../util/ensure.js":23,"../values/position.js":27,"./position_descriptor.js":11}],7:[function(require,module,exports){
    +// Copyright (c) 2016-2017 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +"use strict";
    +
    +var ensure = require("../util/ensure.js");
    +var RenderState = require("../values/render_state.js");
    +var Position = require("../values/position.js");
    +var Descriptor = require("./descriptor.js");
    +var ElementRenderedEdge = require("./element_rendered_edge.js");
    +var GenericSize = require("./generic_size.js");
    +var Center = require("./center.js");
    +
    +var Me = module.exports = function ElementRendered(element) {
    +	var QElement = require("../q_element.js");      // break circular dependency
    +	ensure.signature(arguments, [ QElement ]);
    +
    +	this._element = element;
    +
    +	// properties
    +	this.top = ElementRenderedEdge.top(element);
    +	this.right = ElementRenderedEdge.right(element);
    +	this.bottom = ElementRenderedEdge.bottom(element);
    +	this.left = ElementRenderedEdge.left(element);
    +
    +	this.width = GenericSize.create(this.left, this.right, "rendered width of " + element);
    +	this.height = GenericSize.create(this.top, this.bottom, "rendered height of " + element);
    +
    +	this.center = Center.x(this.left, this.right, "rendered center of " + element);
    +	this.middle = Center.y(this.top, this.bottom, "rendered middle of " + element);
    +};
    +Descriptor.extend(Me);
    +
    +Me.create = function create(element) {
    +	return new Me(element);
    +};
    +
    +Me.prototype.value = function value() {
    +	if (this.top.value().equals(Position.noY())) return RenderState.notRendered();
    +	else return RenderState.rendered();
    +};
    +
    +Me.prototype.toString = function toString() {
    +	return "render status of " + this._element.toString();
    +};
    +
    +Me.prototype.convert = function convert(arg, type) {
    +	if (type === "boolean") {
    +		return arg ? RenderState.rendered() : RenderState.notRendered();
    +	}
    +};
    +
    +},{"../q_element.js":17,"../util/ensure.js":23,"../values/position.js":27,"../values/render_state.js":28,"./center.js":4,"./descriptor.js":5,"./element_rendered_edge.js":8,"./generic_size.js":9}],8:[function(require,module,exports){
    +// Copyright (c) 2017 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +"use strict";
    +
    +var ensure = require("../util/ensure.js");
    +var quixote = require("../quixote.js");
    +var PositionDescriptor = require("./position_descriptor.js");
    +var Position = require("../values/position.js");
    +var Size = require("../values/size.js");
    +var RenderState = require("../values/render_state.js");
    +
    +var TOP = "top";
    +var RIGHT = "right";
    +var BOTTOM = "bottom";
    +var LEFT = "left";
    +
    +var Me = module.exports = function ElementVisibleEdge(element, position) {
    +	var QElement = require("../q_element.js");      // break circular dependency
    +	ensure.signature(arguments, [ QElement, String ]);
    +
    +	if (position === LEFT || position === RIGHT) PositionDescriptor.x(this);
    +	else if (position === TOP || position === BOTTOM) PositionDescriptor.y(this);
    +	else unknownPosition(position);
    +
    +	this._element = element;
    +	this._position = position;
    +};
    +PositionDescriptor.extend(Me);
    +
    +Me.top = factoryFn(TOP);
    +Me.right = factoryFn(RIGHT);
    +Me.bottom = factoryFn(BOTTOM);
    +Me.left = factoryFn(LEFT);
    +
    +function factoryFn(position) {
    +	return function factory(element) {
    +		return new Me(element, position);
    +	};
    +}
    +
    +Me.prototype.toString = function toString() {
    +	ensure.signature(arguments, []);
    +	return this._position + " rendered edge of " + this._element;
    +};
    +
    +Me.prototype.value = function() {
    +	var position = this._position;
    +	var element = this._element;
    +	var page = element.frame.page();
    +
    +	if (element.top.value().equals(Position.noY())) return notRendered(position);
    +	if (element.width.value().equals(Size.create(0))) return notRendered(position);
    +	if (element.height.value().equals(Size.create(0))) return notRendered(position);
    +
    +	ensure.that(
    +		!hasClipPathProperty(element),
    +		"Can't detect element clipping boundaries when 'clip-path' property is used."
    +	);
    +
    +	var bounds = {
    +		top: page.top.value(),
    +		right: null,
    +		bottom: null,
    +		left: page.left.value()
    +	};
    +
    +	bounds = intersectionWithOverflow(element, bounds);
    +	bounds = intersectionWithClip(element, bounds);
    +
    +	var edges = intersection(
    +		bounds,
    +		element.top.value(),
    +		element.right.value(),
    +		element.bottom.value(),
    +		element.left.value()
    +	);
    +
    +	if (isClippedOutOfExistence(bounds, edges)) return notRendered(position);
    +	else return edge(edges, position);
    +};
    +
    +function hasClipPathProperty(element) {
    +	var clipPath = element.getRawStyle("clip-path");
    +	return clipPath !== "none" && clipPath !== "";
    +}
    +
    +function intersectionWithOverflow(element, bounds) {
    +	for (var container = element.parent(); container !== null; container = container.parent()) {
    +		if (isClippedByAncestorOverflow(element, container)) {
    +			bounds = intersection(
    +				bounds,
    +				container.top.value(),
    +				container.right.value(),
    +				container.bottom.value(),
    +				container.left.value()
    +			);
    +		}
    +	}
    +
    +	return bounds;
    +}
    +
    +function intersectionWithClip(element, bounds) {
    +	// WORKAROUND IE 8: Doesn't have any way to detect 'clip: auto' value.
    +	ensure.that(!quixote.browser.misreportsClipAutoProperty(),
    +		"Can't determine element clipping values on this browser because it misreports the value of the" +
    +		" `clip: auto` property. You can use `quixote.browser.misreportsClipAutoProperty()` to skip this browser."
    +	);
    +
    +	for ( ; element !== null; element = element.parent()) {
    +		var clip = element.getRawStyle("clip");
    +		if (clip === "auto" || !canBeClippedByClipProperty(element)) continue;
    +
    +		var clipEdges = normalizeClipProperty(element, clip);
    +		bounds = intersection(
    +			bounds,
    +			clipEdges.top,
    +			clipEdges.right,
    +			clipEdges.bottom,
    +			clipEdges.left
    +		);
    +	}
    +
    +	return bounds;
    +}
    +
    +function normalizeClipProperty(element, clip) {
    +	var clipValues = parseClipProperty(element, clip);
    +
    +	return {
    +		top: clipValues[0] === "auto" ?
    +			element.top.value() :
    +			element.top.value().plus(Position.y(Number(clipValues[0]))),
    +		right: clipValues[1] === "auto" ?
    +			element.right.value() :
    +			element.left.value().plus(Position.x(Number(clipValues[1]))),
    +		bottom: clipValues[2] === "auto" ?
    +			element.bottom.value() :
    +			element.top.value().plus(Position.y(Number(clipValues[2]))),
    +		left: clipValues[3] === "auto" ?
    +			element.left.value() :
    +			element.left.value().plus(Position.x(Number(clipValues[3])))
    +	};
    +
    +	function parseClipProperty(element, clip) {
    +		// WORKAROUND IE 11, Chrome Mobile 44: Reports 0px instead of 'auto' when computing rect() in clip property.
    +		ensure.that(!quixote.browser.misreportsAutoValuesInClipProperty(),
    +			"Can't determine element clipping values on this browser because it misreports the value of the `clip`" +
    +			" property. You can use `quixote.browser.misreportsAutoValuesInClipProperty()` to skip this browser."
    +		);
    +
    +		var clipRegex = /rect\((.*?),? (.*?),? (.*?),? (.*?)\)/;
    +		var matches = clipRegex.exec(clip);
    +		ensure.that(matches !== null, "Unable to parse clip property: " + clip);
    +
    +		return [
    +			parseLength(matches[1], clip),
    +			parseLength(matches[2], clip),
    +			parseLength(matches[3], clip),
    +			parseLength(matches[4], clip)
    +		];
    +	}
    +
    +	function parseLength(pxString, clip) {
    +		if (pxString === "auto") return pxString;
    +
    +		var pxRegex = /^(.*?)px$/;
    +		var matches = pxRegex.exec(pxString);
    +		ensure.that(matches !== null, "Unable to parse '" + pxString + "' in clip property: " + clip);
    +
    +		return matches[1];
    +	}
    +}
    +
    +function isClippedByAncestorOverflow(element, ancestor) {
    +	return canBeClippedByOverflowProperty(element) && hasClippingOverflow(ancestor);
    +}
    +
    +function canBeClippedByOverflowProperty(element) {
    +	var position = element.getRawStyle("position");
    +	switch (position) {
    +		case "static":
    +		case "relative":
    +		case "absolute":
    +		case "sticky":
    +			return true;
    +		case "fixed":
    +			return false;
    +		default:
    +			ensure.unreachable("Unknown position property: " + position);
    +	}
    +}
    +
    +function hasClippingOverflow(element) {
    +	var overflow = element.getRawStyle("overflow");
    +	switch (overflow) {
    +		case "hidden":
    +		case "scroll":
    +		case "auto":
    +			return true;
    +		case "visible":
    +			return false;
    +		default:
    +			ensure.unreachable("Unknown overflow property: " + overflow);
    +	}
    +}
    +
    +function canBeClippedByClipProperty(element) {
    +	var position = element.getRawStyle("position");
    +	switch (position) {
    +		case "absolute":
    +		case "fixed":
    +			return true;
    +		case "static":
    +		case "relative":
    +		case "sticky":
    +			return false;
    +		default:
    +			ensure.unreachable("Unknown position property: " + position);
    +	}
    +}
    +
    +function intersection(bounds, top, right, bottom, left) {
    +	bounds.top = bounds.top.max(top);
    +	bounds.right = (bounds.right === null) ? right : bounds.right.min(right);
    +	bounds.bottom = (bounds.bottom === null) ? bottom : bounds.bottom.min(bottom);
    +	bounds.left = bounds.left.max(left);
    +
    +	return bounds;
    +}
    +
    +function isClippedOutOfExistence(bounds, edges) {
    +	return (bounds.top.compare(edges.bottom) >= 0) ||
    +		(bounds.right !== null && bounds.right.compare(edges.left) <= 0) ||
    +		(bounds.bottom !== null && bounds.bottom.compare(edges.top) <= 0) ||
    +		(bounds.left.compare(edges.right) >= 0);
    +}
    +
    +function notRendered(position) {
    +	switch(position) {
    +		case TOP:
    +		case BOTTOM:
    +			return Position.noY();
    +		case LEFT:
    +		case RIGHT:
    +			return Position.noX();
    +		default: unknownPosition(position);
    +	}
    +}
    +
    +function edge(edges, position) {
    +	switch(position) {
    +		case TOP: return edges.top;
    +		case RIGHT: return edges.right;
    +		case BOTTOM: return edges.bottom;
    +		case LEFT: return edges.left;
    +		default: unknownPosition(position);
    +	}
    +}
    +
    +function unknownPosition(position) {
    +	ensure.unreachable("Unknown position: " + position);
    +}
    +
    +},{"../q_element.js":17,"../quixote.js":22,"../util/ensure.js":23,"../values/position.js":27,"../values/render_state.js":28,"../values/size.js":29,"./position_descriptor.js":11}],9:[function(require,module,exports){
    +// Copyright (c) 2017 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +"use strict";
    +
    +var ensure = require("../util/ensure.js");
    +var PositionDescriptor = require("./position_descriptor.js");
    +var SizeDescriptor = require("./size_descriptor.js");
    +
    +var Me = module.exports = function GenericSize(from, to, description) {
    +  ensure.signature(arguments, [ PositionDescriptor, PositionDescriptor, String ]);
    +
    +  this._from = from;
    +  this._to = to;
    +  this._description = description;
    +};
    +SizeDescriptor.extend(Me);
    +
    +Me.create = function(from, to, description) {
    +  return new Me(from, to, description);
    +};
    +
    +Me.prototype.value = function() {
    +  ensure.signature(arguments, []);
    +  return this._from.value().distanceTo(this._to.value());
    +};
    +
    +Me.prototype.toString = function() {
    +  return this._description;
    +};
    +
    +},{"../util/ensure.js":23,"./position_descriptor.js":11,"./size_descriptor.js":14}],10:[function(require,module,exports){
    +// Copyright (c) 2014 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +"use strict";
    +
    +var ensure = require("../util/ensure.js");
    +var PositionDescriptor = require("./position_descriptor.js");
    +var Position = require("../values/position.js");
    +
    +var TOP = "top";
    +var RIGHT = "right";
    +var BOTTOM = "bottom";
    +var LEFT = "left";
    +
    +var Me = module.exports = function PageEdge(edge, frame) {
    +	var QFrame = require("../q_frame.js");    // break circular dependency
    +	ensure.signature(arguments, [ String, QFrame ]);
    +
    +	if (edge === LEFT || edge === RIGHT) PositionDescriptor.x(this);
    +	else if (edge === TOP || edge === BOTTOM) PositionDescriptor.y(this);
    +	else ensure.unreachable("Unknown edge: " + edge);
    +
    +	this._edge = edge;
    +	this._frame = frame;
    +};
    +PositionDescriptor.extend(Me);
    +
    +Me.top = factoryFn(TOP);
    +Me.right = factoryFn(RIGHT);
    +Me.bottom = factoryFn(BOTTOM);
    +Me.left = factoryFn(LEFT);
    +
    +Me.prototype.value = function value() {
    +	ensure.signature(arguments, []);
    +
    +	var size = pageSize(this._frame.toDomElement().contentDocument);
    +	switch(this._edge) {
    +		case TOP: return Position.y(0);
    +		case RIGHT: return Position.x(size.width);
    +		case BOTTOM: return Position.y(size.height);
    +		case LEFT: return Position.x(0);
    +
    +		default: ensure.unreachable();
    +	}
    +};
    +
    +Me.prototype.toString = function toString() {
    +	ensure.signature(arguments, []);
    +
    +	switch(this._edge) {
    +		case TOP: return "top of page";
    +		case RIGHT: return "right side of page";
    +		case BOTTOM: return "bottom of page";
    +		case LEFT: return "left side of page";
    +
    +		default: ensure.unreachable();
    +	}
    +};
    +
    +function factoryFn(edge) {
    +	return function factory(frame) {
    +		return new Me(edge, frame);
    +	};
    +}
    +
    +
    +
    +// USEFUL READING: http://www.quirksmode.org/mobile/viewports.html
    +// and http://www.quirksmode.org/mobile/viewports2.html
    +
    +// API SEMANTICS.
    +// Ref https://developer.mozilla.org/en-US/docs/Web/API/CSS_Object_Model/Determining_the_dimensions_of_elements
    +//    getBoundingClientRect().width: sum of bounding boxes of element (the displayed width of the element,
    +//      including padding and border). Fractional. Applies transformations.
    +//    clientWidth: visible width of element including padding (but not border). EXCEPT on root element (html), where
    +//      it is the width of the viewport. Rounds to an integer. Doesn't apply transformations.
    +//    offsetWidth: visible width of element including padding, border, and scrollbars (if any). Rounds to an integer.
    +//      Doesn't apply transformations.
    +//    scrollWidth: entire width of element, including any part that's not visible due to scrollbars. Rounds to
    +//      an integer. Doesn't apply transformations. Not clear if it includes scrollbars, but I think not. Also
    +//      not clear if it includes borders or padding. (But from tests, apparently not borders. Except on root
    +//      element and body element, which have special results that vary by browser.)
    +
    +// TEST RESULTS: WIDTH
    +//   ✔ = correct answer
    +//   ✘ = incorrect answer and diverges from spec
    +//   ~ = incorrect answer, but matches spec
    +// BROWSERS TESTED: Safari 6.2.0 (Mac OS X 10.8.5); Mobile Safari 7.0.0 (iOS 7.1); Firefox 32.0.0 (Mac OS X 10.8);
    +//    Firefox 33.0.0 (Windows 7); Chrome 38.0.2125 (Mac OS X 10.8.5); Chrome 38.0.2125 (Windows 7); IE 8, 9, 10, 11
    +
    +// html width style smaller than viewport width; body width style smaller than html width style
    +//  NOTE: These tests were conducted when correct result was width of border. That has been changed
    +//  to "width of viewport."
    +//    html.getBoundingClientRect().width
    +//      ✘ IE 8, 9, 10: width of viewport
    +//      ✔ Safari, Mobile Safari, Chrome, Firefox, IE 11: width of html, including border
    +//    html.clientWidth
    +//      ~ Safari, Mobile Safari, Chrome, Firefox, IE 8, 9, 10, 11: width of viewport
    +//    html.offsetWidth
    +//      ✘ IE 8, 9, 10: width of viewport
    +//      ✔ Safari, Mobile Safari, Chrome, Firefox, IE 11: width of html, including border
    +//    html.scrollWidth
    +//      ✘ IE 8, 9, 10, 11, Firefox: width of viewport
    +//      ~ Safari, Mobile Safari, Chrome: width of html, excluding border
    +//    body.getBoundingClientRect().width
    +//      ~ Safari, Mobile Safari, Chrome, Firefox, IE 8, 9, 10, 11: width of body, including border
    +//    body.clientWidth
    +//      ~ Safari, Mobile Safari, Chrome, Firefox, IE 8, 9, 10, 11: width of body, excluding border
    +//    body.offsetWidth
    +//      ~ Safari, Mobile Safari, Chrome, Firefox, IE 8, 9, 10, 11: width of body, including border
    +//    body.scrollWidth
    +//      ✘ Safari, Mobile Safari, Chrome: width of viewport
    +//      ~ Firefox, IE 8, 9, 10, 11: width of body, excluding border
    +
    +// element width style wider than viewport; body and html width styles at default
    +// BROWSER BEHAVIOR: html and body border extend to width of viewport and not beyond (except on Mobile Safari)
    +// Correct result is element width + body border-left + html border-left (except on Mobile Safari)
    +// Mobile Safari uses a layout viewport, so it's expected to include body border-right and html border-right.
    +//    html.getBoundingClientRect().width
    +//      ✔ Mobile Safari: element width + body border + html border
    +//      ~ Safari, Chrome, Firefox, IE 8, 9, 10, 11: viewport width
    +//    html.clientWidth
    +//      ✔ Mobile Safari: element width + body border + html border
    +//      ~ Safari, Chrome, Firefox, IE 8, 9, 10, 11: viewport width
    +//    html.offsetWidth
    +//      ✔ Mobile Safari: element width + body border + html border
    +//      ~ Safari, Chrome, Firefox, IE 8, 9, 10, 11: viewport width
    +//    html.scrollWidth
    +//      ✔ Mobile Safari: element width + body border + html border
    +//      ✘ Safari, Chrome: element width + body border-left (BUT NOT html border-left)
    +//      ✔ Firefox, IE 8, 9, 10, 11: element width + body border-left + html border-left
    +//    body.getBoundingClientRect().width
    +//      ~ Mobile Safari: element width + body border
    +//      ~ Safari, Chrome, Firefox, IE 8, 9, 10, 11: viewport width - html border
    +//    body.clientWidth
    +//      ~ Mobile Safari: element width
    +//      ~ Safari, Chrome, Firefox, IE 8, 9, 10, 11: viewport width - html border - body border
    +//    body.offsetWidth
    +//      ~ Mobile Safari: element width + body border
    +//      ~ Safari, Chrome, Firefox, IE 8, 9, 10, 11: viewport width - html border
    +//    body.scrollWidth
    +//      ✔ Mobile Safari: element width + body border + html border
    +//      ✔ Safari, Chrome: element width + body border-left + html border-left (matches actual browser)
    +//      ~ Firefox, IE 8, 9, 10, 11: element width
    +
    +// TEST RESULTS: HEIGHT
    +//   ✔ = correct answer
    +//   ✘ = incorrect answer and diverges from spec
    +//   ~ = incorrect answer, but matches spec
    +
    +// html height style smaller than viewport height; body height style smaller than html height style
    +//  NOTE: These tests were conducted when correct result was height of viewport.
    +//    html.clientHeight
    +//      ✔ Safari, Mobile Safari, Chrome, Firefox, IE 8, 9, 10, 11: height of viewport
    +
    +// element height style taller than viewport; body and html width styles at default
    +// BROWSER BEHAVIOR: html and body border enclose entire element
    +// Correct result is element width + body border-top + html border-top + body border-bottom + html border-bottom
    +//    html.clientHeight
    +//      ✔ Mobile Safari: element height + all borders
    +//      ~ Safari, Chrome, Firefox, IE 8, 9, 10, 11: height of viewport
    +//    html.scrollHeight
    +//      ✔ Firefox, IE 8, 9, 10, 11: element height + all borders
    +//      ✘ Safari, Mobile Safari, Chrome: element height + html border-bottom
    +//    body.scrollHeight
    +//      ✔ Safari, Mobile Safari, Chrome: element height + all borders
    +//      ~ Firefox, IE 8, 9, 10, 11: element height (body height - body border)
    +function pageSize(document) {
    +	var html = document.documentElement;
    +	var body = document.body;
    +
    +// BEST WIDTH ANSWER SO FAR (ASSUMING VIEWPORT IS MINIMUM ANSWER):
    +	var width = Math.max(body.scrollWidth, html.scrollWidth);
    +
    +// BEST HEIGHT ANSWER SO FAR (ASSUMING VIEWPORT IS MINIMUM ANSWER):
    +	var height = Math.max(body.scrollHeight, html.scrollHeight);
    +
    +	return {
    +		width: width,
    +		height: height
    +	};
    +}
    +
    +},{"../q_frame.js":19,"../util/ensure.js":23,"../values/position.js":27,"./position_descriptor.js":11}],11:[function(require,module,exports){
    +// Copyright (c) 2014-2017 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +/*eslint new-cap: "off" */
    +"use strict";
    +
    +var ensure = require("../util/ensure.js");
    +var oop = require("../util/oop.js");
    +var Descriptor = require("./descriptor.js");
    +var Position = require("../values/position.js");
    +
    +// break circular dependencies
    +function RelativePosition() {
    +	return require("./relative_position.js");
    +}
    +function AbsolutePosition() {
    +	return require("./absolute_position.js");
    +}
    +function GenericSize() {
    +	return require("./generic_size.js");
    +}
    +
    +var X_DIMENSION = "x";
    +var Y_DIMENSION = "y";
    +
    +var Me = module.exports = function PositionDescriptor(dimension) {
    +	ensure.signature(arguments, [ String ]);
    +	ensure.unreachable("PositionDescriptor is abstract and should not be constructed directly.");
    +};
    +Descriptor.extend(Me);
    +Me.extend = oop.extendFn(Me);
    +
    +Me.x = factoryFn(X_DIMENSION);
    +Me.y = factoryFn(Y_DIMENSION);
    +
    +Me.prototype.plus = function plus(amount) {
    +	if (this._pdbc.dimension === X_DIMENSION) return RelativePosition().right(this, amount);
    +	else return RelativePosition().down(this, amount);
    +};
    +
    +Me.prototype.minus = function minus(amount) {
    +	if (this._pdbc.dimension === X_DIMENSION) return RelativePosition().left(this, amount);
    +	else return RelativePosition().up(this, amount);
    +};
    +
    +Me.prototype.to = function to(position) {
    +	ensure.signature(arguments, [[ Me, Number ]]);
    +	if (typeof position === "number") {
    +		if (this._pdbc.dimension === X_DIMENSION) position = AbsolutePosition().x(position);
    +		else position = AbsolutePosition().y(position);
    +	}
    +	if (this._pdbc.dimension !== position._pdbc.dimension) {
    +		throw new Error("Can only calculate distance between two X coordinates or two Y coordinates");
    +	}
    +
    +	return GenericSize().create(this, position, "distance from " + this + " to " + position);
    +};
    +
    +Me.prototype.convert = function convert(arg, type) {
    +	switch (type) {
    +		case "number": return this._pdbc.dimension === X_DIMENSION ? Position.x(arg) : Position.y(arg);
    +		case "string":
    +			if (arg === "none") return this._pdbc.dimension === X_DIMENSION ? Position.noX() : Position.noY();
    +			else return undefined;
    +			break;
    +		default: return undefined;
    +	}
    +};
    +
    +function factoryFn(dimension) {
    +	return function factory(self) {
    +		// _pdbc: "PositionDescriptor base class." An attempt to prevent name conflicts.
    +		self._pdbc = { dimension: dimension };
    +	};
    +}
    +
    +},{"../util/ensure.js":23,"../util/oop.js":24,"../values/position.js":27,"./absolute_position.js":3,"./descriptor.js":5,"./generic_size.js":9,"./relative_position.js":12}],12:[function(require,module,exports){
    +// Copyright (c) 2014 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +"use strict";
    +
    +var ensure = require("../util/ensure.js");
    +var Descriptor = require("./descriptor.js");
    +var PositionDescriptor = require("./position_descriptor.js");
    +var Value = require("../values/value.js");
    +var Size = require("../values/size.js");
    +
    +var X_DIMENSION = "x";
    +var Y_DIMENSION = "y";
    +var PLUS = 1;
    +var MINUS = -1;
    +
    +var Me = module.exports = function RelativePosition(dimension, direction, relativeTo, relativeAmount) {
    +	ensure.signature(arguments, [ String, Number, Descriptor, [Number, Descriptor, Value] ]);
    +
    +	if (dimension === X_DIMENSION) PositionDescriptor.x(this);
    +	else if (dimension === Y_DIMENSION) PositionDescriptor.y(this);
    +	else ensure.unreachable("Unknown dimension: " + dimension);
    +
    +	this._dimension = dimension;
    +	this._direction = direction;
    +	this._relativeTo = relativeTo;
    +
    +	if (typeof relativeAmount === "number") {
    +		if (relativeAmount < 0) this._direction *= -1;
    +		this._amount = Size.create(Math.abs(relativeAmount));
    +	}
    +	else {
    +		this._amount = relativeAmount;
    +	}
    +};
    +PositionDescriptor.extend(Me);
    +
    +Me.right = createFn(X_DIMENSION, PLUS);
    +Me.down = createFn(Y_DIMENSION, PLUS);
    +Me.left = createFn(X_DIMENSION, MINUS);
    +Me.up = createFn(Y_DIMENSION, MINUS);
    +
    +function createFn(dimension, direction) {
    +	return function create(relativeTo, relativeAmount) {
    +		return new Me(dimension, direction, relativeTo, relativeAmount);
    +	};
    +}
    +
    +Me.prototype.value = function value() {
    +	ensure.signature(arguments, []);
    +
    +	var baseValue = this._relativeTo.value();
    +	var relativeValue = this._amount.value();
    +
    +	if (this._direction === PLUS) return baseValue.plus(relativeValue);
    +	else return baseValue.minus(relativeValue);
    +};
    +
    +Me.prototype.toString = function toString() {
    +	ensure.signature(arguments, []);
    +
    +	var base = this._relativeTo.toString();
    +	if (this._amount.equals(Size.create(0))) return base;
    +
    +	var relation = this._amount.toString();
    +	if (this._dimension === X_DIMENSION) relation += (this._direction === PLUS) ? " to right of " : " to left of ";
    +	else relation += (this._direction === PLUS) ? " below " : " above ";
    +
    +	return relation + base;
    +};
    +
    +},{"../util/ensure.js":23,"../values/size.js":29,"../values/value.js":30,"./descriptor.js":5,"./position_descriptor.js":11}],13:[function(require,module,exports){
    +// Copyright (c) 2014 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +"use strict";
    +
    +var ensure = require("../util/ensure.js");
    +var Size = require("../values/size.js");
    +var Descriptor = require("./descriptor.js");
    +var SizeDescriptor = require("./size_descriptor.js");
    +var Value = require("../values/value.js");
    +var SizeMultiple = require("./size_multiple.js");
    +
    +var PLUS = 1;
    +var MINUS = -1;
    +
    +var Me = module.exports = function RelativeSize(direction, relativeTo, amount) {
    +	ensure.signature(arguments, [ Number, Descriptor, [Number, Descriptor, Value] ]);
    +
    +	this._direction = direction;
    +	this._relativeTo = relativeTo;
    +
    +	if (typeof amount === "number") {
    +		this._amount = Size.create(Math.abs(amount));
    +		if (amount < 0) this._direction *= -1;
    +	}
    +	else {
    +		this._amount = amount;
    +	}
    +};
    +SizeDescriptor.extend(Me);
    +
    +Me.larger = factoryFn(PLUS);
    +Me.smaller = factoryFn(MINUS);
    +
    +Me.prototype.value = function value() {
    +	ensure.signature(arguments, []);
    +
    +	var baseValue = this._relativeTo.value();
    +	var relativeValue = this._amount.value();
    +
    +	if (this._direction === PLUS) return baseValue.plus(relativeValue);
    +	else return baseValue.minus(relativeValue);
    +};
    +
    +Me.prototype.toString = function toString() {
    +	ensure.signature(arguments, []);
    +
    +	var base = this._relativeTo.toString();
    +	if (this._amount.equals(Size.create(0))) return base;
    +
    +	var relation = this._amount.toString();
    +	if (this._direction === PLUS) relation += " larger than ";
    +	else relation += " smaller than ";
    +
    +	return relation + base;
    +};
    +
    +function factoryFn(direction) {
    +	return function factory(relativeTo, amount) {
    +		return new Me(direction, relativeTo, amount);
    +	};
    +}
    +},{"../util/ensure.js":23,"../values/size.js":29,"../values/value.js":30,"./descriptor.js":5,"./size_descriptor.js":14,"./size_multiple.js":15}],14:[function(require,module,exports){
    +// Copyright (c) 2014-2017 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +/*eslint new-cap: "off" */
    +"use strict";
    +
    +var ensure = require("../util/ensure.js");
    +var oop = require("../util/oop.js");
    +var Descriptor = require("./descriptor.js");
    +var Size = require("../values/size.js");
    +
    +function RelativeSize() {
    +	return require("./relative_size.js");   	// break circular dependency
    +}
    +
    +function SizeMultiple() {
    +	return require("./size_multiple.js");   	// break circular dependency
    +}
    +
    +var Me = module.exports = function SizeDescriptor() {
    +	ensure.unreachable("SizeDescriptor is abstract and should not be constructed directly.");
    +};
    +Descriptor.extend(Me);
    +Me.extend = oop.extendFn(Me);
    +
    +Me.prototype.plus = function plus(amount) {
    +	return RelativeSize().larger(this, amount);
    +};
    +
    +Me.prototype.minus = function minus(amount) {
    +	return RelativeSize().smaller(this, amount);
    +};
    +
    +Me.prototype.times = function times(amount) {
    +	return SizeMultiple().create(this, amount);
    +};
    +
    +Me.prototype.convert = function convert(arg, type) {
    +	switch(type) {
    +		case "number": return Size.create(arg);
    +		case "string": return arg === "none" ? Size.createNone() : undefined;
    +		default: return undefined;
    +	}
    +};
    +
    +},{"../util/ensure.js":23,"../util/oop.js":24,"../values/size.js":29,"./descriptor.js":5,"./relative_size.js":13,"./size_multiple.js":15}],15:[function(require,module,exports){
    +// Copyright (c) 2014 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +"use strict";
    +
    +var ensure = require("../util/ensure.js");
    +var Descriptor = require("./descriptor.js");
    +var SizeDescriptor = require("./size_descriptor.js");
    +var Size = require("../values/size.js");
    +
    +var Me = module.exports = function SizeMultiple(relativeTo, multiple) {
    +	ensure.signature(arguments, [ Descriptor, Number ]);
    +
    +	this._relativeTo = relativeTo;
    +	this._multiple = multiple;
    +};
    +SizeDescriptor.extend(Me);
    +
    +Me.create = function create(relativeTo, multiple) {
    +	return new Me(relativeTo, multiple);
    +};
    +
    +Me.prototype.value = function value() {
    +	ensure.signature(arguments, []);
    +
    +	return this._relativeTo.value().times(this._multiple);
    +};
    +
    +Me.prototype.toString = function toString() {
    +	ensure.signature(arguments, []);
    +
    +	var multiple = this._multiple;
    +	var base = this._relativeTo.toString();
    +	if (multiple === 1) return base;
    +
    +	var desc;
    +	switch(multiple) {
    +		case 1/2: desc = "half of "; break;
    +		case 1/3: desc = "one-third of "; break;
    +		case 2/3: desc = "two-thirds of "; break;
    +		case 1/4: desc = "one-quarter of "; break;
    +		case 3/4: desc = "three-quarters of "; break;
    +		case 1/5: desc = "one-fifth of "; break;
    +		case 2/5: desc = "two-fifths of "; break;
    +		case 3/5: desc = "three-fifths of "; break;
    +		case 4/5: desc = "four-fifths of "; break;
    +		case 1/6: desc = "one-sixth of "; break;
    +		case 5/6: desc = "five-sixths of "; break;
    +		case 1/8: desc = "one-eighth of "; break;
    +		case 3/8: desc = "three-eighths of "; break;
    +		case 5/8: desc = "five-eighths of "; break;
    +		case 7/8: desc = "seven-eighths of "; break;
    +		default:
    +			if (multiple > 1) desc = multiple + " times ";
    +			else desc = (multiple * 100) + "% of ";
    +	}
    +
    +	return desc + base;
    +};
    +},{"../util/ensure.js":23,"../values/size.js":29,"./descriptor.js":5,"./size_descriptor.js":14}],16:[function(require,module,exports){
    +// Copyright (c) 2014 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +"use strict";
    +
    +var ensure = require("../util/ensure.js");
    +var PositionDescriptor = require("./position_descriptor.js");
    +var Position = require("../values/position.js");
    +
    +var TOP = "top";
    +var RIGHT = "right";
    +var BOTTOM = "bottom";
    +var LEFT = "left";
    +
    +var Me = module.exports = function ViewportEdge(position, frame) {
    +	var QFrame = require("../q_frame.js");    // break circular dependency
    +	ensure.signature(arguments, [ String, QFrame ]);
    +
    +	if (position === LEFT || position === RIGHT) PositionDescriptor.x(this);
    +	else if (position === TOP || position === BOTTOM) PositionDescriptor.y(this);
    +	else ensure.unreachable("Unknown position: " + position);
    +
    +	this._position = position;
    +	this._frame = frame;
    +};
    +PositionDescriptor.extend(Me);
    +
    +Me.top = factoryFn(TOP);
    +Me.right = factoryFn(RIGHT);
    +Me.bottom = factoryFn(BOTTOM);
    +Me.left = factoryFn(LEFT);
    +
    +Me.prototype.value = function() {
    +	ensure.signature(arguments, []);
    +
    +	var scroll = this._frame.getRawScrollPosition();
    +	var x = Position.x(scroll.x);
    +	var y = Position.y(scroll.y);
    +
    +	var size = viewportSize(this._frame.get("html").toDomElement());
    +
    +	switch(this._position) {
    +		case TOP: return y;
    +		case RIGHT: return x.plus(Position.x(size.width));
    +		case BOTTOM: return y.plus(Position.y(size.height));
    +		case LEFT: return x;
    +
    +		default: ensure.unreachable();
    +	}
    +};
    +
    +Me.prototype.toString = function() {
    +	ensure.signature(arguments, []);
    +	return this._position + " edge of viewport";
    +};
    +
    +function factoryFn(position) {
    +	return function factory(frame) {
    +		return new Me(position, frame);
    +	};
    +}
    +
    +
    +
    +// USEFUL READING: http://www.quirksmode.org/mobile/viewports.html
    +// and http://www.quirksmode.org/mobile/viewports2.html
    +
    +// BROWSERS TESTED: Safari 6.2.0 (Mac OS X 10.8.5); Mobile Safari 7.0.0 (iOS 7.1); Firefox 32.0.0 (Mac OS X 10.8);
    +//    Firefox 33.0.0 (Windows 7); Chrome 38.0.2125 (Mac OS X 10.8.5); Chrome 38.0.2125 (Windows 7); IE 8, 9, 10, 11
    +
    +// Width techniques I've tried: (Note: results are different in quirks mode)
    +// body.clientWidth
    +// body.offsetWidth
    +// body.getBoundingClientRect().width
    +//    fails on all browsers: doesn't include margin
    +// body.scrollWidth
    +//    works on Safari, Mobile Safari, Chrome
    +//    fails on Firefox, IE 8, 9, 10, 11: doesn't include margin
    +// html.getBoundingClientRect().width
    +// html.offsetWidth
    +//    works on Safari, Mobile Safari, Chrome, Firefox
    +//    fails on IE 8, 9, 10: includes scrollbar
    +// html.scrollWidth
    +// html.clientWidth
    +//    WORKS! Safari, Mobile Safari, Chrome, Firefox, IE 8, 9, 10, 11
    +
    +// Height techniques I've tried: (Note that results are different in quirks mode)
    +// body.clientHeight
    +// body.offsetHeight
    +// body.getBoundingClientRect().height
    +//    fails on all browsers: only includes height of content
    +// body getComputedStyle("height")
    +//    fails on all browsers: IE8 returns "auto"; others only include height of content
    +// body.scrollHeight
    +//    works on Safari, Mobile Safari, Chrome;
    +//    fails on Firefox, IE 8, 9, 10, 11: only includes height of content
    +// html.getBoundingClientRect().height
    +// html.offsetHeight
    +//    works on IE 8, 9, 10
    +//    fails on IE 11, Safari, Mobile Safari, Chrome: only includes height of content
    +// html.scrollHeight
    +//    works on Firefox, IE 8, 9, 10, 11
    +//    fails on Safari, Mobile Safari, Chrome: only includes height of content
    +// html.clientHeight
    +//    WORKS! Safari, Mobile Safari, Chrome, Firefox, IE 8, 9, 10, 11
    +function viewportSize(htmlElement) {
    +	return {
    +		width: htmlElement.clientWidth,
    +		height: htmlElement.clientHeight
    +	};
    +}
    +
    +},{"../q_frame.js":19,"../util/ensure.js":23,"../values/position.js":27,"./position_descriptor.js":11}],17:[function(require,module,exports){
    +// Copyright (c) 2014-2017 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +"use strict";
    +
    +var ensure = require("./util/ensure.js");
    +var shim = require("./util/shim.js");
    +var camelcase = require("../vendor/camelcase-1.0.1-modified.js");
    +var ElementRendered = require("./descriptors/element_rendered.js");
    +var ElementEdge = require("./descriptors/element_edge.js");
    +var Center = require("./descriptors/center.js");
    +var GenericSize = require("./descriptors/generic_size.js");
    +var Assertable = require("./assertable.js");
    +
    +var Me = module.exports = function QElement(domElement, frame, nickname) {
    +	var QFrame = require("./q_frame.js");    // break circular dependency
    +	ensure.signature(arguments, [Object, QFrame, String]);
    +
    +	this._domElement = domElement;
    +	this._nickname = nickname;
    +
    +	this.frame = frame;
    +
    +	// properties
    +	this.rendered = ElementRendered.create(this);
    +
    +	this.top = ElementEdge.top(this);
    +	this.right = ElementEdge.right(this);
    +	this.bottom = ElementEdge.bottom(this);
    +	this.left = ElementEdge.left(this);
    +
    +	this.center = Center.x(this.left, this.right, "center of " + this);
    +	this.middle = Center.y(this.top, this.bottom, "middle of " + this);
    +
    +	this.width = GenericSize.create(this.left, this.right, "width of " + this);
    +	this.height = GenericSize.create(this.top, this.bottom, "height of " + this);
    +};
    +Assertable.extend(Me);
    +
    +Me.prototype.getRawStyle = function(styleName) {
    +	ensure.signature(arguments, [String]);
    +
    +	var styles;
    +	var result;
    +
    +	// WORKAROUND IE 8: no getComputedStyle()
    +	if (window.getComputedStyle) {
    +		// WORKAROUND Firefox 40.0.3: must use frame's contentWindow (ref https://bugzilla.mozilla.org/show_bug.cgi?id=1204062)
    +		styles = this.frame.toDomElement().contentWindow.getComputedStyle(this._domElement);
    +		result = styles.getPropertyValue(styleName);
    +	}
    +	else {
    +		styles = this._domElement.currentStyle;
    +		result = styles[camelcase(styleName)];
    +	}
    +	if (result === null || result === undefined) result = "";
    +	return result;
    +};
    +
    +Me.prototype.getRawPosition = function() {
    +	ensure.signature(arguments, []);
    +
    +	// WORKAROUND IE 8: No TextRectangle.height or .width
    +	var rect = this._domElement.getBoundingClientRect();
    +	return {
    +		left: rect.left,
    +		right: rect.right,
    +		width: rect.width !== undefined ? rect.width : rect.right - rect.left,
    +
    +		top: rect.top,
    +		bottom: rect.bottom,
    +		height: rect.height !== undefined ? rect.height : rect.bottom - rect.top
    +	};
    +};
    +
    +Me.prototype.calculatePixelValue = function(sizeString) {
    +	var dom = this._domElement;
    +	if (dom.runtimeStyle !== undefined) return ie8Workaround();
    +
    +	var result;
    +	var style = dom.style;
    +	var oldPosition = style.position;
    +	var oldLeft = style.left;
    +
    +	style.position = "absolute";
    +	style.left = sizeString;
    +	result = parseFloat(this.getRawStyle("left"));    // parseInt strips of 'px' value
    +
    +	style.position = oldPosition;
    +	style.left = oldLeft;
    +	return result;
    +
    +	// WORKAROUND IE 8: getRawStyle() doesn't normalize values to px
    +	// Based on code by Dean Edwards: http://disq.us/p/myl99x
    +	function ie8Workaround() {
    +		var runtimeStyleLeft = dom.runtimeStyle.left;
    +		var styleLeft = dom.style.left;
    +
    +		dom.runtimeStyle.left = dom.currentStyle.left;
    +		dom.style.left = sizeString;
    +		result = dom.style.pixelLeft;
    +
    +		dom.runtimeStyle.left = runtimeStyleLeft;
    +		dom.style.left = styleLeft;
    +		return result;
    +	}
    +};
    +
    +Me.prototype.parent = function(nickname) {
    +	ensure.signature(arguments, [[ undefined, String ]]);
    +	if (nickname === undefined) nickname = "parent of " + this._nickname;
    +
    +	if (this.equals(this.frame.body())) return null;
    +
    +	var parent = this._domElement.parentElement;
    +	if (parent === null) return null;
    +
    +	return new Me(parent, this.frame, nickname);
    +};
    +
    +Me.prototype.add = function(html, nickname) {
    +	ensure.signature(arguments, [String, [undefined, String]]);
    +	if (nickname === undefined) nickname = html + " in " + this._nickname;
    +
    +	var tempElement = document.createElement("div");
    +	tempElement.innerHTML = shim.String.trim(html);
    +	ensure.that(
    +		tempElement.childNodes.length === 1,
    +		"Expected one element, but got " + tempElement.childNodes.length + " (" + html + ")"
    +	);
    +
    +	var insertedElement = tempElement.childNodes[0];
    +	this._domElement.appendChild(insertedElement);
    +	return new Me(insertedElement, this.frame, nickname);
    +};
    +
    +Me.prototype.remove = function() {
    +	ensure.signature(arguments, []);
    +	shim.Element.remove(this._domElement);
    +};
    +
    +Me.prototype.toDomElement = function() {
    +	ensure.signature(arguments, []);
    +	return this._domElement;
    +};
    +
    +Me.prototype.toString = function() {
    +	ensure.signature(arguments, []);
    +	return "'" + this._nickname + "'";
    +};
    +
    +Me.prototype.equals = function(that) {
    +	ensure.signature(arguments, [Me]);
    +	return this._domElement === that._domElement;
    +};
    +
    +},{"../vendor/camelcase-1.0.1-modified.js":32,"./assertable.js":2,"./descriptors/center.js":4,"./descriptors/element_edge.js":6,"./descriptors/element_rendered.js":7,"./descriptors/generic_size.js":9,"./q_frame.js":19,"./util/ensure.js":23,"./util/shim.js":25}],18:[function(require,module,exports){
    +// Copyright (c) 2014 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +"use strict";
    +
    +var ensure = require("./util/ensure.js");
    +var QElement = require("./q_element.js");
    +
    +var Me = module.exports = function QElementList(nodeList, frame, nickname) {
    +	var QFrame = require("./q_frame.js");    // break circular dependency
    +	ensure.signature(arguments, [ Object, QFrame, String ]);
    +
    +	this._nodeList = nodeList;
    +	this._frame = frame;
    +	this._nickname = nickname;
    +};
    +
    +Me.prototype.length = function length() {
    +	ensure.signature(arguments, []);
    +
    +	return this._nodeList.length;
    +};
    +
    +Me.prototype.at = function at(requestedIndex, nickname) {
    +	ensure.signature(arguments, [ Number, [undefined, String] ]);
    +
    +	var index = requestedIndex;
    +	var length = this.length();
    +	if (index < 0) index = length + index;
    +
    +	ensure.that(
    +		index >= 0 && index < length,
    +		"'" + this._nickname + "'[" + requestedIndex + "] is out of bounds; list length is " + length
    +	);
    +	var element = this._nodeList[index];
    +
    +	if (nickname === undefined) nickname = this._nickname + "[" + index + "]";
    +	return new QElement(element, this._frame, nickname);
    +};
    +
    +Me.prototype.toString = function toString() {
    +	ensure.signature(arguments, []);
    +
    +	return "'" + this._nickname + "' list";
    +};
    +},{"./q_element.js":17,"./q_frame.js":19,"./util/ensure.js":23}],19:[function(require,module,exports){
    +// Copyright (c) 2014-2017 Titanium I.T. LLC. All rights reserved. For license, see "README" or "LICENSE" file.
    +"use strict";
    +
    +var ensure = require("./util/ensure.js");
    +var shim = require("./util/shim.js");
    +var quixote = require("./quixote.js");
    +var QElement = require("./q_element.js");
    +var QElementList = require("./q_element_list.js");
    +var QViewport = require("./q_viewport.js");
    +var QPage = require("./q_page.js");
    +var async = require("../vendor/async-1.4.2.js");
    +
    +var Me = module.exports = function QFrame() {
    +	ensure.signature(arguments, []);
    +
    +	this._domElement = null;
    +	this._loaded = false;
    +	this._removed = false;
    +};
    +
    +function loaded(self, width, height, src, stylesheets) {
    +	self._loaded = true;
    +	self._document = self._domElement.contentDocument;
    +	self._originalBody = self._document.body.innerHTML;
    +	self._originalWidth = width;
    +	self._originalHeight = height;
    +	self._originalSrc = src;
    +	self._originalStylesheets = stylesheets;
    +}
    +
    +Me.create = function create(parentElement, options, callback) {
    +	ensure.signature(arguments, [Object, [Object, Function], [undefined, Function]]);
    +	if (callback === undefined) {
    +		callback = options;
    +		options = {};
    +	}
    +	var width = options.width || 2000;
    +	var height = options.height || 2000;
    +	var src = options.src;
    +	var stylesheets = options.stylesheet || [];
    +	var css = options.css;
    +	if (!shim.Array.isArray(stylesheets)) stylesheets = [ stylesheets ];
    +
    +	var frame = new Me();
    +	checkUrls(src, stylesheets, function(err) {
    +		if (err) return callback(err);
    +
    +		var iframe = insertIframe(parentElement, width, height);
    +		shim.EventTarget.addEventListener(iframe, "load", onFrameLoad);
    +		setIframeContent(iframe, src);
    +
    +		frame._domElement = iframe;
    +		setFrameLoadCallback(frame, callback);
    +	});
    +	return frame;
    +
    +	function onFrameLoad() {
    +		// WORKAROUND Mobile Safari 7.0.0, Safari 6.2.0, Chrome 38.0.2125: frame is loaded synchronously
    +		// We force it to be asynchronous here
    +		setTimeout(function() {
    +			loaded(frame, width, height, src, stylesheets);
    +			loadStylesheets(frame, stylesheets, function() {
    +				if (css) loadRawCSS(frame, options.css);
    +				frame._frameLoadCallback(null, frame);
    +			});
    +		}, 0);
    +	}
    +};
    +
    +function setFrameLoadCallback(frame, callback) {
    +	frame._frameLoadCallback = callback;
    +}
    +
    +function checkUrls(src, stylesheets, callback) {
    +	urlExists(src, function(err, srcExists) {
    +		if (err) return callback(err);
    +		if (!srcExists) return callback(error("src", src));
    +
    +		async.each(stylesheets, checkStylesheet, callback);
    +	});
    +
    +	function checkStylesheet(url, callback2) {
    +		urlExists(url, function(err, stylesheetExists) {
    +			if (err) return callback2(err);
    +
    +			if (!stylesheetExists) return callback2(error("stylesheet", url));
    +			else return callback2(null);
    +		});
    +	}
    +
    +	function error(name, url) {
    +		return new Error("404 error while loading " + name + " (" + url + ")");
    +	}
    +}
    +
    +function urlExists(url, callback) {
    +	var STATUS_AVAILABLE = 2;   // WORKAROUND IE 8: non-standard XMLHttpRequest constant names
    +
    +	if (url === undefined) {
    +		return callback(null, true);
    +	}
    +
    +	var http = new XMLHttpRequest();
    +	http.open("HEAD", url);
    +	http.onreadystatechange = function() {  // WORKAROUND IE 8: doesn't support .addEventListener() or .onload
    +		if (http.readyState === STATUS_AVAILABLE) {
    +			return callback(null, http.status !== 404);
    +		}
    +	};
    +	http.onerror = function() {     // onerror handler is not tested
    +		return callback("XMLHttpRequest error while using HTTP HEAD on URL '" + url + "': " + http.statusText);
    +	};
    +	http.send();
    +}
    +
    +function insertIframe(parentElement, width, height) {
    +	var iframe = document.createElement("iframe");
    +	iframe.setAttribute("width", width);
    +	iframe.setAttribute("height", height);
    +	iframe.setAttribute("frameborder", "0");    // WORKAROUND IE 8: don't include frame border in position calcs
    +	parentElement.appendChild(iframe);
    +	return iframe;
    +}
    +
    +function setIframeContent(iframe, src) {
    +	if (src === undefined) {
    +		writeStandardsModeHtml(iframe);
    +	}	else {
    +		setIframeSrc(iframe, src);
    +	}
    +}
    +
    +function setIframeSrc(iframe, src) {
    +	iframe.setAttribute("src", src);
    +}
    +
    +function writeStandardsModeHtml(iframe) {
    +	var standardsMode = "\n";
    +	iframe.contentWindow.document.open();
    +	iframe.contentWindow.document.write(standardsMode);
    +	iframe.contentWindow.document.close();
    +}
    +
    +function loadStylesheets(self, urls, callback) {
    +	async.each(urls, addLinkTag, callback);
    +
    +	function addLinkTag(url, onLinkLoad) {
    +		var link = document.createElement("link");
    +		shim.EventTarget.addEventListener(link, "load", function(event) { onLinkLoad(null); });
    +		link.setAttribute("rel", "stylesheet");
    +		link.setAttribute("type", "text/css");
    +		link.setAttribute("href", url);
    +		shim.Document.head(self._document).appendChild(link);
    +	}
    +}
    +
    +function loadRawCSS(self, css) {
    +	var style = document.createElement("style");
    +	style.setAttribute("type", "text/css");
    +	if (style.styleSheet) {
    +		// WORKAROUND IE 8: Throws 'unknown runtime error' if you set innerHTML on a 
    "); + + var text = frame.add("

    arbitrary text

    "); + frame.add("

    must have two p tags to work

    "); + + // WORKAROUND IE 8: need to force reflow or getting font-size may fail below + // This seems to occur when IE is running in a slow VirtualBox VM. There is no test for this line. + var forceReflow = text.offsetHeight; + + // WORKAROUND Safari 8.0.0: timeout required because font is enlarged asynchronously + setTimeout(function() { + var fontSize = text.getRawStyle("font-size"); + ensure.that(fontSize !== "", "Expected font-size to be a value"); + + // WORKAROUND IE 8: ignores
    "); + + var text = frame.add("

    arbitrary text

    "); + frame.add("

    must have two p tags to work

    "); + + // WORKAROUND IE 8: need to force reflow or getting font-size may fail below + // This seems to occur when IE is running in a slow VirtualBox VM. There is no test for this line. + var forceReflow = text.offsetHeight; + + // WORKAROUND Safari 8.0.0: timeout required because font is enlarged asynchronously + setTimeout(function() { + var fontSize = text.getRawStyle("font-size"); + ensure.that(fontSize !== "", "Expected font-size to be a value"); + + // WORKAROUND IE 8: ignores
    "); - - var text = frame.add("

    arbitrary text

    "); - frame.add("

    must have two p tags to work

    "); - - // WORKAROUND IE 8: need to force reflow or getting font-size may fail below - // This seems to occur when IE is running in a slow VirtualBox VM. There is no test for this line. - var forceReflow = text.offsetHeight; - - // WORKAROUND Safari 8.0.0: timeout required because font is enlarged asynchronously - setTimeout(function() { - var fontSize = text.getRawStyle("font-size"); - ensure.that(fontSize !== "", "Expected font-size to be a value"); - - // WORKAROUND IE 8: ignores
    "); - - var text = frame.add("

    arbitrary text

    "); - frame.add("

    must have two p tags to work

    "); - - // WORKAROUND IE 8: need to force reflow or getting font-size may fail below - // This seems to occur when IE is running in a slow VirtualBox VM. There is no test for this line. - var forceReflow = text.offsetHeight; - - // WORKAROUND Safari 8.0.0: timeout required because font is enlarged asynchronously - setTimeout(function() { - var fontSize = text.getRawStyle("font-size"); - ensure.that(fontSize !== "", "Expected font-size to be a value"); - - // WORKAROUND IE 8: ignores
    "); + + var text = frame.add("

    arbitrary text

    "); + frame.add("

    must have two p tags to work

    "); + + // WORKAROUND IE 8: need to force reflow or getting font-size may fail below + // This seems to occur when IE is running in a slow VirtualBox VM. There is no test for this line. + var forceReflow = text.offsetHeight; + + // WORKAROUND Safari 8.0.0: timeout required because font is enlarged asynchronously + setTimeout(function() { + var fontSize = text.getRawStyle("font-size"); + ensure.that(fontSize !== "", "Expected font-size to be a value"); + + // WORKAROUND IE 8: ignores "); - - var text = frame.add("

    arbitrary text

    "); - frame.add("

    must have two p tags to work

    "); - - // WORKAROUND IE 8: need to force reflow or getting font-size may fail below - // This seems to occur when IE is running in a slow VirtualBox VM. There is no test for this line. - var forceReflow = text.offsetHeight; - - // WORKAROUND Safari 8.0.0: timeout required because font is enlarged asynchronously - setTimeout(function() { - var fontSize = text.getRawStyle("font-size"); - ensure.that(fontSize !== "", "Expected font-size to be a value"); - - // WORKAROUND IE 8: ignores