From d551e004de210d448ff640de9f24b9dc74f62b77 Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Sun, 19 May 2019 21:39:11 -0300 Subject: [PATCH 01/37] Adding chart page and /api route --- assets/static/images/Surf API.png | Bin 0 -> 4106 bytes lib/waves_web/controllers/page_controller.ex | 37 +++++++++++++++++++ lib/waves_web/router.ex | 6 +++ lib/waves_web/templates/layout/app.html.eex | 15 +++----- lib/waves_web/templates/page/index.html.eex | 4 ++ lib/waves_web/views/page_view.ex | 3 ++ mix.exs | 3 +- mix.lock | 3 ++ priv/static/css/app.css | 20 +++++----- 9 files changed, 72 insertions(+), 19 deletions(-) create mode 100644 assets/static/images/Surf API.png create mode 100644 lib/waves_web/controllers/page_controller.ex create mode 100644 lib/waves_web/templates/page/index.html.eex create mode 100644 lib/waves_web/views/page_view.ex diff --git a/assets/static/images/Surf API.png b/assets/static/images/Surf API.png new file mode 100644 index 0000000000000000000000000000000000000000..28a06a86cddf7cac44c13a6740e2b4d9957caab7 GIT binary patch literal 4106 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 ARR910 literal 0 HcmV?d00001 diff --git a/lib/waves_web/controllers/page_controller.ex b/lib/waves_web/controllers/page_controller.ex new file mode 100644 index 0000000..69695ef --- /dev/null +++ b/lib/waves_web/controllers/page_controller.ex @@ -0,0 +1,37 @@ +defmodule WavesWeb.PageController do + use WavesWeb, :controller + + import Ecto.Query + + alias Waves.{Repo, SpotForecast} + + def index(conn, _params) do + forecast = + SpotForecast + |> first + |> Repo.one() + + wave_height = [ + %{ + "name": "Wave Height", + "data": Map.new(List.zip([forecast.datetimes, forecast.wave_height])) + }, + ] + + wind_data = [ + %{ + "name": "Wind Speed", + "data": Map.new(List.zip([forecast.datetimes, forecast.wind_speed])) + }, + %{ + "name": "Wind Gusts", + "data": Map.new(List.zip([forecast.datetimes, forecast.wind_gust])) + }, + ] + + conn + |> assign(:wave_height, wave_height) + |> assign(:wind_data, wind_data) + |> render("index.html") + end +end \ No newline at end of file diff --git a/lib/waves_web/router.ex b/lib/waves_web/router.ex index ab20f63..bf32bec 100644 --- a/lib/waves_web/router.ex +++ b/lib/waves_web/router.ex @@ -14,6 +14,12 @@ defmodule WavesWeb.Router do end scope "/", WavesWeb do + pipe_through :browser + + get "/", PageController, :index + end + + scope "/api", WavesWeb do pipe_through :api get "/", SpotsController, :spots diff --git a/lib/waves_web/templates/layout/app.html.eex b/lib/waves_web/templates/layout/app.html.eex index 410c4ff..ab246b1 100644 --- a/lib/waves_web/templates/layout/app.html.eex +++ b/lib/waves_web/templates/layout/app.html.eex @@ -4,19 +4,16 @@ - Waves ยท Phoenix Framework + Surf API "/> + +
-
- -
diff --git a/lib/waves_web/templates/page/index.html.eex b/lib/waves_web/templates/page/index.html.eex new file mode 100644 index 0000000..f865a12 --- /dev/null +++ b/lib/waves_web/templates/page/index.html.eex @@ -0,0 +1,4 @@ +
+ <%= raw Chartkick.line_chart Poison.encode!(@wave_height) %> + <%= raw Chartkick.line_chart Poison.encode!(@wind_data) %> +
\ No newline at end of file diff --git a/lib/waves_web/views/page_view.ex b/lib/waves_web/views/page_view.ex new file mode 100644 index 0000000..02130b1 --- /dev/null +++ b/lib/waves_web/views/page_view.ex @@ -0,0 +1,3 @@ +defmodule WavesWeb.PageView do + use WavesWeb, :view +end \ No newline at end of file diff --git a/mix.exs b/mix.exs index 3cd0920..4c06084 100644 --- a/mix.exs +++ b/mix.exs @@ -45,7 +45,8 @@ defmodule Waves.MixProject do {:plug_cowboy, "~> 2.0"}, {:httpoison, "~> 1.5.1"}, {:floki, "~> 0.21.0"}, - {:hound, "~> 1.0"} + {:hound, "~> 1.0"}, + {:chartkick, "~>0.3.0"}, ] end diff --git a/mix.lock b/mix.lock index c0d00ca..aec2b8e 100644 --- a/mix.lock +++ b/mix.lock @@ -1,5 +1,6 @@ %{ "certifi": {:hex, :certifi, "2.5.1", "867ce347f7c7d78563450a18a6a28a8090331e77fa02380b4a21962a65d36ee5", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm"}, + "chartkick": {:hex, :chartkick, "0.3.0", "36eea5a7cc069c341baacd965fc8f17a250fa92a1f1256dcbb8e207227703f0f", [:mix], [{:poison, "~> 3.0", [hex: :poison, repo: "hexpm", optional: false]}, {:uuid, "~> 1.1", [hex: :uuid, repo: "hexpm", optional: false]}], "hexpm"}, "connection": {:hex, :connection, "1.0.4", "a1cae72211f0eef17705aaededacac3eb30e6625b04a6117c1b2db6ace7d5976", [:mix], [], "hexpm"}, "cowboy": {:hex, :cowboy, "2.6.3", "99aa50e94e685557cad82e704457336a453d4abcb77839ad22dbe71f311fcc06", [:rebar3], [{:cowlib, "~> 2.7.3", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.7.1", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm"}, "cowlib": {:hex, :cowlib, "2.7.3", "a7ffcd0917e6d50b4d5fb28e9e2085a0ceb3c97dea310505f7460ff5ed764ce9", [:rebar3], [], "hexpm"}, @@ -29,9 +30,11 @@ "plug": {:hex, :plug, "1.8.0", "9d2685cb007fe5e28ed9ac27af2815bc262b7817a00929ac10f56f169f43b977", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm"}, "plug_cowboy": {:hex, :plug_cowboy, "2.0.2", "6055f16868cc4882b24b6e1d63d2bada94fb4978413377a3b32ac16c18dffba2", [:mix], [{:cowboy, "~> 2.5", [hex: :cowboy, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, "plug_crypto": {:hex, :plug_crypto, "1.0.0", "18e49317d3fa343f24620ed22795ec29d4a5e602d52d1513ccea0b07d8ea7d4d", [:mix], [], "hexpm"}, + "poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm"}, "postgrex": {:hex, :postgrex, "0.14.2", "6680591bbce28d92f043249205e8b01b36cab9ef2a7911abc43649242e1a3b78", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.0", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, "ranch": {:hex, :ranch, "1.7.1", "6b1fab51b49196860b733a49c07604465a47bdb78aa10c1c16a3d199f7f8c881", [:rebar3], [], "hexpm"}, "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.4", "f0eafff810d2041e93f915ef59899c923f4568f4585904d010387ed74988e77b", [:make, :mix, :rebar3], [], "hexpm"}, "telemetry": {:hex, :telemetry, "0.4.0", "8339bee3fa8b91cb84d14c2935f8ecf399ccd87301ad6da6b71c09553834b2ab", [:rebar3], [], "hexpm"}, "unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm"}, + "uuid": {:hex, :uuid, "1.1.8", "e22fc04499de0de3ed1116b770c7737779f226ceefa0badb3592e64d5cfb4eb9", [:mix], [], "hexpm"}, } diff --git a/priv/static/css/app.css b/priv/static/css/app.css index c43fd1f..84cd4fe 100644 --- a/priv/static/css/app.css +++ b/priv/static/css/app.css @@ -23,6 +23,9 @@ h6{font-size: 1.4rem; letter-spacing: 0; line-height: 1.2} position: relative; width: 100% } +.center { + justify-content: center; +} select { width: auto; } @@ -61,8 +64,8 @@ select { margin: -1rem 0 2rem; } -/* Phoenix promo and logo */ -.phx-hero { +/* Chart section */ +.charts { text-align: center; border-bottom: 1px solid #e3e3e3; background: #eee; @@ -72,15 +75,17 @@ select { font-weight: 200; font-size: 120%; } -.phx-hero p { +.charts p { margin: 0; } -.phx-logo { + +/* Logo */ +.surf-api-logo { min-width: 300px; margin: 1rem; display: block; } -.phx-logo img { +.surf-api-logo img { width: auto; display: block; } @@ -127,11 +132,8 @@ header nav a { header nav ul { margin: 1rem; } - .phx-logo { + .surf-api-logo { flex-basis: 527px; margin: 2rem 1rem; } } - -/* This file is for your main application css. */ - From ecb35e1093100fdbccefad922609e61f090ce620 Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Sun, 19 May 2019 21:57:50 -0300 Subject: [PATCH 02/37] Fixing tests --- test/waves_web/controllers/page_controller_test.exs | 8 ++++++++ test/waves_web/controllers/spots_controller_test.exs | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 test/waves_web/controllers/page_controller_test.exs diff --git a/test/waves_web/controllers/page_controller_test.exs b/test/waves_web/controllers/page_controller_test.exs new file mode 100644 index 0000000..a6108a4 --- /dev/null +++ b/test/waves_web/controllers/page_controller_test.exs @@ -0,0 +1,8 @@ +defmodule WavesWeb.PageControllerTest do + use WavesWeb.ConnCase + + test "GET /", %{conn: conn} do + conn = get(conn, "/") + assert html_response(conn, 200) + end +end diff --git a/test/waves_web/controllers/spots_controller_test.exs b/test/waves_web/controllers/spots_controller_test.exs index d52e3a4..7683e3b 100644 --- a/test/waves_web/controllers/spots_controller_test.exs +++ b/test/waves_web/controllers/spots_controller_test.exs @@ -1,8 +1,8 @@ defmodule WavesWeb.SpotsControllerTest do use WavesWeb.ConnCase - test "GET /", %{conn: conn} do - conn = get(conn, "/") + test "GET /api", %{conn: conn} do + conn = get(conn, "/api") body = json_response(conn, 200) assert Enum.member?(Map.keys(body), "spots") end From 8c96cc9e569d2b70d0f5cffbafa4c124e726aef1 Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Sun, 19 May 2019 22:16:19 -0300 Subject: [PATCH 03/37] Fixing PageController --- lib/waves_web/controllers/page_controller.ex | 42 ++++++++++++-------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/lib/waves_web/controllers/page_controller.ex b/lib/waves_web/controllers/page_controller.ex index 69695ef..53e37c5 100644 --- a/lib/waves_web/controllers/page_controller.ex +++ b/lib/waves_web/controllers/page_controller.ex @@ -11,23 +11,33 @@ defmodule WavesWeb.PageController do |> first |> Repo.one() - wave_height = [ - %{ - "name": "Wave Height", - "data": Map.new(List.zip([forecast.datetimes, forecast.wave_height])) - }, - ] + wave_height = + case forecast do + nil -> [] + _ -> + [ + %{ + "name": "Wave Height", + "data": Map.new(List.zip([forecast.datetimes, forecast.wave_height])) + }, + ] + end - wind_data = [ - %{ - "name": "Wind Speed", - "data": Map.new(List.zip([forecast.datetimes, forecast.wind_speed])) - }, - %{ - "name": "Wind Gusts", - "data": Map.new(List.zip([forecast.datetimes, forecast.wind_gust])) - }, - ] + wind_data = + case forecast do + nil -> [] + _ -> + [ + %{ + "name": "Wind Speed", + "data": Map.new(List.zip([forecast.datetimes, forecast.wind_speed])) + }, + %{ + "name": "Wind Gusts", + "data": Map.new(List.zip([forecast.datetimes, forecast.wind_gust])) + }, + ] + end conn |> assign(:wave_height, wave_height) From 2ed501ed8efa35813607fcd9c06428783e391cdc Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Sun, 19 May 2019 23:01:35 -0300 Subject: [PATCH 04/37] Fixing static assets --- assets/css/app.css | 132 ++- assets/css/phoenix.css | 134 --- assets/js/chartkick.js | 915 ++++++++++++++++++ .../{Surf API.png => surf-api-logo.png} | Bin priv/static/css/app.css | 139 --- priv/static/favicon.ico | Bin 1258 -> 0 bytes priv/static/images/phoenix.png | Bin 13900 -> 0 bytes priv/static/js/app.js | 120 --- priv/static/robots.txt | 5 - 9 files changed, 1046 insertions(+), 399 deletions(-) delete mode 100644 assets/css/phoenix.css create mode 100644 assets/js/chartkick.js rename assets/static/images/{Surf API.png => surf-api-logo.png} (100%) delete mode 100644 priv/static/css/app.css delete mode 100644 priv/static/favicon.ico delete mode 100644 priv/static/images/phoenix.png delete mode 100644 priv/static/js/app.js delete mode 100644 priv/static/robots.txt diff --git a/assets/css/app.css b/assets/css/app.css index fec0b3f..f361d82 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -1,3 +1,133 @@ /* This file is for your main application css. */ -@import "./phoenix.css"; +*,*:after,*:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000000;font-family:'Helvetica', 'Arial', sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:0.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote *:last-child{margin-bottom:0}.button,button,input[type='button'],input[type='reset'],input[type='submit']{background-color:#0069d9;border:0.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3.0rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type='button']:focus,input[type='button']:hover,input[type='reset']:focus,input[type='reset']:hover,input[type='submit']:focus,input[type='submit']:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type='button'][disabled],input[type='reset'][disabled],input[type='submit'][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type='button'][disabled]:focus,input[type='button'][disabled]:hover,input[type='reset'][disabled]:focus,input[type='reset'][disabled]:hover,input[type='submit'][disabled]:focus,input[type='submit'][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type='button'].button-outline,input[type='reset'].button-outline,input[type='submit'].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type='button'].button-outline:focus,input[type='button'].button-outline:hover,input[type='reset'].button-outline:focus,input[type='reset'].button-outline:hover,input[type='submit'].button-outline:focus,input[type='submit'].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type='button'].button-outline[disabled]:focus,input[type='button'].button-outline[disabled]:hover,input[type='reset'].button-outline[disabled]:focus,input[type='reset'].button-outline[disabled]:hover,input[type='submit'].button-outline[disabled]:focus,input[type='submit'].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type='button'].button-clear,input[type='reset'].button-clear,input[type='submit'].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type='button'].button-clear:focus,input[type='button'].button-clear:hover,input[type='reset'].button-clear:focus,input[type='reset'].button-clear:hover,input[type='submit'].button-clear:focus,input[type='submit'].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type='button'].button-clear[disabled]:focus,input[type='button'].button-clear[disabled]:hover,input[type='reset'].button-clear[disabled]:focus,input[type='reset'].button-clear[disabled]:hover,input[type='submit'].button-clear[disabled]:focus,input[type='submit'].button-clear[disabled]:hover{color:#0069d9}code{background:#f4f5f6;border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}pre{background:#f4f5f6;border-left:0.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:0.1rem solid #f4f5f6;margin:3.0rem 0}input[type='email'],input[type='number'],input[type='password'],input[type='search'],input[type='tel'],input[type='text'],input[type='url'],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1.0rem;width:100%}input[type='email']:focus,input[type='number']:focus,input[type='password']:focus,input[type='search']:focus,input[type='tel']:focus,input[type='text']:focus,input[type='url']:focus,textarea:focus,select:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') center right no-repeat;padding-right:3.0rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type='checkbox'],input[type='radio']{display:inline}.label-inline{display:inline-block;font-weight:normal;margin-left:.5rem}.row{display:flex;flex-direction:column;padding:0;width:100%}.row.row-no-padding{padding:0}.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width: 40rem){.row{flex-direction:row;margin-left:-1.0rem;width:calc(100% + 2.0rem)}.row .column{margin-bottom:inherit;padding:0 1.0rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3.0rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1.0rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:0.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:bold}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2.0rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;letter-spacing:0;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:' ';display:table}.float-left{float:left}.float-right{float:right} + +/* General style */ +h1{font-size: 3.6rem; line-height: 1.25} +h2{font-size: 2.8rem; line-height: 1.3} +h3{font-size: 2.2rem; letter-spacing: -.08rem; line-height: 1.35} +h4{font-size: 1.8rem; letter-spacing: -.05rem; line-height: 1.5} +h5{font-size: 1.6rem; letter-spacing: 0; line-height: 1.4} +h6{font-size: 1.4rem; letter-spacing: 0; line-height: 1.2} + +.container{ + margin: 0 auto; + max-width: 80.0rem; + padding: 0 2.0rem; + position: relative; + width: 100% +} +.center { + justify-content: center; +} +select { + width: auto; +} + +/* Alerts and form errors */ +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert p { + margin-bottom: 0; +} +.alert:empty { + display: none; +} +.help-block { + color: #a94442; + display: block; + margin: -1rem 0 2rem; +} + +/* Chart section */ +.charts { + text-align: center; + border-bottom: 1px solid #e3e3e3; + background: #eee; + border-radius: 6px; + padding: 3em; + margin-bottom: 3rem; + font-weight: 200; + font-size: 120%; +} +.charts p { + margin: 0; +} + +/* Logo */ +.surf-api-logo { + min-width: 300px; + margin: 1rem; + display: block; +} +.surf-api-logo img { + width: auto; + display: block; +} + +/* Headers */ +header { + width: 100%; + background: #fdfdfd; + border-bottom: 1px solid #eaeaea; + margin-bottom: 2rem; +} +header section { + align-items: center; + display: flex; + flex-direction: column; + justify-content: space-between; +} +header section :first-child { + order: 2; +} +header section :last-child { + order: 1; +} +header nav ul, +header nav li { + margin: 0; + padding: 0; + display: block; + text-align: right; + white-space: nowrap; +} +header nav ul { + margin: 1rem; + margin-top: 0; +} +header nav a { + display: block; +} + +@media (min-width: 40.0rem) { /* Small devices (landscape phones, 576px and up) */ + header section { + flex-direction: row; + } + header nav ul { + margin: 1rem; + } + .surf-api-logo { + flex-basis: 527px; + margin: 2rem 1rem; + } +} diff --git a/assets/css/phoenix.css b/assets/css/phoenix.css deleted file mode 100644 index e1ca940..0000000 --- a/assets/css/phoenix.css +++ /dev/null @@ -1,134 +0,0 @@ -/* Includes some default style for the starter application. - * This can be safely deleted to start fresh. - */ - -/* Milligram v1.3.0 https://milligram.github.io - * Copyright (c) 2017 CJ Patoilo Licensed under the MIT license - */ - -*,*:after,*:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000000;font-family:'Helvetica', 'Arial', sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:0.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote *:last-child{margin-bottom:0}.button,button,input[type='button'],input[type='reset'],input[type='submit']{background-color:#0069d9;border:0.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3.0rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type='button']:focus,input[type='button']:hover,input[type='reset']:focus,input[type='reset']:hover,input[type='submit']:focus,input[type='submit']:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type='button'][disabled],input[type='reset'][disabled],input[type='submit'][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type='button'][disabled]:focus,input[type='button'][disabled]:hover,input[type='reset'][disabled]:focus,input[type='reset'][disabled]:hover,input[type='submit'][disabled]:focus,input[type='submit'][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type='button'].button-outline,input[type='reset'].button-outline,input[type='submit'].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type='button'].button-outline:focus,input[type='button'].button-outline:hover,input[type='reset'].button-outline:focus,input[type='reset'].button-outline:hover,input[type='submit'].button-outline:focus,input[type='submit'].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type='button'].button-outline[disabled]:focus,input[type='button'].button-outline[disabled]:hover,input[type='reset'].button-outline[disabled]:focus,input[type='reset'].button-outline[disabled]:hover,input[type='submit'].button-outline[disabled]:focus,input[type='submit'].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type='button'].button-clear,input[type='reset'].button-clear,input[type='submit'].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type='button'].button-clear:focus,input[type='button'].button-clear:hover,input[type='reset'].button-clear:focus,input[type='reset'].button-clear:hover,input[type='submit'].button-clear:focus,input[type='submit'].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type='button'].button-clear[disabled]:focus,input[type='button'].button-clear[disabled]:hover,input[type='reset'].button-clear[disabled]:focus,input[type='reset'].button-clear[disabled]:hover,input[type='submit'].button-clear[disabled]:focus,input[type='submit'].button-clear[disabled]:hover{color:#0069d9}code{background:#f4f5f6;border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}pre{background:#f4f5f6;border-left:0.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:0.1rem solid #f4f5f6;margin:3.0rem 0}input[type='email'],input[type='number'],input[type='password'],input[type='search'],input[type='tel'],input[type='text'],input[type='url'],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1.0rem;width:100%}input[type='email']:focus,input[type='number']:focus,input[type='password']:focus,input[type='search']:focus,input[type='tel']:focus,input[type='text']:focus,input[type='url']:focus,textarea:focus,select:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') center right no-repeat;padding-right:3.0rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type='checkbox'],input[type='radio']{display:inline}.label-inline{display:inline-block;font-weight:normal;margin-left:.5rem}.row{display:flex;flex-direction:column;padding:0;width:100%}.row.row-no-padding{padding:0}.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width: 40rem){.row{flex-direction:row;margin-left:-1.0rem;width:calc(100% + 2.0rem)}.row .column{margin-bottom:inherit;padding:0 1.0rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3.0rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1.0rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:0.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:bold}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2.0rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;letter-spacing:0;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:' ';display:table}.float-left{float:left}.float-right{float:right} - -/* General style */ -h1{font-size: 3.6rem; line-height: 1.25} -h2{font-size: 2.8rem; line-height: 1.3} -h3{font-size: 2.2rem; letter-spacing: -.08rem; line-height: 1.35} -h4{font-size: 1.8rem; letter-spacing: -.05rem; line-height: 1.5} -h5{font-size: 1.6rem; letter-spacing: 0; line-height: 1.4} -h6{font-size: 1.4rem; letter-spacing: 0; line-height: 1.2} - -.container{ - margin: 0 auto; - max-width: 80.0rem; - padding: 0 2.0rem; - position: relative; - width: 100% -} -select { - width: auto; -} - -/* Alerts and form errors */ -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; -} -.alert-info { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.alert-warning { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.alert-danger { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.alert p { - margin-bottom: 0; -} -.alert:empty { - display: none; -} -.help-block { - color: #a94442; - display: block; - margin: -1rem 0 2rem; -} - -/* Phoenix promo and logo */ -.phx-hero { - text-align: center; - border-bottom: 1px solid #e3e3e3; - background: #eee; - border-radius: 6px; - padding: 3em; - margin-bottom: 3rem; - font-weight: 200; - font-size: 120%; -} -.phx-hero p { - margin: 0; -} -.phx-logo { - min-width: 300px; - margin: 1rem; - display: block; -} -.phx-logo img { - width: auto; - display: block; -} - -/* Headers */ -header { - width: 100%; - background: #fdfdfd; - border-bottom: 1px solid #eaeaea; - margin-bottom: 2rem; -} -header section { - align-items: center; - display: flex; - flex-direction: column; - justify-content: space-between; -} -header section :first-child { - order: 2; -} -header section :last-child { - order: 1; -} -header nav ul, -header nav li { - margin: 0; - padding: 0; - display: block; - text-align: right; - white-space: nowrap; -} -header nav ul { - margin: 1rem; - margin-top: 0; -} -header nav a { - display: block; -} - -@media (min-width: 40.0rem) { /* Small devices (landscape phones, 576px and up) */ - header section { - flex-direction: row; - } - header nav ul { - margin: 1rem; - } - .phx-logo { - flex-basis: 527px; - margin: 2rem 1rem; - } -} diff --git a/assets/js/chartkick.js b/assets/js/chartkick.js new file mode 100644 index 0000000..6e63805 --- /dev/null +++ b/assets/js/chartkick.js @@ -0,0 +1,915 @@ +/* + * Chartkick.js + * Create beautiful Javascript charts with minimal code + * https://github.com/ankane/chartkick.js + * v1.4.1 + * MIT License + */ + +/*jslint browser: true, indent: 2, plusplus: true, vars: true */ + +(function (window) { + 'use strict'; + + var config = window.Chartkick || {}; + var Chartkick, ISO8601_PATTERN, DECIMAL_SEPARATOR, adapters = []; + + // helpers + + function isArray(variable) { + return Object.prototype.toString.call(variable) === "[object Array]"; + } + + function isFunction(variable) { + return variable instanceof Function; + } + + function isPlainObject(variable) { + return !isFunction(variable) && variable instanceof Object; + } + + // https://github.com/madrobby/zepto/blob/master/src/zepto.js + function extend(target, source) { + var key; + for (key in source) { + if (isPlainObject(source[key]) || isArray(source[key])) { + if (isPlainObject(source[key]) && !isPlainObject(target[key])) { + target[key] = {}; + } + if (isArray(source[key]) && !isArray(target[key])) { + target[key] = []; + } + extend(target[key], source[key]); + } else if (source[key] !== undefined) { + target[key] = source[key]; + } + } + } + + function merge(obj1, obj2) { + var target = {}; + extend(target, obj1); + extend(target, obj2); + return target; + } + + // https://github.com/Do/iso8601.js + ISO8601_PATTERN = /(\d\d\d\d)(\-)?(\d\d)(\-)?(\d\d)(T)?(\d\d)(:)?(\d\d)?(:)?(\d\d)?([\.,]\d+)?($|Z|([\+\-])(\d\d)(:)?(\d\d)?)/i; + DECIMAL_SEPARATOR = String(1.5).charAt(1); + + function parseISO8601(input) { + var day, hour, matches, milliseconds, minutes, month, offset, result, seconds, type, year; + type = Object.prototype.toString.call(input); + if (type === '[object Date]') { + return input; + } + if (type !== '[object String]') { + return; + } + if (matches = input.match(ISO8601_PATTERN)) { + year = parseInt(matches[1], 10); + month = parseInt(matches[3], 10) - 1; + day = parseInt(matches[5], 10); + hour = parseInt(matches[7], 10); + minutes = matches[9] ? parseInt(matches[9], 10) : 0; + seconds = matches[11] ? parseInt(matches[11], 10) : 0; + milliseconds = matches[12] ? parseFloat(DECIMAL_SEPARATOR + matches[12].slice(1)) * 1000 : 0; + result = Date.UTC(year, month, day, hour, minutes, seconds, milliseconds); + if (matches[13] && matches[14]) { + offset = matches[15] * 60; + if (matches[17]) { + offset += parseInt(matches[17], 10); + } + offset *= matches[14] === '-' ? -1 : 1; + result -= offset * 60 * 1000; + } + return new Date(result); + } + } + // end iso8601.js + + function negativeValues(series) { + var i, j, data; + for (i = 0; i < series.length; i++) { + data = series[i].data; + for (j = 0; j < data.length; j++) { + if (data[j][1] < 0) { + return true; + } + } + } + return false; + } + + function jsOptionsFunc(defaultOptions, hideLegend, setMin, setMax, setStacked, setXtitle, setYtitle) { + return function (series, opts, chartOptions) { + var options = merge({}, defaultOptions); + options = merge(options, chartOptions || {}); + + // hide legend + // this is *not* an external option! + if (opts.hideLegend) { + hideLegend(options); + } + + // min + if ("min" in opts) { + setMin(options, opts.min); + } else if (!negativeValues(series)) { + setMin(options, 0); + } + + // max + if (opts.max) { + setMax(options, opts.max); + } + + if (opts.stacked) { + setStacked(options); + } + + if (opts.colors) { + options.colors = opts.colors; + } + + if (opts.xtitle) { + setXtitle(options, opts.xtitle); + } + + if (opts.ytitle) { + setYtitle(options, opts.ytitle); + } + + // merge library last + options = merge(options, opts.library || {}); + + return options; + }; + } + + function setText(element, text) { + if (document.body.innerText) { + element.innerText = text; + } else { + element.textContent = text; + } + } + + function chartError(element, message) { + setText(element, "Error Loading Chart: " + message); + element.style.color = "#ff0000"; + } + + function getJSON(element, url, success) { + var $ = window.jQuery || window.Zepto || window.$; + $.ajax({ + dataType: "json", + url: url, + success: success, + error: function (jqXHR, textStatus, errorThrown) { + var message = (typeof errorThrown === "string") ? errorThrown : errorThrown.message; + chartError(element, message); + } + }); + } + + function errorCatcher(chart, callback) { + try { + callback(chart); + } catch (err) { + chartError(chart.element, err.message); + throw err; + } + } + + function fetchDataSource(chart, callback) { + if (typeof chart.dataSource === "string") { + getJSON(chart.element, chart.dataSource, function (data, textStatus, jqXHR) { + chart.data = data; + errorCatcher(chart, callback); + }); + } else { + chart.data = chart.dataSource; + errorCatcher(chart, callback); + } + } + + // type conversions + + function toStr(n) { + return "" + n; + } + + function toFloat(n) { + return parseFloat(n); + } + + function toDate(n) { + if (typeof n !== "object") { + if (typeof n === "number") { + n = new Date(n * 1000); // ms + } else { // str + // try our best to get the str into iso8601 + // TODO be smarter about this + var str = n.replace(/ /, "T").replace(" ", "").replace("UTC", "Z"); + n = parseISO8601(str) || new Date(n); + } + } + return n; + } + + function toArr(n) { + if (!isArray(n)) { + var arr = [], i; + for (i in n) { + if (n.hasOwnProperty(i)) { + arr.push([i, n[i]]); + } + } + n = arr; + } + return n; + } + + function sortByTime(a, b) { + return a[0].getTime() - b[0].getTime(); + } + + if ("Highcharts" in window) { + var HighchartsAdapter = new function () { + var Highcharts = window.Highcharts; + + this.name = "highcharts"; + + var defaultOptions = { + chart: {}, + xAxis: { + title: { + text: null + }, + labels: { + style: { + fontSize: "12px" + } + } + }, + yAxis: { + title: { + text: null + }, + labels: { + style: { + fontSize: "12px" + } + } + }, + title: { + text: null + }, + credits: { + enabled: false + }, + legend: { + borderWidth: 0 + }, + tooltip: { + style: { + fontSize: "12px" + } + }, + plotOptions: { + areaspline: {}, + series: { + marker: {} + } + } + }; + + var hideLegend = function (options) { + options.legend.enabled = false; + }; + + var setMin = function (options, min) { + options.yAxis.min = min; + }; + + var setMax = function (options, max) { + options.yAxis.max = max; + }; + + var setStacked = function (options) { + options.plotOptions.series.stacking = "normal"; + }; + + var setXtitle = function (options, title) { + options.xAxis.title.text = title; + }; + + var setYtitle = function (options, title) { + options.yAxis.title.text = title; + }; + + var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setMin, setMax, setStacked, setXtitle, setYtitle); + + this.renderLineChart = function (chart, chartType) { + chartType = chartType || "spline"; + var chartOptions = {}; + if (chartType === "areaspline") { + chartOptions = { + plotOptions: { + areaspline: { + stacking: "normal" + }, + series: { + marker: { + enabled: false + } + } + } + }; + } + var options = jsOptions(chart.data, chart.options, chartOptions), data, i, j; + options.xAxis.type = chart.options.discrete ? "category" : "datetime"; + options.chart.type = chartType; + options.chart.renderTo = chart.element.id; + + var series = chart.data; + for (i = 0; i < series.length; i++) { + data = series[i].data; + if (!chart.options.discrete) { + for (j = 0; j < data.length; j++) { + data[j][0] = data[j][0].getTime(); + } + } + series[i].marker = {symbol: "circle"}; + } + options.series = series; + new Highcharts.Chart(options); + }; + + this.renderScatterChart = function (chart) { + var chartOptions = {}; + var options = jsOptions(chart.data, chart.options, chartOptions); + options.chart.type = 'scatter'; + options.chart.renderTo = chart.element.id; + options.series = chart.data; + new Highcharts.Chart(options); + }; + + this.renderPieChart = function (chart) { + var chartOptions = {}; + if (chart.options.colors) { + chartOptions.colors = chart.options.colors; + } + var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); + options.chart.renderTo = chart.element.id; + options.series = [{ + type: "pie", + name: "Value", + data: chart.data + }]; + new Highcharts.Chart(options); + }; + + this.renderColumnChart = function (chart, chartType) { + var chartType = chartType || "column"; + var series = chart.data; + var options = jsOptions(series, chart.options), i, j, s, d, rows = []; + options.chart.type = chartType; + options.chart.renderTo = chart.element.id; + + for (i = 0; i < series.length; i++) { + s = series[i]; + + for (j = 0; j < s.data.length; j++) { + d = s.data[j]; + if (!rows[d[0]]) { + rows[d[0]] = new Array(series.length); + } + rows[d[0]][i] = d[1]; + } + } + + var categories = []; + for (i in rows) { + if (rows.hasOwnProperty(i)) { + categories.push(i); + } + } + options.xAxis.categories = categories; + + var newSeries = []; + for (i = 0; i < series.length; i++) { + d = []; + for (j = 0; j < categories.length; j++) { + d.push(rows[categories[j]][i] || 0); + } + + newSeries.push({ + name: series[i].name, + data: d + }); + } + options.series = newSeries; + + new Highcharts.Chart(options); + }; + + var self = this; + + this.renderBarChart = function (chart) { + self.renderColumnChart(chart, "bar"); + }; + + this.renderAreaChart = function (chart) { + self.renderLineChart(chart, "areaspline"); + }; + }; + adapters.push(HighchartsAdapter); + } + if (window.google && window.google.setOnLoadCallback) { + var GoogleChartsAdapter = new function () { + var google = window.google; + + this.name = "google"; + + var loaded = {}; + var callbacks = []; + + var runCallbacks = function () { + var cb, call; + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + call = google.visualization && ((cb.pack === "corechart" && google.visualization.LineChart) || (cb.pack === "timeline" && google.visualization.Timeline)) + if (call) { + cb.callback(); + callbacks.splice(i, 1); + i--; + } + } + }; + + var waitForLoaded = function (pack, callback) { + if (!callback) { + callback = pack; + pack = "corechart"; + } + + callbacks.push({pack: pack, callback: callback}); + + if (loaded[pack]) { + runCallbacks(); + } else { + loaded[pack] = true; + + // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI + var loadOptions = { + packages: [pack], + callback: runCallbacks + }; + if (config.language) { + loadOptions.language = config.language; + } + google.load("visualization", "1", loadOptions); + } + }; + + // Set chart options + var defaultOptions = { + chartArea: {}, + fontName: "'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif", + pointSize: 6, + legend: { + textStyle: { + fontSize: 12, + color: "#444" + }, + alignment: "center", + position: "right" + }, + curveType: "function", + hAxis: { + textStyle: { + color: "#666", + fontSize: 12 + }, + titleTextStyle: {}, + gridlines: { + color: "transparent" + }, + baselineColor: "#ccc", + viewWindow: {} + }, + vAxis: { + textStyle: { + color: "#666", + fontSize: 12 + }, + titleTextStyle: {}, + baselineColor: "#ccc", + viewWindow: {} + }, + tooltip: { + textStyle: { + color: "#666", + fontSize: 12 + } + } + }; + + var hideLegend = function (options) { + options.legend.position = "none"; + }; + + var setMin = function (options, min) { + options.vAxis.viewWindow.min = min; + }; + + var setMax = function (options, max) { + options.vAxis.viewWindow.max = max; + }; + + var setBarMin = function (options, min) { + options.hAxis.viewWindow.min = min; + }; + + var setBarMax = function (options, max) { + options.hAxis.viewWindow.max = max; + }; + + var setStacked = function (options) { + options.isStacked = true; + }; + + var setXtitle = function (options, title) { + options.hAxis.title = title; + options.hAxis.titleTextStyle.italic = false; + } + + var setYtitle = function (options, title) { + options.vAxis.title = title; + options.vAxis.titleTextStyle.italic = false; + }; + + var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setMin, setMax, setStacked, setXtitle, setYtitle); + + // cant use object as key + var createDataTable = function (series, columnType) { + var data = new google.visualization.DataTable(); + data.addColumn(columnType, ""); + + var i, j, s, d, key, rows = []; + for (i = 0; i < series.length; i++) { + s = series[i]; + data.addColumn("number", s.name); + + for (j = 0; j < s.data.length; j++) { + d = s.data[j]; + key = (columnType === "datetime") ? d[0].getTime() : d[0]; + if (!rows[key]) { + rows[key] = new Array(series.length); + } + rows[key][i] = toFloat(d[1]); + } + } + + var rows2 = []; + var value; + for (i in rows) { + if (rows.hasOwnProperty(i)) { + if (columnType === "datetime") { + value = new Date(toFloat(i)); + } else if (columnType === "number") { + value = toFloat(i); + } else { + value = i; + } + rows2.push([value].concat(rows[i])); + } + } + if (columnType === "datetime") { + rows2.sort(sortByTime); + } + data.addRows(rows2); + + return data; + }; + + var resize = function (callback) { + if (window.attachEvent) { + window.attachEvent("onresize", callback); + } else if (window.addEventListener) { + window.addEventListener("resize", callback, true); + } + callback(); + }; + + this.renderLineChart = function (chart) { + waitForLoaded(function () { + var options = jsOptions(chart.data, chart.options); + var data = createDataTable(chart.data, chart.options.discrete ? "string" : "datetime"); + chart.chart = new google.visualization.LineChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderPieChart = function (chart) { + waitForLoaded(function () { + var chartOptions = { + chartArea: { + top: "10%", + height: "80%" + } + }; + if (chart.options.colors) { + chartOptions.colors = chart.options.colors; + } + var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); + + var data = new google.visualization.DataTable(); + data.addColumn("string", ""); + data.addColumn("number", "Value"); + data.addRows(chart.data); + + chart.chart = new google.visualization.PieChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderColumnChart = function (chart) { + waitForLoaded(function () { + var options = jsOptions(chart.data, chart.options); + var data = createDataTable(chart.data, "string"); + chart.chart = new google.visualization.ColumnChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderBarChart = function (chart) { + waitForLoaded(function () { + var chartOptions = { + hAxis: { + gridlines: { + color: "#ccc" + } + } + }; + var options = jsOptionsFunc(defaultOptions, hideLegend, setBarMin, setBarMax, setStacked)(chart.data, chart.options, chartOptions); + var data = createDataTable(chart.data, "string"); + chart.chart = new google.visualization.BarChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderAreaChart = function (chart) { + waitForLoaded(function () { + var chartOptions = { + isStacked: true, + pointSize: 0, + areaOpacity: 0.5 + }; + var options = jsOptions(chart.data, chart.options, chartOptions); + var data = createDataTable(chart.data, chart.options.discrete ? "string" : "datetime"); + chart.chart = new google.visualization.AreaChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderGeoChart = function (chart) { + waitForLoaded(function () { + var chartOptions = { + legend: "none", + colorAxis: { + colors: chart.options.colors || ["#f6c7b6", "#ce502d"] + } + }; + var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); + + var data = new google.visualization.DataTable(); + data.addColumn("string", ""); + data.addColumn("number", "Value"); + data.addRows(chart.data); + + chart.chart = new google.visualization.GeoChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderScatterChart = function (chart) { + waitForLoaded(function () { + var chartOptions = {}; + var options = jsOptions(chart.data, chart.options, chartOptions); + var data = createDataTable(chart.data, "number"); + + chart.chart = new google.visualization.ScatterChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderTimeline = function (chart) { + waitForLoaded("timeline", function () { + var chartOptions = { + legend: "none" + }; + + if (chart.options.colors) { + chartOptions.colors = chart.options.colors; + } + var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); + + var data = new google.visualization.DataTable(); + data.addColumn({type: "string", id: "Name"}); + data.addColumn({type: "date", id: "Start"}); + data.addColumn({type: "date", id: "End"}); + data.addRows(chart.data); + + chart.chart = new google.visualization.Timeline(chart.element); + + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + }; + + adapters.push(GoogleChartsAdapter); + } + + // TODO remove chartType if cross-browser way + // to get the name of the chart class + function renderChart(chartType, chart) { + var i, adapter, fnName, adapterName; + fnName = "render" + chartType; + adapterName = chart.options.adapter; + + for (i = 0; i < adapters.length; i++) { + adapter = adapters[i]; + if ((!adapterName || adapterName === adapter.name) && isFunction(adapter[fnName])) { + return adapter[fnName](chart); + } + } + throw new Error("No adapter found"); + } + + // process data + + var toFormattedKey = function (key, keyType) { + if (keyType === "number") { + key = toFloat(key); + } else if (keyType === "datetime") { + key = toDate(key); + } else { + key = toStr(key); + } + return key; + }; + + var formatSeriesData = function (data, keyType) { + var r = [], key, j; + for (j = 0; j < data.length; j++) { + key = toFormattedKey(data[j][0], keyType); + r.push([key, toFloat(data[j][1])]); + } + if (keyType === "datetime") { + r.sort(sortByTime); + } + return r; + }; + + function processSeries(series, opts, keyType) { + var i; + + // see if one series or multiple + if (!isArray(series) || typeof series[0] !== "object" || isArray(series[0])) { + series = [{name: "Value", data: series}]; + opts.hideLegend = true; + } else { + opts.hideLegend = false; + } + if (opts.discrete) { + keyType = "string"; + } + + // right format + for (i = 0; i < series.length; i++) { + series[i].data = formatSeriesData(toArr(series[i].data), keyType); + } + + return series; + } + + function processSimple(data) { + var perfectData = toArr(data), i; + for (i = 0; i < perfectData.length; i++) { + perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])]; + } + return perfectData; + } + + function processTime(data) + { + var i; + for (i = 0; i < data.length; i++) { + data[i][1] = toDate(data[i][1]); + data[i][2] = toDate(data[i][2]); + } + return data; + } + + function processLineData(chart) { + chart.data = processSeries(chart.data, chart.options, "datetime"); + renderChart("LineChart", chart); + } + + function processColumnData(chart) { + chart.data = processSeries(chart.data, chart.options, "string"); + renderChart("ColumnChart", chart); + } + + function processPieData(chart) { + chart.data = processSimple(chart.data); + renderChart("PieChart", chart); + } + + function processBarData(chart) { + chart.data = processSeries(chart.data, chart.options, "string"); + renderChart("BarChart", chart); + } + + function processAreaData(chart) { + chart.data = processSeries(chart.data, chart.options, "datetime"); + renderChart("AreaChart", chart); + } + + function processGeoData(chart) { + chart.data = processSimple(chart.data); + renderChart("GeoChart", chart); + } + + function processScatterData(chart) { + chart.data = processSeries(chart.data, chart.options, "number"); + renderChart("ScatterChart", chart); + } + + function processTimelineData(chart) { + chart.data = processTime(chart.data); + renderChart("Timeline", chart); + } + + function setElement(chart, element, dataSource, opts, callback) { + if (typeof element === "string") { + element = document.getElementById(element); + } + chart.element = element; + chart.options = opts || {}; + chart.dataSource = dataSource; + Chartkick.charts[element.id] = chart; + fetchDataSource(chart, callback); + } + + // define classes + + Chartkick = { + LineChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processLineData); + }, + PieChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processPieData); + }, + ColumnChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processColumnData); + }, + BarChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processBarData); + }, + AreaChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processAreaData); + }, + GeoChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processGeoData); + }, + ScatterChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processScatterData); + }, + Timeline: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processTimelineData); + }, + charts: {} + }; + + window.Chartkick = Chartkick; +}(window)); \ No newline at end of file diff --git a/assets/static/images/Surf API.png b/assets/static/images/surf-api-logo.png similarity index 100% rename from assets/static/images/Surf API.png rename to assets/static/images/surf-api-logo.png diff --git a/priv/static/css/app.css b/priv/static/css/app.css deleted file mode 100644 index 84cd4fe..0000000 --- a/priv/static/css/app.css +++ /dev/null @@ -1,139 +0,0 @@ -/* Includes some default style for the starter application. - * This can be safely deleted to start fresh. - */ - -/* Milligram v1.3.0 https://milligram.github.io - * Copyright (c) 2017 CJ Patoilo Licensed under the MIT license - */ - -*,*:after,*:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000000;font-family:'Helvetica', 'Arial', sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:0.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote *:last-child{margin-bottom:0}.button,button,input[type='button'],input[type='reset'],input[type='submit']{background-color:#0069d9;border:0.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3.0rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type='button']:focus,input[type='button']:hover,input[type='reset']:focus,input[type='reset']:hover,input[type='submit']:focus,input[type='submit']:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type='button'][disabled],input[type='reset'][disabled],input[type='submit'][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type='button'][disabled]:focus,input[type='button'][disabled]:hover,input[type='reset'][disabled]:focus,input[type='reset'][disabled]:hover,input[type='submit'][disabled]:focus,input[type='submit'][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type='button'].button-outline,input[type='reset'].button-outline,input[type='submit'].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type='button'].button-outline:focus,input[type='button'].button-outline:hover,input[type='reset'].button-outline:focus,input[type='reset'].button-outline:hover,input[type='submit'].button-outline:focus,input[type='submit'].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type='button'].button-outline[disabled]:focus,input[type='button'].button-outline[disabled]:hover,input[type='reset'].button-outline[disabled]:focus,input[type='reset'].button-outline[disabled]:hover,input[type='submit'].button-outline[disabled]:focus,input[type='submit'].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type='button'].button-clear,input[type='reset'].button-clear,input[type='submit'].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type='button'].button-clear:focus,input[type='button'].button-clear:hover,input[type='reset'].button-clear:focus,input[type='reset'].button-clear:hover,input[type='submit'].button-clear:focus,input[type='submit'].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type='button'].button-clear[disabled]:focus,input[type='button'].button-clear[disabled]:hover,input[type='reset'].button-clear[disabled]:focus,input[type='reset'].button-clear[disabled]:hover,input[type='submit'].button-clear[disabled]:focus,input[type='submit'].button-clear[disabled]:hover{color:#0069d9}code{background:#f4f5f6;border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}pre{background:#f4f5f6;border-left:0.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:0.1rem solid #f4f5f6;margin:3.0rem 0}input[type='email'],input[type='number'],input[type='password'],input[type='search'],input[type='tel'],input[type='text'],input[type='url'],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1.0rem;width:100%}input[type='email']:focus,input[type='number']:focus,input[type='password']:focus,input[type='search']:focus,input[type='tel']:focus,input[type='text']:focus,input[type='url']:focus,textarea:focus,select:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') center right no-repeat;padding-right:3.0rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type='checkbox'],input[type='radio']{display:inline}.label-inline{display:inline-block;font-weight:normal;margin-left:.5rem}.row{display:flex;flex-direction:column;padding:0;width:100%}.row.row-no-padding{padding:0}.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width: 40rem){.row{flex-direction:row;margin-left:-1.0rem;width:calc(100% + 2.0rem)}.row .column{margin-bottom:inherit;padding:0 1.0rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3.0rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1.0rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:0.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:bold}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2.0rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;letter-spacing:0;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:' ';display:table}.float-left{float:left}.float-right{float:right} - -/* General style */ -h1{font-size: 3.6rem; line-height: 1.25} -h2{font-size: 2.8rem; line-height: 1.3} -h3{font-size: 2.2rem; letter-spacing: -.08rem; line-height: 1.35} -h4{font-size: 1.8rem; letter-spacing: -.05rem; line-height: 1.5} -h5{font-size: 1.6rem; letter-spacing: 0; line-height: 1.4} -h6{font-size: 1.4rem; letter-spacing: 0; line-height: 1.2} - -.container{ - margin: 0 auto; - max-width: 80.0rem; - padding: 0 2.0rem; - position: relative; - width: 100% -} -.center { - justify-content: center; -} -select { - width: auto; -} - -/* Alerts and form errors */ -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; -} -.alert-info { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.alert-warning { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.alert-danger { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.alert p { - margin-bottom: 0; -} -.alert:empty { - display: none; -} -.help-block { - color: #a94442; - display: block; - margin: -1rem 0 2rem; -} - -/* Chart section */ -.charts { - text-align: center; - border-bottom: 1px solid #e3e3e3; - background: #eee; - border-radius: 6px; - padding: 3em; - margin-bottom: 3rem; - font-weight: 200; - font-size: 120%; -} -.charts p { - margin: 0; -} - -/* Logo */ -.surf-api-logo { - min-width: 300px; - margin: 1rem; - display: block; -} -.surf-api-logo img { - width: auto; - display: block; -} - -/* Headers */ -header { - width: 100%; - background: #fdfdfd; - border-bottom: 1px solid #eaeaea; - margin-bottom: 2rem; -} -header section { - align-items: center; - display: flex; - flex-direction: column; - justify-content: space-between; -} -header section :first-child { - order: 2; -} -header section :last-child { - order: 1; -} -header nav ul, -header nav li { - margin: 0; - padding: 0; - display: block; - text-align: right; - white-space: nowrap; -} -header nav ul { - margin: 1rem; - margin-top: 0; -} -header nav a { - display: block; -} - -@media (min-width: 40.0rem) { /* Small devices (landscape phones, 576px and up) */ - header section { - flex-direction: row; - } - header nav ul { - margin: 1rem; - } - .surf-api-logo { - flex-basis: 527px; - margin: 2rem 1rem; - } -} diff --git a/priv/static/favicon.ico b/priv/static/favicon.ico deleted file mode 100644 index 73de524aaadcf60fbe9d32881db0aa86b58b5cb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1258 zcmbtUO>fgM7{=qN=;Mz_82;lvPEdVaxv-<-&=sZLwab?3I zBP>U*&(Hv<5n@9ZQ$vhg#|u$Zmtq8BV;+W*7(?jOx-{r?#TE&$Sdq77MbdJjD5`-q zMm_z(jLv3t>5NhzK{%aG(Yudfpjd3AFdKe2U7&zdepTe>^s(@!&0X8TJ`h+-I?84Ml# diff --git a/priv/static/images/phoenix.png b/priv/static/images/phoenix.png deleted file mode 100644 index 9c81075f63d2151e6f40e9aa66f665749a87cc6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13900 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 UWxWXg`G1#+f~I_}taaG`2PLnS&Hw-a diff --git a/priv/static/js/app.js b/priv/static/js/app.js deleted file mode 100644 index c38bacb..0000000 --- a/priv/static/js/app.js +++ /dev/null @@ -1,120 +0,0 @@ -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "../deps/phoenix_html/priv/static/phoenix_html.js": -/*!********************************************************!*\ - !*** ../deps/phoenix_html/priv/static/phoenix_html.js ***! - \********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\n\n(function () {\n var PolyfillEvent = eventConstructor();\n\n function eventConstructor() {\n if (typeof window.CustomEvent === \"function\") return window.CustomEvent; // IE<=9 Support\n\n function CustomEvent(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n\n CustomEvent.prototype = window.Event.prototype;\n return CustomEvent;\n }\n\n function buildHiddenInput(name, value) {\n var input = document.createElement(\"input\");\n input.type = \"hidden\";\n input.name = name;\n input.value = value;\n return input;\n }\n\n function handleClick(element) {\n var to = element.getAttribute(\"data-to\"),\n method = buildHiddenInput(\"_method\", element.getAttribute(\"data-method\")),\n csrf = buildHiddenInput(\"_csrf_token\", element.getAttribute(\"data-csrf\")),\n form = document.createElement(\"form\"),\n target = element.getAttribute(\"target\");\n form.method = element.getAttribute(\"data-method\") === \"get\" ? \"get\" : \"post\";\n form.action = to;\n form.style.display = \"hidden\";\n if (target) form.target = target;\n form.appendChild(csrf);\n form.appendChild(method);\n document.body.appendChild(form);\n form.submit();\n }\n\n window.addEventListener(\"click\", function (e) {\n var element = e.target;\n\n while (element && element.getAttribute) {\n var phoenixLinkEvent = new PolyfillEvent('phoenix.link.click', {\n \"bubbles\": true,\n \"cancelable\": true\n });\n\n if (!element.dispatchEvent(phoenixLinkEvent)) {\n e.preventDefault();\n e.stopImmediatePropagation();\n return false;\n }\n\n if (element.getAttribute(\"data-method\")) {\n handleClick(element);\n e.preventDefault();\n return false;\n } else {\n element = element.parentNode;\n }\n }\n }, false);\n window.addEventListener('phoenix.link.click', function (e) {\n var message = e.target.getAttribute(\"data-confirm\");\n\n if (message && !window.confirm(message)) {\n e.preventDefault();\n }\n }, false);\n})();\n\n//# sourceURL=webpack:///../deps/phoenix_html/priv/static/phoenix_html.js?"); - -/***/ }), - -/***/ "./css/app.css": -/*!*********************!*\ - !*** ./css/app.css ***! - \*********************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./css/app.css?"); - -/***/ }), - -/***/ "./js/app.js": -/*!*******************!*\ - !*** ./js/app.js ***! - \*******************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _css_app_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../css/app.css */ \"./css/app.css\");\n/* harmony import */ var _css_app_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_app_css__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var phoenix_html__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! phoenix_html */ \"../deps/phoenix_html/priv/static/phoenix_html.js\");\n/* harmony import */ var phoenix_html__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(phoenix_html__WEBPACK_IMPORTED_MODULE_1__);\n// We need to import the CSS so that webpack will load it.\n// The MiniCssExtractPlugin is used to separate it out into\n// its own CSS file.\n // webpack automatically bundles all modules in your\n// entry points. Those entry points can be configured\n// in \"webpack.config.js\".\n//\n// Import dependencies\n//\n\n // Import local files\n//\n// Local files can be imported directly using relative paths, for example:\n// import socket from \"./socket\"\n\n//# sourceURL=webpack:///./js/app.js?"); - -/***/ }), - -/***/ 0: -/*!*************************!*\ - !*** multi ./js/app.js ***! - \*************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("module.exports = __webpack_require__(/*! ./js/app.js */\"./js/app.js\");\n\n\n//# sourceURL=webpack:///multi_./js/app.js?"); - -/***/ }) - -/******/ }); \ No newline at end of file diff --git a/priv/static/robots.txt b/priv/static/robots.txt deleted file mode 100644 index 3c9c7c0..0000000 --- a/priv/static/robots.txt +++ /dev/null @@ -1,5 +0,0 @@ -# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file -# -# To ban all spiders from the entire site uncomment the next two lines: -# User-agent: * -# Disallow: / From e2097e25091ec57059d41aece0786947f8d8f76f Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Sun, 19 May 2019 23:05:31 -0300 Subject: [PATCH 05/37] Code style --- lib/waves_web/controllers/page_controller.ex | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/waves_web/controllers/page_controller.ex b/lib/waves_web/controllers/page_controller.ex index 53e37c5..ef4049e 100644 --- a/lib/waves_web/controllers/page_controller.ex +++ b/lib/waves_web/controllers/page_controller.ex @@ -17,8 +17,8 @@ defmodule WavesWeb.PageController do _ -> [ %{ - "name": "Wave Height", - "data": Map.new(List.zip([forecast.datetimes, forecast.wave_height])) + name: "Wave Height", + data: Map.new(List.zip([forecast.datetimes, forecast.wave_height])) }, ] end @@ -29,12 +29,12 @@ defmodule WavesWeb.PageController do _ -> [ %{ - "name": "Wind Speed", - "data": Map.new(List.zip([forecast.datetimes, forecast.wind_speed])) + name: "Wind Speed", + data: Map.new(List.zip([forecast.datetimes, forecast.wind_speed])) }, %{ - "name": "Wind Gusts", - "data": Map.new(List.zip([forecast.datetimes, forecast.wind_gust])) + name: "Wind Gusts", + data: Map.new(List.zip([forecast.datetimes, forecast.wind_gust])) }, ] end From 5992726ea717b1ef54711203365a3df615065a9a Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Sun, 19 May 2019 23:19:47 -0300 Subject: [PATCH 06/37] Setting up server script --- Procfile | 2 +- assets/static/images/phoenix.png | Bin 13900 -> 0 bytes lib/waves_web/controllers/page_controller.ex | 6 +++--- server.sh | 13 +++++++++++++ 4 files changed, 17 insertions(+), 4 deletions(-) delete mode 100644 assets/static/images/phoenix.png create mode 100644 server.sh diff --git a/Procfile b/Procfile index 8e9edc3..222d2ce 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: mix phx.server \ No newline at end of file +web: ./server.sh \ No newline at end of file diff --git a/assets/static/images/phoenix.png b/assets/static/images/phoenix.png deleted file mode 100644 index 9c81075f63d2151e6f40e9aa66f665749a87cc6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13900 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 UWxWXg`G1#+f~I_}taaG`2PLnS&Hw-a diff --git a/lib/waves_web/controllers/page_controller.ex b/lib/waves_web/controllers/page_controller.ex index ef4049e..7701c35 100644 --- a/lib/waves_web/controllers/page_controller.ex +++ b/lib/waves_web/controllers/page_controller.ex @@ -17,7 +17,7 @@ defmodule WavesWeb.PageController do _ -> [ %{ - name: "Wave Height", + name: "Wave Height", data: Map.new(List.zip([forecast.datetimes, forecast.wave_height])) }, ] @@ -29,11 +29,11 @@ defmodule WavesWeb.PageController do _ -> [ %{ - name: "Wind Speed", + name: "Wind Speed", data: Map.new(List.zip([forecast.datetimes, forecast.wind_speed])) }, %{ - name: "Wind Gusts", + name: "Wind Gusts", data: Map.new(List.zip([forecast.datetimes, forecast.wind_gust])) }, ] diff --git a/server.sh b/server.sh new file mode 100644 index 0000000..4f952b8 --- /dev/null +++ b/server.sh @@ -0,0 +1,13 @@ +# Initial setup +mix deps.get --only prod +mix compile + +# Compile assets +cd assets && webpack --mode production && cd .. +mix phx.digest + +# Custom tasks (like DB migrations) +mix ecto.migrate + +# Finally run the server +mix phx.server \ No newline at end of file From 9d2f6c44727f57b9c998359ce0ac4ef6a0ea22ea Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Sun, 19 May 2019 23:21:37 -0300 Subject: [PATCH 07/37] Creating release step on heroku --- Procfile | 3 ++- server.sh => release-tasks.sh | 5 +---- 2 files changed, 3 insertions(+), 5 deletions(-) rename server.sh => release-tasks.sh (75%) diff --git a/Procfile b/Procfile index 222d2ce..bc4c859 100644 --- a/Procfile +++ b/Procfile @@ -1 +1,2 @@ -web: ./server.sh \ No newline at end of file +release: ./release-tasks.sh +web: mix phx.server \ No newline at end of file diff --git a/server.sh b/release-tasks.sh similarity index 75% rename from server.sh rename to release-tasks.sh index 4f952b8..3da8fb1 100644 --- a/server.sh +++ b/release-tasks.sh @@ -7,7 +7,4 @@ cd assets && webpack --mode production && cd .. mix phx.digest # Custom tasks (like DB migrations) -mix ecto.migrate - -# Finally run the server -mix phx.server \ No newline at end of file +mix ecto.migrate \ No newline at end of file From 26d2bda85e3d00ebd23096cee4d4b21fb9cbce49 Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Sun, 19 May 2019 23:24:30 -0300 Subject: [PATCH 08/37] Adding execution permission to release-tasks.sh --- release-tasks.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 release-tasks.sh diff --git a/release-tasks.sh b/release-tasks.sh old mode 100644 new mode 100755 From 3d9e7f1a804275a4fe04c79e42df57c91fd6cb73 Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Sun, 19 May 2019 23:33:46 -0300 Subject: [PATCH 09/37] Fixing release tasks --- release-tasks.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/release-tasks.sh b/release-tasks.sh index 3da8fb1..29481dd 100755 --- a/release-tasks.sh +++ b/release-tasks.sh @@ -3,7 +3,11 @@ mix deps.get --only prod mix compile # Compile assets -cd assets && webpack --mode production && cd .. +cd assets +npm install +webpack --mode production +cd .. + mix phx.digest # Custom tasks (like DB migrations) From 8a84f3a656bbd8240b0390ec77e57becd71e1d9f Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Sun, 19 May 2019 23:47:48 -0300 Subject: [PATCH 10/37] Adding package.json to root dir --- package.json | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 package.json diff --git a/package.json b/package.json new file mode 100644 index 0000000..a4ba0e7 --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "repository": {}, + "license": "MIT", + "scripts": { + "deploy": "webpack --mode production", + "watch": "webpack --mode development --watch" + }, + "dependencies": { + "phoenix": "file:../deps/phoenix", + "phoenix_html": "file:../deps/phoenix_html" + }, + "devDependencies": { + "@babel/core": "^7.0.0", + "@babel/preset-env": "^7.0.0", + "babel-loader": "^8.0.0", + "copy-webpack-plugin": "^4.5.0", + "css-loader": "^2.1.1", + "mini-css-extract-plugin": "^0.4.0", + "optimize-css-assets-webpack-plugin": "^4.0.0", + "uglifyjs-webpack-plugin": "^1.2.4", + "webpack": "4.4.0", + "webpack-cli": "^2.0.10" + } +} From e06036f5743d7f1cb6b1a01403287438e03ed33e Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Sun, 19 May 2019 23:49:57 -0300 Subject: [PATCH 11/37] Fixing package.json --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index a4ba0e7..69b5e70 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,8 @@ "watch": "webpack --mode development --watch" }, "dependencies": { - "phoenix": "file:../deps/phoenix", - "phoenix_html": "file:../deps/phoenix_html" + "phoenix": "file:deps/phoenix", + "phoenix_html": "file:deps/phoenix_html" }, "devDependencies": { "@babel/core": "^7.0.0", From c19eb36b5ff1bb9cf2f0eb5a0d587d72af305dc1 Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Sun, 19 May 2019 23:52:36 -0300 Subject: [PATCH 12/37] Minimizing package.json --- package.json | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/package.json b/package.json index 69b5e70..d73cac0 100644 --- a/package.json +++ b/package.json @@ -2,22 +2,10 @@ "repository": {}, "license": "MIT", "scripts": { - "deploy": "webpack --mode production", - "watch": "webpack --mode development --watch" }, "dependencies": { - "phoenix": "file:deps/phoenix", - "phoenix_html": "file:deps/phoenix_html" }, "devDependencies": { - "@babel/core": "^7.0.0", - "@babel/preset-env": "^7.0.0", - "babel-loader": "^8.0.0", - "copy-webpack-plugin": "^4.5.0", - "css-loader": "^2.1.1", - "mini-css-extract-plugin": "^0.4.0", - "optimize-css-assets-webpack-plugin": "^4.0.0", - "uglifyjs-webpack-plugin": "^1.2.4", "webpack": "4.4.0", "webpack-cli": "^2.0.10" } From 54571ffbb9eeaec20c5af3919aa19c76eb4b95e9 Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Mon, 20 May 2019 00:03:32 -0300 Subject: [PATCH 13/37] Fixing dependencies --- assets/package-lock.json | 8141 ++++++++------------------------------ assets/package.json | 4 +- package.json | 2 +- release-tasks.sh | 2 +- 4 files changed, 1679 insertions(+), 6470 deletions(-) diff --git a/assets/package-lock.json b/assets/package-lock.json index e68143c..f33a48e 100644 --- a/assets/package-lock.json +++ b/assets/package-lock.json @@ -754,35 +754,10 @@ "to-fast-properties": "^2.0.0" } }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, - "@samverschueren/stream-to-observable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", - "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", - "dev": true, - "requires": { - "any-observable": "^0.3.0" - } - }, - "@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "@types/q": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", + "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", "dev": true }, "acorn": { @@ -830,16 +805,10 @@ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "dev": true }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "ansi-styles": { @@ -851,12 +820,6 @@ "color-convert": "^1.9.0" } }, - "any-observable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", - "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", - "dev": true - }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -911,12 +874,6 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -938,12 +895,6 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, "asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", @@ -987,18 +938,6 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, - "ast-types": { - "version": "0.11.5", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.5.tgz", - "integrity": "sha512-oJjo+5e7/vEc2FBK8gUalV0pba4L3VdBIs2EKhOLHLcOd2FgQIVQN9xb0eZ9IjEWyAL7vq6fGJxOvVvdCHNyMw==", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, "async-each": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", @@ -1011,1097 +950,1038 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "babel-loader": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", + "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "util.promisify": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { - "browserslist": "^1.7.6", - "caniuse-db": "^1.0.30000634", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^5.2.16", - "postcss-value-parser": "^3.2.3" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" + "is-descriptor": "^1.0.0" } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } + "kind-of": "^6.0.0" } }, - "has-flag": { + "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" + "kind-of": "^6.0.0" } }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "has-flag": "^1.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bluebird": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz", + "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "ms": "2.0.0" + "is-extendable": "^0.1.0" } - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true } } }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - } - } + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true }, - "babel-helper-bindify-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", - "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "dev": true, "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "babel-helper-define-map": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" } }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" } }, - "babel-helper-explode-class": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", - "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, "requires": { - "babel-helper-bindify-decorators": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "pako": "~1.0.5" } }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "browserslist": { + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.5.tgz", + "integrity": "sha512-0QFO1r/2c792Ohkit5XI8Cm8pDtZxgNl2H6HU4mHrpYz7314pEYcsAVVatM0l/YmxPnEzh9VygXouj4gkFUTKA==", "dev": true, "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "caniuse-lite": "^1.0.30000960", + "electron-to-chromium": "^1.3.124", + "node-releases": "^1.1.14" } }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" } }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" } }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", "dev": true, "requires": { - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "callsites": "^2.0.0" } }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "caller-callsite": "^2.0.0" } }, - "babel-loader": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", - "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "dev": true, "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "util.promisify": "^1.0.0" + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" } }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "caniuse-lite": { + "version": "1.0.30000963", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000963.tgz", + "integrity": "sha512-n4HUiullc7Lw0LyzpeLa2ffP8KxFBGdxqD/8G3bSL6oB758hZ2UE2CVK+tQN958tJIi0/tfpjAc67aAtoHgnrQ==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "chokidar": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", + "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" } }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-syntax-async-generators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", - "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", - "dev": true - }, - "babel-plugin-syntax-class-constructor-call": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", - "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=", - "dev": true - }, - "babel-plugin-syntax-class-properties": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", - "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", - "dev": true - }, - "babel-plugin-syntax-decorators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", - "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", - "dev": true - }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", - "dev": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "babel-plugin-syntax-export-extensions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", - "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", - "dev": true - }, - "babel-plugin-syntax-flow": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", - "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", - "dev": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", "dev": true }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "chrome-trace-event": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz", + "integrity": "sha512-sjndyZHrrWiu4RY7AkHgjn80GfAM2ZSzUkZLV/Js59Ldmh6JDThf0SUmOHU53rFu2rVxxfCzJ30Ukcfch3Gb/A==", "dev": true }, - "babel-plugin-transform-async-generator-functions": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", - "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-generators": "^6.5.0", - "babel-runtime": "^6.22.0" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } } }, - "babel-plugin-transform-class-constructor-call": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", - "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { - "babel-plugin-syntax-class-constructor-call": "^6.18.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, - "babel-plugin-transform-class-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", - "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-plugin-syntax-class-properties": "^6.8.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" } }, - "babel-plugin-transform-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", - "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", - "dev": true, - "requires": { - "babel-helper-explode-class": "^6.24.1", - "babel-plugin-syntax-decorators": "^6.13.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-types": "^6.24.1" - } + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "color": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.1.tgz", + "integrity": "sha512-PvUltIXRjehRKPSy89VnDWFKY58xyhTLyxIg21vwQBI6qLwZNPmC8k3C1uytIgFKEpOIzN4y32iPm8231zFHIg==", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "color-convert": "^1.9.1", + "color-string": "^1.5.2" } }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "color-name": "1.1.3" } }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true, - "requires": { - "babel-helper-define-map": "^6.24.1", - "babel-helper-function-name": "^6.24.1", - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-helper-replace-supers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "date-now": "^0.1.4" } }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "safe-buffer": "~5.1.1" } }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true, - "requires": { - "babel-helper-replace-supers": "^6.24.1", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true, - "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "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" } }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "copy-webpack-plugin": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz", + "integrity": "sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==", "dev": true, "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "p-limit": "^1.0.0", + "serialize-javascript": "^1.4.0" }, "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } }, - "regexpu-core": { + "p-locate": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" + "p-limit": "^1.1.0" } }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { - "jsesc": "~0.5.0" + "find-up": "^2.1.0" } } } }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "core-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.1.tgz", + "integrity": "sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew==", + "dev": true + }, + "core-js-compat": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.0.1.tgz", + "integrity": "sha512-2pC3e+Ht/1/gD7Sim/sqzvRplMiRnFQVlPpDVaHtY9l7zZP7knamr3VRD6NyGfHd84MrDC0tAM9ulNxYMW0T3g==", "dev": true, "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" + "browserslist": "^4.5.4", + "core-js": "3.0.1", + "core-js-pure": "3.0.1", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + } } }, - "babel-plugin-transform-export-extensions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", - "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", + "core-js-pure": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.0.1.tgz", + "integrity": "sha512-mSxeQ6IghKW3MoyF4cz19GJ1cMm7761ON+WObSyLfTu/Jn3x7w4NwNFnrZxgl4MTSvYYepVLNuRtlB4loMwJ5g==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "dev": true, "requires": { - "babel-plugin-syntax-export-extensions": "^6.8.0", - "babel-runtime": "^6.22.0" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" } }, - "babel-plugin-transform-flow-strip-types": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", - "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "dev": true, "requires": { - "babel-plugin-syntax-flow": "^6.18.0", - "babel-runtime": "^6.22.0" + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" } }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.8.0", - "babel-runtime": "^6.26.0" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { - "regenerator-transform": "^0.10.0" - }, - "dependencies": { - "regenerator-transform": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", - "dev": true, - "requires": { - "babel-runtime": "^6.18.0", - "babel-types": "^6.19.0", - "private": "^0.1.6" - } - } + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, - "babel-preset-es2015": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dev": true, "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.24.1", - "babel-plugin-transform-es2015-classes": "^6.24.1", - "babel-plugin-transform-es2015-computed-properties": "^6.24.1", - "babel-plugin-transform-es2015-destructuring": "^6.22.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", - "babel-plugin-transform-es2015-for-of": "^6.22.0", - "babel-plugin-transform-es2015-function-name": "^6.24.1", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-umd": "^6.24.1", - "babel-plugin-transform-es2015-object-super": "^6.24.1", - "babel-plugin-transform-es2015-parameters": "^6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", - "babel-plugin-transform-regenerator": "^6.24.1" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" } }, - "babel-preset-stage-1": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", - "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", "dev": true, "requires": { - "babel-plugin-transform-class-constructor-call": "^6.24.1", - "babel-plugin-transform-export-extensions": "^6.22.0", - "babel-preset-stage-2": "^6.24.1" + "postcss": "^7.0.1", + "timsort": "^0.3.0" } }, - "babel-preset-stage-2": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", - "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "css-loader": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.1.tgz", + "integrity": "sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==", "dev": true, "requires": { - "babel-plugin-syntax-dynamic-import": "^6.18.0", - "babel-plugin-transform-class-properties": "^6.24.1", - "babel-plugin-transform-decorators": "^6.24.1", - "babel-preset-stage-3": "^6.24.1" + "camelcase": "^5.2.0", + "icss-utils": "^4.1.0", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.14", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^2.0.6", + "postcss-modules-scope": "^2.1.0", + "postcss-modules-values": "^2.0.0", + "postcss-value-parser": "^3.3.0", + "schema-utils": "^1.0.0" } }, - "babel-preset-stage-3": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", - "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "css-select": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz", + "integrity": "sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==", "dev": true, "requires": { - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-generator-functions": "^6.24.1", - "babel-plugin-transform-async-to-generator": "^6.24.1", - "babel-plugin-transform-exponentiation-operator": "^6.24.1", - "babel-plugin-transform-object-rest-spread": "^6.22.0" + "boolbase": "^1.0.0", + "css-what": "^2.1.2", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" } }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-tree": { + "version": "1.0.0-alpha.28", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.28.tgz", + "integrity": "sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==", "dev": true, "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } + "mdn-data": "~1.1.0", + "source-map": "^0.5.3" } }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } - } + "css-unit-converter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", + "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", + "dev": true + }, + "css-url-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz", + "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=", + "dev": true + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - } + "postcss": "^7.0.0" } }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz", + "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", "dev": true, "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "css-tree": "1.0.0-alpha.29" }, "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "css-tree": { + "version": "1.0.0-alpha.29", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", + "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", "dev": true, "requires": { - "ms": "2.0.0" + "mdn-data": "~1.1.0", + "source-map": "^0.5.3" } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true } } }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - }, - "dependencies": { - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - } + "ms": "^2.1.1" } }, - "babylon": { - "version": "7.0.0-beta.47", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.47.tgz", - "integrity": "sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ==", + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", @@ -2133,1684 +2013,319 @@ } } }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", - "dev": true - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "binaryextensions": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.1.2.tgz", - "integrity": "sha512-xVNN69YGDghOqCCtA6FI7avYrr02mTJjOgB0/f1VPD3pJC8QEvjTKWc4epDx8AqxxA75NI0QpVM2gPJXUbE4Tg==", - "dev": true + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } }, - "bluebird": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz", - "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==", + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", "dev": true }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "path-type": "^3.0.0" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "domelementtype": "^1.3.0", + "entities": "^1.1.1" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", "dev": true, "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "dom-serializer": "0", + "domelementtype": "1" } }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "dev": true, "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "is-obj": "^1.0.0" } }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "dev": true, "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", + "end-of-stream": "^1.0.0", "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "electron-to-chromium": { + "version": "1.3.125", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.125.tgz", + "integrity": "sha512-XxowpqQxJ4nDwUXHtVtmEhRqBpm2OnjBomZmZtHD0d2Eo0244+Ojezhk3sD/MBSSe2nxCdGQFRXHIsf/LUTL9A==", + "dev": true + }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", "dev": true, "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" } }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "once": "^1.4.0" } }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", "dev": true, "requires": { - "pako": "~1.0.5" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" } }, - "browserslist": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.5.tgz", - "integrity": "sha512-0QFO1r/2c792Ohkit5XI8Cm8pDtZxgNl2H6HU4mHrpYz7314pEYcsAVVatM0l/YmxPnEzh9VygXouj4gkFUTKA==", + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000960", - "electron-to-chromium": "^1.3.124", - "node-releases": "^1.1.14" + "prr": "~1.0.1" } }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" } }, - "buffer-alloc": { + "es-to-primitive": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", "dev": true, "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" } }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, - "builtin-status-codes": { + "events": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", "dev": true }, - "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "cross-spawn": "^6.0.0", + "get-stream": "^4.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" } }, - "cacheable-request": { + "expand-brackets": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "dev": true - }, - "normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" + "ms": "2.0.0" } }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, - "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" + "is-descriptor": "^0.1.0" } }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-plain-obj": "^1.0.0" + "is-extendable": "^0.1.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", - "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", - "dev": true, - "requires": { - "browserslist": "^1.3.6", - "caniuse-db": "^1.0.30000529", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - }, - "dependencies": { - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - } - } - } - }, - "caniuse-db": { - "version": "1.0.30000963", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000963.tgz", - "integrity": "sha512-5Qk1jSsqRY3dD7BAjU018y0MsznzYb+kMTKzGknue8vSWlHkw2S345vRnd0cVEerzZ6ugUfoKaUOOVbBxWLWCA==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30000963", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000963.tgz", - "integrity": "sha512-n4HUiullc7Lw0LyzpeLa2ffP8KxFBGdxqD/8G3bSL6oB758hZ2UE2CVK+tQN958tJIi0/tfpjAc67aAtoHgnrQ==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true - }, - "chokidar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", - "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", - "dev": true - }, - "chrome-trace-event": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz", - "integrity": "sha512-sjndyZHrrWiu4RY7AkHgjn80GfAM2ZSzUkZLV/Js59Ldmh6JDThf0SUmOHU53rFu2rVxxfCzJ30Ukcfch3Gb/A==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "clap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", - "dev": true, - "requires": { - "chalk": "^1.1.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-table": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", - "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", - "dev": true, - "requires": { - "colors": "1.0.3" - }, - "dependencies": { - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "dev": true - } - } - }, - "cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", - "dev": true, - "requires": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - } - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "dev": true - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "cloneable-readable": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", - "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "coa": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", - "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", - "dev": true, - "requires": { - "q": "^1.1.2" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", - "dev": true, - "requires": { - "clone": "^1.0.2", - "color-convert": "^1.3.0", - "color-string": "^0.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "dev": true, - "requires": { - "color-name": "^1.0.0" - } - }, - "colormin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", - "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", - "dev": true, - "requires": { - "color": "^0.11.0", - "css-color-names": "0.0.4", - "has": "^1.0.1" - } - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "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" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "copy-webpack-plugin": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz", - "integrity": "sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==", - "dev": true, - "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "globby": "^7.1.1", - "is-glob": "^4.0.0", - "loader-utils": "^1.1.0", - "minimatch": "^3.0.4", - "p-limit": "^1.0.0", - "serialize-javascript": "^1.4.0" - }, - "dependencies": { - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - } - } - }, - "core-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.1.tgz", - "integrity": "sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew==", - "dev": true - }, - "core-js-compat": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.0.1.tgz", - "integrity": "sha512-2pC3e+Ht/1/gD7Sim/sqzvRplMiRnFQVlPpDVaHtY9l7zZP7knamr3VRD6NyGfHd84MrDC0tAM9ulNxYMW0T3g==", - "dev": true, - "requires": { - "browserslist": "^4.5.4", - "core-js": "3.0.1", - "core-js-pure": "3.0.1", - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", - "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", - "dev": true - } - } - }, - "core-js-pure": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.0.1.tgz", - "integrity": "sha512-mSxeQ6IghKW3MoyF4cz19GJ1cMm7761ON+WObSyLfTu/Jn3x7w4NwNFnrZxgl4MTSvYYepVLNuRtlB4loMwJ5g==", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-loader": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.1.tgz", - "integrity": "sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==", - "dev": true, - "requires": { - "camelcase": "^5.2.0", - "icss-utils": "^4.1.0", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.14", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^2.0.6", - "postcss-modules-scope": "^2.1.0", - "postcss-modules-values": "^2.0.0", - "postcss-value-parser": "^3.3.0", - "schema-utils": "^1.0.0" - } - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssnano": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", - "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", - "dev": true, - "requires": { - "autoprefixer": "^6.3.1", - "decamelize": "^1.1.2", - "defined": "^1.0.0", - "has": "^1.0.1", - "object-assign": "^4.0.1", - "postcss": "^5.0.14", - "postcss-calc": "^5.2.0", - "postcss-colormin": "^2.1.8", - "postcss-convert-values": "^2.3.4", - "postcss-discard-comments": "^2.0.4", - "postcss-discard-duplicates": "^2.0.1", - "postcss-discard-empty": "^2.0.1", - "postcss-discard-overridden": "^0.1.1", - "postcss-discard-unused": "^2.2.1", - "postcss-filter-plugins": "^2.0.0", - "postcss-merge-idents": "^2.1.5", - "postcss-merge-longhand": "^2.0.1", - "postcss-merge-rules": "^2.0.3", - "postcss-minify-font-values": "^1.0.2", - "postcss-minify-gradients": "^1.0.1", - "postcss-minify-params": "^1.0.4", - "postcss-minify-selectors": "^2.0.4", - "postcss-normalize-charset": "^1.1.0", - "postcss-normalize-url": "^3.0.7", - "postcss-ordered-values": "^2.1.0", - "postcss-reduce-idents": "^2.2.2", - "postcss-reduce-initial": "^1.0.0", - "postcss-reduce-transforms": "^1.0.3", - "postcss-svgo": "^2.1.1", - "postcss-unique-selectors": "^2.0.2", - "postcss-value-parser": "^3.2.3", - "postcss-zindex": "^2.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "csso": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", - "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", - "dev": true, - "requires": { - "clap": "^1.0.9", - "source-map": "^0.5.3" - } - }, - "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", - "dev": true - }, - "dargs": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz", - "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=", - "dev": true - }, - "date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", - "dev": true - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "detect-conflict": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/detect-conflict/-/detect-conflict-1.0.1.tgz", - "integrity": "sha1-CIZXpmqWHAUBnbfEIwiDsca0F24=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "^3.0.0" - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "editions": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/editions/-/editions-2.1.3.tgz", - "integrity": "sha512-xDZyVm0A4nLgMNWVVLJvcwMjI80ShiH/27RyLiCnW1L273TcJIA25C4pwJ33AWV01OX6UriP35Xu+lH4S7HWQw==", - "dev": true, - "requires": { - "errlop": "^1.1.1", - "semver": "^5.6.0" - } - }, - "ejs": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", - "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.125", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.125.tgz", - "integrity": "sha512-XxowpqQxJ4nDwUXHtVtmEhRqBpm2OnjBomZmZtHD0d2Eo0244+Ojezhk3sD/MBSSe2nxCdGQFRXHIsf/LUTL9A==", - "dev": true - }, - "elegant-spinner": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", - "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", - "dev": true - }, - "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" - } - }, - "envinfo": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-5.12.1.tgz", - "integrity": "sha512-pwdo0/G3CIkQ0y6PCXq4RdkvId2elvtPCJMG0konqlrfkWQbf1DWeH9K2b/cvu2YgGvPPTOnonZxXM1gikFu1w==", - "dev": true - }, - "errlop": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/errlop/-/errlop-1.1.1.tgz", - "integrity": "sha512-WX7QjiPHhsny7/PQvrhS5VMizXXKoKCS3udaBp8gjlARdbn+XmK300eKBAAN0hGyRaTCtRpOaxK+xFVPUJ3zkw==", - "dev": true, - "requires": { - "editions": "^2.1.2" - } - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", - "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", - "dev": true, - "requires": { - "string-template": "~0.2.1", - "xtend": "~4.0.0" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "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" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", "dev": true, "requires": { "homedir-polyfill": "^1.0.1" @@ -3837,17 +2352,6 @@ } } }, - "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "dev": true, - "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - } - }, "extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", @@ -3919,41 +2423,12 @@ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, - "fast-glob": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz", - "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "dev": true }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -3997,27 +2472,29 @@ "locate-path": "^3.0.0" } }, - "first-chunk-stream": { + "findup-sync": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", - "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", "dev": true, "requires": { - "readable-stream": "^2.0.2" + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } } }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", - "dev": true - }, - "flow-parser": { - "version": "0.97.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.97.0.tgz", - "integrity": "sha512-+7ubRHBEF6n4QQNUIDCVdqD7TuahvHUBzzj7Lf9u1Pn3i6UplL6SRdP0s9/Hdn+4BDX3zJG1HWkcf4h5IQMvvQ==", - "dev": true - }, "flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -4034,15 +2511,6 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -4100,7 +2568,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -4121,12 +2590,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4141,17 +2612,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -4268,7 +2742,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -4280,6 +2755,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -4294,6 +2770,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -4301,12 +2778,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -4325,6 +2804,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -4405,7 +2885,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -4417,6 +2898,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -4502,7 +2984,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -4538,6 +3021,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -4557,6 +3041,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -4600,12 +3085,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -4622,83 +3109,31 @@ "dev": true }, "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "gh-got": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gh-got/-/gh-got-6.0.0.tgz", - "integrity": "sha512-F/mS+fsWQMo1zfgG9MD8KWvTWPPzzhuVwY++fhQ5Ggd+0P+CAMHtzMZhNxG+TqGfHDChJKsbh6otfMGqO2AKBw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "requires": { - "got": "^7.0.0", - "is-plain-obj": "^1.1.0" + "pump": "^3.0.0" }, "dependencies": { - "got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", - "dev": true, - "requires": { - "decompress-response": "^3.2.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-plain-obj": "^1.1.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.1.1", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "url-parse-lax": "^1.0.0", - "url-to-options": "^1.0.1" - } - }, - "p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", - "dev": true - }, - "p-timeout": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", - "dev": true, - "requires": { - "p-finally": "^1.0.0" - } - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, "requires": { - "prepend-http": "^1.0.1" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } } } }, - "github-username": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/github-username/-/github-username-4.1.0.tgz", - "integrity": "sha1-y+KABBiDIG2kISrp5LXxacML9Bc=", - "dev": true, - "requires": { - "gh-got": "^6.0.0" - } + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true }, "glob": { "version": "7.1.3", @@ -4714,69 +3149,6 @@ "path-is-absolute": "^1.0.0" } }, - "glob-all": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.1.0.tgz", - "integrity": "sha1-iRPd+17hrHgSZWJBsD1SF8ZLAqs=", - "dev": true, - "requires": { - "glob": "^7.0.5", - "yargs": "~1.2.6" - }, - "dependencies": { - "minimist": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.1.0.tgz", - "integrity": "sha1-md9lelJXTCHJBXSX33QnkLK0wN4=", - "dev": true - }, - "yargs": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.2.6.tgz", - "integrity": "sha1-nHtKgv1dWVsr8Xq23MQxNUMv40s=", - "dev": true, - "requires": { - "minimist": "^0.1.0" - } - } - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } - }, "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", @@ -4798,12 +3170,6 @@ } } }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, "global-modules": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", @@ -4839,46 +3205,13 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", "dev": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "got": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", - "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" + "slash": "^1.0.0" }, "dependencies": { "pify": { @@ -4895,15 +3228,6 @@ "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "dev": true }, - "grouped-queue": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/grouped-queue/-/grouped-queue-0.3.3.tgz", - "integrity": "sha1-wWfSpTGcWg4JZO9qJbfC34mWyFw=", - "dev": true, - "requires": { - "lodash": "^4.17.2" - } - }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -4913,48 +3237,18 @@ "function-bind": "^1.1.1" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-color": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", - "dev": true - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", - "dev": true - }, "has-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", "dev": true }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "dev": true, - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -5007,6 +3301,12 @@ "minimalistic-assert": "^1.0.1" } }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -5018,16 +3318,6 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, "homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -5037,10 +3327,16 @@ "parse-passwd": "^1.0.0" } }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", "dev": true }, "html-comment-regex": { @@ -5049,27 +3345,12 @@ "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", "dev": true }, - "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", - "dev": true - }, "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, "icss-replace-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", @@ -5103,68 +3384,24 @@ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", "dev": true }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, "import-local": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", - "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", "dev": true, "requires": { - "pkg-dir": "^2.0.0", + "pkg-dir": "^3.0.0", "resolve-cwd": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - } } }, "imurmurhash": { @@ -5173,12 +3410,6 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", @@ -5213,60 +3444,12 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, - "inquirer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", - "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.1.0", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^5.5.2", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, "interpret": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", "dev": true }, - "into-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", - "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", - "dev": true, - "requires": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" - } - }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -5277,9 +3460,9 @@ } }, "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, "is-absolute-url": { @@ -5335,6 +3518,20 @@ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", "dev": true }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -5380,21 +3577,12 @@ } } }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", "dev": true }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -5407,15 +3595,6 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", @@ -5451,33 +3630,10 @@ } } }, - "is-object": { + "is-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", - "dev": true - }, - "is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", - "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", - "dev": true, - "requires": { - "symbol-observable": "^1.1.0" - }, - "dependencies": { - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "dev": true - } - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, "is-plain-object": { @@ -5489,24 +3645,6 @@ "isobject": "^3.0.1" } }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, "is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", @@ -5516,21 +3654,12 @@ "has": "^1.0.1" } }, - "is-retry-allowed": { + "is-resolvable": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, - "is-scoped": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-scoped/-/is-scoped-1.0.0.tgz", - "integrity": "sha1-RJypgpnnEwOCViieyytUDcQ3yzA=", - "dev": true, - "requires": { - "scoped-regex": "^1.0.0" - } - }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -5538,9 +3667,9 @@ "dev": true }, "is-svg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", - "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", "dev": true, "requires": { "html-comment-regex": "^1.1.0" @@ -5555,12 +3684,6 @@ "has-symbols": "^1.0.0" } }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -5573,15 +3696,6 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, - "isbinaryfile": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", - "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", - "dev": true, - "requires": { - "buffer-alloc": "^1.2.0" - } - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -5594,33 +3708,6 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "istextorbinary": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.5.1.tgz", - "integrity": "sha512-pv/JNPWnfpwGjPx7JrtWTwsWsxkrK3fNzcEVnt92YKEIErps4Fsk49+qzCe9iQF2hjqK8Naqf8P9kzoeCuQI1g==", - "dev": true, - "requires": { - "binaryextensions": "^2.1.2", - "editions": "^2.1.3", - "textextensions": "^2.4.0" - } - }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "dev": true, - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } - }, - "js-base64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", - "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", - "dev": true - }, "js-levenshtein": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", @@ -5634,136 +3721,13 @@ "dev": true }, "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^2.6.0" - } - }, - "jscodeshift": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.5.1.tgz", - "integrity": "sha512-sRMollbhbmSDrR79JMAnhEjyZJlQQVozeeY9A6/KNuV26DNcuB3mGSCWXp0hks9dcwRNOELbNOiwraZaXXRk5Q==", - "dev": true, - "requires": { - "babel-plugin-transform-flow-strip-types": "^6.8.0", - "babel-preset-es2015": "^6.9.0", - "babel-preset-stage-1": "^6.5.0", - "babel-register": "^6.9.0", - "babylon": "^7.0.0-beta.47", - "colors": "^1.1.2", - "flow-parser": "^0.*", - "lodash": "^4.13.1", - "micromatch": "^2.3.7", - "neo-async": "^2.5.0", - "node-dir": "0.1.8", - "nomnom": "^1.8.1", - "recast": "^0.15.0", - "temp": "^0.8.1", - "write-file-atomic": "^1.2.0" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.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" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jsesc": { @@ -5772,12 +3736,6 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -5799,15 +3757,6 @@ "minimist": "^1.2.0" } }, - "keyv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", - "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } - }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", @@ -5825,146 +3774,12 @@ } }, "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "listr": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", - "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", - "dev": true, - "requires": { - "@samverschueren/stream-to-observable": "^0.3.0", - "is-observable": "^1.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.5.0", - "listr-verbose-renderer": "^0.5.0", - "p-map": "^2.0.0", - "rxjs": "^6.3.3" - }, - "dependencies": { - "rxjs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.1.tgz", - "integrity": "sha512-y0j31WJc83wPu31vS1VlAFW5JGrnGC+j+TtGAa1fRQphy48+fDYiDmX8tjGloToEsMkxnouOg/1IzXGKkJnZMg==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - } - } - }, - "listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", - "dev": true - }, - "listr-update-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", - "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^2.3.0", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "dev": true, - "requires": { - "chalk": "^1.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "listr-verbose-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", - "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "cli-cursor": "^2.1.0", - "date-fns": "^1.27.2", - "figures": "^2.0.0" - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } + "invert-kv": "^2.0.0" } }, "loader-runner": { @@ -6023,26 +3838,6 @@ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", "dev": true }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "log-update": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", - "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", - "dev": true, - "requires": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" - } - }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -6052,12 +3847,6 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -6078,6 +3867,15 @@ "semver": "^5.6.0" } }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -6093,18 +3891,6 @@ "object-visit": "^1.0.0" } }, - "math-expression-evaluator": { - "version": "1.2.17", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", - "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", - "dev": true - }, - "math-random": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", - "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", - "dev": true - }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -6116,77 +3902,21 @@ "safe-buffer": "^5.1.2" } }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "mem-fs": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/mem-fs/-/mem-fs-1.1.3.tgz", - "integrity": "sha1-uK6NLj/Lb10/kWXBLUVRoGXZicw=", - "dev": true, - "requires": { - "through2": "^2.0.0", - "vinyl": "^1.1.0", - "vinyl-file": "^2.0.0" - } + "mdn-data": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", + "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==", + "dev": true }, - "mem-fs-editor": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-4.0.3.tgz", - "integrity": "sha512-tgWmwI/+6vwu6POan82dTjxEpwAoaj0NAFnghtVo/FcLK2/7IhPUtFUUYlwou4MOY6OtjTUJtwpfH1h+eSUziw==", + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", "dev": true, "requires": { - "commondir": "^1.0.1", - "deep-extend": "^0.6.0", - "ejs": "^2.5.9", - "glob": "^7.0.3", - "globby": "^7.1.1", - "isbinaryfile": "^3.0.2", - "mkdirp": "^0.5.0", - "multimatch": "^2.0.0", - "rimraf": "^2.2.8", - "through2": "^2.0.0", - "vinyl": "^2.0.1" - }, - "dependencies": { - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", - "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - } + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" } }, "memory-fs": { @@ -6199,12 +3929,6 @@ "readable-stream": "^2.0.1" } }, - "merge2": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", - "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==", - "dev": true - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -6237,15 +3961,9 @@ } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "mini-css-extract-plugin": { @@ -6362,24 +4080,6 @@ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, - "multimatch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", - "dev": true, - "requires": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" - } - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, "nan": { "version": "2.13.2", "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", @@ -6418,12 +4118,6 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node-dir": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.8.tgz", - "integrity": "sha1-VfuN62mQcHB/tn+RpGDwRIKUx30=", - "dev": true - }, "node-libs-browser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", @@ -6472,76 +4166,17 @@ "semver": "^5.3.0" } }, - "nomnom": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", - "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", - "dev": true, - "requires": { - "chalk": "~0.4.0", - "underscore": "~1.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "dev": true - }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "dev": true, - "requires": { - "ansi-styles": "~1.0.0", - "has-color": "~0.1.0", - "strip-ansi": "~0.1.0" - } - }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true - } - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true }, "npm-run-path": { "version": "2.0.2", @@ -6552,11 +4187,14 @@ "path-key": "^2.0.0" } }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } }, "number-is-nan": { "version": "1.0.1", @@ -6564,12 +4202,6 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -6626,16 +4258,6 @@ "es-abstract": "^1.5.1" } }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -6645,6 +4267,18 @@ "isobject": "^3.0.1" } }, + "object.values": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", + "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -6654,22 +4288,13 @@ "wrappy": "1" } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, "optimize-css-assets-webpack-plugin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-4.0.3.tgz", - "integrity": "sha512-iOfMsuGMPbM/bZZ731gwtAXfXjIkR97BXqUXsPGIzBaQzpvqajsoIFlR+z+Q7FLcq2TmV4JFGo80d98ttfRzhA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-Rqm6sSjWtx9FchdP0uzTQDc7GXDKnwVEGoSxjezPkzMewx7gEWE9IMUYKmigTRC4U3RaNSwYVnUDLuIdtTpm0A==", "dev": true, "requires": { - "cssnano": "^3.10.0", + "cssnano": "^4.1.0", "last-call-webpack-plugin": "^3.0.0" } }, @@ -6679,43 +4304,22 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", "dev": true, "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" } }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-cancelable": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", - "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", - "dev": true - }, - "p-each-series": { + "p-defer": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", - "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", - "dev": true, - "requires": { - "p-reduce": "^1.0.0" - } + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", @@ -6724,15 +4328,9 @@ "dev": true }, "p-is-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", - "dev": true - }, - "p-lazy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-lazy/-/p-lazy-1.0.0.tgz", - "integrity": "sha1-7FPIAvLuOsKPFmzILQsrAt4nqDU=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", "dev": true }, "p-limit": { @@ -6753,27 +4351,6 @@ "p-limit": "^2.0.0" } }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", - "dev": true - }, - "p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "dev": true, - "requires": { - "p-finally": "^1.0.0" - } - }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -6805,39 +4382,10 @@ "requires": { "asn1.js": "^4.0.0", "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" } }, "parse-json": { @@ -6940,1160 +4488,236 @@ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "requires": { - "find-up": "^3.0.0" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", - "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-calc": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", - "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "dev": true, - "requires": { - "postcss": "^5.0.2", - "postcss-message-helpers": "^2.0.0", - "reduce-css-calc": "^1.2.6" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-colormin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", - "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", - "dev": true, - "requires": { - "colormin": "^1.0.5", - "postcss": "^5.0.13", - "postcss-value-parser": "^3.2.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-convert-values": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", - "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", - "dev": true, - "requires": { - "postcss": "^5.0.11", - "postcss-value-parser": "^3.1.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-discard-comments": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", - "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", - "dev": true, - "requires": { - "postcss": "^5.0.14" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-discard-duplicates": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", - "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", - "dev": true, - "requires": { - "postcss": "^5.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-discard-empty": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", - "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", - "dev": true, - "requires": { - "postcss": "^5.0.14" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "postcss-discard-overridden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", - "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", - "dev": true, - "requires": { - "postcss": "^5.0.16" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } + "find-up": "^3.0.0" } }, - "postcss-discard-unused": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", - "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", + "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", "dev": true, "requires": { - "postcss": "^5.0.14", - "uniqs": "^2.0.0" + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "^1.0.0" + "has-flag": "^3.0.0" } } } }, - "postcss-filter-plugins": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", - "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", + "postcss-calc": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", + "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", "dev": true, "requires": { - "postcss": "^5.0.4" + "css-unit-converter": "^1.1.1", + "postcss": "^7.0.5", + "postcss-selector-parser": "^5.0.0-rc.4", + "postcss-value-parser": "^3.3.1" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "dev": true, "requires": { - "has-flag": "^1.0.0" + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" } } } }, - "postcss-merge-idents": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", - "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", "dev": true, "requires": { - "has": "^1.0.1", - "postcss": "^5.0.10", - "postcss-value-parser": "^3.1.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "postcss-merge-longhand": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", - "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", "dev": true, "requires": { - "postcss": "^5.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "postcss-merge-rules": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", - "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", "dev": true, "requires": { - "browserslist": "^1.5.2", - "caniuse-api": "^1.5.2", - "postcss": "^5.0.4", - "postcss-selector-parser": "^2.2.2", - "vendors": "^1.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "dev": true, - "requires": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } + "postcss": "^7.0.0" } }, - "postcss-message-helpers": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", - "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", - "dev": true + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } }, - "postcss-minify-font-values": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", - "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", "dev": true, "requires": { - "object-assign": "^4.0.1", - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } + "postcss": "^7.0.0" } }, - "postcss-minify-gradients": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", - "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", "dev": true, "requires": { - "postcss": "^5.0.12", - "postcss-value-parser": "^3.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } + "postcss": "^7.0.0" } }, - "postcss-minify-params": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", - "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", "dev": true, "requires": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.2", - "postcss-value-parser": "^3.0.2", - "uniqs": "^2.0.0" + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", "dev": true, "requires": { - "has-flag": "^1.0.0" + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" } } } }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + } + }, "postcss-minify-selectors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", - "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", "dev": true, "requires": { - "alphanum-sort": "^1.0.2", - "has": "^1.0.1", - "postcss": "^5.0.14", - "postcss-selector-parser": "^2.0.0" + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", "dev": true, "requires": { - "flatten": "^1.0.2", + "dot-prop": "^4.1.1", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } } } }, @@ -8138,400 +4762,137 @@ } }, "postcss-normalize-charset": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", - "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", "dev": true, "requires": { - "postcss": "^5.0.5" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, "postcss-normalize-url": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", - "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", "dev": true, "requires": { "is-absolute-url": "^2.0.0", - "normalize-url": "^1.4.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "postcss-ordered-values": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", - "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", "dev": true, "requires": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, - "postcss-reduce-idents": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", - "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", "dev": true, "requires": { - "postcss": "^5.0.4", - "postcss-value-parser": "^3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, "postcss-reduce-initial": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", - "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", "dev": true, "requires": { - "postcss": "^5.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" } }, "postcss-reduce-transforms": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", - "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", "dev": true, "requires": { - "has": "^1.0.1", - "postcss": "^5.0.8", - "postcss-value-parser": "^3.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" } }, "postcss-selector-parser": { @@ -8540,144 +4901,32 @@ "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", "dev": true, "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "postcss-svgo": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", - "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", - "dev": true, - "requires": { - "is-svg": "^2.0.0", - "postcss": "^5.0.14", - "postcss-value-parser": "^3.2.3", - "svgo": "^0.7.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" } }, "postcss-unique-selectors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", - "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", "dev": true, "requires": { - "alphanum-sort": "^1.0.1", - "postcss": "^5.0.4", + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", "uniqs": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } } }, "postcss-value-parser": { @@ -8686,97 +4935,6 @@ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true }, - "postcss-zindex": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", - "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", - "dev": true, - "requires": { - "has": "^1.0.1", - "postcss": "^5.0.4", - "uniqs": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "prettier": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.17.0.tgz", - "integrity": "sha512-sXe5lSt2WQlCbydGETgfm1YBShgOX4HxQkFPvbxkcwgDvGDeqVau8h+12+lmSVlP3rHPz0oavfddSZg/q+Szjw==", - "dev": true - }, - "pretty-bytes": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", - "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", - "dev": true - }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -8860,16 +5018,6 @@ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "dev": true }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -8882,25 +5030,6 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, - "randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "dev": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -8920,90 +5049,6 @@ "safe-buffer": "^5.1.0" } }, - "read-chunk": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-2.1.0.tgz", - "integrity": "sha1-agTAkoAF7Z1C4aasVgDhnLx/9lU=", - "dev": true, - "requires": { - "pify": "^3.0.0", - "safe-buffer": "^5.1.1" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - } - } - }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", @@ -9030,77 +5075,6 @@ "readable-stream": "^2.0.2" } }, - "recast": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.15.5.tgz", - "integrity": "sha512-nkAYNqarh73cMWRKFiPQ8I9dOLFvFk6SnG8u/LUlOYfArDOD/EjsVRAs860TlBLrpxqAXHGET/AUAVjdEymL5w==", - "dev": true, - "requires": { - "ast-types": "0.11.5", - "esprima": "~4.0.0", - "private": "~0.1.5", - "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "reduce-css-calc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", - "dev": true, - "requires": { - "balanced-match": "^0.4.2", - "math-expression-evaluator": "^1.2.14", - "reduce-function-call": "^1.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "reduce-function-call": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", - "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", - "dev": true, - "requires": { - "balanced-match": "^0.4.2" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, "regenerate": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", @@ -9116,12 +5090,6 @@ "regenerate": "^1.4.0" } }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, "regenerator-transform": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.4.tgz", @@ -9131,15 +5099,6 @@ "private": "^0.1.6" } }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -9211,21 +5170,6 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -9278,31 +5222,24 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -9322,15 +5259,6 @@ "inherits": "^2.0.1" } }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } - }, "run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", @@ -9340,15 +5268,6 @@ "aproba": "^1.1.1" } }, - "rxjs": { - "version": "5.5.12", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", - "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", - "dev": true, - "requires": { - "symbol-observable": "1.0.1" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -9364,12 +5283,6 @@ "ret": "~0.1.10" } }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -9387,12 +5300,6 @@ "ajv-keywords": "^3.1.0" } }, - "scoped-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/scoped-regex/-/scoped-regex-1.0.0.tgz", - "integrity": "sha1-o0a7Gs1CB65wvXwMfKnlZra63bg=", - "dev": true - }, "semver": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", @@ -9465,41 +5372,35 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, - "shelljs": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", - "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true - }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", - "dev": true - }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -9622,15 +5523,6 @@ } } }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, "source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -9656,53 +5548,12 @@ "urix": "^0.1.0" } }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - }, "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", - "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", - "dev": true - }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -9727,6 +5578,12 @@ "safe-buffer": "^5.1.1" } }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -9787,18 +5644,6 @@ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true - }, - "string-template": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", - "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", - "dev": true - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -9807,23 +5652,6 @@ "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } } }, "string_decoder": { @@ -9836,31 +5664,12 @@ } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-bom-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", - "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "first-chunk-stream": "^2.0.0", - "strip-bom": "^2.0.0" + "ansi-regex": "^3.0.0" } }, "strip-eof": { @@ -9869,6 +5678,30 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -9879,68 +5712,33 @@ } }, "svgo": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", - "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.2.2.tgz", + "integrity": "sha512-rAfulcwp2D9jjdGu+0CuqlrAUin6bBWrpoqXWwKDZZZJfXcUXQSxLJOFJCQCSA0x0pP2U0TxSlJu2ROq5Bq6qA==", "dev": true, "requires": { - "coa": "~1.0.1", - "colors": "~1.1.2", - "csso": "~2.3.1", - "js-yaml": "~3.7.0", + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.28", + "css-url-regex": "^1.1.0", + "csso": "^3.5.1", + "js-yaml": "^3.13.1", "mkdirp": "~0.5.1", - "sax": "~1.2.1", - "whet.extend": "~0.9.9" + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" } }, - "symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", - "dev": true - }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true }, - "temp": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", - "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", - "dev": true, - "requires": { - "os-tmpdir": "^1.0.0", - "rimraf": "~2.2.6" - }, - "dependencies": { - "rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", - "dev": true - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "textextensions": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.4.0.tgz", - "integrity": "sha512-qftQXnX1DzpSV8EddtHIT0eDDEiBF8ywhFYR2lI9xrGtxqKN+CvLXhACeCIGbCpQfxxERbrkZEFb8cZcDKbVZA==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -9951,12 +5749,6 @@ "xtend": "~4.0.1" } }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true - }, "timers-browserify": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", @@ -9966,14 +5758,11 @@ "setimmediate": "^1.0.4" } }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true }, "to-arraybuffer": { "version": "1.0.1", @@ -10035,12 +5824,6 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true - }, "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", @@ -10183,12 +5966,6 @@ } } }, - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", - "dev": true - }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -10282,6 +6059,12 @@ "imurmurhash": "^0.1.4" } }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -10322,12 +6105,6 @@ } } }, - "untildify": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz", - "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==", - "dev": true - }, "upath": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", @@ -10367,29 +6144,6 @@ } } }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - }, - "dependencies": { - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - } - } - }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", - "dev": true - }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -10422,60 +6176,17 @@ } }, "v8-compile-cache": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", - "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", + "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", "dev": true }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "vendors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", - "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz", + "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==", "dev": true }, - "vinyl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", - "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", - "dev": true, - "requires": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" - } - }, - "vinyl-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-2.0.0.tgz", - "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.3.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0", - "strip-bom-stream": "^2.0.0", - "vinyl": "^1.1.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, "vm-browserify": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", @@ -10511,237 +6222,47 @@ "eslint-scope": "^3.7.1", "loader-runner": "^2.3.0", "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.2", - "tapable": "^1.0.0", - "uglifyjs-webpack-plugin": "^1.2.4", - "watchpack": "^1.5.0", - "webpack-sources": "^1.0.1" - }, - "dependencies": { - "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "webpack-addons": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/webpack-addons/-/webpack-addons-1.1.5.tgz", - "integrity": "sha512-MGO0nVniCLFAQz1qv22zM02QPjcpAoJdy7ED0i3Zy7SY1IecgXCm460ib7H/Wq7e9oL5VL6S2BxaObxwIcag0g==", - "dev": true, - "requires": { - "jscodeshift": "^0.4.0" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "ast-types": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.10.1.tgz", - "integrity": "sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ==", - "dev": true - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "jscodeshift": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.4.1.tgz", - "integrity": "sha512-iOX6If+hsw0q99V3n31t4f5VlD1TQZddH08xbT65ZqA7T4Vkx68emrDZMUOLVvCEAJ6NpAk7DECe3fjC/t52AQ==", - "dev": true, - "requires": { - "async": "^1.5.0", - "babel-plugin-transform-flow-strip-types": "^6.8.0", - "babel-preset-es2015": "^6.9.0", - "babel-preset-stage-1": "^6.5.0", - "babel-register": "^6.9.0", - "babylon": "^6.17.3", - "colors": "^1.1.2", - "flow-parser": "^0.*", - "lodash": "^4.13.1", - "micromatch": "^2.3.7", - "node-dir": "0.1.8", - "nomnom": "^1.8.1", - "recast": "^0.12.5", - "temp": "^0.8.1", - "write-file-atomic": "^1.2.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.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" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "recast": { - "version": "0.12.9", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.12.9.tgz", - "integrity": "sha512-y7ANxCWmMW8xLOaiopiRDlyjQ9ajKRENBH+2wjntIbk3A6ZR1+BLQttkmSHMY7Arl+AAZFwJ10grg2T6f1WI8A==", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.2", + "tapable": "^1.0.0", + "uglifyjs-webpack-plugin": "^1.2.4", + "watchpack": "^1.5.0", + "webpack-sources": "^1.0.1" + }, + "dependencies": { + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", "dev": true, "requires": { - "ast-types": "0.10.1", - "core-js": "^2.4.1", - "esprima": "~4.0.0", - "private": "~0.1.5", - "source-map": "~0.6.1" + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true } } }, "webpack-cli": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-2.1.5.tgz", - "integrity": "sha512-CiWQR+1JS77rmyiO6y1q8Kt/O+e8nUUC9YfJ25JtSmzDwbqJV7vIsh3+QKRHVTbTCa0DaVh8iY1LBiagUIDB3g==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.2.tgz", + "integrity": "sha512-FLkobnaJJ+03j5eplxlI0TUxhGCOdfewspIGuvDVtpOlrAuKMFC57K42Ukxqs1tn8947/PM6tP95gQc0DCzRYA==", "dev": true, "requires": { "chalk": "^2.4.1", "cross-spawn": "^6.0.5", - "diff": "^3.5.0", - "enhanced-resolve": "^4.0.0", - "envinfo": "^5.7.0", - "glob-all": "^3.1.0", + "enhanced-resolve": "^4.1.0", + "findup-sync": "^2.0.0", "global-modules": "^1.0.0", - "got": "^8.3.1", - "import-local": "^1.0.0", - "inquirer": "^5.2.0", + "import-local": "^2.0.0", "interpret": "^1.1.0", - "jscodeshift": "^0.5.0", - "listr": "^0.14.1", "loader-utils": "^1.1.0", - "lodash": "^4.17.10", - "log-symbols": "^2.2.0", - "mkdirp": "^0.5.1", - "p-each-series": "^1.0.0", - "p-lazy": "^1.0.0", - "prettier": "^1.12.1", - "supports-color": "^5.4.0", - "v8-compile-cache": "^2.0.0", - "webpack-addons": "^1.1.5", - "yargs": "^11.1.0", - "yeoman-environment": "^2.1.1", - "yeoman-generator": "^2.0.5" + "supports-color": "^5.5.0", + "v8-compile-cache": "^2.0.2", + "yargs": "^12.0.5" } }, "webpack-sources": { @@ -10762,12 +6283,6 @@ } } }, - "whet.extend": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", - "dev": true - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -10793,28 +6308,48 @@ } }, "wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^2.0.0" } } } @@ -10825,17 +6360,6 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" - } - }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", @@ -10855,348 +6379,33 @@ "dev": true }, "yargs": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", "dev": true, "requires": { "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", + "os-locale": "^3.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": "^9.0.2" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - } + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" } }, "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - } - } - }, - "yeoman-environment": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.3.4.tgz", - "integrity": "sha512-KLxE5ft/74Qj7h3AsQZv8G6MEEHYJwmD5F99nfOVaep3rBzCtbrJKkdqWc7bDV141Nr8UZZsIXmzc3IcCm6E2w==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "debug": "^3.1.0", - "diff": "^3.5.0", - "escape-string-regexp": "^1.0.2", - "globby": "^8.0.1", - "grouped-queue": "^0.3.3", - "inquirer": "^6.0.0", - "is-scoped": "^1.0.0", - "lodash": "^4.17.10", - "log-symbols": "^2.2.0", - "mem-fs": "^1.1.0", - "strip-ansi": "^4.0.0", - "text-table": "^0.2.0", - "untildify": "^3.0.3" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", - "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" - } - }, - "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "globby": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", - "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - }, - "inquirer": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", - "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", - "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.11", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "dependencies": { - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "rxjs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.1.tgz", - "integrity": "sha512-y0j31WJc83wPu31vS1VlAFW5JGrnGC+j+TtGAa1fRQphy48+fDYiDmX8tjGloToEsMkxnouOg/1IzXGKkJnZMg==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - } - } - } - } - }, - "yeoman-generator": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-2.0.5.tgz", - "integrity": "sha512-rV6tJ8oYzm4mmdF2T3wjY+Q42jKF2YiiD0VKfJ8/0ZYwmhCKC9Xs2346HVLPj/xE13i68psnFJv7iS6gWRkeAg==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", "dev": true, "requires": { - "async": "^2.6.0", - "chalk": "^2.3.0", - "cli-table": "^0.3.1", - "cross-spawn": "^6.0.5", - "dargs": "^5.1.0", - "dateformat": "^3.0.3", - "debug": "^3.1.0", - "detect-conflict": "^1.0.0", - "error": "^7.0.2", - "find-up": "^2.1.0", - "github-username": "^4.0.0", - "istextorbinary": "^2.2.1", - "lodash": "^4.17.10", - "make-dir": "^1.1.0", - "mem-fs-editor": "^4.0.0", - "minimist": "^1.2.0", - "pretty-bytes": "^4.0.2", - "read-chunk": "^2.1.0", - "read-pkg-up": "^3.0.0", - "rimraf": "^2.6.2", - "run-async": "^2.0.0", - "shelljs": "^0.8.0", - "text-table": "^0.2.0", - "through2": "^2.0.0", - "yeoman-environment": "^2.0.5" - }, - "dependencies": { - "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", - "dev": true, - "requires": { - "lodash": "^4.17.11" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } diff --git a/assets/package.json b/assets/package.json index a4ba0e7..dfdf9b6 100644 --- a/assets/package.json +++ b/assets/package.json @@ -16,9 +16,9 @@ "copy-webpack-plugin": "^4.5.0", "css-loader": "^2.1.1", "mini-css-extract-plugin": "^0.4.0", - "optimize-css-assets-webpack-plugin": "^4.0.0", + "optimize-css-assets-webpack-plugin": "^5.0.1", "uglifyjs-webpack-plugin": "^1.2.4", "webpack": "4.4.0", - "webpack-cli": "^2.0.10" + "webpack-cli": "^3.3.2" } } diff --git a/package.json b/package.json index d73cac0..a45ab3f 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,6 @@ }, "devDependencies": { "webpack": "4.4.0", - "webpack-cli": "^2.0.10" + "webpack-cli": "^3.3.2" } } diff --git a/release-tasks.sh b/release-tasks.sh index 29481dd..6986438 100755 --- a/release-tasks.sh +++ b/release-tasks.sh @@ -5,7 +5,7 @@ mix compile # Compile assets cd assets npm install -webpack --mode production +webpack-cli --mode production cd .. mix phx.digest From 242f22c11dbb354f3165f9e5ebe4d19d78707132 Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Mon, 20 May 2019 00:08:52 -0300 Subject: [PATCH 14/37] Adding webpack globally --- release-tasks.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/release-tasks.sh b/release-tasks.sh index 6986438..5d241a4 100755 --- a/release-tasks.sh +++ b/release-tasks.sh @@ -5,6 +5,7 @@ mix compile # Compile assets cd assets npm install +npm install -g webpack webpack-cli webpack-cli --mode production cd .. From 8c2319c53b6615ff094b7398f167cc67d0672cc1 Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Mon, 20 May 2019 00:14:25 -0300 Subject: [PATCH 15/37] Adding priv/static --- .gitignore | 2 +- package.json | 12 - priv/static/css/app.css | 1 + priv/static/favicon.ico | Bin 0 -> 1258 bytes priv/static/images/phoenix.png | Bin 0 -> 13900 bytes priv/static/images/surf-api-logo.png | Bin 0 -> 4106 bytes priv/static/js/app.js | 1 + priv/static/js/chartkick.js | 915 +++++++++++++++++++++++++++ priv/static/robots.txt | 5 + release-tasks.sh | 9 - 10 files changed, 923 insertions(+), 22 deletions(-) delete mode 100644 package.json create mode 100644 priv/static/css/app.css create mode 100644 priv/static/favicon.ico create mode 100644 priv/static/images/phoenix.png create mode 100644 priv/static/images/surf-api-logo.png create mode 100644 priv/static/js/app.js create mode 100644 priv/static/js/chartkick.js create mode 100644 priv/static/robots.txt diff --git a/.gitignore b/.gitignore index 507842c..9c02644 100644 --- a/.gitignore +++ b/.gitignore @@ -31,7 +31,7 @@ npm-debug.log # Since we are building assets from assets/, # we ignore priv/static. You may want to comment # this depending on your deployment strategy. -/priv/static/ +# /priv/static/ # Files matching config/*.secret.exs pattern contain sensitive # data and you should not commit them into version control. diff --git a/package.json b/package.json deleted file mode 100644 index a45ab3f..0000000 --- a/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "repository": {}, - "license": "MIT", - "scripts": { - }, - "dependencies": { - }, - "devDependencies": { - "webpack": "4.4.0", - "webpack-cli": "^3.3.2" - } -} diff --git a/priv/static/css/app.css b/priv/static/css/app.css new file mode 100644 index 0000000..9a3991e --- /dev/null +++ b/priv/static/css/app.css @@ -0,0 +1 @@ +*,:after,:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000;font-family:Helvetica,Arial,sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote :last-child{margin-bottom:0}.button,button,input[type=button],input[type=reset],input[type=submit]{background-color:#0069d9;border:.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type=button][disabled]:focus,input[type=button][disabled]:hover,input[type=reset][disabled]:focus,input[type=reset][disabled]:hover,input[type=submit][disabled]:focus,input[type=submit][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type=button].button-outline,input[type=reset].button-outline,input[type=submit].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type=button].button-outline:focus,input[type=button].button-outline:hover,input[type=reset].button-outline:focus,input[type=reset].button-outline:hover,input[type=submit].button-outline:focus,input[type=submit].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type=button].button-outline[disabled]:focus,input[type=button].button-outline[disabled]:hover,input[type=reset].button-outline[disabled]:focus,input[type=reset].button-outline[disabled]:hover,input[type=submit].button-outline[disabled]:focus,input[type=submit].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type=button].button-clear,input[type=reset].button-clear,input[type=submit].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type=button].button-clear:focus,input[type=button].button-clear:hover,input[type=reset].button-clear:focus,input[type=reset].button-clear:hover,input[type=submit].button-clear:focus,input[type=submit].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type=button].button-clear[disabled]:focus,input[type=button].button-clear[disabled]:hover,input[type=reset].button-clear[disabled]:focus,input[type=reset].button-clear[disabled]:hover,input[type=submit].button-clear[disabled]:focus,input[type=submit].button-clear[disabled]:hover{color:#0069d9}code{border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}code,pre{background:#f4f5f6}pre{border-left:.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:.1rem solid #f4f5f6;margin:3rem 0}input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1rem;width:100%}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') 100% no-repeat;padding-right:3rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type=checkbox],input[type=radio]{display:inline}.label-inline{display:inline-block;font-weight:400;margin-left:.5rem}.row{display:flex;flex-direction:column;width:100%}.row,.row.row-no-padding,.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width:40rem){.row{flex-direction:row;margin-left:-1rem;width:calc(100% + 2rem)}.row .column{margin-bottom:inherit;padding:0 1rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:700}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:" ";display:table}.float-left{float:left}.float-right{float:right}h1{font-size:3.6rem;line-height:1.25}h2{font-size:2.8rem;line-height:1.3}h3{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h4{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h5{font-size:1.6rem;line-height:1.4}h5,h6{letter-spacing:0}h6{font-size:1.4rem;line-height:1.2}.container{margin:0 auto;max-width:80rem;padding:0 2rem;position:relative;width:100%}.center{justify-content:center}select{width:auto}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert p{margin-bottom:0}.alert:empty{display:none}.help-block{color:#a94442;display:block;margin:-1rem 0 2rem}.charts{text-align:center;border-bottom:1px solid #e3e3e3;background:#eee;border-radius:6px;padding:3em;margin-bottom:3rem;font-weight:200;font-size:120%}.charts p{margin:0}.surf-api-logo{min-width:300px;margin:1rem;display:block}.surf-api-logo img{width:auto;display:block}header{width:100%;background:#fdfdfd;border-bottom:1px solid #eaeaea;margin-bottom:2rem}header section{align-items:center;display:flex;flex-direction:column;justify-content:space-between}header section :first-child{order:2}header section :last-child{order:1}header nav li,header nav ul{margin:0;padding:0;display:block;text-align:right;white-space:nowrap}header nav ul{margin:0 1rem 1rem}header nav a{display:block}@media (min-width:40.0rem){header section{flex-direction:row}header nav ul{margin:1rem}.surf-api-logo{flex-basis:527px;margin:2rem 1rem}} \ No newline at end of file diff --git a/priv/static/favicon.ico b/priv/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..73de524aaadcf60fbe9d32881db0aa86b58b5cb9 GIT binary patch literal 1258 zcmbtUO>fgM7{=qN=;Mz_82;lvPEdVaxv-<-&=sZLwab?3I zBP>U*&(Hv<5n@9ZQ$vhg#|u$Zmtq8BV;+W*7(?jOx-{r?#TE&$Sdq77MbdJjD5`-q zMm_z(jLv3t>5NhzK{%aG(Yudfpjd3AFdKe2U7&zdepTe>^s(@!&0X8TJ`h+-I?84Ml# literal 0 HcmV?d00001 diff --git a/priv/static/images/phoenix.png b/priv/static/images/phoenix.png new file mode 100644 index 0000000000000000000000000000000000000000..9c81075f63d2151e6f40e9aa66f665749a87cc6a GIT binary patch literal 13900 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 UWxWXg`G1#+f~I_}taaG`2PLnS&Hw-a literal 0 HcmV?d00001 diff --git a/priv/static/images/surf-api-logo.png b/priv/static/images/surf-api-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..28a06a86cddf7cac44c13a6740e2b4d9957caab7 GIT binary patch literal 4106 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 ARR910 literal 0 HcmV?d00001 diff --git a/priv/static/js/app.js b/priv/static/js/app.js new file mode 100644 index 0000000..5a6a6fa --- /dev/null +++ b/priv/static/js/app.js @@ -0,0 +1 @@ +!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=3)}([function(t,e,n){"use strict";!function(){var t=function(){if("function"==typeof window.CustomEvent)return window.CustomEvent;function t(t,e){e=e||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(t,e.bubbles,e.cancelable,e.detail),n}return t.prototype=window.Event.prototype,t}();function e(t,e){var n=document.createElement("input");return n.type="hidden",n.name=t,n.value=e,n}function n(t){var n=t.getAttribute("data-to"),r=e("_method",t.getAttribute("data-method")),o=e("_csrf_token",t.getAttribute("data-csrf")),i=document.createElement("form"),u=t.getAttribute("target");i.method="get"===t.getAttribute("data-method")?"get":"post",i.action=n,i.style.display="hidden",u&&(i.target=u),i.appendChild(o),i.appendChild(r),document.body.appendChild(i),i.submit()}window.addEventListener("click",function(e){for(var r=e.target;r&&r.getAttribute;){var o=new t("phoenix.link.click",{bubbles:!0,cancelable:!0});if(!r.dispatchEvent(o))return e.preventDefault(),e.stopImmediatePropagation(),!1;if(r.getAttribute("data-method"))return n(r),e.preventDefault(),!1;r=r.parentNode}},!1),window.addEventListener("phoenix.link.click",function(t){var e=t.target.getAttribute("data-confirm");e&&!window.confirm(e)&&t.preventDefault()},!1)}()},function(t,e,n){},function(t,e,n){"use strict";n.r(e);n(1),n(0)},function(t,e,n){t.exports=n(2)}]); \ No newline at end of file diff --git a/priv/static/js/chartkick.js b/priv/static/js/chartkick.js new file mode 100644 index 0000000..2066653 --- /dev/null +++ b/priv/static/js/chartkick.js @@ -0,0 +1,915 @@ +/* + * Chartkick.js + * Create beautiful Javascript charts with minimal code + * https://github.com/ankane/chartkick.js + * v1.4.1 + * MIT License + */ + + /*jslint browser: true, indent: 2, plusplus: true, vars: true */ + + (function (window) { + 'use strict'; + + var config = window.Chartkick || {}; + var Chartkick, ISO8601_PATTERN, DECIMAL_SEPARATOR, adapters = []; + + // helpers + + function isArray(variable) { + return Object.prototype.toString.call(variable) === "[object Array]"; + } + + function isFunction(variable) { + return variable instanceof Function; + } + + function isPlainObject(variable) { + return !isFunction(variable) && variable instanceof Object; + } + + // https://github.com/madrobby/zepto/blob/master/src/zepto.js + function extend(target, source) { + var key; + for (key in source) { + if (isPlainObject(source[key]) || isArray(source[key])) { + if (isPlainObject(source[key]) && !isPlainObject(target[key])) { + target[key] = {}; + } + if (isArray(source[key]) && !isArray(target[key])) { + target[key] = []; + } + extend(target[key], source[key]); + } else if (source[key] !== undefined) { + target[key] = source[key]; + } + } + } + + function merge(obj1, obj2) { + var target = {}; + extend(target, obj1); + extend(target, obj2); + return target; + } + + // https://github.com/Do/iso8601.js + ISO8601_PATTERN = /(\d\d\d\d)(\-)?(\d\d)(\-)?(\d\d)(T)?(\d\d)(:)?(\d\d)?(:)?(\d\d)?([\.,]\d+)?($|Z|([\+\-])(\d\d)(:)?(\d\d)?)/i; + DECIMAL_SEPARATOR = String(1.5).charAt(1); + + function parseISO8601(input) { + var day, hour, matches, milliseconds, minutes, month, offset, result, seconds, type, year; + type = Object.prototype.toString.call(input); + if (type === '[object Date]') { + return input; + } + if (type !== '[object String]') { + return; + } + if (matches = input.match(ISO8601_PATTERN)) { + year = parseInt(matches[1], 10); + month = parseInt(matches[3], 10) - 1; + day = parseInt(matches[5], 10); + hour = parseInt(matches[7], 10); + minutes = matches[9] ? parseInt(matches[9], 10) : 0; + seconds = matches[11] ? parseInt(matches[11], 10) : 0; + milliseconds = matches[12] ? parseFloat(DECIMAL_SEPARATOR + matches[12].slice(1)) * 1000 : 0; + result = Date.UTC(year, month, day, hour, minutes, seconds, milliseconds); + if (matches[13] && matches[14]) { + offset = matches[15] * 60; + if (matches[17]) { + offset += parseInt(matches[17], 10); + } + offset *= matches[14] === '-' ? -1 : 1; + result -= offset * 60 * 1000; + } + return new Date(result); + } + } + // end iso8601.js + + function negativeValues(series) { + var i, j, data; + for (i = 0; i < series.length; i++) { + data = series[i].data; + for (j = 0; j < data.length; j++) { + if (data[j][1] < 0) { + return true; + } + } + } + return false; + } + + function jsOptionsFunc(defaultOptions, hideLegend, setMin, setMax, setStacked, setXtitle, setYtitle) { + return function (series, opts, chartOptions) { + var options = merge({}, defaultOptions); + options = merge(options, chartOptions || {}); + + // hide legend + // this is *not* an external option! + if (opts.hideLegend) { + hideLegend(options); + } + + // min + if ("min" in opts) { + setMin(options, opts.min); + } else if (!negativeValues(series)) { + setMin(options, 0); + } + + // max + if (opts.max) { + setMax(options, opts.max); + } + + if (opts.stacked) { + setStacked(options); + } + + if (opts.colors) { + options.colors = opts.colors; + } + + if (opts.xtitle) { + setXtitle(options, opts.xtitle); + } + + if (opts.ytitle) { + setYtitle(options, opts.ytitle); + } + + // merge library last + options = merge(options, opts.library || {}); + + return options; + }; + } + + function setText(element, text) { + if (document.body.innerText) { + element.innerText = text; + } else { + element.textContent = text; + } + } + + function chartError(element, message) { + setText(element, "Error Loading Chart: " + message); + element.style.color = "#ff0000"; + } + + function getJSON(element, url, success) { + var $ = window.jQuery || window.Zepto || window.$; + $.ajax({ + dataType: "json", + url: url, + success: success, + error: function (jqXHR, textStatus, errorThrown) { + var message = (typeof errorThrown === "string") ? errorThrown : errorThrown.message; + chartError(element, message); + } + }); + } + + function errorCatcher(chart, callback) { + try { + callback(chart); + } catch (err) { + chartError(chart.element, err.message); + throw err; + } + } + + function fetchDataSource(chart, callback) { + if (typeof chart.dataSource === "string") { + getJSON(chart.element, chart.dataSource, function (data, textStatus, jqXHR) { + chart.data = data; + errorCatcher(chart, callback); + }); + } else { + chart.data = chart.dataSource; + errorCatcher(chart, callback); + } + } + + // type conversions + + function toStr(n) { + return "" + n; + } + + function toFloat(n) { + return parseFloat(n); + } + + function toDate(n) { + if (typeof n !== "object") { + if (typeof n === "number") { + n = new Date(n * 1000); // ms + } else { // str + // try our best to get the str into iso8601 + // TODO be smarter about this + var str = n.replace(/ /, "T").replace(" ", "").replace("UTC", "Z"); + n = parseISO8601(str) || new Date(n); + } + } + return n; + } + + function toArr(n) { + if (!isArray(n)) { + var arr = [], i; + for (i in n) { + if (n.hasOwnProperty(i)) { + arr.push([i, n[i]]); + } + } + n = arr; + } + return n; + } + + function sortByTime(a, b) { + return a[0].getTime() - b[0].getTime(); + } + + if ("Highcharts" in window) { + var HighchartsAdapter = new function () { + var Highcharts = window.Highcharts; + + this.name = "highcharts"; + + var defaultOptions = { + chart: {}, + xAxis: { + title: { + text: null + }, + labels: { + style: { + fontSize: "12px" + } + } + }, + yAxis: { + title: { + text: null + }, + labels: { + style: { + fontSize: "12px" + } + } + }, + title: { + text: null + }, + credits: { + enabled: false + }, + legend: { + borderWidth: 0 + }, + tooltip: { + style: { + fontSize: "12px" + } + }, + plotOptions: { + areaspline: {}, + series: { + marker: {} + } + } + }; + + var hideLegend = function (options) { + options.legend.enabled = false; + }; + + var setMin = function (options, min) { + options.yAxis.min = min; + }; + + var setMax = function (options, max) { + options.yAxis.max = max; + }; + + var setStacked = function (options) { + options.plotOptions.series.stacking = "normal"; + }; + + var setXtitle = function (options, title) { + options.xAxis.title.text = title; + }; + + var setYtitle = function (options, title) { + options.yAxis.title.text = title; + }; + + var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setMin, setMax, setStacked, setXtitle, setYtitle); + + this.renderLineChart = function (chart, chartType) { + chartType = chartType || "spline"; + var chartOptions = {}; + if (chartType === "areaspline") { + chartOptions = { + plotOptions: { + areaspline: { + stacking: "normal" + }, + series: { + marker: { + enabled: false + } + } + } + }; + } + var options = jsOptions(chart.data, chart.options, chartOptions), data, i, j; + options.xAxis.type = chart.options.discrete ? "category" : "datetime"; + options.chart.type = chartType; + options.chart.renderTo = chart.element.id; + + var series = chart.data; + for (i = 0; i < series.length; i++) { + data = series[i].data; + if (!chart.options.discrete) { + for (j = 0; j < data.length; j++) { + data[j][0] = data[j][0].getTime(); + } + } + series[i].marker = {symbol: "circle"}; + } + options.series = series; + new Highcharts.Chart(options); + }; + + this.renderScatterChart = function (chart) { + var chartOptions = {}; + var options = jsOptions(chart.data, chart.options, chartOptions); + options.chart.type = 'scatter'; + options.chart.renderTo = chart.element.id; + options.series = chart.data; + new Highcharts.Chart(options); + }; + + this.renderPieChart = function (chart) { + var chartOptions = {}; + if (chart.options.colors) { + chartOptions.colors = chart.options.colors; + } + var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); + options.chart.renderTo = chart.element.id; + options.series = [{ + type: "pie", + name: "Value", + data: chart.data + }]; + new Highcharts.Chart(options); + }; + + this.renderColumnChart = function (chart, chartType) { + var chartType = chartType || "column"; + var series = chart.data; + var options = jsOptions(series, chart.options), i, j, s, d, rows = []; + options.chart.type = chartType; + options.chart.renderTo = chart.element.id; + + for (i = 0; i < series.length; i++) { + s = series[i]; + + for (j = 0; j < s.data.length; j++) { + d = s.data[j]; + if (!rows[d[0]]) { + rows[d[0]] = new Array(series.length); + } + rows[d[0]][i] = d[1]; + } + } + + var categories = []; + for (i in rows) { + if (rows.hasOwnProperty(i)) { + categories.push(i); + } + } + options.xAxis.categories = categories; + + var newSeries = []; + for (i = 0; i < series.length; i++) { + d = []; + for (j = 0; j < categories.length; j++) { + d.push(rows[categories[j]][i] || 0); + } + + newSeries.push({ + name: series[i].name, + data: d + }); + } + options.series = newSeries; + + new Highcharts.Chart(options); + }; + + var self = this; + + this.renderBarChart = function (chart) { + self.renderColumnChart(chart, "bar"); + }; + + this.renderAreaChart = function (chart) { + self.renderLineChart(chart, "areaspline"); + }; + }; + adapters.push(HighchartsAdapter); + } + if (window.google && window.google.setOnLoadCallback) { + var GoogleChartsAdapter = new function () { + var google = window.google; + + this.name = "google"; + + var loaded = {}; + var callbacks = []; + + var runCallbacks = function () { + var cb, call; + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + call = google.visualization && ((cb.pack === "corechart" && google.visualization.LineChart) || (cb.pack === "timeline" && google.visualization.Timeline)) + if (call) { + cb.callback(); + callbacks.splice(i, 1); + i--; + } + } + }; + + var waitForLoaded = function (pack, callback) { + if (!callback) { + callback = pack; + pack = "corechart"; + } + + callbacks.push({pack: pack, callback: callback}); + + if (loaded[pack]) { + runCallbacks(); + } else { + loaded[pack] = true; + + // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI + var loadOptions = { + packages: [pack], + callback: runCallbacks + }; + if (config.language) { + loadOptions.language = config.language; + } + google.load("visualization", "1", loadOptions); + } + }; + + // Set chart options + var defaultOptions = { + chartArea: {}, + fontName: "'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif", + pointSize: 6, + legend: { + textStyle: { + fontSize: 12, + color: "#444" + }, + alignment: "center", + position: "right" + }, + curveType: "function", + hAxis: { + textStyle: { + color: "#666", + fontSize: 12 + }, + titleTextStyle: {}, + gridlines: { + color: "transparent" + }, + baselineColor: "#ccc", + viewWindow: {} + }, + vAxis: { + textStyle: { + color: "#666", + fontSize: 12 + }, + titleTextStyle: {}, + baselineColor: "#ccc", + viewWindow: {} + }, + tooltip: { + textStyle: { + color: "#666", + fontSize: 12 + } + } + }; + + var hideLegend = function (options) { + options.legend.position = "none"; + }; + + var setMin = function (options, min) { + options.vAxis.viewWindow.min = min; + }; + + var setMax = function (options, max) { + options.vAxis.viewWindow.max = max; + }; + + var setBarMin = function (options, min) { + options.hAxis.viewWindow.min = min; + }; + + var setBarMax = function (options, max) { + options.hAxis.viewWindow.max = max; + }; + + var setStacked = function (options) { + options.isStacked = true; + }; + + var setXtitle = function (options, title) { + options.hAxis.title = title; + options.hAxis.titleTextStyle.italic = false; + } + + var setYtitle = function (options, title) { + options.vAxis.title = title; + options.vAxis.titleTextStyle.italic = false; + }; + + var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setMin, setMax, setStacked, setXtitle, setYtitle); + + // cant use object as key + var createDataTable = function (series, columnType) { + var data = new google.visualization.DataTable(); + data.addColumn(columnType, ""); + + var i, j, s, d, key, rows = []; + for (i = 0; i < series.length; i++) { + s = series[i]; + data.addColumn("number", s.name); + + for (j = 0; j < s.data.length; j++) { + d = s.data[j]; + key = (columnType === "datetime") ? d[0].getTime() : d[0]; + if (!rows[key]) { + rows[key] = new Array(series.length); + } + rows[key][i] = toFloat(d[1]); + } + } + + var rows2 = []; + var value; + for (i in rows) { + if (rows.hasOwnProperty(i)) { + if (columnType === "datetime") { + value = new Date(toFloat(i)); + } else if (columnType === "number") { + value = toFloat(i); + } else { + value = i; + } + rows2.push([value].concat(rows[i])); + } + } + if (columnType === "datetime") { + rows2.sort(sortByTime); + } + data.addRows(rows2); + + return data; + }; + + var resize = function (callback) { + if (window.attachEvent) { + window.attachEvent("onresize", callback); + } else if (window.addEventListener) { + window.addEventListener("resize", callback, true); + } + callback(); + }; + + this.renderLineChart = function (chart) { + waitForLoaded(function () { + var options = jsOptions(chart.data, chart.options); + var data = createDataTable(chart.data, chart.options.discrete ? "string" : "datetime"); + chart.chart = new google.visualization.LineChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderPieChart = function (chart) { + waitForLoaded(function () { + var chartOptions = { + chartArea: { + top: "10%", + height: "80%" + } + }; + if (chart.options.colors) { + chartOptions.colors = chart.options.colors; + } + var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); + + var data = new google.visualization.DataTable(); + data.addColumn("string", ""); + data.addColumn("number", "Value"); + data.addRows(chart.data); + + chart.chart = new google.visualization.PieChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderColumnChart = function (chart) { + waitForLoaded(function () { + var options = jsOptions(chart.data, chart.options); + var data = createDataTable(chart.data, "string"); + chart.chart = new google.visualization.ColumnChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderBarChart = function (chart) { + waitForLoaded(function () { + var chartOptions = { + hAxis: { + gridlines: { + color: "#ccc" + } + } + }; + var options = jsOptionsFunc(defaultOptions, hideLegend, setBarMin, setBarMax, setStacked)(chart.data, chart.options, chartOptions); + var data = createDataTable(chart.data, "string"); + chart.chart = new google.visualization.BarChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderAreaChart = function (chart) { + waitForLoaded(function () { + var chartOptions = { + isStacked: true, + pointSize: 0, + areaOpacity: 0.5 + }; + var options = jsOptions(chart.data, chart.options, chartOptions); + var data = createDataTable(chart.data, chart.options.discrete ? "string" : "datetime"); + chart.chart = new google.visualization.AreaChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderGeoChart = function (chart) { + waitForLoaded(function () { + var chartOptions = { + legend: "none", + colorAxis: { + colors: chart.options.colors || ["#f6c7b6", "#ce502d"] + } + }; + var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); + + var data = new google.visualization.DataTable(); + data.addColumn("string", ""); + data.addColumn("number", "Value"); + data.addRows(chart.data); + + chart.chart = new google.visualization.GeoChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderScatterChart = function (chart) { + waitForLoaded(function () { + var chartOptions = {}; + var options = jsOptions(chart.data, chart.options, chartOptions); + var data = createDataTable(chart.data, "number"); + + chart.chart = new google.visualization.ScatterChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderTimeline = function (chart) { + waitForLoaded("timeline", function () { + var chartOptions = { + legend: "none" + }; + + if (chart.options.colors) { + chartOptions.colors = chart.options.colors; + } + var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); + + var data = new google.visualization.DataTable(); + data.addColumn({type: "string", id: "Name"}); + data.addColumn({type: "date", id: "Start"}); + data.addColumn({type: "date", id: "End"}); + data.addRows(chart.data); + + chart.chart = new google.visualization.Timeline(chart.element); + + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + }; + + adapters.push(GoogleChartsAdapter); + } + + // TODO remove chartType if cross-browser way + // to get the name of the chart class + function renderChart(chartType, chart) { + var i, adapter, fnName, adapterName; + fnName = "render" + chartType; + adapterName = chart.options.adapter; + + for (i = 0; i < adapters.length; i++) { + adapter = adapters[i]; + if ((!adapterName || adapterName === adapter.name) && isFunction(adapter[fnName])) { + return adapter[fnName](chart); + } + } + throw new Error("No adapter found"); + } + + // process data + + var toFormattedKey = function (key, keyType) { + if (keyType === "number") { + key = toFloat(key); + } else if (keyType === "datetime") { + key = toDate(key); + } else { + key = toStr(key); + } + return key; + }; + + var formatSeriesData = function (data, keyType) { + var r = [], key, j; + for (j = 0; j < data.length; j++) { + key = toFormattedKey(data[j][0], keyType); + r.push([key, toFloat(data[j][1])]); + } + if (keyType === "datetime") { + r.sort(sortByTime); + } + return r; + }; + + function processSeries(series, opts, keyType) { + var i; + + // see if one series or multiple + if (!isArray(series) || typeof series[0] !== "object" || isArray(series[0])) { + series = [{name: "Value", data: series}]; + opts.hideLegend = true; + } else { + opts.hideLegend = false; + } + if (opts.discrete) { + keyType = "string"; + } + + // right format + for (i = 0; i < series.length; i++) { + series[i].data = formatSeriesData(toArr(series[i].data), keyType); + } + + return series; + } + + function processSimple(data) { + var perfectData = toArr(data), i; + for (i = 0; i < perfectData.length; i++) { + perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])]; + } + return perfectData; + } + + function processTime(data) + { + var i; + for (i = 0; i < data.length; i++) { + data[i][1] = toDate(data[i][1]); + data[i][2] = toDate(data[i][2]); + } + return data; + } + + function processLineData(chart) { + chart.data = processSeries(chart.data, chart.options, "datetime"); + renderChart("LineChart", chart); + } + + function processColumnData(chart) { + chart.data = processSeries(chart.data, chart.options, "string"); + renderChart("ColumnChart", chart); + } + + function processPieData(chart) { + chart.data = processSimple(chart.data); + renderChart("PieChart", chart); + } + + function processBarData(chart) { + chart.data = processSeries(chart.data, chart.options, "string"); + renderChart("BarChart", chart); + } + + function processAreaData(chart) { + chart.data = processSeries(chart.data, chart.options, "datetime"); + renderChart("AreaChart", chart); + } + + function processGeoData(chart) { + chart.data = processSimple(chart.data); + renderChart("GeoChart", chart); + } + + function processScatterData(chart) { + chart.data = processSeries(chart.data, chart.options, "number"); + renderChart("ScatterChart", chart); + } + + function processTimelineData(chart) { + chart.data = processTime(chart.data); + renderChart("Timeline", chart); + } + + function setElement(chart, element, dataSource, opts, callback) { + if (typeof element === "string") { + element = document.getElementById(element); + } + chart.element = element; + chart.options = opts || {}; + chart.dataSource = dataSource; + Chartkick.charts[element.id] = chart; + fetchDataSource(chart, callback); + } + + // define classes + + Chartkick = { + LineChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processLineData); + }, + PieChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processPieData); + }, + ColumnChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processColumnData); + }, + BarChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processBarData); + }, + AreaChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processAreaData); + }, + GeoChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processGeoData); + }, + ScatterChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processScatterData); + }, + Timeline: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processTimelineData); + }, + charts: {} + }; + + window.Chartkick = Chartkick; +}(window)); \ No newline at end of file diff --git a/priv/static/robots.txt b/priv/static/robots.txt new file mode 100644 index 0000000..3c9c7c0 --- /dev/null +++ b/priv/static/robots.txt @@ -0,0 +1,5 @@ +# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file +# +# To ban all spiders from the entire site uncomment the next two lines: +# User-agent: * +# Disallow: / diff --git a/release-tasks.sh b/release-tasks.sh index 5d241a4..ed96539 100755 --- a/release-tasks.sh +++ b/release-tasks.sh @@ -2,14 +2,5 @@ mix deps.get --only prod mix compile -# Compile assets -cd assets -npm install -npm install -g webpack webpack-cli -webpack-cli --mode production -cd .. - -mix phx.digest - # Custom tasks (like DB migrations) mix ecto.migrate \ No newline at end of file From a19c70f1cd346c17fffd2bf4a42ec0a177541ffb Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Mon, 20 May 2019 00:19:38 -0300 Subject: [PATCH 16/37] Showing last forecast on charts --- lib/waves_web/controllers/page_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/waves_web/controllers/page_controller.ex b/lib/waves_web/controllers/page_controller.ex index 7701c35..4c23827 100644 --- a/lib/waves_web/controllers/page_controller.ex +++ b/lib/waves_web/controllers/page_controller.ex @@ -8,7 +8,7 @@ defmodule WavesWeb.PageController do def index(conn, _params) do forecast = SpotForecast - |> first + |> last |> Repo.one() wave_height = From af80ef55ff237c0dd73cf32e0bd91d7d2144e7b2 Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Mon, 20 May 2019 00:24:15 -0300 Subject: [PATCH 17/37] Limiting POOL_SIZE on release tasks --- Procfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Procfile b/Procfile index bc4c859..e82348a 100644 --- a/Procfile +++ b/Procfile @@ -1,2 +1,2 @@ -release: ./release-tasks.sh +release: POOL_SIZE=1 ./release-tasks.sh web: mix phx.server \ No newline at end of file From 87166663c6aa0ba6dd1e1df3a6724738444c6cf0 Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Mon, 20 May 2019 00:51:04 -0300 Subject: [PATCH 18/37] Fixing month parser --- lib/scraper/windguru.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/scraper/windguru.ex b/lib/scraper/windguru.ex index 208da57..d8893f2 100644 --- a/lib/scraper/windguru.ex +++ b/lib/scraper/windguru.ex @@ -45,7 +45,7 @@ defmodule WindguruScraper do defp parse_row_float(data_element, tab_id), do: Enum.map(parse_row(data_element, tab_id), &parse_float/1) - def parse_month(wg_day, now_day, now_month) when wg_day < now_day do + def parse_month(wg_day, now_day, now_month) when wg_day < 10 and now_day > 20 do case now_month do 12 -> "01" _ -> String.pad_leading("#{now_month+1}", 2, "0") From c78c38d82ca74074340ffcd1af3662a495abdb8c Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Mon, 20 May 2019 00:51:33 -0300 Subject: [PATCH 19/37] Localizing for UTC-3 --- lib/scraper/windguru.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/scraper/windguru.ex b/lib/scraper/windguru.ex index d8893f2..dd40999 100644 --- a/lib/scraper/windguru.ex +++ b/lib/scraper/windguru.ex @@ -65,7 +65,7 @@ defmodule WindguruScraper do now = DateTime.utc_now() month = parse_month(String.to_integer(wg_day), now.day(), now.month()) - str = "#{now.year()}-#{month}-#{wg_day}T#{wg_hour}:00:00Z" + str = "#{now.year()}-#{month}-#{wg_day}T#{wg_hour}:00:00-03:00" case DateTime.from_iso8601(str) do {:ok, datetime, _offset} -> datetime From c953fe98d8bd1a79191d981bb745c4db321ec3bd Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Mon, 20 May 2019 01:07:39 -0300 Subject: [PATCH 20/37] Code style --- lib/scraper/windguru.ex | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/scraper/windguru.ex b/lib/scraper/windguru.ex index dd40999..97f4005 100644 --- a/lib/scraper/windguru.ex +++ b/lib/scraper/windguru.ex @@ -103,17 +103,17 @@ defmodule WindguruScraper do defp parse_data(data_element) do %{ - "datetimes" => parse_row_datetimes(data_element, "tabid_0_0_dates"), # [#DateTime<>, #DateTime<>, ...] + datetimes: parse_row_datetimes(data_element, "tabid_0_0_dates"), # [#DateTime<>, #DateTime<>, ...] - "wind_speed" => parse_row_int(data_element, "tabid_0_0_WINDSPD"), # knots - "wind_gust" => parse_row_int(data_element, "tabid_0_0_GUST"), # knots - "wind_direction" => parse_direction(data_element, "tabid_0_0_SMER"), # degrees (from north, clockwise) + wind_speed: parse_row_int(data_element, "tabid_0_0_WINDSPD"), # knots + wind_gust: parse_row_int(data_element, "tabid_0_0_GUST"), # knots + wind_direction: parse_direction(data_element, "tabid_0_0_SMER"), # degrees (from north, clockwise) - "wave_height" => parse_row_float(data_element, "tabid_0_0_HTSGW"), # meters - "wave_period" => parse_row_int(data_element, "tabid_0_0_PERPW"), # seconds - "wave_direction" => parse_direction(data_element, "tabid_0_0_DIRPW"), # degrees (from north, clockwise) + wave_height: parse_row_float(data_element, "tabid_0_0_HTSGW"), # meters + wave_period: parse_row_int(data_element, "tabid_0_0_PERPW"), # seconds + wave_direction: parse_direction(data_element, "tabid_0_0_DIRPW"), # degrees (from north, clockwise) - "temperature" => parse_row_int(data_element, "tabid_0_0_TMPE"), # degrees Celsius + temperature: parse_row_int(data_element, "tabid_0_0_TMPE"), # degrees Celsius } end From fc29c40ffb8287d6a99e021302cfe497d66ad4a2 Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Mon, 20 May 2019 01:28:51 -0300 Subject: [PATCH 21/37] Adding favicon --- assets/static/favicon.ico | Bin 1258 -> 1150 bytes priv/static/favicon.ico | Bin 1258 -> 1150 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/static/favicon.ico b/assets/static/favicon.ico index 73de524aaadcf60fbe9d32881db0aa86b58b5cb9..458493a36aaa3dc28ec844761a95b679102da2f4 100644 GIT binary patch literal 1150 zcmc(eK@P$o5Ji8ZiA!r5>r$8AqSx^jdbB1UfGgM=bcYKgeh>(Dfg>h5%`ahK-VDhM zQ1Pp4@V~=h4zvLF6kYT@{agT^Wz6u*s??0u+N_%OK)@#)mscs};w{6!;Z5`h-1o5_KvUNxqQ%>j)VLY!nb2E|lDZP^U n@ZoVuXUiz=&cSm8P93!c`X#jhE;C@Ht`%^j?mnsMnS2Bu&={4~ literal 1258 zcmbtUO>fgM7{=qN=;Mz_82;lvPEdVaxv-<-&=sZLwab?3I zBP>U*&(Hv<5n@9ZQ$vhg#|u$Zmtq8BV;+W*7(?jOx-{r?#TE&$Sdq77MbdJjD5`-q zMm_z(jLv3t>5NhzK{%aG(Yudfpjd3AFdKe2U7&zdepTe>^s(@!&0X8TJ`h+-I?84Ml# diff --git a/priv/static/favicon.ico b/priv/static/favicon.ico index 73de524aaadcf60fbe9d32881db0aa86b58b5cb9..458493a36aaa3dc28ec844761a95b679102da2f4 100644 GIT binary patch literal 1150 zcmc(eK@P$o5Ji8ZiA!r5>r$8AqSx^jdbB1UfGgM=bcYKgeh>(Dfg>h5%`ahK-VDhM zQ1Pp4@V~=h4zvLF6kYT@{agT^Wz6u*s??0u+N_%OK)@#)mscs};w{6!;Z5`h-1o5_KvUNxqQ%>j)VLY!nb2E|lDZP^U n@ZoVuXUiz=&cSm8P93!c`X#jhE;C@Ht`%^j?mnsMnS2Bu&={4~ literal 1258 zcmbtUO>fgM7{=qN=;Mz_82;lvPEdVaxv-<-&=sZLwab?3I zBP>U*&(Hv<5n@9ZQ$vhg#|u$Zmtq8BV;+W*7(?jOx-{r?#TE&$Sdq77MbdJjD5`-q zMm_z(jLv3t>5NhzK{%aG(Yudfpjd3AFdKe2U7&zdepTe>^s(@!&0X8TJ`h+-I?84Ml# From db50eb1cf8761c712092a4308c70b176bb1a538c Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Mon, 20 May 2019 01:32:25 -0300 Subject: [PATCH 22/37] Adding static files --- priv/static/cache_manifest.json | 1 + .../app-b902137fb137707f4fd20940b2715b1f.css | 1 + ...pp-b902137fb137707f4fd20940b2715b1f.css.gz | Bin 0 -> 2511 bytes priv/static/css/app.css.gz | Bin 0 -> 2511 bytes ...vicon-e65bbcae05ea941ac84beeb4bbe50a16.ico | Bin 0 -> 1150 bytes ...oenix-5bd99a0d17dd41bc9d9bf6840abcc089.png | Bin 0 -> 13900 bytes ...-logo-9e5b043f43f98c444b02356a213d1db1.png | Bin 0 -> 4106 bytes .../app-d255e0f04466ade472877808e02adefc.js | 1 + ...app-d255e0f04466ade472877808e02adefc.js.gz | Bin 0 -> 818 bytes priv/static/js/app.js.gz | Bin 0 -> 818 bytes ...rtkick-bd89f448fb80550d7f0a17af0ef48095.js | 915 ++++++++++++++++++ ...ick-bd89f448fb80550d7f0a17af0ef48095.js.gz | Bin 0 -> 5442 bytes priv/static/js/chartkick.js.gz | Bin 0 -> 5442 bytes ...obots-067185ba27a5d9139b10a759679045bf.txt | 5 + ...ts-067185ba27a5d9139b10a759679045bf.txt.gz | Bin 0 -> 164 bytes priv/static/robots.txt.gz | Bin 0 -> 164 bytes 16 files changed, 923 insertions(+) create mode 100644 priv/static/cache_manifest.json create mode 100644 priv/static/css/app-b902137fb137707f4fd20940b2715b1f.css create mode 100644 priv/static/css/app-b902137fb137707f4fd20940b2715b1f.css.gz create mode 100644 priv/static/css/app.css.gz create mode 100644 priv/static/favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico create mode 100644 priv/static/images/phoenix-5bd99a0d17dd41bc9d9bf6840abcc089.png create mode 100644 priv/static/images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png create mode 100644 priv/static/js/app-d255e0f04466ade472877808e02adefc.js create mode 100644 priv/static/js/app-d255e0f04466ade472877808e02adefc.js.gz create mode 100644 priv/static/js/app.js.gz create mode 100644 priv/static/js/chartkick-bd89f448fb80550d7f0a17af0ef48095.js create mode 100644 priv/static/js/chartkick-bd89f448fb80550d7f0a17af0ef48095.js.gz create mode 100644 priv/static/js/chartkick.js.gz create mode 100644 priv/static/robots-067185ba27a5d9139b10a759679045bf.txt create mode 100644 priv/static/robots-067185ba27a5d9139b10a759679045bf.txt.gz create mode 100644 priv/static/robots.txt.gz diff --git a/priv/static/cache_manifest.json b/priv/static/cache_manifest.json new file mode 100644 index 0000000..f7ec7ac --- /dev/null +++ b/priv/static/cache_manifest.json @@ -0,0 +1 @@ +{"digests":{"css/app-b902137fb137707f4fd20940b2715b1f.css":{"digest":"b902137fb137707f4fd20940b2715b1f","logical_path":"css/app.css","mtime":63725545851,"size":9850},"favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico":{"digest":"e65bbcae05ea941ac84beeb4bbe50a16","logical_path":"favicon.ico","mtime":63725545851,"size":1150},"images/phoenix-5bd99a0d17dd41bc9d9bf6840abcc089.png":{"digest":"5bd99a0d17dd41bc9d9bf6840abcc089","logical_path":"images/phoenix.png","mtime":63725545851,"size":13900},"images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png":{"digest":"9e5b043f43f98c444b02356a213d1db1","logical_path":"images/surf-api-logo.png","mtime":63725545851,"size":4106},"js/app-d255e0f04466ade472877808e02adefc.js":{"digest":"d255e0f04466ade472877808e02adefc","logical_path":"js/app.js","mtime":63725545851,"size":1911},"js/chartkick-bd89f448fb80550d7f0a17af0ef48095.js":{"digest":"bd89f448fb80550d7f0a17af0ef48095","logical_path":"js/chartkick.js","mtime":63725545851,"size":28576},"robots-067185ba27a5d9139b10a759679045bf.txt":{"digest":"067185ba27a5d9139b10a759679045bf","logical_path":"robots.txt","mtime":63725545851,"size":202}},"latest":{"css/app.css":"css/app-b902137fb137707f4fd20940b2715b1f.css","favicon.ico":"favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico","images/phoenix.png":"images/phoenix-5bd99a0d17dd41bc9d9bf6840abcc089.png","images/surf-api-logo.png":"images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png","js/app.js":"js/app-d255e0f04466ade472877808e02adefc.js","js/chartkick.js":"js/chartkick-bd89f448fb80550d7f0a17af0ef48095.js","robots.txt":"robots-067185ba27a5d9139b10a759679045bf.txt"},"version":1} \ No newline at end of file diff --git a/priv/static/css/app-b902137fb137707f4fd20940b2715b1f.css b/priv/static/css/app-b902137fb137707f4fd20940b2715b1f.css new file mode 100644 index 0000000..9a3991e --- /dev/null +++ b/priv/static/css/app-b902137fb137707f4fd20940b2715b1f.css @@ -0,0 +1 @@ +*,:after,:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000;font-family:Helvetica,Arial,sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote :last-child{margin-bottom:0}.button,button,input[type=button],input[type=reset],input[type=submit]{background-color:#0069d9;border:.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type=button][disabled]:focus,input[type=button][disabled]:hover,input[type=reset][disabled]:focus,input[type=reset][disabled]:hover,input[type=submit][disabled]:focus,input[type=submit][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type=button].button-outline,input[type=reset].button-outline,input[type=submit].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type=button].button-outline:focus,input[type=button].button-outline:hover,input[type=reset].button-outline:focus,input[type=reset].button-outline:hover,input[type=submit].button-outline:focus,input[type=submit].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type=button].button-outline[disabled]:focus,input[type=button].button-outline[disabled]:hover,input[type=reset].button-outline[disabled]:focus,input[type=reset].button-outline[disabled]:hover,input[type=submit].button-outline[disabled]:focus,input[type=submit].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type=button].button-clear,input[type=reset].button-clear,input[type=submit].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type=button].button-clear:focus,input[type=button].button-clear:hover,input[type=reset].button-clear:focus,input[type=reset].button-clear:hover,input[type=submit].button-clear:focus,input[type=submit].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type=button].button-clear[disabled]:focus,input[type=button].button-clear[disabled]:hover,input[type=reset].button-clear[disabled]:focus,input[type=reset].button-clear[disabled]:hover,input[type=submit].button-clear[disabled]:focus,input[type=submit].button-clear[disabled]:hover{color:#0069d9}code{border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}code,pre{background:#f4f5f6}pre{border-left:.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:.1rem solid #f4f5f6;margin:3rem 0}input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1rem;width:100%}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') 100% no-repeat;padding-right:3rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type=checkbox],input[type=radio]{display:inline}.label-inline{display:inline-block;font-weight:400;margin-left:.5rem}.row{display:flex;flex-direction:column;width:100%}.row,.row.row-no-padding,.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width:40rem){.row{flex-direction:row;margin-left:-1rem;width:calc(100% + 2rem)}.row .column{margin-bottom:inherit;padding:0 1rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:700}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:" ";display:table}.float-left{float:left}.float-right{float:right}h1{font-size:3.6rem;line-height:1.25}h2{font-size:2.8rem;line-height:1.3}h3{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h4{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h5{font-size:1.6rem;line-height:1.4}h5,h6{letter-spacing:0}h6{font-size:1.4rem;line-height:1.2}.container{margin:0 auto;max-width:80rem;padding:0 2rem;position:relative;width:100%}.center{justify-content:center}select{width:auto}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert p{margin-bottom:0}.alert:empty{display:none}.help-block{color:#a94442;display:block;margin:-1rem 0 2rem}.charts{text-align:center;border-bottom:1px solid #e3e3e3;background:#eee;border-radius:6px;padding:3em;margin-bottom:3rem;font-weight:200;font-size:120%}.charts p{margin:0}.surf-api-logo{min-width:300px;margin:1rem;display:block}.surf-api-logo img{width:auto;display:block}header{width:100%;background:#fdfdfd;border-bottom:1px solid #eaeaea;margin-bottom:2rem}header section{align-items:center;display:flex;flex-direction:column;justify-content:space-between}header section :first-child{order:2}header section :last-child{order:1}header nav li,header nav ul{margin:0;padding:0;display:block;text-align:right;white-space:nowrap}header nav ul{margin:0 1rem 1rem}header nav a{display:block}@media (min-width:40.0rem){header section{flex-direction:row}header nav ul{margin:1rem}.surf-api-logo{flex-basis:527px;margin:2rem 1rem}} \ No newline at end of file diff --git a/priv/static/css/app-b902137fb137707f4fd20940b2715b1f.css.gz b/priv/static/css/app-b902137fb137707f4fd20940b2715b1f.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..de5d6a4dd0006641e55dd0dd05a87ebe4624fffe GIT binary patch literal 2511 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 Z3>wtLp}!w}%YTU2{};CLU&eYS002FZ?#2KB literal 0 HcmV?d00001 diff --git a/priv/static/css/app.css.gz b/priv/static/css/app.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..de5d6a4dd0006641e55dd0dd05a87ebe4624fffe GIT binary patch literal 2511 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 Z3>wtLp}!w}%YTU2{};CLU&eYS002FZ?#2KB literal 0 HcmV?d00001 diff --git a/priv/static/favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico b/priv/static/favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico new file mode 100644 index 0000000000000000000000000000000000000000..458493a36aaa3dc28ec844761a95b679102da2f4 GIT binary patch literal 1150 zcmc(eK@P$o5Ji8ZiA!r5>r$8AqSx^jdbB1UfGgM=bcYKgeh>(Dfg>h5%`ahK-VDhM zQ1Pp4@V~=h4zvLF6kYT@{agT^Wz6u*s??0u+N_%OK)@#)mscs};w{6!;Z5`h-1o5_KvUNxqQ%>j)VLY!nb2E|lDZP^U n@ZoVuXUiz=&cSm8P93!c`X#jhE;C@Ht`%^j?mnsMnS2Bu&={4~ literal 0 HcmV?d00001 diff --git a/priv/static/images/phoenix-5bd99a0d17dd41bc9d9bf6840abcc089.png b/priv/static/images/phoenix-5bd99a0d17dd41bc9d9bf6840abcc089.png new file mode 100644 index 0000000000000000000000000000000000000000..9c81075f63d2151e6f40e9aa66f665749a87cc6a GIT binary patch literal 13900 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 UWxWXg`G1#+f~I_}taaG`2PLnS&Hw-a literal 0 HcmV?d00001 diff --git a/priv/static/images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png b/priv/static/images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png new file mode 100644 index 0000000000000000000000000000000000000000..28a06a86cddf7cac44c13a6740e2b4d9957caab7 GIT binary patch literal 4106 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 ARR910 literal 0 HcmV?d00001 diff --git a/priv/static/js/app-d255e0f04466ade472877808e02adefc.js b/priv/static/js/app-d255e0f04466ade472877808e02adefc.js new file mode 100644 index 0000000..5a6a6fa --- /dev/null +++ b/priv/static/js/app-d255e0f04466ade472877808e02adefc.js @@ -0,0 +1 @@ +!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=3)}([function(t,e,n){"use strict";!function(){var t=function(){if("function"==typeof window.CustomEvent)return window.CustomEvent;function t(t,e){e=e||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(t,e.bubbles,e.cancelable,e.detail),n}return t.prototype=window.Event.prototype,t}();function e(t,e){var n=document.createElement("input");return n.type="hidden",n.name=t,n.value=e,n}function n(t){var n=t.getAttribute("data-to"),r=e("_method",t.getAttribute("data-method")),o=e("_csrf_token",t.getAttribute("data-csrf")),i=document.createElement("form"),u=t.getAttribute("target");i.method="get"===t.getAttribute("data-method")?"get":"post",i.action=n,i.style.display="hidden",u&&(i.target=u),i.appendChild(o),i.appendChild(r),document.body.appendChild(i),i.submit()}window.addEventListener("click",function(e){for(var r=e.target;r&&r.getAttribute;){var o=new t("phoenix.link.click",{bubbles:!0,cancelable:!0});if(!r.dispatchEvent(o))return e.preventDefault(),e.stopImmediatePropagation(),!1;if(r.getAttribute("data-method"))return n(r),e.preventDefault(),!1;r=r.parentNode}},!1),window.addEventListener("phoenix.link.click",function(t){var e=t.target.getAttribute("data-confirm");e&&!window.confirm(e)&&t.preventDefault()},!1)}()},function(t,e,n){},function(t,e,n){"use strict";n.r(e);n(1),n(0)},function(t,e,n){t.exports=n(2)}]); \ No newline at end of file diff --git a/priv/static/js/app-d255e0f04466ade472877808e02adefc.js.gz b/priv/static/js/app-d255e0f04466ade472877808e02adefc.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..773fbbd3f13c3657e0e427e28bd2b5089bf4af00 GIT binary patch literal 818 zcmV-21I_#&iwFP!000006Ma=nZ{s!){wp>Q1_`i)x4l^)7R9!Q0&TbV#Uh}^am+>{ z1!|P6q42+VsE1`IN-s7!oagt=jJBuFm*|4$DEem;H=z4e%)*W5QS|P_;amJJB48K& zCZ84jXhOuc$Rxndw78MuVA|hm?XfeF8dihc>Nws-0e^;HlME=qMwn;K}=U+I;=ci z0VDu8NM;xnEFp&rcYs_?rp%idFyN&DbvEtS7eCi9l8_Cuk47^lJ@=~Bzlg-Y-9hX{ z&$<>iEk;)&E4DZJzb8vREPeUhqZ9_@?dQ@cugD^Pe>?R5m3!=_Dym`t| z)fA3SOEkKS!G!ebO4}7-J=HQeS;P_(7fVqv7PX#c1@(}q^G$b`;^3d1oweXu?lDut zFcd@U<-tfd!-}(iRMgqOA`y4&5ID02%}*GZkWth1p$0q$%jBxw^eAW~2j#Mjrw0sA zIfGS$tdP~+hjpDotSNZ+E-^Hb1XQt8V_41dUF-D{=F~n9S_jsI7MXO)3equQ8gx#`0rpLC6WpGA#iIIudLPy!PSn;TR*p40lVFH3N#6chrE>E wra9!4^8ec<_+E0i7U|PLE(_18B+vIN4siaYY0rNa>ANWY1Lp%|)^`U007EH`>i_@% literal 0 HcmV?d00001 diff --git a/priv/static/js/app.js.gz b/priv/static/js/app.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..773fbbd3f13c3657e0e427e28bd2b5089bf4af00 GIT binary patch literal 818 zcmV-21I_#&iwFP!000006Ma=nZ{s!){wp>Q1_`i)x4l^)7R9!Q0&TbV#Uh}^am+>{ z1!|P6q42+VsE1`IN-s7!oagt=jJBuFm*|4$DEem;H=z4e%)*W5QS|P_;amJJB48K& zCZ84jXhOuc$Rxndw78MuVA|hm?XfeF8dihc>Nws-0e^;HlME=qMwn;K}=U+I;=ci z0VDu8NM;xnEFp&rcYs_?rp%idFyN&DbvEtS7eCi9l8_Cuk47^lJ@=~Bzlg-Y-9hX{ z&$<>iEk;)&E4DZJzb8vREPeUhqZ9_@?dQ@cugD^Pe>?R5m3!=_Dym`t| z)fA3SOEkKS!G!ebO4}7-J=HQeS;P_(7fVqv7PX#c1@(}q^G$b`;^3d1oweXu?lDut zFcd@U<-tfd!-}(iRMgqOA`y4&5ID02%}*GZkWth1p$0q$%jBxw^eAW~2j#Mjrw0sA zIfGS$tdP~+hjpDotSNZ+E-^Hb1XQt8V_41dUF-D{=F~n9S_jsI7MXO)3equQ8gx#`0rpLC6WpGA#iIIudLPy!PSn;TR*p40lVFH3N#6chrE>E wra9!4^8ec<_+E0i7U|PLE(_18B+vIN4siaYY0rNa>ANWY1Lp%|)^`U007EH`>i_@% literal 0 HcmV?d00001 diff --git a/priv/static/js/chartkick-bd89f448fb80550d7f0a17af0ef48095.js b/priv/static/js/chartkick-bd89f448fb80550d7f0a17af0ef48095.js new file mode 100644 index 0000000..2066653 --- /dev/null +++ b/priv/static/js/chartkick-bd89f448fb80550d7f0a17af0ef48095.js @@ -0,0 +1,915 @@ +/* + * Chartkick.js + * Create beautiful Javascript charts with minimal code + * https://github.com/ankane/chartkick.js + * v1.4.1 + * MIT License + */ + + /*jslint browser: true, indent: 2, plusplus: true, vars: true */ + + (function (window) { + 'use strict'; + + var config = window.Chartkick || {}; + var Chartkick, ISO8601_PATTERN, DECIMAL_SEPARATOR, adapters = []; + + // helpers + + function isArray(variable) { + return Object.prototype.toString.call(variable) === "[object Array]"; + } + + function isFunction(variable) { + return variable instanceof Function; + } + + function isPlainObject(variable) { + return !isFunction(variable) && variable instanceof Object; + } + + // https://github.com/madrobby/zepto/blob/master/src/zepto.js + function extend(target, source) { + var key; + for (key in source) { + if (isPlainObject(source[key]) || isArray(source[key])) { + if (isPlainObject(source[key]) && !isPlainObject(target[key])) { + target[key] = {}; + } + if (isArray(source[key]) && !isArray(target[key])) { + target[key] = []; + } + extend(target[key], source[key]); + } else if (source[key] !== undefined) { + target[key] = source[key]; + } + } + } + + function merge(obj1, obj2) { + var target = {}; + extend(target, obj1); + extend(target, obj2); + return target; + } + + // https://github.com/Do/iso8601.js + ISO8601_PATTERN = /(\d\d\d\d)(\-)?(\d\d)(\-)?(\d\d)(T)?(\d\d)(:)?(\d\d)?(:)?(\d\d)?([\.,]\d+)?($|Z|([\+\-])(\d\d)(:)?(\d\d)?)/i; + DECIMAL_SEPARATOR = String(1.5).charAt(1); + + function parseISO8601(input) { + var day, hour, matches, milliseconds, minutes, month, offset, result, seconds, type, year; + type = Object.prototype.toString.call(input); + if (type === '[object Date]') { + return input; + } + if (type !== '[object String]') { + return; + } + if (matches = input.match(ISO8601_PATTERN)) { + year = parseInt(matches[1], 10); + month = parseInt(matches[3], 10) - 1; + day = parseInt(matches[5], 10); + hour = parseInt(matches[7], 10); + minutes = matches[9] ? parseInt(matches[9], 10) : 0; + seconds = matches[11] ? parseInt(matches[11], 10) : 0; + milliseconds = matches[12] ? parseFloat(DECIMAL_SEPARATOR + matches[12].slice(1)) * 1000 : 0; + result = Date.UTC(year, month, day, hour, minutes, seconds, milliseconds); + if (matches[13] && matches[14]) { + offset = matches[15] * 60; + if (matches[17]) { + offset += parseInt(matches[17], 10); + } + offset *= matches[14] === '-' ? -1 : 1; + result -= offset * 60 * 1000; + } + return new Date(result); + } + } + // end iso8601.js + + function negativeValues(series) { + var i, j, data; + for (i = 0; i < series.length; i++) { + data = series[i].data; + for (j = 0; j < data.length; j++) { + if (data[j][1] < 0) { + return true; + } + } + } + return false; + } + + function jsOptionsFunc(defaultOptions, hideLegend, setMin, setMax, setStacked, setXtitle, setYtitle) { + return function (series, opts, chartOptions) { + var options = merge({}, defaultOptions); + options = merge(options, chartOptions || {}); + + // hide legend + // this is *not* an external option! + if (opts.hideLegend) { + hideLegend(options); + } + + // min + if ("min" in opts) { + setMin(options, opts.min); + } else if (!negativeValues(series)) { + setMin(options, 0); + } + + // max + if (opts.max) { + setMax(options, opts.max); + } + + if (opts.stacked) { + setStacked(options); + } + + if (opts.colors) { + options.colors = opts.colors; + } + + if (opts.xtitle) { + setXtitle(options, opts.xtitle); + } + + if (opts.ytitle) { + setYtitle(options, opts.ytitle); + } + + // merge library last + options = merge(options, opts.library || {}); + + return options; + }; + } + + function setText(element, text) { + if (document.body.innerText) { + element.innerText = text; + } else { + element.textContent = text; + } + } + + function chartError(element, message) { + setText(element, "Error Loading Chart: " + message); + element.style.color = "#ff0000"; + } + + function getJSON(element, url, success) { + var $ = window.jQuery || window.Zepto || window.$; + $.ajax({ + dataType: "json", + url: url, + success: success, + error: function (jqXHR, textStatus, errorThrown) { + var message = (typeof errorThrown === "string") ? errorThrown : errorThrown.message; + chartError(element, message); + } + }); + } + + function errorCatcher(chart, callback) { + try { + callback(chart); + } catch (err) { + chartError(chart.element, err.message); + throw err; + } + } + + function fetchDataSource(chart, callback) { + if (typeof chart.dataSource === "string") { + getJSON(chart.element, chart.dataSource, function (data, textStatus, jqXHR) { + chart.data = data; + errorCatcher(chart, callback); + }); + } else { + chart.data = chart.dataSource; + errorCatcher(chart, callback); + } + } + + // type conversions + + function toStr(n) { + return "" + n; + } + + function toFloat(n) { + return parseFloat(n); + } + + function toDate(n) { + if (typeof n !== "object") { + if (typeof n === "number") { + n = new Date(n * 1000); // ms + } else { // str + // try our best to get the str into iso8601 + // TODO be smarter about this + var str = n.replace(/ /, "T").replace(" ", "").replace("UTC", "Z"); + n = parseISO8601(str) || new Date(n); + } + } + return n; + } + + function toArr(n) { + if (!isArray(n)) { + var arr = [], i; + for (i in n) { + if (n.hasOwnProperty(i)) { + arr.push([i, n[i]]); + } + } + n = arr; + } + return n; + } + + function sortByTime(a, b) { + return a[0].getTime() - b[0].getTime(); + } + + if ("Highcharts" in window) { + var HighchartsAdapter = new function () { + var Highcharts = window.Highcharts; + + this.name = "highcharts"; + + var defaultOptions = { + chart: {}, + xAxis: { + title: { + text: null + }, + labels: { + style: { + fontSize: "12px" + } + } + }, + yAxis: { + title: { + text: null + }, + labels: { + style: { + fontSize: "12px" + } + } + }, + title: { + text: null + }, + credits: { + enabled: false + }, + legend: { + borderWidth: 0 + }, + tooltip: { + style: { + fontSize: "12px" + } + }, + plotOptions: { + areaspline: {}, + series: { + marker: {} + } + } + }; + + var hideLegend = function (options) { + options.legend.enabled = false; + }; + + var setMin = function (options, min) { + options.yAxis.min = min; + }; + + var setMax = function (options, max) { + options.yAxis.max = max; + }; + + var setStacked = function (options) { + options.plotOptions.series.stacking = "normal"; + }; + + var setXtitle = function (options, title) { + options.xAxis.title.text = title; + }; + + var setYtitle = function (options, title) { + options.yAxis.title.text = title; + }; + + var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setMin, setMax, setStacked, setXtitle, setYtitle); + + this.renderLineChart = function (chart, chartType) { + chartType = chartType || "spline"; + var chartOptions = {}; + if (chartType === "areaspline") { + chartOptions = { + plotOptions: { + areaspline: { + stacking: "normal" + }, + series: { + marker: { + enabled: false + } + } + } + }; + } + var options = jsOptions(chart.data, chart.options, chartOptions), data, i, j; + options.xAxis.type = chart.options.discrete ? "category" : "datetime"; + options.chart.type = chartType; + options.chart.renderTo = chart.element.id; + + var series = chart.data; + for (i = 0; i < series.length; i++) { + data = series[i].data; + if (!chart.options.discrete) { + for (j = 0; j < data.length; j++) { + data[j][0] = data[j][0].getTime(); + } + } + series[i].marker = {symbol: "circle"}; + } + options.series = series; + new Highcharts.Chart(options); + }; + + this.renderScatterChart = function (chart) { + var chartOptions = {}; + var options = jsOptions(chart.data, chart.options, chartOptions); + options.chart.type = 'scatter'; + options.chart.renderTo = chart.element.id; + options.series = chart.data; + new Highcharts.Chart(options); + }; + + this.renderPieChart = function (chart) { + var chartOptions = {}; + if (chart.options.colors) { + chartOptions.colors = chart.options.colors; + } + var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); + options.chart.renderTo = chart.element.id; + options.series = [{ + type: "pie", + name: "Value", + data: chart.data + }]; + new Highcharts.Chart(options); + }; + + this.renderColumnChart = function (chart, chartType) { + var chartType = chartType || "column"; + var series = chart.data; + var options = jsOptions(series, chart.options), i, j, s, d, rows = []; + options.chart.type = chartType; + options.chart.renderTo = chart.element.id; + + for (i = 0; i < series.length; i++) { + s = series[i]; + + for (j = 0; j < s.data.length; j++) { + d = s.data[j]; + if (!rows[d[0]]) { + rows[d[0]] = new Array(series.length); + } + rows[d[0]][i] = d[1]; + } + } + + var categories = []; + for (i in rows) { + if (rows.hasOwnProperty(i)) { + categories.push(i); + } + } + options.xAxis.categories = categories; + + var newSeries = []; + for (i = 0; i < series.length; i++) { + d = []; + for (j = 0; j < categories.length; j++) { + d.push(rows[categories[j]][i] || 0); + } + + newSeries.push({ + name: series[i].name, + data: d + }); + } + options.series = newSeries; + + new Highcharts.Chart(options); + }; + + var self = this; + + this.renderBarChart = function (chart) { + self.renderColumnChart(chart, "bar"); + }; + + this.renderAreaChart = function (chart) { + self.renderLineChart(chart, "areaspline"); + }; + }; + adapters.push(HighchartsAdapter); + } + if (window.google && window.google.setOnLoadCallback) { + var GoogleChartsAdapter = new function () { + var google = window.google; + + this.name = "google"; + + var loaded = {}; + var callbacks = []; + + var runCallbacks = function () { + var cb, call; + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + call = google.visualization && ((cb.pack === "corechart" && google.visualization.LineChart) || (cb.pack === "timeline" && google.visualization.Timeline)) + if (call) { + cb.callback(); + callbacks.splice(i, 1); + i--; + } + } + }; + + var waitForLoaded = function (pack, callback) { + if (!callback) { + callback = pack; + pack = "corechart"; + } + + callbacks.push({pack: pack, callback: callback}); + + if (loaded[pack]) { + runCallbacks(); + } else { + loaded[pack] = true; + + // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI + var loadOptions = { + packages: [pack], + callback: runCallbacks + }; + if (config.language) { + loadOptions.language = config.language; + } + google.load("visualization", "1", loadOptions); + } + }; + + // Set chart options + var defaultOptions = { + chartArea: {}, + fontName: "'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif", + pointSize: 6, + legend: { + textStyle: { + fontSize: 12, + color: "#444" + }, + alignment: "center", + position: "right" + }, + curveType: "function", + hAxis: { + textStyle: { + color: "#666", + fontSize: 12 + }, + titleTextStyle: {}, + gridlines: { + color: "transparent" + }, + baselineColor: "#ccc", + viewWindow: {} + }, + vAxis: { + textStyle: { + color: "#666", + fontSize: 12 + }, + titleTextStyle: {}, + baselineColor: "#ccc", + viewWindow: {} + }, + tooltip: { + textStyle: { + color: "#666", + fontSize: 12 + } + } + }; + + var hideLegend = function (options) { + options.legend.position = "none"; + }; + + var setMin = function (options, min) { + options.vAxis.viewWindow.min = min; + }; + + var setMax = function (options, max) { + options.vAxis.viewWindow.max = max; + }; + + var setBarMin = function (options, min) { + options.hAxis.viewWindow.min = min; + }; + + var setBarMax = function (options, max) { + options.hAxis.viewWindow.max = max; + }; + + var setStacked = function (options) { + options.isStacked = true; + }; + + var setXtitle = function (options, title) { + options.hAxis.title = title; + options.hAxis.titleTextStyle.italic = false; + } + + var setYtitle = function (options, title) { + options.vAxis.title = title; + options.vAxis.titleTextStyle.italic = false; + }; + + var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setMin, setMax, setStacked, setXtitle, setYtitle); + + // cant use object as key + var createDataTable = function (series, columnType) { + var data = new google.visualization.DataTable(); + data.addColumn(columnType, ""); + + var i, j, s, d, key, rows = []; + for (i = 0; i < series.length; i++) { + s = series[i]; + data.addColumn("number", s.name); + + for (j = 0; j < s.data.length; j++) { + d = s.data[j]; + key = (columnType === "datetime") ? d[0].getTime() : d[0]; + if (!rows[key]) { + rows[key] = new Array(series.length); + } + rows[key][i] = toFloat(d[1]); + } + } + + var rows2 = []; + var value; + for (i in rows) { + if (rows.hasOwnProperty(i)) { + if (columnType === "datetime") { + value = new Date(toFloat(i)); + } else if (columnType === "number") { + value = toFloat(i); + } else { + value = i; + } + rows2.push([value].concat(rows[i])); + } + } + if (columnType === "datetime") { + rows2.sort(sortByTime); + } + data.addRows(rows2); + + return data; + }; + + var resize = function (callback) { + if (window.attachEvent) { + window.attachEvent("onresize", callback); + } else if (window.addEventListener) { + window.addEventListener("resize", callback, true); + } + callback(); + }; + + this.renderLineChart = function (chart) { + waitForLoaded(function () { + var options = jsOptions(chart.data, chart.options); + var data = createDataTable(chart.data, chart.options.discrete ? "string" : "datetime"); + chart.chart = new google.visualization.LineChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderPieChart = function (chart) { + waitForLoaded(function () { + var chartOptions = { + chartArea: { + top: "10%", + height: "80%" + } + }; + if (chart.options.colors) { + chartOptions.colors = chart.options.colors; + } + var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); + + var data = new google.visualization.DataTable(); + data.addColumn("string", ""); + data.addColumn("number", "Value"); + data.addRows(chart.data); + + chart.chart = new google.visualization.PieChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderColumnChart = function (chart) { + waitForLoaded(function () { + var options = jsOptions(chart.data, chart.options); + var data = createDataTable(chart.data, "string"); + chart.chart = new google.visualization.ColumnChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderBarChart = function (chart) { + waitForLoaded(function () { + var chartOptions = { + hAxis: { + gridlines: { + color: "#ccc" + } + } + }; + var options = jsOptionsFunc(defaultOptions, hideLegend, setBarMin, setBarMax, setStacked)(chart.data, chart.options, chartOptions); + var data = createDataTable(chart.data, "string"); + chart.chart = new google.visualization.BarChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderAreaChart = function (chart) { + waitForLoaded(function () { + var chartOptions = { + isStacked: true, + pointSize: 0, + areaOpacity: 0.5 + }; + var options = jsOptions(chart.data, chart.options, chartOptions); + var data = createDataTable(chart.data, chart.options.discrete ? "string" : "datetime"); + chart.chart = new google.visualization.AreaChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderGeoChart = function (chart) { + waitForLoaded(function () { + var chartOptions = { + legend: "none", + colorAxis: { + colors: chart.options.colors || ["#f6c7b6", "#ce502d"] + } + }; + var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); + + var data = new google.visualization.DataTable(); + data.addColumn("string", ""); + data.addColumn("number", "Value"); + data.addRows(chart.data); + + chart.chart = new google.visualization.GeoChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderScatterChart = function (chart) { + waitForLoaded(function () { + var chartOptions = {}; + var options = jsOptions(chart.data, chart.options, chartOptions); + var data = createDataTable(chart.data, "number"); + + chart.chart = new google.visualization.ScatterChart(chart.element); + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + + this.renderTimeline = function (chart) { + waitForLoaded("timeline", function () { + var chartOptions = { + legend: "none" + }; + + if (chart.options.colors) { + chartOptions.colors = chart.options.colors; + } + var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); + + var data = new google.visualization.DataTable(); + data.addColumn({type: "string", id: "Name"}); + data.addColumn({type: "date", id: "Start"}); + data.addColumn({type: "date", id: "End"}); + data.addRows(chart.data); + + chart.chart = new google.visualization.Timeline(chart.element); + + resize(function () { + chart.chart.draw(data, options); + }); + }); + }; + }; + + adapters.push(GoogleChartsAdapter); + } + + // TODO remove chartType if cross-browser way + // to get the name of the chart class + function renderChart(chartType, chart) { + var i, adapter, fnName, adapterName; + fnName = "render" + chartType; + adapterName = chart.options.adapter; + + for (i = 0; i < adapters.length; i++) { + adapter = adapters[i]; + if ((!adapterName || adapterName === adapter.name) && isFunction(adapter[fnName])) { + return adapter[fnName](chart); + } + } + throw new Error("No adapter found"); + } + + // process data + + var toFormattedKey = function (key, keyType) { + if (keyType === "number") { + key = toFloat(key); + } else if (keyType === "datetime") { + key = toDate(key); + } else { + key = toStr(key); + } + return key; + }; + + var formatSeriesData = function (data, keyType) { + var r = [], key, j; + for (j = 0; j < data.length; j++) { + key = toFormattedKey(data[j][0], keyType); + r.push([key, toFloat(data[j][1])]); + } + if (keyType === "datetime") { + r.sort(sortByTime); + } + return r; + }; + + function processSeries(series, opts, keyType) { + var i; + + // see if one series or multiple + if (!isArray(series) || typeof series[0] !== "object" || isArray(series[0])) { + series = [{name: "Value", data: series}]; + opts.hideLegend = true; + } else { + opts.hideLegend = false; + } + if (opts.discrete) { + keyType = "string"; + } + + // right format + for (i = 0; i < series.length; i++) { + series[i].data = formatSeriesData(toArr(series[i].data), keyType); + } + + return series; + } + + function processSimple(data) { + var perfectData = toArr(data), i; + for (i = 0; i < perfectData.length; i++) { + perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])]; + } + return perfectData; + } + + function processTime(data) + { + var i; + for (i = 0; i < data.length; i++) { + data[i][1] = toDate(data[i][1]); + data[i][2] = toDate(data[i][2]); + } + return data; + } + + function processLineData(chart) { + chart.data = processSeries(chart.data, chart.options, "datetime"); + renderChart("LineChart", chart); + } + + function processColumnData(chart) { + chart.data = processSeries(chart.data, chart.options, "string"); + renderChart("ColumnChart", chart); + } + + function processPieData(chart) { + chart.data = processSimple(chart.data); + renderChart("PieChart", chart); + } + + function processBarData(chart) { + chart.data = processSeries(chart.data, chart.options, "string"); + renderChart("BarChart", chart); + } + + function processAreaData(chart) { + chart.data = processSeries(chart.data, chart.options, "datetime"); + renderChart("AreaChart", chart); + } + + function processGeoData(chart) { + chart.data = processSimple(chart.data); + renderChart("GeoChart", chart); + } + + function processScatterData(chart) { + chart.data = processSeries(chart.data, chart.options, "number"); + renderChart("ScatterChart", chart); + } + + function processTimelineData(chart) { + chart.data = processTime(chart.data); + renderChart("Timeline", chart); + } + + function setElement(chart, element, dataSource, opts, callback) { + if (typeof element === "string") { + element = document.getElementById(element); + } + chart.element = element; + chart.options = opts || {}; + chart.dataSource = dataSource; + Chartkick.charts[element.id] = chart; + fetchDataSource(chart, callback); + } + + // define classes + + Chartkick = { + LineChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processLineData); + }, + PieChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processPieData); + }, + ColumnChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processColumnData); + }, + BarChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processBarData); + }, + AreaChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processAreaData); + }, + GeoChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processGeoData); + }, + ScatterChart: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processScatterData); + }, + Timeline: function (element, dataSource, opts) { + setElement(this, element, dataSource, opts, processTimelineData); + }, + charts: {} + }; + + window.Chartkick = Chartkick; +}(window)); \ No newline at end of file diff --git a/priv/static/js/chartkick-bd89f448fb80550d7f0a17af0ef48095.js.gz b/priv/static/js/chartkick-bd89f448fb80550d7f0a17af0ef48095.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..7f4282c4e856fd7129ef9f25ba2dd741e8d6feee GIT binary patch literal 5442 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 literal 0 HcmV?d00001 diff --git a/priv/static/js/chartkick.js.gz b/priv/static/js/chartkick.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..7f4282c4e856fd7129ef9f25ba2dd741e8d6feee GIT binary patch literal 5442 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 literal 0 HcmV?d00001 diff --git a/priv/static/robots-067185ba27a5d9139b10a759679045bf.txt b/priv/static/robots-067185ba27a5d9139b10a759679045bf.txt new file mode 100644 index 0000000..3c9c7c0 --- /dev/null +++ b/priv/static/robots-067185ba27a5d9139b10a759679045bf.txt @@ -0,0 +1,5 @@ +# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file +# +# To ban all spiders from the entire site uncomment the next two lines: +# User-agent: * +# Disallow: / diff --git a/priv/static/robots-067185ba27a5d9139b10a759679045bf.txt.gz b/priv/static/robots-067185ba27a5d9139b10a759679045bf.txt.gz new file mode 100644 index 0000000000000000000000000000000000000000..3416d1326598c974028223fa076d711c9a8f3692 GIT binary patch literal 164 zcmV;V09*ebiwFP!000006GhB14#F@D1<<{x_)<3{nmsc&01l8+w~3U*RqQGpA5#V- zFJJ!ujkpsbs_x#o-uu*eW)*$w#BFo`6t!fm+_3QLC{#6Q;tIRS9m+U_ppo#KOt!(A zG7aM};=!0hMaUVlr-hneZCuX2QK=CmDdDIuE?@loR5C+5Bd1E@&3Ov7YuK#daj|?$ SVkUPFH+%qCe{PS;0002vtx666 literal 0 HcmV?d00001 diff --git a/priv/static/robots.txt.gz b/priv/static/robots.txt.gz new file mode 100644 index 0000000000000000000000000000000000000000..3416d1326598c974028223fa076d711c9a8f3692 GIT binary patch literal 164 zcmV;V09*ebiwFP!000006GhB14#F@D1<<{x_)<3{nmsc&01l8+w~3U*RqQGpA5#V- zFJJ!ujkpsbs_x#o-uu*eW)*$w#BFo`6t!fm+_3QLC{#6Q;tIRS9m+U_ppo#KOt!(A zG7aM};=!0hMaUVlr-hneZCuX2QK=CmDdDIuE?@loR5C+5Bd1E@&3Ov7YuK#daj|?$ SVkUPFH+%qCe{PS;0002vtx666 literal 0 HcmV?d00001 From 812fc8645c8c4abcb6d5704947d625847095e96b Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Mon, 20 May 2019 01:54:36 -0300 Subject: [PATCH 23/37] Adding favicon to page --- lib/waves_web/templates/layout/app.html.eex | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/waves_web/templates/layout/app.html.eex b/lib/waves_web/templates/layout/app.html.eex index ab246b1..d4b62fa 100644 --- a/lib/waves_web/templates/layout/app.html.eex +++ b/lib/waves_web/templates/layout/app.html.eex @@ -5,6 +5,7 @@ Surf API + "/> From a47f6669a7fc899abe51329f07f57d900e506e26 Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Mon, 20 May 2019 02:01:26 -0300 Subject: [PATCH 24/37] Fixing favicon link --- lib/waves_web/templates/layout/app.html.eex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/waves_web/templates/layout/app.html.eex b/lib/waves_web/templates/layout/app.html.eex index d4b62fa..30b859e 100644 --- a/lib/waves_web/templates/layout/app.html.eex +++ b/lib/waves_web/templates/layout/app.html.eex @@ -5,7 +5,7 @@ Surf API - + "/> From 944804f054334a4d794dee62dd83a3e84e40d5cf Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Mon, 20 May 2019 02:09:18 -0300 Subject: [PATCH 25/37] Checking fetched data before saving --- lib/scraper/windguru.ex | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/lib/scraper/windguru.ex b/lib/scraper/windguru.ex index 97f4005..2cb6141 100644 --- a/lib/scraper/windguru.ex +++ b/lib/scraper/windguru.ex @@ -134,17 +134,21 @@ defmodule WindguruScraper do def scrape(spot) do data = fetch_data(spot.windguru_id) - Repo.insert(%SpotForecast{ - spot_id: spot.id, - datetimes: data["datetimes"], - wind_speed: data["wind_speed"], - wind_gust: data["wind_gust"], - wind_direction: data["wind_direction"], - wave_height: data["wave_height"], - wave_period: data["wave_period"], - wave_direction: data["wave_direction"], - temperature: data["temperature"], - }) + case data["datetimes"] do + nil -> IO.puts("Error while fetching data for #{spot.name} (#{spot.windguru_id})") + _ -> + Repo.insert(%SpotForecast{ + spot_id: spot.id, + datetimes: data["datetimes"], + wind_speed: data["wind_speed"], + wind_gust: data["wind_gust"], + wind_direction: data["wind_direction"], + wave_height: data["wave_height"], + wave_period: data["wave_period"], + wave_direction: data["wave_direction"], + temperature: data["temperature"], + }) + end end def scrape_all() do From 4fa38a161140baa1eafe6b58cc9452255614fd9a Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Tue, 21 May 2019 00:02:23 -0300 Subject: [PATCH 26/37] Adding forecast info on charts --- assets/css/app.css | 13 +- assets/static/images/github.png | Bin 0 -> 2625 bytes lib/waves_web/controllers/page_controller.ex | 13 +- lib/waves_web/templates/page/index.html.eex | 4 +- priv/static/css/app.css | 146 ++++++++++++++++++- priv/static/images/github.png | Bin 0 -> 2625 bytes priv/static/js/app.js | 121 ++++++++++++++- 7 files changed, 287 insertions(+), 10 deletions(-) create mode 100644 assets/static/images/github.png create mode 100644 priv/static/images/github.png diff --git a/assets/css/app.css b/assets/css/app.css index f361d82..70a4504 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -10,7 +10,7 @@ h4{font-size: 1.8rem; letter-spacing: -.05rem; line-height: 1.5} h5{font-size: 1.6rem; letter-spacing: 0; line-height: 1.4} h6{font-size: 1.4rem; letter-spacing: 0; line-height: 1.2} -.container{ +.container { margin: 0 auto; max-width: 80.0rem; padding: 0 2.0rem; @@ -60,17 +60,18 @@ select { /* Chart section */ .charts { + color: #bababa; text-align: center; border-bottom: 1px solid #e3e3e3; background: #eee; border-radius: 6px; - padding: 3em; - margin-bottom: 3rem; - font-weight: 200; - font-size: 120%; + padding: 40px 40px 10px 40px; + font-weight: normal; + font-size: 100%; } .charts p { - margin: 0; + margin-top: 10px; + margin-bottom: 0; } /* Logo */ diff --git a/assets/static/images/github.png b/assets/static/images/github.png new file mode 100644 index 0000000000000000000000000000000000000000..182a1a3f734fc1b7d712c68b04c29bad9460d6cd GIT binary patch literal 2625 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 W4I>>0bz>}E>ge79v last - |> Repo.one() + |> Repo.one + |> Repo.preload(spot: :forecasts) wave_height = case forecast do @@ -39,9 +40,19 @@ defmodule WavesWeb.PageController do ] end + spot_name = + case forecast do + nil -> "Error" + _ -> forecast.spot.name + end + + d = forecast.inserted_at + conn |> assign(:wave_height, wave_height) |> assign(:wind_data, wind_data) + |> assign(:spot_name, spot_name) + |> assign(:forecast_datetime, "#{d.year}-#{d.month}-#{d.day} #{d.hour}:#{d.minute}") |> render("index.html") end end \ No newline at end of file diff --git a/lib/waves_web/templates/page/index.html.eex b/lib/waves_web/templates/page/index.html.eex index f865a12..717c386 100644 --- a/lib/waves_web/templates/page/index.html.eex +++ b/lib/waves_web/templates/page/index.html.eex @@ -1,4 +1,6 @@
<%= raw Chartkick.line_chart Poison.encode!(@wave_height) %> <%= raw Chartkick.line_chart Poison.encode!(@wind_data) %> -
\ No newline at end of file +

<%= @spot_name %>

+

<%= @forecast_datetime %>

+ diff --git a/priv/static/css/app.css b/priv/static/css/app.css index 9a3991e..05ebb44 100644 --- a/priv/static/css/app.css +++ b/priv/static/css/app.css @@ -1 +1,145 @@ -*,:after,:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000;font-family:Helvetica,Arial,sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote :last-child{margin-bottom:0}.button,button,input[type=button],input[type=reset],input[type=submit]{background-color:#0069d9;border:.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type=button][disabled]:focus,input[type=button][disabled]:hover,input[type=reset][disabled]:focus,input[type=reset][disabled]:hover,input[type=submit][disabled]:focus,input[type=submit][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type=button].button-outline,input[type=reset].button-outline,input[type=submit].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type=button].button-outline:focus,input[type=button].button-outline:hover,input[type=reset].button-outline:focus,input[type=reset].button-outline:hover,input[type=submit].button-outline:focus,input[type=submit].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type=button].button-outline[disabled]:focus,input[type=button].button-outline[disabled]:hover,input[type=reset].button-outline[disabled]:focus,input[type=reset].button-outline[disabled]:hover,input[type=submit].button-outline[disabled]:focus,input[type=submit].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type=button].button-clear,input[type=reset].button-clear,input[type=submit].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type=button].button-clear:focus,input[type=button].button-clear:hover,input[type=reset].button-clear:focus,input[type=reset].button-clear:hover,input[type=submit].button-clear:focus,input[type=submit].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type=button].button-clear[disabled]:focus,input[type=button].button-clear[disabled]:hover,input[type=reset].button-clear[disabled]:focus,input[type=reset].button-clear[disabled]:hover,input[type=submit].button-clear[disabled]:focus,input[type=submit].button-clear[disabled]:hover{color:#0069d9}code{border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}code,pre{background:#f4f5f6}pre{border-left:.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:.1rem solid #f4f5f6;margin:3rem 0}input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1rem;width:100%}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') 100% no-repeat;padding-right:3rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type=checkbox],input[type=radio]{display:inline}.label-inline{display:inline-block;font-weight:400;margin-left:.5rem}.row{display:flex;flex-direction:column;width:100%}.row,.row.row-no-padding,.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width:40rem){.row{flex-direction:row;margin-left:-1rem;width:calc(100% + 2rem)}.row .column{margin-bottom:inherit;padding:0 1rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:700}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:" ";display:table}.float-left{float:left}.float-right{float:right}h1{font-size:3.6rem;line-height:1.25}h2{font-size:2.8rem;line-height:1.3}h3{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h4{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h5{font-size:1.6rem;line-height:1.4}h5,h6{letter-spacing:0}h6{font-size:1.4rem;line-height:1.2}.container{margin:0 auto;max-width:80rem;padding:0 2rem;position:relative;width:100%}.center{justify-content:center}select{width:auto}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert p{margin-bottom:0}.alert:empty{display:none}.help-block{color:#a94442;display:block;margin:-1rem 0 2rem}.charts{text-align:center;border-bottom:1px solid #e3e3e3;background:#eee;border-radius:6px;padding:3em;margin-bottom:3rem;font-weight:200;font-size:120%}.charts p{margin:0}.surf-api-logo{min-width:300px;margin:1rem;display:block}.surf-api-logo img{width:auto;display:block}header{width:100%;background:#fdfdfd;border-bottom:1px solid #eaeaea;margin-bottom:2rem}header section{align-items:center;display:flex;flex-direction:column;justify-content:space-between}header section :first-child{order:2}header section :last-child{order:1}header nav li,header nav ul{margin:0;padding:0;display:block;text-align:right;white-space:nowrap}header nav ul{margin:0 1rem 1rem}header nav a{display:block}@media (min-width:40.0rem){header section{flex-direction:row}header nav ul{margin:1rem}.surf-api-logo{flex-basis:527px;margin:2rem 1rem}} \ No newline at end of file +/* This file is for your main application css. */ + +*,*:after,*:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000000;font-family:'Helvetica', 'Arial', sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:0.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote *:last-child{margin-bottom:0}.button,button,input[type='button'],input[type='reset'],input[type='submit']{background-color:#0069d9;border:0.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3.0rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type='button']:focus,input[type='button']:hover,input[type='reset']:focus,input[type='reset']:hover,input[type='submit']:focus,input[type='submit']:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type='button'][disabled],input[type='reset'][disabled],input[type='submit'][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type='button'][disabled]:focus,input[type='button'][disabled]:hover,input[type='reset'][disabled]:focus,input[type='reset'][disabled]:hover,input[type='submit'][disabled]:focus,input[type='submit'][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type='button'].button-outline,input[type='reset'].button-outline,input[type='submit'].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type='button'].button-outline:focus,input[type='button'].button-outline:hover,input[type='reset'].button-outline:focus,input[type='reset'].button-outline:hover,input[type='submit'].button-outline:focus,input[type='submit'].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type='button'].button-outline[disabled]:focus,input[type='button'].button-outline[disabled]:hover,input[type='reset'].button-outline[disabled]:focus,input[type='reset'].button-outline[disabled]:hover,input[type='submit'].button-outline[disabled]:focus,input[type='submit'].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type='button'].button-clear,input[type='reset'].button-clear,input[type='submit'].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type='button'].button-clear:focus,input[type='button'].button-clear:hover,input[type='reset'].button-clear:focus,input[type='reset'].button-clear:hover,input[type='submit'].button-clear:focus,input[type='submit'].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type='button'].button-clear[disabled]:focus,input[type='button'].button-clear[disabled]:hover,input[type='reset'].button-clear[disabled]:focus,input[type='reset'].button-clear[disabled]:hover,input[type='submit'].button-clear[disabled]:focus,input[type='submit'].button-clear[disabled]:hover{color:#0069d9}code{background:#f4f5f6;border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}pre{background:#f4f5f6;border-left:0.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:0.1rem solid #f4f5f6;margin:3.0rem 0}input[type='email'],input[type='number'],input[type='password'],input[type='search'],input[type='tel'],input[type='text'],input[type='url'],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1.0rem;width:100%}input[type='email']:focus,input[type='number']:focus,input[type='password']:focus,input[type='search']:focus,input[type='tel']:focus,input[type='text']:focus,input[type='url']:focus,textarea:focus,select:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') center right no-repeat;padding-right:3.0rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type='checkbox'],input[type='radio']{display:inline}.label-inline{display:inline-block;font-weight:normal;margin-left:.5rem}.row{display:flex;flex-direction:column;padding:0;width:100%}.row.row-no-padding{padding:0}.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width: 40rem){.row{flex-direction:row;margin-left:-1.0rem;width:calc(100% + 2.0rem)}.row .column{margin-bottom:inherit;padding:0 1.0rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3.0rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1.0rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:0.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:bold}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2.0rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;letter-spacing:0;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:' ';display:table}.float-left{float:left}.float-right{float:right} + +/* General style */ +h1{font-size: 3.6rem; line-height: 1.25} +h2{font-size: 2.8rem; line-height: 1.3} +h3{font-size: 2.2rem; letter-spacing: -.08rem; line-height: 1.35} +h4{font-size: 1.8rem; letter-spacing: -.05rem; line-height: 1.5} +h5{font-size: 1.6rem; letter-spacing: 0; line-height: 1.4} +h6{font-size: 1.4rem; letter-spacing: 0; line-height: 1.2} + +.container { + margin: 0 auto; + max-width: 80.0rem; + padding: 0 2.0rem; + position: relative; + width: 100% +} +.footer { + display: flex; + margin: 30px auto; + padding: 0; +} +.footer img { + height: 40px; + width: 40px; + opacity: 0.2; +} +.center { + justify-content: center; +} +select { + width: auto; +} + +/* Alerts and form errors */ +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert p { + margin-bottom: 0; +} +.alert:empty { + display: none; +} +.help-block { + color: #a94442; + display: block; + margin: -1rem 0 2rem; +} + +/* Chart section */ +.charts { + color: #bababa; + text-align: center; + border-bottom: 1px solid #e3e3e3; + background: #eee; + border-radius: 6px; + padding: 40px 40px 10px 40px; + font-weight: normal; + font-size: 100%; +} +.charts p { + margin-top: 10px; + margin-bottom: 0; +} + +/* Logo */ +.surf-api-logo { + min-width: 300px; + margin: 1rem; + display: block; +} +.surf-api-logo img { + width: auto; + display: block; +} + +/* Headers */ +header { + width: 100%; + background: #fdfdfd; + border-bottom: 1px solid #eaeaea; + margin-bottom: 2rem; +} +header section { + align-items: center; + display: flex; + flex-direction: column; + justify-content: space-between; +} +header section :first-child { + order: 2; +} +header section :last-child { + order: 1; +} +header nav ul, +header nav li { + margin: 0; + padding: 0; + display: block; + text-align: right; + white-space: nowrap; +} +header nav ul { + margin: 1rem; + margin-top: 0; +} +header nav a { + display: block; +} + +@media (min-width: 40.0rem) { /* Small devices (landscape phones, 576px and up) */ + header section { + flex-direction: row; + } + header nav ul { + margin: 1rem; + } + .surf-api-logo { + flex-basis: 527px; + margin: 2rem 1rem; + } +} + diff --git a/priv/static/images/github.png b/priv/static/images/github.png new file mode 100644 index 0000000000000000000000000000000000000000..182a1a3f734fc1b7d712c68b04c29bad9460d6cd GIT binary patch literal 2625 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 W4I>>0bz>}E>ge79v Date: Tue, 21 May 2019 00:02:34 -0300 Subject: [PATCH 27/37] Adding footer --- assets/css/app.css | 10 ++++++++++ lib/waves_web/templates/layout/app.html.eex | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/assets/css/app.css b/assets/css/app.css index 70a4504..dacb372 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -17,6 +17,16 @@ h6{font-size: 1.4rem; letter-spacing: 0; line-height: 1.2} position: relative; width: 100% } +.footer { + display: flex; + margin: 30px auto; + padding: 0; +} +.footer img { + height: 40px; + width: 40px; + opacity: 0.2; +} .center { justify-content: center; } diff --git a/lib/waves_web/templates/layout/app.html.eex b/lib/waves_web/templates/layout/app.html.eex index 30b859e..d717e5d 100644 --- a/lib/waves_web/templates/layout/app.html.eex +++ b/lib/waves_web/templates/layout/app.html.eex @@ -23,6 +23,11 @@ <%= render @view_module, @view_template, assigns %> + From 570afdda4513189d5ed93e6ef323da86141422ff Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Tue, 21 May 2019 00:31:03 -0300 Subject: [PATCH 28/37] Importing charkick on app.js --- assets/js/app.js | 1 + lib/waves_web/templates/layout/app.html.eex | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/js/app.js b/assets/js/app.js index 8a5d386..6ffc669 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -15,3 +15,4 @@ import "phoenix_html" // // Local files can be imported directly using relative paths, for example: // import socket from "./socket" +import * as chartkick from "./chartkick.js" diff --git a/lib/waves_web/templates/layout/app.html.eex b/lib/waves_web/templates/layout/app.html.eex index d717e5d..f434a89 100644 --- a/lib/waves_web/templates/layout/app.html.eex +++ b/lib/waves_web/templates/layout/app.html.eex @@ -8,7 +8,7 @@ "/> - +
@@ -28,6 +28,5 @@ " alt="Github Repo"/> - From 7a5ae826d8b32e7b7141b2cd58cb93032ed28fc1 Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Tue, 21 May 2019 00:32:02 -0300 Subject: [PATCH 29/37] Generating static files --- priv/static/cache_manifest.json | 2 +- ... app-98b96f8468594140b7c35f83e644e156.css} | 2 +- ...pp-98b96f8468594140b7c35f83e644e156.css.gz | Bin 0 -> 2551 bytes ...pp-b902137fb137707f4fd20940b2715b1f.css.gz | Bin 2511 -> 0 bytes priv/static/css/app.css.gz | Bin 2511 -> 2551 bytes ...ithub-438c17272c5f0e9f4a6da34d3e4bc5bd.png | Bin 0 -> 2625 bytes ...oenix-5bd99a0d17dd41bc9d9bf6840abcc089.png | Bin 13900 -> 0 bytes priv/static/images/phoenix.png | Bin 13900 -> 0 bytes .../app-1cba1dc6de51af8cc041a2ff9f14ca2a.js | 1 + ...app-1cba1dc6de51af8cc041a2ff9f14ca2a.js.gz | Bin 0 -> 4183 bytes .../app-d255e0f04466ade472877808e02adefc.js | 1 - ...app-d255e0f04466ade472877808e02adefc.js.gz | Bin 818 -> 0 bytes priv/static/js/app.js | 13 +- priv/static/js/app.js.gz | Bin 818 -> 4183 bytes ...rtkick-bd89f448fb80550d7f0a17af0ef48095.js | 915 ------------------ ...ick-bd89f448fb80550d7f0a17af0ef48095.js.gz | Bin 5442 -> 0 bytes priv/static/js/chartkick.js | 915 ------------------ priv/static/js/chartkick.js.gz | Bin 5442 -> 0 bytes 18 files changed, 15 insertions(+), 1834 deletions(-) rename priv/static/css/{app-b902137fb137707f4fd20940b2715b1f.css => app-98b96f8468594140b7c35f83e644e156.css} (85%) create mode 100644 priv/static/css/app-98b96f8468594140b7c35f83e644e156.css.gz delete mode 100644 priv/static/css/app-b902137fb137707f4fd20940b2715b1f.css.gz create mode 100644 priv/static/images/github-438c17272c5f0e9f4a6da34d3e4bc5bd.png delete mode 100644 priv/static/images/phoenix-5bd99a0d17dd41bc9d9bf6840abcc089.png delete mode 100644 priv/static/images/phoenix.png create mode 100644 priv/static/js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js create mode 100644 priv/static/js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js.gz delete mode 100644 priv/static/js/app-d255e0f04466ade472877808e02adefc.js delete mode 100644 priv/static/js/app-d255e0f04466ade472877808e02adefc.js.gz delete mode 100644 priv/static/js/chartkick-bd89f448fb80550d7f0a17af0ef48095.js delete mode 100644 priv/static/js/chartkick-bd89f448fb80550d7f0a17af0ef48095.js.gz delete mode 100644 priv/static/js/chartkick.js delete mode 100644 priv/static/js/chartkick.js.gz diff --git a/priv/static/cache_manifest.json b/priv/static/cache_manifest.json index f7ec7ac..eb25f72 100644 --- a/priv/static/cache_manifest.json +++ b/priv/static/cache_manifest.json @@ -1 +1 @@ -{"digests":{"css/app-b902137fb137707f4fd20940b2715b1f.css":{"digest":"b902137fb137707f4fd20940b2715b1f","logical_path":"css/app.css","mtime":63725545851,"size":9850},"favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico":{"digest":"e65bbcae05ea941ac84beeb4bbe50a16","logical_path":"favicon.ico","mtime":63725545851,"size":1150},"images/phoenix-5bd99a0d17dd41bc9d9bf6840abcc089.png":{"digest":"5bd99a0d17dd41bc9d9bf6840abcc089","logical_path":"images/phoenix.png","mtime":63725545851,"size":13900},"images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png":{"digest":"9e5b043f43f98c444b02356a213d1db1","logical_path":"images/surf-api-logo.png","mtime":63725545851,"size":4106},"js/app-d255e0f04466ade472877808e02adefc.js":{"digest":"d255e0f04466ade472877808e02adefc","logical_path":"js/app.js","mtime":63725545851,"size":1911},"js/chartkick-bd89f448fb80550d7f0a17af0ef48095.js":{"digest":"bd89f448fb80550d7f0a17af0ef48095","logical_path":"js/chartkick.js","mtime":63725545851,"size":28576},"robots-067185ba27a5d9139b10a759679045bf.txt":{"digest":"067185ba27a5d9139b10a759679045bf","logical_path":"robots.txt","mtime":63725545851,"size":202}},"latest":{"css/app.css":"css/app-b902137fb137707f4fd20940b2715b1f.css","favicon.ico":"favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico","images/phoenix.png":"images/phoenix-5bd99a0d17dd41bc9d9bf6840abcc089.png","images/surf-api-logo.png":"images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png","js/app.js":"js/app-d255e0f04466ade472877808e02adefc.js","js/chartkick.js":"js/chartkick-bd89f448fb80550d7f0a17af0ef48095.js","robots.txt":"robots-067185ba27a5d9139b10a759679045bf.txt"},"version":1} \ No newline at end of file +{"digests":{"css/app-98b96f8468594140b7c35f83e644e156.css":{"digest":"98b96f8468594140b7c35f83e644e156","logical_path":"css/app.css","mtime":63725628619,"size":9973},"favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico":{"digest":"e65bbcae05ea941ac84beeb4bbe50a16","logical_path":"favicon.ico","mtime":63725628619,"size":1150},"images/github-438c17272c5f0e9f4a6da34d3e4bc5bd.png":{"digest":"438c17272c5f0e9f4a6da34d3e4bc5bd","logical_path":"images/github.png","mtime":63725628619,"size":2625},"images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png":{"digest":"9e5b043f43f98c444b02356a213d1db1","logical_path":"images/surf-api-logo.png","mtime":63725628619,"size":4106},"js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js":{"digest":"1cba1dc6de51af8cc041a2ff9f14ca2a","logical_path":"js/app.js","mtime":63725628619,"size":12308},"robots-067185ba27a5d9139b10a759679045bf.txt":{"digest":"067185ba27a5d9139b10a759679045bf","logical_path":"robots.txt","mtime":63725628619,"size":202}},"latest":{"css/app.css":"css/app-98b96f8468594140b7c35f83e644e156.css","favicon.ico":"favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico","images/github.png":"images/github-438c17272c5f0e9f4a6da34d3e4bc5bd.png","images/surf-api-logo.png":"images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png","js/app.js":"js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js","robots.txt":"robots-067185ba27a5d9139b10a759679045bf.txt"},"version":1} \ No newline at end of file diff --git a/priv/static/css/app-b902137fb137707f4fd20940b2715b1f.css b/priv/static/css/app-98b96f8468594140b7c35f83e644e156.css similarity index 85% rename from priv/static/css/app-b902137fb137707f4fd20940b2715b1f.css rename to priv/static/css/app-98b96f8468594140b7c35f83e644e156.css index 9a3991e..66f15ee 100644 --- a/priv/static/css/app-b902137fb137707f4fd20940b2715b1f.css +++ b/priv/static/css/app-98b96f8468594140b7c35f83e644e156.css @@ -1 +1 @@ -*,:after,:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000;font-family:Helvetica,Arial,sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote :last-child{margin-bottom:0}.button,button,input[type=button],input[type=reset],input[type=submit]{background-color:#0069d9;border:.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type=button][disabled]:focus,input[type=button][disabled]:hover,input[type=reset][disabled]:focus,input[type=reset][disabled]:hover,input[type=submit][disabled]:focus,input[type=submit][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type=button].button-outline,input[type=reset].button-outline,input[type=submit].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type=button].button-outline:focus,input[type=button].button-outline:hover,input[type=reset].button-outline:focus,input[type=reset].button-outline:hover,input[type=submit].button-outline:focus,input[type=submit].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type=button].button-outline[disabled]:focus,input[type=button].button-outline[disabled]:hover,input[type=reset].button-outline[disabled]:focus,input[type=reset].button-outline[disabled]:hover,input[type=submit].button-outline[disabled]:focus,input[type=submit].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type=button].button-clear,input[type=reset].button-clear,input[type=submit].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type=button].button-clear:focus,input[type=button].button-clear:hover,input[type=reset].button-clear:focus,input[type=reset].button-clear:hover,input[type=submit].button-clear:focus,input[type=submit].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type=button].button-clear[disabled]:focus,input[type=button].button-clear[disabled]:hover,input[type=reset].button-clear[disabled]:focus,input[type=reset].button-clear[disabled]:hover,input[type=submit].button-clear[disabled]:focus,input[type=submit].button-clear[disabled]:hover{color:#0069d9}code{border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}code,pre{background:#f4f5f6}pre{border-left:.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:.1rem solid #f4f5f6;margin:3rem 0}input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1rem;width:100%}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') 100% no-repeat;padding-right:3rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type=checkbox],input[type=radio]{display:inline}.label-inline{display:inline-block;font-weight:400;margin-left:.5rem}.row{display:flex;flex-direction:column;width:100%}.row,.row.row-no-padding,.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width:40rem){.row{flex-direction:row;margin-left:-1rem;width:calc(100% + 2rem)}.row .column{margin-bottom:inherit;padding:0 1rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:700}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:" ";display:table}.float-left{float:left}.float-right{float:right}h1{font-size:3.6rem;line-height:1.25}h2{font-size:2.8rem;line-height:1.3}h3{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h4{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h5{font-size:1.6rem;line-height:1.4}h5,h6{letter-spacing:0}h6{font-size:1.4rem;line-height:1.2}.container{margin:0 auto;max-width:80rem;padding:0 2rem;position:relative;width:100%}.center{justify-content:center}select{width:auto}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert p{margin-bottom:0}.alert:empty{display:none}.help-block{color:#a94442;display:block;margin:-1rem 0 2rem}.charts{text-align:center;border-bottom:1px solid #e3e3e3;background:#eee;border-radius:6px;padding:3em;margin-bottom:3rem;font-weight:200;font-size:120%}.charts p{margin:0}.surf-api-logo{min-width:300px;margin:1rem;display:block}.surf-api-logo img{width:auto;display:block}header{width:100%;background:#fdfdfd;border-bottom:1px solid #eaeaea;margin-bottom:2rem}header section{align-items:center;display:flex;flex-direction:column;justify-content:space-between}header section :first-child{order:2}header section :last-child{order:1}header nav li,header nav ul{margin:0;padding:0;display:block;text-align:right;white-space:nowrap}header nav ul{margin:0 1rem 1rem}header nav a{display:block}@media (min-width:40.0rem){header section{flex-direction:row}header nav ul{margin:1rem}.surf-api-logo{flex-basis:527px;margin:2rem 1rem}} \ No newline at end of file +*,:after,:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000;font-family:Helvetica,Arial,sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote :last-child{margin-bottom:0}.button,button,input[type=button],input[type=reset],input[type=submit]{background-color:#0069d9;border:.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type=button][disabled]:focus,input[type=button][disabled]:hover,input[type=reset][disabled]:focus,input[type=reset][disabled]:hover,input[type=submit][disabled]:focus,input[type=submit][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type=button].button-outline,input[type=reset].button-outline,input[type=submit].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type=button].button-outline:focus,input[type=button].button-outline:hover,input[type=reset].button-outline:focus,input[type=reset].button-outline:hover,input[type=submit].button-outline:focus,input[type=submit].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type=button].button-outline[disabled]:focus,input[type=button].button-outline[disabled]:hover,input[type=reset].button-outline[disabled]:focus,input[type=reset].button-outline[disabled]:hover,input[type=submit].button-outline[disabled]:focus,input[type=submit].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type=button].button-clear,input[type=reset].button-clear,input[type=submit].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type=button].button-clear:focus,input[type=button].button-clear:hover,input[type=reset].button-clear:focus,input[type=reset].button-clear:hover,input[type=submit].button-clear:focus,input[type=submit].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type=button].button-clear[disabled]:focus,input[type=button].button-clear[disabled]:hover,input[type=reset].button-clear[disabled]:focus,input[type=reset].button-clear[disabled]:hover,input[type=submit].button-clear[disabled]:focus,input[type=submit].button-clear[disabled]:hover{color:#0069d9}code{border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}code,pre{background:#f4f5f6}pre{border-left:.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:.1rem solid #f4f5f6;margin:3rem 0}input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1rem;width:100%}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') 100% no-repeat;padding-right:3rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type=checkbox],input[type=radio]{display:inline}.label-inline{display:inline-block;font-weight:400;margin-left:.5rem}.row{display:flex;flex-direction:column;width:100%}.row,.row.row-no-padding,.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width:40rem){.row{flex-direction:row;margin-left:-1rem;width:calc(100% + 2rem)}.row .column{margin-bottom:inherit;padding:0 1rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:700}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:" ";display:table}.float-left{float:left}.float-right{float:right}h1{font-size:3.6rem;line-height:1.25}h2{font-size:2.8rem;line-height:1.3}h3{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h4{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h5{font-size:1.6rem;line-height:1.4}h5,h6{letter-spacing:0}h6{font-size:1.4rem;line-height:1.2}.container{margin:0 auto;max-width:80rem;padding:0 2rem;position:relative;width:100%}.footer{display:flex;margin:30px auto;padding:0}.footer img{height:40px;width:40px;opacity:.2}.center{justify-content:center}select{width:auto}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert p{margin-bottom:0}.alert:empty{display:none}.help-block{color:#a94442;display:block;margin:-1rem 0 2rem}.charts{color:#bababa;text-align:center;border-bottom:1px solid #e3e3e3;background:#eee;border-radius:6px;padding:40px 40px 10px;font-weight:400;font-size:100%}.charts p{margin-top:10px;margin-bottom:0}.surf-api-logo{min-width:300px;margin:1rem;display:block}.surf-api-logo img{width:auto;display:block}header{width:100%;background:#fdfdfd;border-bottom:1px solid #eaeaea;margin-bottom:2rem}header section{align-items:center;display:flex;flex-direction:column;justify-content:space-between}header section :first-child{order:2}header section :last-child{order:1}header nav li,header nav ul{margin:0;padding:0;display:block;text-align:right;white-space:nowrap}header nav ul{margin:0 1rem 1rem}header nav a{display:block}@media (min-width:40.0rem){header section{flex-direction:row}header nav ul{margin:1rem}.surf-api-logo{flex-basis:527px;margin:2rem 1rem}} \ No newline at end of file diff --git a/priv/static/css/app-98b96f8468594140b7c35f83e644e156.css.gz b/priv/static/css/app-98b96f8468594140b7c35f83e644e156.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..ad4133f5f21ef5629b6b0449b3d19b8a1d6eacfe GIT binary patch literal 2551 zcmVHZf8-DE1IDP99T;MwX;CY@H&%hNGZ}C51@d^n_fc>`` zfx>P;**FcIAye3F-3VUA`wgN?PU3*FDNqTWT)b0^{#@YX$A4N(n7mw=0%jz3gBo6~ z1{Wx`KBQarIbA`0L8Tb?hPRq?@=g^D`QArJZN>Ni4;Eh_7YmqNcQ#hMJ)A*ihTq-+o z4{Wr6gtBs)3M5QjfR3XEvU z;Y-ub35EeqVX%DUMae!I%&P+x`{I@`)sH^-2Q@J`7cl*9&j9lUng_*V%wtmSaj=sv zmck6Q1vz2n7vwE=!?{Shr4+bovl;pV_S$L|ExN{Ky6hz@uko0vXVLOgF3)zq4jgnV ze;nxtwi!Ct!wQC2j|(PN(SGwN%} zcb;-HD|gY0jQrM3u@+Lq+k$ip>^w`7>Tm?emTp@DpP8B$U$cifgmCuH0>~6;(MC^#hnde4i~L03c*@^kruPSpr`%1J z`-y;IlKB=D?o*oHJ9!63~LQkfu_093H0omnkLCL5P`+y{jOJ!ZA}pxSipqXY>@6o(9!bk z`~%T~i`GwoZc?s&T3$I<{O1ffeSgRP*A*hmYm>w9RzVI@e3QIqErpZ0Y;+@TC2k{> zl04pe-p9F?=k6|bJs)^z+^|K2-sb~M`zGk!RMRm_NT{%fd>O1FUOQ7huM~2ERNWku z@2B5VKtPPH-~zuiub1EN*W%QY>|lSTZx($ko0m;aNELtia=YE!Tj1jQ^2PT&kKu1D zq2-s&cDJ!!5xo5!-(NPKa4Sn12=Uq?6C z@BO_MxRDMzodfxu{W=%99kujXfqYy3=6w}7g(m99<#J=n5j9V_o4*9 z48bC$XUgDeVgrpWE-hLmIZS@gZK<~a=pM%3AF_ykQSWj=9q~39RGUdsyxl0C2zZC1ehiG4XKs;T{1ABb*@_FAgDo{`w>i~V<~8_9*3VBcIp-;IlXV6o$;e-k);liEwSWXih^-Mn)W=ahjwLnYotm%1oM$Jx@JTR0$4$d;_M$XpjR4&_fY+uLrpJ0bN zcDRZi1oqnKPU95>Zb1L7G7NQL!*yY!Xl?pvuknf^H=_Sm8SeGf@7Gs<(1ks$3wzYD zj|B<{U}$RL2cyBf3b$2@?-a3jn%KJq zu|tI-)F_txBvL3MjUrm2FuN4>rIC?zB$eBmZ|xOr?=@{N`PV@a`=E)vNtJAwR7Lj13TZ@d1&WRH@lqGF9#iQJ2=sv0vh-#?z9tmu71ty_qng& z1V)^&&jSU?m-m$#Qqbo+4aYa!X*x8iH;_{PVW%eKru$Gz8_sDdY1GYfc^zlhqwA&9 z6SUst?V1eT#npT#`gBy2`6;37XdH_-*5=XZ;4ay_S%CrJp3w0};Xe}0tuEpGS=axf zZvA)YHuweI?*4b(hR<~?{B^?6o0?^3ay^%68c<-}Jvv@8wH}X2{mNVP!*GMd(E$q@ z!e615Zf6)XgKCw~&{FcMyO=>KVg$a$d?X+0tLlCl&Mo@*xO!zGi_`GmZ9`D@<_x|f z4?fvr5VUNf-US7$$)jl6hShz#ZP^sE`?IC;i3nzB4a@$|uDVOEv|!Bea8d=^y?4mw zJ*E%o5vJLGay@lU;33-%d~TpFsdNLY1BlY#Y+#io*#QOU5X!2$*`I^(ff!yZ^7gPVKfT=?7L}-!CsXScob&^pVpzhPs7Z60 zD>Vb%8L*Gx&nooOX0+4?7_iSt?Ycq;CsvE7kq0MWPG#}0EwlZ!v{&|xh*VrYOFJ_- z;Y>eGTW1cakW=6b?#Aqko*)l&ey;0knGo`=FuL#rH-~^Ot5a%St=*im&x)=9`xp)` z$=7N`R%od5Pw(h$Ot&TPKRahgZV;A}DJ<=j7yHkj;V7rO+@b?Y30|!N*~;4^pHW*v z6Ax7Uik}gtM!uP)wH+F_Dgw}Z6vous70LHR!}B!UJTaef;#!>c3>wtLp}!w}%YTU2 N{})NMjp_9!008jS1Y!UH literal 0 HcmV?d00001 diff --git a/priv/static/css/app-b902137fb137707f4fd20940b2715b1f.css.gz b/priv/static/css/app-b902137fb137707f4fd20940b2715b1f.css.gz deleted file mode 100644 index de5d6a4dd0006641e55dd0dd05a87ebe4624fffe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2511 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 Z3>wtLp}!w}%YTU2{};CLU&eYS002FZ?#2KB diff --git a/priv/static/css/app.css.gz b/priv/static/css/app.css.gz index de5d6a4dd0006641e55dd0dd05a87ebe4624fffe..ad4133f5f21ef5629b6b0449b3d19b8a1d6eacfe 100644 GIT binary patch delta 2434 zcmV-|34Qj@6ZaE;ABzY800000029R;U9+1y?yoTEbZ)yBD1kr{($m@9r+wJ{1$X-3 zfC=6b%z`<|xeWh({Y9|BkkjqMHq!)TNtPv9mgMsnI|dnnwH=>fhHKcJ@!e_ApQyaV zsLWxFNS~8yp~BC&PGRj($SK1mVPF_Xz8ik*&p3VS5?tVaI{x5!o*2)-6%}vsKVb0+ z2}*$dw;F-MZa~>M4V@uV*lgVhUd8(jqDxNVfU+r237uTLQ;hyx;N-`DT1=R{T$lo8 zBzA)uUabZfD78MMTlP6!L484`825&^nsf3_6-ZOIqAjD_x*`2hcw2D+8sa25D$-6; zo-rZ#8hgEedv57dY0Do}RxSC1yjAc;K)$P>8a9wR3XEvU;Y-ub35EeqVX%DUMae!I%&P+x`{I@`)sH^-2Q@J`7cl*9&j9lUng_*V z%wtl2?s2e_E|$U!v;{d~<`?8GcEh7$y`N{g{pI7A<11w}J_*H<%s{$}wC z%9OS<=5|%983RpbcUhQ4JqIsUaWWrb@@56TId5@}(iE1A>YG7i?@{lFLdQ_yY4TAv zeLh4^N-en&T< zK@L)Ule}jwg_F5#bR%vhZX=YEJl=ZV$GMj0?k;sbA9!foutkL4=L1apCg|N%(=kg( zsIZ588LT2+J5xTd6mo)8-5iwfr{8~4KtPPH-~zuiub1EN*W%QY>|lSTZx($ko0m;a zNELtia=YE!Tj1jQ^2PT&kKu1Dq2-s&cDJ!!5xo5!-(NPKa4Sn12=Uq?6C@BO_MxRDZh<;J;azP#OHW^f#Nm9JsD4q!BTsXJJw+C%j z!25}PIVq~C{aGJ~ZjAO?s=J<%*zAk_cc>f5g_vO9TtVNBi+y0R3MfX%}$j(FqA(I&NAvo&erQxF57i%U&r>JV23((xQZPF z_S)!9;}ryMK>w{W41aZD!*yY!Xl?pvuknf^H=_Sm8SeGf@7Gs<(1ks$3wzYDj|B<{U}$RL2cyBf3b$2@?-a3jn%KJqu|tI- z)F_txBvL3MjUrm2FuN4>rIC?zB$eBmZ|xOr?=@{N`PV@a`+uN`z2sv@h2p4DO#N*5 zRRSyxVc9gk&d{}3J5mgxc7`v*u5)diON~;8g;4FjLE$9h@n5enMZo&RPUOK8=n?g~ z<7d?5SfU^;mO4sqnt&qt#B-eAEmr(|*2A-YMh|)KctOHA^*zvwFysA5FOx_c=yjW{ zy3@kOh20iifqxpBHjuYMru0$*R?0lm0C^-(B8$?|Z_K}2#>3*A7zA@j%ONd?v<%XX ziHR^juZ2WW#R7?V;F%rP#GwnKDO_QpvOy{Aby*Ws)ADo}n_R1=+=#XO#_hFuTrjpbqdH1*@ z6)BopIl(RajFqVvRT$wRbQEqXD>fsiWa#mlviB&1`cw@Z|I08qO{H__%syB8$`T-)%!s_T~(} zA`d>qgYbbEUMuqUurEKo-5eH`sFWvD>lK{z1D;}7!kef` zbDAqP1Kk<0kKxZM^wVav)CU-_&q?jNLVpM+R*R^S2Pa@oW$~{qv;DNRSN4sFR9rqw zJ2N=pOg~LqXAY>4Q{W5k#_WrpAP;nYuIp-<5b~`sy6^-yhk!1tQ)*qU-JG(|imm|r z7!EGU*J?yoXsGf}@91qzwGdW60I%4? A$p8QV delta 2411 zcmV-x36%Et6VDTWABzY800000029R;U9+RQ?XNJ|*}1#Dz!C@~A$xY(KJ}sf1$Xwr z0TbMHfPy*6xeWik{vz05$l2~gPv#^+mSkCyWl7Fo>=b`Sy{vGT;81q{fUZ8 zjEWrAi1azRVikTa>lD@wg`BdoAPfxS$alk!{kcrvx}?N^WgUO;JWq^g;EM2D{11p< zAwdbS|5hV_?FJN$)6f|*h0WHD;8i@|AiCrv4k#Op3h3nGnPT*3TqZyM)0TwE%Z0%( zBe5IQ@M<+BMyd57-Llu|3hE0g#JD#+)tr-esz92u6>S;a)(z>0!rO{5Xo!>K2&bK- zJeP!&*VyZS-E&L76}J39Mb(l&$Xf+p1mwF4s$m0(25H*!6_M}V86-b0b=elF^H5uK zOphnAuGrlwOVWm%8lDrKqVec%#q6wYSQ zG`^=Am&y*@0~^JVP*zS;frP0`kf=tHc!NGYi&^4-MBtq`0HaG0Cy)!nAt_AC8W2<# zaZwgf07*^VfqLLIZmSB`325NymLmfBtdL^fYETVokFzpq8+&-l%U9~c+K@Ifw~oXz z49qBm@#X{)KEs!$of8ZLoWfxF$cvJFG?-ThD)uc~!c;%{;2+e);EZAV-JSvF3p5Xk z#hAx`q}=0RCtWOs8E7#%mCP^5TkM8&k#tKbaMflr^abp-)ht?cjmvb|OIBXvF;mZ? z<)>Vp?S36N=vIC>(hqDibgqXL46(=+1i63-#$0~Biz`sm-F|wH@Va+Q2UQm_6Ry!c z)xe_1JmqK9*OKo%Df0AVd_F52rE)*7e+O>?6Y=-D+jO_FOM0`cU3 z`L0)wZA}pxh+#r(Hb{3P=xF(N{()%0Me8R(H!0UXEw7ww`R5EceSXLO*A*hmYm>w9 zRzVKZ@+NuDS_&s~+2}^xO58>$C3(E{ypMA&&)r?>dOq;bxM7P3z0U`j_D#^csitF= zkWgU{`7l^TJa(phUMb`Rsk%8R-%r1PrGS7KUBLx@X>-8lI&oArB4=pDw>x~ zPDmAh`EtA6+*{z5_2rB2c^<>xSVGG$o9%96y&`z~dwGA^c$R1RM~lI@l3zCdar5nK z1xRjX2;-N{M?VnO-B{_%=3hrQ*zf(l6}XWf;?VUD+i+(^?lB1c;Gf&08}7UkAQHoy zFWkh*Nr| z46Y_N(AeVAqE(W^_HhB5 z8kai^3xw3NnunMve1*c-D3)wZjXY9>8pXnj7Yt1;{9rVgSK+p5@tq>}P7`~#AaQd3(xFIO&q!)n!;fV6%9&ZugjXCnwF=-*yLI*P3@G}7){iiEzPzv0kb*wnX*j;&PSc@Dy@8bS4?8s>H{FL)+Hg)wNuzF-%j-D19$hb; zo}l$EZ`Wk#F0SS~(Wj%D%ufkrN8?z$u{MuJ2Y1Qd&2R|__k@mr75*c^-0Bj}zw7#6 z)UE#x-3Gs)+ui@J+wi$=g}+W1dQ-FPOs?lLO#^=lth-0YOQzQ2F{xj9i+)(yAaQg+ zOhfo9)Y5HvUj4gm2+H1^!J6`Dl3f5nz$WWmfMHD@Wz9CM?$eFsQIPDnWmfn)ImQ1M%#RV0ehX)PAG(MVyB3jbufD{3#Y-f zE8q{mwGlqeb8;csLlaB|O=%o|f90IzI zPANFGo^Q%tE6M@vWjH+~U#k(RnW5A^y`#Y}-FdtT?3^LFL0C+tu(YFAY%za^qa3kv z7Y--|c(pLHm8VBiq4s4aPNp~#57ee^x|yZ59lEC~0?-=;#{Ab68Sq5I^IX_GF`pZ8 d;#!>c3>wtLp}!w}%YTU2{};CLU&eYS008e&xQYM( diff --git a/priv/static/images/github-438c17272c5f0e9f4a6da34d3e4bc5bd.png b/priv/static/images/github-438c17272c5f0e9f4a6da34d3e4bc5bd.png new file mode 100644 index 0000000000000000000000000000000000000000..182a1a3f734fc1b7d712c68b04c29bad9460d6cd GIT binary patch literal 2625 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 UWxWXg`G1#+f~I_}taaG`2PLnS&Hw-a diff --git a/priv/static/images/phoenix.png b/priv/static/images/phoenix.png deleted file mode 100644 index 9c81075f63d2151e6f40e9aa66f665749a87cc6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13900 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 UWxWXg`G1#+f~I_}taaG`2PLnS&Hw-a diff --git a/priv/static/js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js b/priv/static/js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js new file mode 100644 index 0000000..367163e --- /dev/null +++ b/priv/static/js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js @@ -0,0 +1 @@ +!function(t){var e={};function n(a){if(e[a])return e[a].exports;var r=e[a]={i:a,l:!1,exports:{}};return t[a].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=t,n.c=e,n.d=function(t,e,a){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:a})},n.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=4)}([function(t,e){function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(t){"use strict";var e,a,r,i=t.Chartkick||{},o=[];function c(t){return"[object Array]"===Object.prototype.toString.call(t)}function u(t){return t instanceof Function}function s(t){return!u(t)&&t instanceof Object}function d(t,e){var n;for(n in e)s(e[n])||c(e[n])?(s(e[n])&&!s(t[n])&&(t[n]={}),c(e[n])&&!c(t[n])&&(t[n]=[]),d(t[n],e[n])):void 0!==e[n]&&(t[n]=e[n])}function l(t,e){var n={};return d(n,t),d(n,e),n}function f(t,e,n,a,r,i,o){return function(c,u,s){var d=l({},t);return d=l(d,s||{}),u.hideLegend&&e(d),"min"in u?n(d,u.min):function(t){var e,n,a;for(e=0;e!XC8atE8+^RzuStq+2AUl~mdv}28 zGy+;;yOpS^21WTXZT$hWtt7oD#A;_4~~bnM#U>`n2J*_@i*gxs7x}*rQ(tvqx<`Jmmg(n;!G}bC4biC zT55A=$u?=J7Wq}J#bqI_Y^q+#_U)KmNt1{sYQSG}-xLpV3_g62)j!LuE@Z%9u%aeD zj)UU6#x#eACLYF|_7u^kvkXll>cTY1p3dHYFhD3-AOa}NBu!V24AKv2C12~(l;&&&UxQ{&^-@!IPGLh`UxXU)ExM; z26ZJTV3?;Su)YmPgP-Qy#Ai#P&8Iy5bbr5TSjlJeAxzRi;$T+V1(>|lTHMVcGv8Se zQ=VfAb=9s#)bxyMU-d~2-GoX>*uS+D18Fso9?&po?GJF14&<3zQqoCH7o`prs3$V2 z5Zh{w7)ss4Y1pld*)Ugnv6 zE3c%=4i9CRMJ!n5Du7YyQw6#@#%q-9gfz`=4Ji5XRK75AA=Q;xPUVv)5j6{LW^x{9 z!U(27qF#uOM1cg!RKNzallhC|HlrRKw-O$lG+~ORpy`iE#Fe-`JQPkCaZ4>&-}IA& z#F`|o;r~UcD_A#cA9>eCy|*Seg*-gWEerQX?RRZ^Y1{AGc4wbDF7it)^qsX+GuVFV z*6LuKBeF6@LRBWdEVH{fS4!#&d23G1@XTdmVuOdXQW=nP*-$2Zt#zp7axD9+mHWMOEQg#f0b)f(!-ykSbP+>;f6+D zfK3v7tdOl(t&2pls!mf#fZ8ZYVb7r)Q&&NE1QDkq5uNN)D91Dw136lHstvL-k1c{D z+PF^C&$ZRGiIT8w8Vz&3UPNAdsVsQnC6FsGHLZoNAk;+ae8vVBKZQBvxgx~suqf~y|kFG7{`Rp(AQ?KJM zwj()a1-ed7MtvtIU1v$1Pv@s(CC}>miEWOnB2Qt$h)6R|=7|4waTYFNG%{ccvy~A8 z?f1yQ_<2T&xZ=-`zr_p0#or%o)02_LPH1F=BO(o}Z+UP;rm`GPk4}=4=vznxRl8Np z`h<_zjT%=XU6*M`zK z|1Nx=x&Kl4{s?}v^LWueCEe4h|2TUev-$h%2_FA+|LZ;8pS(YsM>}Jp?{cQObK3AE z{vnD}RxU;`>!LL8)?^%T6k3XET>$Ho!j;sy zMC(fEPg2u12K0h207v{ZMWvr6k6U>-$uq8wCbkwJD1oZ?P^Y*ZcT$%pUhL#?wI2?E zbXw|_D1u#vcBx`(I$Loco^(VLIakn7M(Ve)g005>{z7$y3Lq^QtYver;_CiBXd5Wu zgX%%+c1k3J65HnXmKXmb>yK?I-~!pjLMs!Ojy;OqwC)r~-sgQ!oaGgK#sK;QAjqpy z-vvp4(b6D@142)vrW>XDS7(KblJ_7Y&NC}S#ogpK;grC3<%_Drb|tVKWv851v$BPM z2fLzJh?rt%`XcX!rUVOT=^Pn`x4%QCnOb(vG<@T>FiDW+I>ipOY3kNFcx7|3bla4$ z#_rBr(sSsK9oY7&cEEd&Q33s?%C}EYIUWI1kJ$;mtw1eHUn(`0>gRmN&zwYpylk*t zk8wqZaku-T_B%uo79oMEL6H%do$5zL*PZCIjj=Fpox@8gKPJJyX{R4BQYmqoHS>{f zdaT=7S=1}FFN|EYq_*GXTHOJi&Sn)>q#kr2WZqV}YV5Mr`bN?y-2 zNO6sNFDENRzMAs?f(8anl4=H z#;z*a!PY;wt|{Pkmu&fBw7ON)v@S+#>}SirialYacfEjiJeNWTV>fw;%=qx|J`>Ym zFX>_EQrXKv>%Q zOy=xQ-DclT*KlFK2E^BSRf{73P0%QWF`QpZ>$p@tQ0gEZw%}vBxK|$0LixHYHxJQY zv@~|dVKF~x9Y##VWHx|J#ekO7(NRR7Z@i!^ZQ{mW4xwQfb}NH?G}<`~O_~_i@lDDG zyk=$|Y2;`?8M&c1j=ek?B;|Ghwr*8|=3$s_rpWt3UDfD=q-p=chjwgLW5E0@3`Qyf zD4zr@#p+`_;ouqh4Ezf?HZWtEd2NuYr?4T#cOUrV=T?mzOeWs4bySvtmny29~I>yMYv#@={dRP0m`LX_^M?I+r)UfC*Vg0llg0~XUBeVg0$1M_~KuAOy< zayj5uj-8zU-rGOU4ID4si^Q+D#$P`^K4Pmq09bHW7RI^f6@B?3&^i^d$TFAqk#Dfo z9anfP(5Rf5-QsMhIQwk6k0-3Oi8*?(a(iW)RkNB8P#0-aou(sPnWSxH2c=)u%}~~< zhidv&NLAfwlCg1NucB&SVGpzI+564?6$qka_#%WpYDzR~(ZDR5(`S7k0m!E3QU5Vu z%#qMTRiZYYMb2FRUEWk-ffoeuuyS_kfm}tpe0_}+a5{PmgHmZ(A<*bt1;`G3Y{%QY zGEzxR6?MBU4EiDL;26m|1UmT41}fT=;a1gEe7%FaAw6I1w0awv_A{Zkjltf{p}@VK z=|PAN8b<8e7o{B?XIk8Z!hR}jz5u81QO7Syrd(sIef%Ft=aQ0r68tA#n!T`IJr3)I zh4m>N5$=cez$A|crS_w#wIIbN)BD1##rkcp^(wa@H2=ev?yU4>hSu1n>==6grs0pc zPN(JL&M|_gf7m_tBH%qDyE;MNa+lGb4QE^Sck8z;p!6Z&_bb?m_7&RgN9bR)B5c!_ zN;+#EpwuxVF#iq+F*kQf{6q7<9`?P|U!nQmW%*@c-{L}tK^zQpYw4mm*$(Ub`&sbK z;(7YxC4df=SN?GPGz;eT8{7YjQ12}B6`}s%7nv{gtgUEh6?)t${5ikEFS?D^me|84 zjeW*N{_l%G`+cYLj~tTG?kQ--e$tXr%sC=NGd6{vqk65fp5}{vsnZw43;H`?#8yw2u!D^85Q7$V)gFdU#le!s4^` zz=U1^x2En4mUOfyykYQDIcaB@EXo?ji5e2^eE^nv;8Bbl$iwKVX3?RJk= zj^B1OnpfG_%P{D1Yry;y=C_|=(whM+JajW=^3G%OsSi$!=pfvf{NwMKvjZGs4zGTf z>V54VGx_-;sk>@4CV%spIlGEM9Q?vC=JJcjW#@$cp<6Jzb5w*FwxU1v}Grl)hy z^L$+{`WoU(@xk4dphULk$_9N>RJ^~3f*tN_mq7n|_a+NfM0vMOsay>v;M!i~GTvqDc^z8bJE9&--5XF zuE!}qg0lCa$4Os-v~!=wDSrl~?2C>npu zvG;cTdwK_3c*FRgs8PW7Tp)Ce52pM?66_s71Vo-c zs24KW3X_*Rf&u8E0UGDAo0bRkZqFYc5$)7cCBeF^kV*4cSPLNS{(+`y8H@IY7t&_yff*}6xM z5)LY3eSH4>d?)6BzjZQ8%1#UZNCu$q*RVA|{rj@A)_awp3q(v2Lg5xTD hiu6Dig;aRFhl}a%+XJ9}A2q1V{{y5TG@ukP004uPG@1Ya literal 0 HcmV?d00001 diff --git a/priv/static/js/app-d255e0f04466ade472877808e02adefc.js b/priv/static/js/app-d255e0f04466ade472877808e02adefc.js deleted file mode 100644 index 5a6a6fa..0000000 --- a/priv/static/js/app-d255e0f04466ade472877808e02adefc.js +++ /dev/null @@ -1 +0,0 @@ -!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=3)}([function(t,e,n){"use strict";!function(){var t=function(){if("function"==typeof window.CustomEvent)return window.CustomEvent;function t(t,e){e=e||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(t,e.bubbles,e.cancelable,e.detail),n}return t.prototype=window.Event.prototype,t}();function e(t,e){var n=document.createElement("input");return n.type="hidden",n.name=t,n.value=e,n}function n(t){var n=t.getAttribute("data-to"),r=e("_method",t.getAttribute("data-method")),o=e("_csrf_token",t.getAttribute("data-csrf")),i=document.createElement("form"),u=t.getAttribute("target");i.method="get"===t.getAttribute("data-method")?"get":"post",i.action=n,i.style.display="hidden",u&&(i.target=u),i.appendChild(o),i.appendChild(r),document.body.appendChild(i),i.submit()}window.addEventListener("click",function(e){for(var r=e.target;r&&r.getAttribute;){var o=new t("phoenix.link.click",{bubbles:!0,cancelable:!0});if(!r.dispatchEvent(o))return e.preventDefault(),e.stopImmediatePropagation(),!1;if(r.getAttribute("data-method"))return n(r),e.preventDefault(),!1;r=r.parentNode}},!1),window.addEventListener("phoenix.link.click",function(t){var e=t.target.getAttribute("data-confirm");e&&!window.confirm(e)&&t.preventDefault()},!1)}()},function(t,e,n){},function(t,e,n){"use strict";n.r(e);n(1),n(0)},function(t,e,n){t.exports=n(2)}]); \ No newline at end of file diff --git a/priv/static/js/app-d255e0f04466ade472877808e02adefc.js.gz b/priv/static/js/app-d255e0f04466ade472877808e02adefc.js.gz deleted file mode 100644 index 773fbbd3f13c3657e0e427e28bd2b5089bf4af00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 818 zcmV-21I_#&iwFP!000006Ma=nZ{s!){wp>Q1_`i)x4l^)7R9!Q0&TbV#Uh}^am+>{ z1!|P6q42+VsE1`IN-s7!oagt=jJBuFm*|4$DEem;H=z4e%)*W5QS|P_;amJJB48K& zCZ84jXhOuc$Rxndw78MuVA|hm?XfeF8dihc>Nws-0e^;HlME=qMwn;K}=U+I;=ci z0VDu8NM;xnEFp&rcYs_?rp%idFyN&DbvEtS7eCi9l8_Cuk47^lJ@=~Bzlg-Y-9hX{ z&$<>iEk;)&E4DZJzb8vREPeUhqZ9_@?dQ@cugD^Pe>?R5m3!=_Dym`t| z)fA3SOEkKS!G!ebO4}7-J=HQeS;P_(7fVqv7PX#c1@(}q^G$b`;^3d1oweXu?lDut zFcd@U<-tfd!-}(iRMgqOA`y4&5ID02%}*GZkWth1p$0q$%jBxw^eAW~2j#Mjrw0sA zIfGS$tdP~+hjpDotSNZ+E-^Hb1XQt8V_41dUF-D{=F~n9S_jsI7MXO)3equQ8gx#`0rpLC6WpGA#iIIudLPy!PSn;TR*p40lVFH3N#6chrE>E wra9!4^8ec<_+E0i7U|PLE(_18B+vIN4siaYY0rNa>ANWY1Lp%|)^`U007EH`>i_@% diff --git a/priv/static/js/app.js b/priv/static/js/app.js index c38bacb..99bce73 100644 --- a/priv/static/js/app.js +++ b/priv/static/js/app.js @@ -102,7 +102,18 @@ eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./css/ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _css_app_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../css/app.css */ \"./css/app.css\");\n/* harmony import */ var _css_app_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_app_css__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var phoenix_html__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! phoenix_html */ \"../deps/phoenix_html/priv/static/phoenix_html.js\");\n/* harmony import */ var phoenix_html__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(phoenix_html__WEBPACK_IMPORTED_MODULE_1__);\n// We need to import the CSS so that webpack will load it.\n// The MiniCssExtractPlugin is used to separate it out into\n// its own CSS file.\n // webpack automatically bundles all modules in your\n// entry points. Those entry points can be configured\n// in \"webpack.config.js\".\n//\n// Import dependencies\n//\n\n // Import local files\n//\n// Local files can be imported directly using relative paths, for example:\n// import socket from \"./socket\"\n\n//# sourceURL=webpack:///./js/app.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _css_app_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../css/app.css */ \"./css/app.css\");\n/* harmony import */ var _css_app_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_app_css__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var phoenix_html__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! phoenix_html */ \"../deps/phoenix_html/priv/static/phoenix_html.js\");\n/* harmony import */ var phoenix_html__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(phoenix_html__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _chartkick_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chartkick.js */ \"./js/chartkick.js\");\n/* harmony import */ var _chartkick_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_chartkick_js__WEBPACK_IMPORTED_MODULE_2__);\n// We need to import the CSS so that webpack will load it.\n// The MiniCssExtractPlugin is used to separate it out into\n// its own CSS file.\n // webpack automatically bundles all modules in your\n// entry points. Those entry points can be configured\n// in \"webpack.config.js\".\n//\n// Import dependencies\n//\n\n // Import local files\n//\n// Local files can be imported directly using relative paths, for example:\n// import socket from \"./socket\"\n\n\n\n//# sourceURL=webpack:///./js/app.js?"); + +/***/ }), + +/***/ "./js/chartkick.js": +/*!*************************!*\ + !*** ./js/chartkick.js ***! + \*************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*\n * Chartkick.js\n * Create beautiful Javascript charts with minimal code\n * https://github.com/ankane/chartkick.js\n * v1.4.1\n * MIT License\n */\n\n/*jslint browser: true, indent: 2, plusplus: true, vars: true */\n(function (window) {\n 'use strict';\n\n var config = window.Chartkick || {};\n var Chartkick,\n ISO8601_PATTERN,\n DECIMAL_SEPARATOR,\n adapters = []; // helpers\n\n function isArray(variable) {\n return Object.prototype.toString.call(variable) === \"[object Array]\";\n }\n\n function isFunction(variable) {\n return variable instanceof Function;\n }\n\n function isPlainObject(variable) {\n return !isFunction(variable) && variable instanceof Object;\n } // https://github.com/madrobby/zepto/blob/master/src/zepto.js\n\n\n function extend(target, source) {\n var key;\n\n for (key in source) {\n if (isPlainObject(source[key]) || isArray(source[key])) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key])) {\n target[key] = {};\n }\n\n if (isArray(source[key]) && !isArray(target[key])) {\n target[key] = [];\n }\n\n extend(target[key], source[key]);\n } else if (source[key] !== undefined) {\n target[key] = source[key];\n }\n }\n }\n\n function merge(obj1, obj2) {\n var target = {};\n extend(target, obj1);\n extend(target, obj2);\n return target;\n } // https://github.com/Do/iso8601.js\n\n\n ISO8601_PATTERN = /(\\d\\d\\d\\d)(\\-)?(\\d\\d)(\\-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)?(:)?(\\d\\d)?([\\.,]\\d+)?($|Z|([\\+\\-])(\\d\\d)(:)?(\\d\\d)?)/i;\n DECIMAL_SEPARATOR = String(1.5).charAt(1);\n\n function parseISO8601(input) {\n var day, hour, matches, milliseconds, minutes, month, offset, result, seconds, type, year;\n type = Object.prototype.toString.call(input);\n\n if (type === '[object Date]') {\n return input;\n }\n\n if (type !== '[object String]') {\n return;\n }\n\n if (matches = input.match(ISO8601_PATTERN)) {\n year = parseInt(matches[1], 10);\n month = parseInt(matches[3], 10) - 1;\n day = parseInt(matches[5], 10);\n hour = parseInt(matches[7], 10);\n minutes = matches[9] ? parseInt(matches[9], 10) : 0;\n seconds = matches[11] ? parseInt(matches[11], 10) : 0;\n milliseconds = matches[12] ? parseFloat(DECIMAL_SEPARATOR + matches[12].slice(1)) * 1000 : 0;\n result = Date.UTC(year, month, day, hour, minutes, seconds, milliseconds);\n\n if (matches[13] && matches[14]) {\n offset = matches[15] * 60;\n\n if (matches[17]) {\n offset += parseInt(matches[17], 10);\n }\n\n offset *= matches[14] === '-' ? -1 : 1;\n result -= offset * 60 * 1000;\n }\n\n return new Date(result);\n }\n } // end iso8601.js\n\n\n function negativeValues(series) {\n var i, j, data;\n\n for (i = 0; i < series.length; i++) {\n data = series[i].data;\n\n for (j = 0; j < data.length; j++) {\n if (data[j][1] < 0) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n function jsOptionsFunc(defaultOptions, hideLegend, setMin, setMax, setStacked, setXtitle, setYtitle) {\n return function (series, opts, chartOptions) {\n var options = merge({}, defaultOptions);\n options = merge(options, chartOptions || {}); // hide legend\n // this is *not* an external option!\n\n if (opts.hideLegend) {\n hideLegend(options);\n } // min\n\n\n if (\"min\" in opts) {\n setMin(options, opts.min);\n } else if (!negativeValues(series)) {\n setMin(options, 0);\n } // max\n\n\n if (opts.max) {\n setMax(options, opts.max);\n }\n\n if (opts.stacked) {\n setStacked(options);\n }\n\n if (opts.colors) {\n options.colors = opts.colors;\n }\n\n if (opts.xtitle) {\n setXtitle(options, opts.xtitle);\n }\n\n if (opts.ytitle) {\n setYtitle(options, opts.ytitle);\n } // merge library last\n\n\n options = merge(options, opts.library || {});\n return options;\n };\n }\n\n function setText(element, text) {\n if (document.body.innerText) {\n element.innerText = text;\n } else {\n element.textContent = text;\n }\n }\n\n function chartError(element, message) {\n setText(element, \"Error Loading Chart: \" + message);\n element.style.color = \"#ff0000\";\n }\n\n function getJSON(element, url, success) {\n var $ = window.jQuery || window.Zepto || window.$;\n $.ajax({\n dataType: \"json\",\n url: url,\n success: success,\n error: function error(jqXHR, textStatus, errorThrown) {\n var message = typeof errorThrown === \"string\" ? errorThrown : errorThrown.message;\n chartError(element, message);\n }\n });\n }\n\n function errorCatcher(chart, callback) {\n try {\n callback(chart);\n } catch (err) {\n chartError(chart.element, err.message);\n throw err;\n }\n }\n\n function fetchDataSource(chart, callback) {\n if (typeof chart.dataSource === \"string\") {\n getJSON(chart.element, chart.dataSource, function (data, textStatus, jqXHR) {\n chart.data = data;\n errorCatcher(chart, callback);\n });\n } else {\n chart.data = chart.dataSource;\n errorCatcher(chart, callback);\n }\n } // type conversions\n\n\n function toStr(n) {\n return \"\" + n;\n }\n\n function toFloat(n) {\n return parseFloat(n);\n }\n\n function toDate(n) {\n if (_typeof(n) !== \"object\") {\n if (typeof n === \"number\") {\n n = new Date(n * 1000); // ms\n } else {\n // str\n // try our best to get the str into iso8601\n // TODO be smarter about this\n var str = n.replace(/ /, \"T\").replace(\" \", \"\").replace(\"UTC\", \"Z\");\n n = parseISO8601(str) || new Date(n);\n }\n }\n\n return n;\n }\n\n function toArr(n) {\n if (!isArray(n)) {\n var arr = [],\n i;\n\n for (i in n) {\n if (n.hasOwnProperty(i)) {\n arr.push([i, n[i]]);\n }\n }\n\n n = arr;\n }\n\n return n;\n }\n\n function sortByTime(a, b) {\n return a[0].getTime() - b[0].getTime();\n }\n\n if (\"Highcharts\" in window) {\n var HighchartsAdapter = new function () {\n var Highcharts = window.Highcharts;\n this.name = \"highcharts\";\n var defaultOptions = {\n chart: {},\n xAxis: {\n title: {\n text: null\n },\n labels: {\n style: {\n fontSize: \"12px\"\n }\n }\n },\n yAxis: {\n title: {\n text: null\n },\n labels: {\n style: {\n fontSize: \"12px\"\n }\n }\n },\n title: {\n text: null\n },\n credits: {\n enabled: false\n },\n legend: {\n borderWidth: 0\n },\n tooltip: {\n style: {\n fontSize: \"12px\"\n }\n },\n plotOptions: {\n areaspline: {},\n series: {\n marker: {}\n }\n }\n };\n\n var hideLegend = function hideLegend(options) {\n options.legend.enabled = false;\n };\n\n var setMin = function setMin(options, min) {\n options.yAxis.min = min;\n };\n\n var setMax = function setMax(options, max) {\n options.yAxis.max = max;\n };\n\n var setStacked = function setStacked(options) {\n options.plotOptions.series.stacking = \"normal\";\n };\n\n var setXtitle = function setXtitle(options, title) {\n options.xAxis.title.text = title;\n };\n\n var setYtitle = function setYtitle(options, title) {\n options.yAxis.title.text = title;\n };\n\n var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setMin, setMax, setStacked, setXtitle, setYtitle);\n\n this.renderLineChart = function (chart, chartType) {\n chartType = chartType || \"spline\";\n var chartOptions = {};\n\n if (chartType === \"areaspline\") {\n chartOptions = {\n plotOptions: {\n areaspline: {\n stacking: \"normal\"\n },\n series: {\n marker: {\n enabled: false\n }\n }\n }\n };\n }\n\n var options = jsOptions(chart.data, chart.options, chartOptions),\n data,\n i,\n j;\n options.xAxis.type = chart.options.discrete ? \"category\" : \"datetime\";\n options.chart.type = chartType;\n options.chart.renderTo = chart.element.id;\n var series = chart.data;\n\n for (i = 0; i < series.length; i++) {\n data = series[i].data;\n\n if (!chart.options.discrete) {\n for (j = 0; j < data.length; j++) {\n data[j][0] = data[j][0].getTime();\n }\n }\n\n series[i].marker = {\n symbol: \"circle\"\n };\n }\n\n options.series = series;\n new Highcharts.Chart(options);\n };\n\n this.renderScatterChart = function (chart) {\n var chartOptions = {};\n var options = jsOptions(chart.data, chart.options, chartOptions);\n options.chart.type = 'scatter';\n options.chart.renderTo = chart.element.id;\n options.series = chart.data;\n new Highcharts.Chart(options);\n };\n\n this.renderPieChart = function (chart) {\n var chartOptions = {};\n\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n options.chart.renderTo = chart.element.id;\n options.series = [{\n type: \"pie\",\n name: \"Value\",\n data: chart.data\n }];\n new Highcharts.Chart(options);\n };\n\n this.renderColumnChart = function (chart, chartType) {\n var chartType = chartType || \"column\";\n var series = chart.data;\n var options = jsOptions(series, chart.options),\n i,\n j,\n s,\n d,\n rows = [];\n options.chart.type = chartType;\n options.chart.renderTo = chart.element.id;\n\n for (i = 0; i < series.length; i++) {\n s = series[i];\n\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n\n if (!rows[d[0]]) {\n rows[d[0]] = new Array(series.length);\n }\n\n rows[d[0]][i] = d[1];\n }\n }\n\n var categories = [];\n\n for (i in rows) {\n if (rows.hasOwnProperty(i)) {\n categories.push(i);\n }\n }\n\n options.xAxis.categories = categories;\n var newSeries = [];\n\n for (i = 0; i < series.length; i++) {\n d = [];\n\n for (j = 0; j < categories.length; j++) {\n d.push(rows[categories[j]][i] || 0);\n }\n\n newSeries.push({\n name: series[i].name,\n data: d\n });\n }\n\n options.series = newSeries;\n new Highcharts.Chart(options);\n };\n\n var self = this;\n\n this.renderBarChart = function (chart) {\n self.renderColumnChart(chart, \"bar\");\n };\n\n this.renderAreaChart = function (chart) {\n self.renderLineChart(chart, \"areaspline\");\n };\n }();\n adapters.push(HighchartsAdapter);\n }\n\n if (window.google && window.google.setOnLoadCallback) {\n var GoogleChartsAdapter = new function () {\n var google = window.google;\n this.name = \"google\";\n var loaded = {};\n var callbacks = [];\n\n var runCallbacks = function runCallbacks() {\n var cb, call;\n\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n call = google.visualization && (cb.pack === \"corechart\" && google.visualization.LineChart || cb.pack === \"timeline\" && google.visualization.Timeline);\n\n if (call) {\n cb.callback();\n callbacks.splice(i, 1);\n i--;\n }\n }\n };\n\n var waitForLoaded = function waitForLoaded(pack, callback) {\n if (!callback) {\n callback = pack;\n pack = \"corechart\";\n }\n\n callbacks.push({\n pack: pack,\n callback: callback\n });\n\n if (loaded[pack]) {\n runCallbacks();\n } else {\n loaded[pack] = true; // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI\n\n var loadOptions = {\n packages: [pack],\n callback: runCallbacks\n };\n\n if (config.language) {\n loadOptions.language = config.language;\n }\n\n google.load(\"visualization\", \"1\", loadOptions);\n }\n }; // Set chart options\n\n\n var defaultOptions = {\n chartArea: {},\n fontName: \"'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif\",\n pointSize: 6,\n legend: {\n textStyle: {\n fontSize: 12,\n color: \"#444\"\n },\n alignment: \"center\",\n position: \"right\"\n },\n curveType: \"function\",\n hAxis: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n },\n titleTextStyle: {},\n gridlines: {\n color: \"transparent\"\n },\n baselineColor: \"#ccc\",\n viewWindow: {}\n },\n vAxis: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n },\n titleTextStyle: {},\n baselineColor: \"#ccc\",\n viewWindow: {}\n },\n tooltip: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n }\n }\n };\n\n var hideLegend = function hideLegend(options) {\n options.legend.position = \"none\";\n };\n\n var setMin = function setMin(options, min) {\n options.vAxis.viewWindow.min = min;\n };\n\n var setMax = function setMax(options, max) {\n options.vAxis.viewWindow.max = max;\n };\n\n var setBarMin = function setBarMin(options, min) {\n options.hAxis.viewWindow.min = min;\n };\n\n var setBarMax = function setBarMax(options, max) {\n options.hAxis.viewWindow.max = max;\n };\n\n var setStacked = function setStacked(options) {\n options.isStacked = true;\n };\n\n var setXtitle = function setXtitle(options, title) {\n options.hAxis.title = title;\n options.hAxis.titleTextStyle.italic = false;\n };\n\n var setYtitle = function setYtitle(options, title) {\n options.vAxis.title = title;\n options.vAxis.titleTextStyle.italic = false;\n };\n\n var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setMin, setMax, setStacked, setXtitle, setYtitle); // cant use object as key\n\n var createDataTable = function createDataTable(series, columnType) {\n var data = new google.visualization.DataTable();\n data.addColumn(columnType, \"\");\n var i,\n j,\n s,\n d,\n key,\n rows = [];\n\n for (i = 0; i < series.length; i++) {\n s = series[i];\n data.addColumn(\"number\", s.name);\n\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n key = columnType === \"datetime\" ? d[0].getTime() : d[0];\n\n if (!rows[key]) {\n rows[key] = new Array(series.length);\n }\n\n rows[key][i] = toFloat(d[1]);\n }\n }\n\n var rows2 = [];\n var value;\n\n for (i in rows) {\n if (rows.hasOwnProperty(i)) {\n if (columnType === \"datetime\") {\n value = new Date(toFloat(i));\n } else if (columnType === \"number\") {\n value = toFloat(i);\n } else {\n value = i;\n }\n\n rows2.push([value].concat(rows[i]));\n }\n }\n\n if (columnType === \"datetime\") {\n rows2.sort(sortByTime);\n }\n\n data.addRows(rows2);\n return data;\n };\n\n var resize = function resize(callback) {\n if (window.attachEvent) {\n window.attachEvent(\"onresize\", callback);\n } else if (window.addEventListener) {\n window.addEventListener(\"resize\", callback, true);\n }\n\n callback();\n };\n\n this.renderLineChart = function (chart) {\n waitForLoaded(function () {\n var options = jsOptions(chart.data, chart.options);\n var data = createDataTable(chart.data, chart.options.discrete ? \"string\" : \"datetime\");\n chart.chart = new google.visualization.LineChart(chart.element);\n resize(function () {\n chart.chart.draw(data, options);\n });\n });\n };\n\n this.renderPieChart = function (chart) {\n waitForLoaded(function () {\n var chartOptions = {\n chartArea: {\n top: \"10%\",\n height: \"80%\"\n }\n };\n\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n var data = new google.visualization.DataTable();\n data.addColumn(\"string\", \"\");\n data.addColumn(\"number\", \"Value\");\n data.addRows(chart.data);\n chart.chart = new google.visualization.PieChart(chart.element);\n resize(function () {\n chart.chart.draw(data, options);\n });\n });\n };\n\n this.renderColumnChart = function (chart) {\n waitForLoaded(function () {\n var options = jsOptions(chart.data, chart.options);\n var data = createDataTable(chart.data, \"string\");\n chart.chart = new google.visualization.ColumnChart(chart.element);\n resize(function () {\n chart.chart.draw(data, options);\n });\n });\n };\n\n this.renderBarChart = function (chart) {\n waitForLoaded(function () {\n var chartOptions = {\n hAxis: {\n gridlines: {\n color: \"#ccc\"\n }\n }\n };\n var options = jsOptionsFunc(defaultOptions, hideLegend, setBarMin, setBarMax, setStacked)(chart.data, chart.options, chartOptions);\n var data = createDataTable(chart.data, \"string\");\n chart.chart = new google.visualization.BarChart(chart.element);\n resize(function () {\n chart.chart.draw(data, options);\n });\n });\n };\n\n this.renderAreaChart = function (chart) {\n waitForLoaded(function () {\n var chartOptions = {\n isStacked: true,\n pointSize: 0,\n areaOpacity: 0.5\n };\n var options = jsOptions(chart.data, chart.options, chartOptions);\n var data = createDataTable(chart.data, chart.options.discrete ? \"string\" : \"datetime\");\n chart.chart = new google.visualization.AreaChart(chart.element);\n resize(function () {\n chart.chart.draw(data, options);\n });\n });\n };\n\n this.renderGeoChart = function (chart) {\n waitForLoaded(function () {\n var chartOptions = {\n legend: \"none\",\n colorAxis: {\n colors: chart.options.colors || [\"#f6c7b6\", \"#ce502d\"]\n }\n };\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n var data = new google.visualization.DataTable();\n data.addColumn(\"string\", \"\");\n data.addColumn(\"number\", \"Value\");\n data.addRows(chart.data);\n chart.chart = new google.visualization.GeoChart(chart.element);\n resize(function () {\n chart.chart.draw(data, options);\n });\n });\n };\n\n this.renderScatterChart = function (chart) {\n waitForLoaded(function () {\n var chartOptions = {};\n var options = jsOptions(chart.data, chart.options, chartOptions);\n var data = createDataTable(chart.data, \"number\");\n chart.chart = new google.visualization.ScatterChart(chart.element);\n resize(function () {\n chart.chart.draw(data, options);\n });\n });\n };\n\n this.renderTimeline = function (chart) {\n waitForLoaded(\"timeline\", function () {\n var chartOptions = {\n legend: \"none\"\n };\n\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n var data = new google.visualization.DataTable();\n data.addColumn({\n type: \"string\",\n id: \"Name\"\n });\n data.addColumn({\n type: \"date\",\n id: \"Start\"\n });\n data.addColumn({\n type: \"date\",\n id: \"End\"\n });\n data.addRows(chart.data);\n chart.chart = new google.visualization.Timeline(chart.element);\n resize(function () {\n chart.chart.draw(data, options);\n });\n });\n };\n }();\n adapters.push(GoogleChartsAdapter);\n } // TODO remove chartType if cross-browser way\n // to get the name of the chart class\n\n\n function renderChart(chartType, chart) {\n var i, adapter, fnName, adapterName;\n fnName = \"render\" + chartType;\n adapterName = chart.options.adapter;\n\n for (i = 0; i < adapters.length; i++) {\n adapter = adapters[i];\n\n if ((!adapterName || adapterName === adapter.name) && isFunction(adapter[fnName])) {\n return adapter[fnName](chart);\n }\n }\n\n throw new Error(\"No adapter found\");\n } // process data\n\n\n var toFormattedKey = function toFormattedKey(key, keyType) {\n if (keyType === \"number\") {\n key = toFloat(key);\n } else if (keyType === \"datetime\") {\n key = toDate(key);\n } else {\n key = toStr(key);\n }\n\n return key;\n };\n\n var formatSeriesData = function formatSeriesData(data, keyType) {\n var r = [],\n key,\n j;\n\n for (j = 0; j < data.length; j++) {\n key = toFormattedKey(data[j][0], keyType);\n r.push([key, toFloat(data[j][1])]);\n }\n\n if (keyType === \"datetime\") {\n r.sort(sortByTime);\n }\n\n return r;\n };\n\n function processSeries(series, opts, keyType) {\n var i; // see if one series or multiple\n\n if (!isArray(series) || _typeof(series[0]) !== \"object\" || isArray(series[0])) {\n series = [{\n name: \"Value\",\n data: series\n }];\n opts.hideLegend = true;\n } else {\n opts.hideLegend = false;\n }\n\n if (opts.discrete) {\n keyType = \"string\";\n } // right format\n\n\n for (i = 0; i < series.length; i++) {\n series[i].data = formatSeriesData(toArr(series[i].data), keyType);\n }\n\n return series;\n }\n\n function processSimple(data) {\n var perfectData = toArr(data),\n i;\n\n for (i = 0; i < perfectData.length; i++) {\n perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])];\n }\n\n return perfectData;\n }\n\n function processTime(data) {\n var i;\n\n for (i = 0; i < data.length; i++) {\n data[i][1] = toDate(data[i][1]);\n data[i][2] = toDate(data[i][2]);\n }\n\n return data;\n }\n\n function processLineData(chart) {\n chart.data = processSeries(chart.data, chart.options, \"datetime\");\n renderChart(\"LineChart\", chart);\n }\n\n function processColumnData(chart) {\n chart.data = processSeries(chart.data, chart.options, \"string\");\n renderChart(\"ColumnChart\", chart);\n }\n\n function processPieData(chart) {\n chart.data = processSimple(chart.data);\n renderChart(\"PieChart\", chart);\n }\n\n function processBarData(chart) {\n chart.data = processSeries(chart.data, chart.options, \"string\");\n renderChart(\"BarChart\", chart);\n }\n\n function processAreaData(chart) {\n chart.data = processSeries(chart.data, chart.options, \"datetime\");\n renderChart(\"AreaChart\", chart);\n }\n\n function processGeoData(chart) {\n chart.data = processSimple(chart.data);\n renderChart(\"GeoChart\", chart);\n }\n\n function processScatterData(chart) {\n chart.data = processSeries(chart.data, chart.options, \"number\");\n renderChart(\"ScatterChart\", chart);\n }\n\n function processTimelineData(chart) {\n chart.data = processTime(chart.data);\n renderChart(\"Timeline\", chart);\n }\n\n function setElement(chart, element, dataSource, opts, callback) {\n if (typeof element === \"string\") {\n element = document.getElementById(element);\n }\n\n chart.element = element;\n chart.options = opts || {};\n chart.dataSource = dataSource;\n Chartkick.charts[element.id] = chart;\n fetchDataSource(chart, callback);\n } // define classes\n\n\n Chartkick = {\n LineChart: function LineChart(element, dataSource, opts) {\n setElement(this, element, dataSource, opts, processLineData);\n },\n PieChart: function PieChart(element, dataSource, opts) {\n setElement(this, element, dataSource, opts, processPieData);\n },\n ColumnChart: function ColumnChart(element, dataSource, opts) {\n setElement(this, element, dataSource, opts, processColumnData);\n },\n BarChart: function BarChart(element, dataSource, opts) {\n setElement(this, element, dataSource, opts, processBarData);\n },\n AreaChart: function AreaChart(element, dataSource, opts) {\n setElement(this, element, dataSource, opts, processAreaData);\n },\n GeoChart: function GeoChart(element, dataSource, opts) {\n setElement(this, element, dataSource, opts, processGeoData);\n },\n ScatterChart: function ScatterChart(element, dataSource, opts) {\n setElement(this, element, dataSource, opts, processScatterData);\n },\n Timeline: function Timeline(element, dataSource, opts) {\n setElement(this, element, dataSource, opts, processTimelineData);\n },\n charts: {}\n };\n window.Chartkick = Chartkick;\n})(window);\n\n//# sourceURL=webpack:///./js/chartkick.js?"); /***/ }), diff --git a/priv/static/js/app.js.gz b/priv/static/js/app.js.gz index 773fbbd3f13c3657e0e427e28bd2b5089bf4af00..cda35636829f544c6f246486720acc20c1fdfcba 100644 GIT binary patch literal 4183 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 literal 818 zcmV-21I_#&iwFP!000006Ma=nZ{s!){wp>Q1_`i)x4l^)7R9!Q0&TbV#Uh}^am+>{ z1!|P6q42+VsE1`IN-s7!oagt=jJBuFm*|4$DEem;H=z4e%)*W5QS|P_;amJJB48K& zCZ84jXhOuc$Rxndw78MuVA|hm?XfeF8dihc>Nws-0e^;HlME=qMwn;K}=U+I;=ci z0VDu8NM;xnEFp&rcYs_?rp%idFyN&DbvEtS7eCi9l8_Cuk47^lJ@=~Bzlg-Y-9hX{ z&$<>iEk;)&E4DZJzb8vREPeUhqZ9_@?dQ@cugD^Pe>?R5m3!=_Dym`t| z)fA3SOEkKS!G!ebO4}7-J=HQeS;P_(7fVqv7PX#c1@(}q^G$b`;^3d1oweXu?lDut zFcd@U<-tfd!-}(iRMgqOA`y4&5ID02%}*GZkWth1p$0q$%jBxw^eAW~2j#Mjrw0sA zIfGS$tdP~+hjpDotSNZ+E-^Hb1XQt8V_41dUF-D{=F~n9S_jsI7MXO)3equQ8gx#`0rpLC6WpGA#iIIudLPy!PSn;TR*p40lVFH3N#6chrE>E wra9!4^8ec<_+E0i7U|PLE(_18B+vIN4siaYY0rNa>ANWY1Lp%|)^`U007EH`>i_@% diff --git a/priv/static/js/chartkick-bd89f448fb80550d7f0a17af0ef48095.js b/priv/static/js/chartkick-bd89f448fb80550d7f0a17af0ef48095.js deleted file mode 100644 index 2066653..0000000 --- a/priv/static/js/chartkick-bd89f448fb80550d7f0a17af0ef48095.js +++ /dev/null @@ -1,915 +0,0 @@ -/* - * Chartkick.js - * Create beautiful Javascript charts with minimal code - * https://github.com/ankane/chartkick.js - * v1.4.1 - * MIT License - */ - - /*jslint browser: true, indent: 2, plusplus: true, vars: true */ - - (function (window) { - 'use strict'; - - var config = window.Chartkick || {}; - var Chartkick, ISO8601_PATTERN, DECIMAL_SEPARATOR, adapters = []; - - // helpers - - function isArray(variable) { - return Object.prototype.toString.call(variable) === "[object Array]"; - } - - function isFunction(variable) { - return variable instanceof Function; - } - - function isPlainObject(variable) { - return !isFunction(variable) && variable instanceof Object; - } - - // https://github.com/madrobby/zepto/blob/master/src/zepto.js - function extend(target, source) { - var key; - for (key in source) { - if (isPlainObject(source[key]) || isArray(source[key])) { - if (isPlainObject(source[key]) && !isPlainObject(target[key])) { - target[key] = {}; - } - if (isArray(source[key]) && !isArray(target[key])) { - target[key] = []; - } - extend(target[key], source[key]); - } else if (source[key] !== undefined) { - target[key] = source[key]; - } - } - } - - function merge(obj1, obj2) { - var target = {}; - extend(target, obj1); - extend(target, obj2); - return target; - } - - // https://github.com/Do/iso8601.js - ISO8601_PATTERN = /(\d\d\d\d)(\-)?(\d\d)(\-)?(\d\d)(T)?(\d\d)(:)?(\d\d)?(:)?(\d\d)?([\.,]\d+)?($|Z|([\+\-])(\d\d)(:)?(\d\d)?)/i; - DECIMAL_SEPARATOR = String(1.5).charAt(1); - - function parseISO8601(input) { - var day, hour, matches, milliseconds, minutes, month, offset, result, seconds, type, year; - type = Object.prototype.toString.call(input); - if (type === '[object Date]') { - return input; - } - if (type !== '[object String]') { - return; - } - if (matches = input.match(ISO8601_PATTERN)) { - year = parseInt(matches[1], 10); - month = parseInt(matches[3], 10) - 1; - day = parseInt(matches[5], 10); - hour = parseInt(matches[7], 10); - minutes = matches[9] ? parseInt(matches[9], 10) : 0; - seconds = matches[11] ? parseInt(matches[11], 10) : 0; - milliseconds = matches[12] ? parseFloat(DECIMAL_SEPARATOR + matches[12].slice(1)) * 1000 : 0; - result = Date.UTC(year, month, day, hour, minutes, seconds, milliseconds); - if (matches[13] && matches[14]) { - offset = matches[15] * 60; - if (matches[17]) { - offset += parseInt(matches[17], 10); - } - offset *= matches[14] === '-' ? -1 : 1; - result -= offset * 60 * 1000; - } - return new Date(result); - } - } - // end iso8601.js - - function negativeValues(series) { - var i, j, data; - for (i = 0; i < series.length; i++) { - data = series[i].data; - for (j = 0; j < data.length; j++) { - if (data[j][1] < 0) { - return true; - } - } - } - return false; - } - - function jsOptionsFunc(defaultOptions, hideLegend, setMin, setMax, setStacked, setXtitle, setYtitle) { - return function (series, opts, chartOptions) { - var options = merge({}, defaultOptions); - options = merge(options, chartOptions || {}); - - // hide legend - // this is *not* an external option! - if (opts.hideLegend) { - hideLegend(options); - } - - // min - if ("min" in opts) { - setMin(options, opts.min); - } else if (!negativeValues(series)) { - setMin(options, 0); - } - - // max - if (opts.max) { - setMax(options, opts.max); - } - - if (opts.stacked) { - setStacked(options); - } - - if (opts.colors) { - options.colors = opts.colors; - } - - if (opts.xtitle) { - setXtitle(options, opts.xtitle); - } - - if (opts.ytitle) { - setYtitle(options, opts.ytitle); - } - - // merge library last - options = merge(options, opts.library || {}); - - return options; - }; - } - - function setText(element, text) { - if (document.body.innerText) { - element.innerText = text; - } else { - element.textContent = text; - } - } - - function chartError(element, message) { - setText(element, "Error Loading Chart: " + message); - element.style.color = "#ff0000"; - } - - function getJSON(element, url, success) { - var $ = window.jQuery || window.Zepto || window.$; - $.ajax({ - dataType: "json", - url: url, - success: success, - error: function (jqXHR, textStatus, errorThrown) { - var message = (typeof errorThrown === "string") ? errorThrown : errorThrown.message; - chartError(element, message); - } - }); - } - - function errorCatcher(chart, callback) { - try { - callback(chart); - } catch (err) { - chartError(chart.element, err.message); - throw err; - } - } - - function fetchDataSource(chart, callback) { - if (typeof chart.dataSource === "string") { - getJSON(chart.element, chart.dataSource, function (data, textStatus, jqXHR) { - chart.data = data; - errorCatcher(chart, callback); - }); - } else { - chart.data = chart.dataSource; - errorCatcher(chart, callback); - } - } - - // type conversions - - function toStr(n) { - return "" + n; - } - - function toFloat(n) { - return parseFloat(n); - } - - function toDate(n) { - if (typeof n !== "object") { - if (typeof n === "number") { - n = new Date(n * 1000); // ms - } else { // str - // try our best to get the str into iso8601 - // TODO be smarter about this - var str = n.replace(/ /, "T").replace(" ", "").replace("UTC", "Z"); - n = parseISO8601(str) || new Date(n); - } - } - return n; - } - - function toArr(n) { - if (!isArray(n)) { - var arr = [], i; - for (i in n) { - if (n.hasOwnProperty(i)) { - arr.push([i, n[i]]); - } - } - n = arr; - } - return n; - } - - function sortByTime(a, b) { - return a[0].getTime() - b[0].getTime(); - } - - if ("Highcharts" in window) { - var HighchartsAdapter = new function () { - var Highcharts = window.Highcharts; - - this.name = "highcharts"; - - var defaultOptions = { - chart: {}, - xAxis: { - title: { - text: null - }, - labels: { - style: { - fontSize: "12px" - } - } - }, - yAxis: { - title: { - text: null - }, - labels: { - style: { - fontSize: "12px" - } - } - }, - title: { - text: null - }, - credits: { - enabled: false - }, - legend: { - borderWidth: 0 - }, - tooltip: { - style: { - fontSize: "12px" - } - }, - plotOptions: { - areaspline: {}, - series: { - marker: {} - } - } - }; - - var hideLegend = function (options) { - options.legend.enabled = false; - }; - - var setMin = function (options, min) { - options.yAxis.min = min; - }; - - var setMax = function (options, max) { - options.yAxis.max = max; - }; - - var setStacked = function (options) { - options.plotOptions.series.stacking = "normal"; - }; - - var setXtitle = function (options, title) { - options.xAxis.title.text = title; - }; - - var setYtitle = function (options, title) { - options.yAxis.title.text = title; - }; - - var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setMin, setMax, setStacked, setXtitle, setYtitle); - - this.renderLineChart = function (chart, chartType) { - chartType = chartType || "spline"; - var chartOptions = {}; - if (chartType === "areaspline") { - chartOptions = { - plotOptions: { - areaspline: { - stacking: "normal" - }, - series: { - marker: { - enabled: false - } - } - } - }; - } - var options = jsOptions(chart.data, chart.options, chartOptions), data, i, j; - options.xAxis.type = chart.options.discrete ? "category" : "datetime"; - options.chart.type = chartType; - options.chart.renderTo = chart.element.id; - - var series = chart.data; - for (i = 0; i < series.length; i++) { - data = series[i].data; - if (!chart.options.discrete) { - for (j = 0; j < data.length; j++) { - data[j][0] = data[j][0].getTime(); - } - } - series[i].marker = {symbol: "circle"}; - } - options.series = series; - new Highcharts.Chart(options); - }; - - this.renderScatterChart = function (chart) { - var chartOptions = {}; - var options = jsOptions(chart.data, chart.options, chartOptions); - options.chart.type = 'scatter'; - options.chart.renderTo = chart.element.id; - options.series = chart.data; - new Highcharts.Chart(options); - }; - - this.renderPieChart = function (chart) { - var chartOptions = {}; - if (chart.options.colors) { - chartOptions.colors = chart.options.colors; - } - var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); - options.chart.renderTo = chart.element.id; - options.series = [{ - type: "pie", - name: "Value", - data: chart.data - }]; - new Highcharts.Chart(options); - }; - - this.renderColumnChart = function (chart, chartType) { - var chartType = chartType || "column"; - var series = chart.data; - var options = jsOptions(series, chart.options), i, j, s, d, rows = []; - options.chart.type = chartType; - options.chart.renderTo = chart.element.id; - - for (i = 0; i < series.length; i++) { - s = series[i]; - - for (j = 0; j < s.data.length; j++) { - d = s.data[j]; - if (!rows[d[0]]) { - rows[d[0]] = new Array(series.length); - } - rows[d[0]][i] = d[1]; - } - } - - var categories = []; - for (i in rows) { - if (rows.hasOwnProperty(i)) { - categories.push(i); - } - } - options.xAxis.categories = categories; - - var newSeries = []; - for (i = 0; i < series.length; i++) { - d = []; - for (j = 0; j < categories.length; j++) { - d.push(rows[categories[j]][i] || 0); - } - - newSeries.push({ - name: series[i].name, - data: d - }); - } - options.series = newSeries; - - new Highcharts.Chart(options); - }; - - var self = this; - - this.renderBarChart = function (chart) { - self.renderColumnChart(chart, "bar"); - }; - - this.renderAreaChart = function (chart) { - self.renderLineChart(chart, "areaspline"); - }; - }; - adapters.push(HighchartsAdapter); - } - if (window.google && window.google.setOnLoadCallback) { - var GoogleChartsAdapter = new function () { - var google = window.google; - - this.name = "google"; - - var loaded = {}; - var callbacks = []; - - var runCallbacks = function () { - var cb, call; - for (var i = 0; i < callbacks.length; i++) { - cb = callbacks[i]; - call = google.visualization && ((cb.pack === "corechart" && google.visualization.LineChart) || (cb.pack === "timeline" && google.visualization.Timeline)) - if (call) { - cb.callback(); - callbacks.splice(i, 1); - i--; - } - } - }; - - var waitForLoaded = function (pack, callback) { - if (!callback) { - callback = pack; - pack = "corechart"; - } - - callbacks.push({pack: pack, callback: callback}); - - if (loaded[pack]) { - runCallbacks(); - } else { - loaded[pack] = true; - - // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI - var loadOptions = { - packages: [pack], - callback: runCallbacks - }; - if (config.language) { - loadOptions.language = config.language; - } - google.load("visualization", "1", loadOptions); - } - }; - - // Set chart options - var defaultOptions = { - chartArea: {}, - fontName: "'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif", - pointSize: 6, - legend: { - textStyle: { - fontSize: 12, - color: "#444" - }, - alignment: "center", - position: "right" - }, - curveType: "function", - hAxis: { - textStyle: { - color: "#666", - fontSize: 12 - }, - titleTextStyle: {}, - gridlines: { - color: "transparent" - }, - baselineColor: "#ccc", - viewWindow: {} - }, - vAxis: { - textStyle: { - color: "#666", - fontSize: 12 - }, - titleTextStyle: {}, - baselineColor: "#ccc", - viewWindow: {} - }, - tooltip: { - textStyle: { - color: "#666", - fontSize: 12 - } - } - }; - - var hideLegend = function (options) { - options.legend.position = "none"; - }; - - var setMin = function (options, min) { - options.vAxis.viewWindow.min = min; - }; - - var setMax = function (options, max) { - options.vAxis.viewWindow.max = max; - }; - - var setBarMin = function (options, min) { - options.hAxis.viewWindow.min = min; - }; - - var setBarMax = function (options, max) { - options.hAxis.viewWindow.max = max; - }; - - var setStacked = function (options) { - options.isStacked = true; - }; - - var setXtitle = function (options, title) { - options.hAxis.title = title; - options.hAxis.titleTextStyle.italic = false; - } - - var setYtitle = function (options, title) { - options.vAxis.title = title; - options.vAxis.titleTextStyle.italic = false; - }; - - var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setMin, setMax, setStacked, setXtitle, setYtitle); - - // cant use object as key - var createDataTable = function (series, columnType) { - var data = new google.visualization.DataTable(); - data.addColumn(columnType, ""); - - var i, j, s, d, key, rows = []; - for (i = 0; i < series.length; i++) { - s = series[i]; - data.addColumn("number", s.name); - - for (j = 0; j < s.data.length; j++) { - d = s.data[j]; - key = (columnType === "datetime") ? d[0].getTime() : d[0]; - if (!rows[key]) { - rows[key] = new Array(series.length); - } - rows[key][i] = toFloat(d[1]); - } - } - - var rows2 = []; - var value; - for (i in rows) { - if (rows.hasOwnProperty(i)) { - if (columnType === "datetime") { - value = new Date(toFloat(i)); - } else if (columnType === "number") { - value = toFloat(i); - } else { - value = i; - } - rows2.push([value].concat(rows[i])); - } - } - if (columnType === "datetime") { - rows2.sort(sortByTime); - } - data.addRows(rows2); - - return data; - }; - - var resize = function (callback) { - if (window.attachEvent) { - window.attachEvent("onresize", callback); - } else if (window.addEventListener) { - window.addEventListener("resize", callback, true); - } - callback(); - }; - - this.renderLineChart = function (chart) { - waitForLoaded(function () { - var options = jsOptions(chart.data, chart.options); - var data = createDataTable(chart.data, chart.options.discrete ? "string" : "datetime"); - chart.chart = new google.visualization.LineChart(chart.element); - resize(function () { - chart.chart.draw(data, options); - }); - }); - }; - - this.renderPieChart = function (chart) { - waitForLoaded(function () { - var chartOptions = { - chartArea: { - top: "10%", - height: "80%" - } - }; - if (chart.options.colors) { - chartOptions.colors = chart.options.colors; - } - var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); - - var data = new google.visualization.DataTable(); - data.addColumn("string", ""); - data.addColumn("number", "Value"); - data.addRows(chart.data); - - chart.chart = new google.visualization.PieChart(chart.element); - resize(function () { - chart.chart.draw(data, options); - }); - }); - }; - - this.renderColumnChart = function (chart) { - waitForLoaded(function () { - var options = jsOptions(chart.data, chart.options); - var data = createDataTable(chart.data, "string"); - chart.chart = new google.visualization.ColumnChart(chart.element); - resize(function () { - chart.chart.draw(data, options); - }); - }); - }; - - this.renderBarChart = function (chart) { - waitForLoaded(function () { - var chartOptions = { - hAxis: { - gridlines: { - color: "#ccc" - } - } - }; - var options = jsOptionsFunc(defaultOptions, hideLegend, setBarMin, setBarMax, setStacked)(chart.data, chart.options, chartOptions); - var data = createDataTable(chart.data, "string"); - chart.chart = new google.visualization.BarChart(chart.element); - resize(function () { - chart.chart.draw(data, options); - }); - }); - }; - - this.renderAreaChart = function (chart) { - waitForLoaded(function () { - var chartOptions = { - isStacked: true, - pointSize: 0, - areaOpacity: 0.5 - }; - var options = jsOptions(chart.data, chart.options, chartOptions); - var data = createDataTable(chart.data, chart.options.discrete ? "string" : "datetime"); - chart.chart = new google.visualization.AreaChart(chart.element); - resize(function () { - chart.chart.draw(data, options); - }); - }); - }; - - this.renderGeoChart = function (chart) { - waitForLoaded(function () { - var chartOptions = { - legend: "none", - colorAxis: { - colors: chart.options.colors || ["#f6c7b6", "#ce502d"] - } - }; - var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); - - var data = new google.visualization.DataTable(); - data.addColumn("string", ""); - data.addColumn("number", "Value"); - data.addRows(chart.data); - - chart.chart = new google.visualization.GeoChart(chart.element); - resize(function () { - chart.chart.draw(data, options); - }); - }); - }; - - this.renderScatterChart = function (chart) { - waitForLoaded(function () { - var chartOptions = {}; - var options = jsOptions(chart.data, chart.options, chartOptions); - var data = createDataTable(chart.data, "number"); - - chart.chart = new google.visualization.ScatterChart(chart.element); - resize(function () { - chart.chart.draw(data, options); - }); - }); - }; - - this.renderTimeline = function (chart) { - waitForLoaded("timeline", function () { - var chartOptions = { - legend: "none" - }; - - if (chart.options.colors) { - chartOptions.colors = chart.options.colors; - } - var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); - - var data = new google.visualization.DataTable(); - data.addColumn({type: "string", id: "Name"}); - data.addColumn({type: "date", id: "Start"}); - data.addColumn({type: "date", id: "End"}); - data.addRows(chart.data); - - chart.chart = new google.visualization.Timeline(chart.element); - - resize(function () { - chart.chart.draw(data, options); - }); - }); - }; - }; - - adapters.push(GoogleChartsAdapter); - } - - // TODO remove chartType if cross-browser way - // to get the name of the chart class - function renderChart(chartType, chart) { - var i, adapter, fnName, adapterName; - fnName = "render" + chartType; - adapterName = chart.options.adapter; - - for (i = 0; i < adapters.length; i++) { - adapter = adapters[i]; - if ((!adapterName || adapterName === adapter.name) && isFunction(adapter[fnName])) { - return adapter[fnName](chart); - } - } - throw new Error("No adapter found"); - } - - // process data - - var toFormattedKey = function (key, keyType) { - if (keyType === "number") { - key = toFloat(key); - } else if (keyType === "datetime") { - key = toDate(key); - } else { - key = toStr(key); - } - return key; - }; - - var formatSeriesData = function (data, keyType) { - var r = [], key, j; - for (j = 0; j < data.length; j++) { - key = toFormattedKey(data[j][0], keyType); - r.push([key, toFloat(data[j][1])]); - } - if (keyType === "datetime") { - r.sort(sortByTime); - } - return r; - }; - - function processSeries(series, opts, keyType) { - var i; - - // see if one series or multiple - if (!isArray(series) || typeof series[0] !== "object" || isArray(series[0])) { - series = [{name: "Value", data: series}]; - opts.hideLegend = true; - } else { - opts.hideLegend = false; - } - if (opts.discrete) { - keyType = "string"; - } - - // right format - for (i = 0; i < series.length; i++) { - series[i].data = formatSeriesData(toArr(series[i].data), keyType); - } - - return series; - } - - function processSimple(data) { - var perfectData = toArr(data), i; - for (i = 0; i < perfectData.length; i++) { - perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])]; - } - return perfectData; - } - - function processTime(data) - { - var i; - for (i = 0; i < data.length; i++) { - data[i][1] = toDate(data[i][1]); - data[i][2] = toDate(data[i][2]); - } - return data; - } - - function processLineData(chart) { - chart.data = processSeries(chart.data, chart.options, "datetime"); - renderChart("LineChart", chart); - } - - function processColumnData(chart) { - chart.data = processSeries(chart.data, chart.options, "string"); - renderChart("ColumnChart", chart); - } - - function processPieData(chart) { - chart.data = processSimple(chart.data); - renderChart("PieChart", chart); - } - - function processBarData(chart) { - chart.data = processSeries(chart.data, chart.options, "string"); - renderChart("BarChart", chart); - } - - function processAreaData(chart) { - chart.data = processSeries(chart.data, chart.options, "datetime"); - renderChart("AreaChart", chart); - } - - function processGeoData(chart) { - chart.data = processSimple(chart.data); - renderChart("GeoChart", chart); - } - - function processScatterData(chart) { - chart.data = processSeries(chart.data, chart.options, "number"); - renderChart("ScatterChart", chart); - } - - function processTimelineData(chart) { - chart.data = processTime(chart.data); - renderChart("Timeline", chart); - } - - function setElement(chart, element, dataSource, opts, callback) { - if (typeof element === "string") { - element = document.getElementById(element); - } - chart.element = element; - chart.options = opts || {}; - chart.dataSource = dataSource; - Chartkick.charts[element.id] = chart; - fetchDataSource(chart, callback); - } - - // define classes - - Chartkick = { - LineChart: function (element, dataSource, opts) { - setElement(this, element, dataSource, opts, processLineData); - }, - PieChart: function (element, dataSource, opts) { - setElement(this, element, dataSource, opts, processPieData); - }, - ColumnChart: function (element, dataSource, opts) { - setElement(this, element, dataSource, opts, processColumnData); - }, - BarChart: function (element, dataSource, opts) { - setElement(this, element, dataSource, opts, processBarData); - }, - AreaChart: function (element, dataSource, opts) { - setElement(this, element, dataSource, opts, processAreaData); - }, - GeoChart: function (element, dataSource, opts) { - setElement(this, element, dataSource, opts, processGeoData); - }, - ScatterChart: function (element, dataSource, opts) { - setElement(this, element, dataSource, opts, processScatterData); - }, - Timeline: function (element, dataSource, opts) { - setElement(this, element, dataSource, opts, processTimelineData); - }, - charts: {} - }; - - window.Chartkick = Chartkick; -}(window)); \ No newline at end of file diff --git a/priv/static/js/chartkick-bd89f448fb80550d7f0a17af0ef48095.js.gz b/priv/static/js/chartkick-bd89f448fb80550d7f0a17af0ef48095.js.gz deleted file mode 100644 index 7f4282c4e856fd7129ef9f25ba2dd741e8d6feee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5442 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 diff --git a/priv/static/js/chartkick.js b/priv/static/js/chartkick.js deleted file mode 100644 index 2066653..0000000 --- a/priv/static/js/chartkick.js +++ /dev/null @@ -1,915 +0,0 @@ -/* - * Chartkick.js - * Create beautiful Javascript charts with minimal code - * https://github.com/ankane/chartkick.js - * v1.4.1 - * MIT License - */ - - /*jslint browser: true, indent: 2, plusplus: true, vars: true */ - - (function (window) { - 'use strict'; - - var config = window.Chartkick || {}; - var Chartkick, ISO8601_PATTERN, DECIMAL_SEPARATOR, adapters = []; - - // helpers - - function isArray(variable) { - return Object.prototype.toString.call(variable) === "[object Array]"; - } - - function isFunction(variable) { - return variable instanceof Function; - } - - function isPlainObject(variable) { - return !isFunction(variable) && variable instanceof Object; - } - - // https://github.com/madrobby/zepto/blob/master/src/zepto.js - function extend(target, source) { - var key; - for (key in source) { - if (isPlainObject(source[key]) || isArray(source[key])) { - if (isPlainObject(source[key]) && !isPlainObject(target[key])) { - target[key] = {}; - } - if (isArray(source[key]) && !isArray(target[key])) { - target[key] = []; - } - extend(target[key], source[key]); - } else if (source[key] !== undefined) { - target[key] = source[key]; - } - } - } - - function merge(obj1, obj2) { - var target = {}; - extend(target, obj1); - extend(target, obj2); - return target; - } - - // https://github.com/Do/iso8601.js - ISO8601_PATTERN = /(\d\d\d\d)(\-)?(\d\d)(\-)?(\d\d)(T)?(\d\d)(:)?(\d\d)?(:)?(\d\d)?([\.,]\d+)?($|Z|([\+\-])(\d\d)(:)?(\d\d)?)/i; - DECIMAL_SEPARATOR = String(1.5).charAt(1); - - function parseISO8601(input) { - var day, hour, matches, milliseconds, minutes, month, offset, result, seconds, type, year; - type = Object.prototype.toString.call(input); - if (type === '[object Date]') { - return input; - } - if (type !== '[object String]') { - return; - } - if (matches = input.match(ISO8601_PATTERN)) { - year = parseInt(matches[1], 10); - month = parseInt(matches[3], 10) - 1; - day = parseInt(matches[5], 10); - hour = parseInt(matches[7], 10); - minutes = matches[9] ? parseInt(matches[9], 10) : 0; - seconds = matches[11] ? parseInt(matches[11], 10) : 0; - milliseconds = matches[12] ? parseFloat(DECIMAL_SEPARATOR + matches[12].slice(1)) * 1000 : 0; - result = Date.UTC(year, month, day, hour, minutes, seconds, milliseconds); - if (matches[13] && matches[14]) { - offset = matches[15] * 60; - if (matches[17]) { - offset += parseInt(matches[17], 10); - } - offset *= matches[14] === '-' ? -1 : 1; - result -= offset * 60 * 1000; - } - return new Date(result); - } - } - // end iso8601.js - - function negativeValues(series) { - var i, j, data; - for (i = 0; i < series.length; i++) { - data = series[i].data; - for (j = 0; j < data.length; j++) { - if (data[j][1] < 0) { - return true; - } - } - } - return false; - } - - function jsOptionsFunc(defaultOptions, hideLegend, setMin, setMax, setStacked, setXtitle, setYtitle) { - return function (series, opts, chartOptions) { - var options = merge({}, defaultOptions); - options = merge(options, chartOptions || {}); - - // hide legend - // this is *not* an external option! - if (opts.hideLegend) { - hideLegend(options); - } - - // min - if ("min" in opts) { - setMin(options, opts.min); - } else if (!negativeValues(series)) { - setMin(options, 0); - } - - // max - if (opts.max) { - setMax(options, opts.max); - } - - if (opts.stacked) { - setStacked(options); - } - - if (opts.colors) { - options.colors = opts.colors; - } - - if (opts.xtitle) { - setXtitle(options, opts.xtitle); - } - - if (opts.ytitle) { - setYtitle(options, opts.ytitle); - } - - // merge library last - options = merge(options, opts.library || {}); - - return options; - }; - } - - function setText(element, text) { - if (document.body.innerText) { - element.innerText = text; - } else { - element.textContent = text; - } - } - - function chartError(element, message) { - setText(element, "Error Loading Chart: " + message); - element.style.color = "#ff0000"; - } - - function getJSON(element, url, success) { - var $ = window.jQuery || window.Zepto || window.$; - $.ajax({ - dataType: "json", - url: url, - success: success, - error: function (jqXHR, textStatus, errorThrown) { - var message = (typeof errorThrown === "string") ? errorThrown : errorThrown.message; - chartError(element, message); - } - }); - } - - function errorCatcher(chart, callback) { - try { - callback(chart); - } catch (err) { - chartError(chart.element, err.message); - throw err; - } - } - - function fetchDataSource(chart, callback) { - if (typeof chart.dataSource === "string") { - getJSON(chart.element, chart.dataSource, function (data, textStatus, jqXHR) { - chart.data = data; - errorCatcher(chart, callback); - }); - } else { - chart.data = chart.dataSource; - errorCatcher(chart, callback); - } - } - - // type conversions - - function toStr(n) { - return "" + n; - } - - function toFloat(n) { - return parseFloat(n); - } - - function toDate(n) { - if (typeof n !== "object") { - if (typeof n === "number") { - n = new Date(n * 1000); // ms - } else { // str - // try our best to get the str into iso8601 - // TODO be smarter about this - var str = n.replace(/ /, "T").replace(" ", "").replace("UTC", "Z"); - n = parseISO8601(str) || new Date(n); - } - } - return n; - } - - function toArr(n) { - if (!isArray(n)) { - var arr = [], i; - for (i in n) { - if (n.hasOwnProperty(i)) { - arr.push([i, n[i]]); - } - } - n = arr; - } - return n; - } - - function sortByTime(a, b) { - return a[0].getTime() - b[0].getTime(); - } - - if ("Highcharts" in window) { - var HighchartsAdapter = new function () { - var Highcharts = window.Highcharts; - - this.name = "highcharts"; - - var defaultOptions = { - chart: {}, - xAxis: { - title: { - text: null - }, - labels: { - style: { - fontSize: "12px" - } - } - }, - yAxis: { - title: { - text: null - }, - labels: { - style: { - fontSize: "12px" - } - } - }, - title: { - text: null - }, - credits: { - enabled: false - }, - legend: { - borderWidth: 0 - }, - tooltip: { - style: { - fontSize: "12px" - } - }, - plotOptions: { - areaspline: {}, - series: { - marker: {} - } - } - }; - - var hideLegend = function (options) { - options.legend.enabled = false; - }; - - var setMin = function (options, min) { - options.yAxis.min = min; - }; - - var setMax = function (options, max) { - options.yAxis.max = max; - }; - - var setStacked = function (options) { - options.plotOptions.series.stacking = "normal"; - }; - - var setXtitle = function (options, title) { - options.xAxis.title.text = title; - }; - - var setYtitle = function (options, title) { - options.yAxis.title.text = title; - }; - - var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setMin, setMax, setStacked, setXtitle, setYtitle); - - this.renderLineChart = function (chart, chartType) { - chartType = chartType || "spline"; - var chartOptions = {}; - if (chartType === "areaspline") { - chartOptions = { - plotOptions: { - areaspline: { - stacking: "normal" - }, - series: { - marker: { - enabled: false - } - } - } - }; - } - var options = jsOptions(chart.data, chart.options, chartOptions), data, i, j; - options.xAxis.type = chart.options.discrete ? "category" : "datetime"; - options.chart.type = chartType; - options.chart.renderTo = chart.element.id; - - var series = chart.data; - for (i = 0; i < series.length; i++) { - data = series[i].data; - if (!chart.options.discrete) { - for (j = 0; j < data.length; j++) { - data[j][0] = data[j][0].getTime(); - } - } - series[i].marker = {symbol: "circle"}; - } - options.series = series; - new Highcharts.Chart(options); - }; - - this.renderScatterChart = function (chart) { - var chartOptions = {}; - var options = jsOptions(chart.data, chart.options, chartOptions); - options.chart.type = 'scatter'; - options.chart.renderTo = chart.element.id; - options.series = chart.data; - new Highcharts.Chart(options); - }; - - this.renderPieChart = function (chart) { - var chartOptions = {}; - if (chart.options.colors) { - chartOptions.colors = chart.options.colors; - } - var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); - options.chart.renderTo = chart.element.id; - options.series = [{ - type: "pie", - name: "Value", - data: chart.data - }]; - new Highcharts.Chart(options); - }; - - this.renderColumnChart = function (chart, chartType) { - var chartType = chartType || "column"; - var series = chart.data; - var options = jsOptions(series, chart.options), i, j, s, d, rows = []; - options.chart.type = chartType; - options.chart.renderTo = chart.element.id; - - for (i = 0; i < series.length; i++) { - s = series[i]; - - for (j = 0; j < s.data.length; j++) { - d = s.data[j]; - if (!rows[d[0]]) { - rows[d[0]] = new Array(series.length); - } - rows[d[0]][i] = d[1]; - } - } - - var categories = []; - for (i in rows) { - if (rows.hasOwnProperty(i)) { - categories.push(i); - } - } - options.xAxis.categories = categories; - - var newSeries = []; - for (i = 0; i < series.length; i++) { - d = []; - for (j = 0; j < categories.length; j++) { - d.push(rows[categories[j]][i] || 0); - } - - newSeries.push({ - name: series[i].name, - data: d - }); - } - options.series = newSeries; - - new Highcharts.Chart(options); - }; - - var self = this; - - this.renderBarChart = function (chart) { - self.renderColumnChart(chart, "bar"); - }; - - this.renderAreaChart = function (chart) { - self.renderLineChart(chart, "areaspline"); - }; - }; - adapters.push(HighchartsAdapter); - } - if (window.google && window.google.setOnLoadCallback) { - var GoogleChartsAdapter = new function () { - var google = window.google; - - this.name = "google"; - - var loaded = {}; - var callbacks = []; - - var runCallbacks = function () { - var cb, call; - for (var i = 0; i < callbacks.length; i++) { - cb = callbacks[i]; - call = google.visualization && ((cb.pack === "corechart" && google.visualization.LineChart) || (cb.pack === "timeline" && google.visualization.Timeline)) - if (call) { - cb.callback(); - callbacks.splice(i, 1); - i--; - } - } - }; - - var waitForLoaded = function (pack, callback) { - if (!callback) { - callback = pack; - pack = "corechart"; - } - - callbacks.push({pack: pack, callback: callback}); - - if (loaded[pack]) { - runCallbacks(); - } else { - loaded[pack] = true; - - // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI - var loadOptions = { - packages: [pack], - callback: runCallbacks - }; - if (config.language) { - loadOptions.language = config.language; - } - google.load("visualization", "1", loadOptions); - } - }; - - // Set chart options - var defaultOptions = { - chartArea: {}, - fontName: "'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif", - pointSize: 6, - legend: { - textStyle: { - fontSize: 12, - color: "#444" - }, - alignment: "center", - position: "right" - }, - curveType: "function", - hAxis: { - textStyle: { - color: "#666", - fontSize: 12 - }, - titleTextStyle: {}, - gridlines: { - color: "transparent" - }, - baselineColor: "#ccc", - viewWindow: {} - }, - vAxis: { - textStyle: { - color: "#666", - fontSize: 12 - }, - titleTextStyle: {}, - baselineColor: "#ccc", - viewWindow: {} - }, - tooltip: { - textStyle: { - color: "#666", - fontSize: 12 - } - } - }; - - var hideLegend = function (options) { - options.legend.position = "none"; - }; - - var setMin = function (options, min) { - options.vAxis.viewWindow.min = min; - }; - - var setMax = function (options, max) { - options.vAxis.viewWindow.max = max; - }; - - var setBarMin = function (options, min) { - options.hAxis.viewWindow.min = min; - }; - - var setBarMax = function (options, max) { - options.hAxis.viewWindow.max = max; - }; - - var setStacked = function (options) { - options.isStacked = true; - }; - - var setXtitle = function (options, title) { - options.hAxis.title = title; - options.hAxis.titleTextStyle.italic = false; - } - - var setYtitle = function (options, title) { - options.vAxis.title = title; - options.vAxis.titleTextStyle.italic = false; - }; - - var jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setMin, setMax, setStacked, setXtitle, setYtitle); - - // cant use object as key - var createDataTable = function (series, columnType) { - var data = new google.visualization.DataTable(); - data.addColumn(columnType, ""); - - var i, j, s, d, key, rows = []; - for (i = 0; i < series.length; i++) { - s = series[i]; - data.addColumn("number", s.name); - - for (j = 0; j < s.data.length; j++) { - d = s.data[j]; - key = (columnType === "datetime") ? d[0].getTime() : d[0]; - if (!rows[key]) { - rows[key] = new Array(series.length); - } - rows[key][i] = toFloat(d[1]); - } - } - - var rows2 = []; - var value; - for (i in rows) { - if (rows.hasOwnProperty(i)) { - if (columnType === "datetime") { - value = new Date(toFloat(i)); - } else if (columnType === "number") { - value = toFloat(i); - } else { - value = i; - } - rows2.push([value].concat(rows[i])); - } - } - if (columnType === "datetime") { - rows2.sort(sortByTime); - } - data.addRows(rows2); - - return data; - }; - - var resize = function (callback) { - if (window.attachEvent) { - window.attachEvent("onresize", callback); - } else if (window.addEventListener) { - window.addEventListener("resize", callback, true); - } - callback(); - }; - - this.renderLineChart = function (chart) { - waitForLoaded(function () { - var options = jsOptions(chart.data, chart.options); - var data = createDataTable(chart.data, chart.options.discrete ? "string" : "datetime"); - chart.chart = new google.visualization.LineChart(chart.element); - resize(function () { - chart.chart.draw(data, options); - }); - }); - }; - - this.renderPieChart = function (chart) { - waitForLoaded(function () { - var chartOptions = { - chartArea: { - top: "10%", - height: "80%" - } - }; - if (chart.options.colors) { - chartOptions.colors = chart.options.colors; - } - var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); - - var data = new google.visualization.DataTable(); - data.addColumn("string", ""); - data.addColumn("number", "Value"); - data.addRows(chart.data); - - chart.chart = new google.visualization.PieChart(chart.element); - resize(function () { - chart.chart.draw(data, options); - }); - }); - }; - - this.renderColumnChart = function (chart) { - waitForLoaded(function () { - var options = jsOptions(chart.data, chart.options); - var data = createDataTable(chart.data, "string"); - chart.chart = new google.visualization.ColumnChart(chart.element); - resize(function () { - chart.chart.draw(data, options); - }); - }); - }; - - this.renderBarChart = function (chart) { - waitForLoaded(function () { - var chartOptions = { - hAxis: { - gridlines: { - color: "#ccc" - } - } - }; - var options = jsOptionsFunc(defaultOptions, hideLegend, setBarMin, setBarMax, setStacked)(chart.data, chart.options, chartOptions); - var data = createDataTable(chart.data, "string"); - chart.chart = new google.visualization.BarChart(chart.element); - resize(function () { - chart.chart.draw(data, options); - }); - }); - }; - - this.renderAreaChart = function (chart) { - waitForLoaded(function () { - var chartOptions = { - isStacked: true, - pointSize: 0, - areaOpacity: 0.5 - }; - var options = jsOptions(chart.data, chart.options, chartOptions); - var data = createDataTable(chart.data, chart.options.discrete ? "string" : "datetime"); - chart.chart = new google.visualization.AreaChart(chart.element); - resize(function () { - chart.chart.draw(data, options); - }); - }); - }; - - this.renderGeoChart = function (chart) { - waitForLoaded(function () { - var chartOptions = { - legend: "none", - colorAxis: { - colors: chart.options.colors || ["#f6c7b6", "#ce502d"] - } - }; - var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); - - var data = new google.visualization.DataTable(); - data.addColumn("string", ""); - data.addColumn("number", "Value"); - data.addRows(chart.data); - - chart.chart = new google.visualization.GeoChart(chart.element); - resize(function () { - chart.chart.draw(data, options); - }); - }); - }; - - this.renderScatterChart = function (chart) { - waitForLoaded(function () { - var chartOptions = {}; - var options = jsOptions(chart.data, chart.options, chartOptions); - var data = createDataTable(chart.data, "number"); - - chart.chart = new google.visualization.ScatterChart(chart.element); - resize(function () { - chart.chart.draw(data, options); - }); - }); - }; - - this.renderTimeline = function (chart) { - waitForLoaded("timeline", function () { - var chartOptions = { - legend: "none" - }; - - if (chart.options.colors) { - chartOptions.colors = chart.options.colors; - } - var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {}); - - var data = new google.visualization.DataTable(); - data.addColumn({type: "string", id: "Name"}); - data.addColumn({type: "date", id: "Start"}); - data.addColumn({type: "date", id: "End"}); - data.addRows(chart.data); - - chart.chart = new google.visualization.Timeline(chart.element); - - resize(function () { - chart.chart.draw(data, options); - }); - }); - }; - }; - - adapters.push(GoogleChartsAdapter); - } - - // TODO remove chartType if cross-browser way - // to get the name of the chart class - function renderChart(chartType, chart) { - var i, adapter, fnName, adapterName; - fnName = "render" + chartType; - adapterName = chart.options.adapter; - - for (i = 0; i < adapters.length; i++) { - adapter = adapters[i]; - if ((!adapterName || adapterName === adapter.name) && isFunction(adapter[fnName])) { - return adapter[fnName](chart); - } - } - throw new Error("No adapter found"); - } - - // process data - - var toFormattedKey = function (key, keyType) { - if (keyType === "number") { - key = toFloat(key); - } else if (keyType === "datetime") { - key = toDate(key); - } else { - key = toStr(key); - } - return key; - }; - - var formatSeriesData = function (data, keyType) { - var r = [], key, j; - for (j = 0; j < data.length; j++) { - key = toFormattedKey(data[j][0], keyType); - r.push([key, toFloat(data[j][1])]); - } - if (keyType === "datetime") { - r.sort(sortByTime); - } - return r; - }; - - function processSeries(series, opts, keyType) { - var i; - - // see if one series or multiple - if (!isArray(series) || typeof series[0] !== "object" || isArray(series[0])) { - series = [{name: "Value", data: series}]; - opts.hideLegend = true; - } else { - opts.hideLegend = false; - } - if (opts.discrete) { - keyType = "string"; - } - - // right format - for (i = 0; i < series.length; i++) { - series[i].data = formatSeriesData(toArr(series[i].data), keyType); - } - - return series; - } - - function processSimple(data) { - var perfectData = toArr(data), i; - for (i = 0; i < perfectData.length; i++) { - perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])]; - } - return perfectData; - } - - function processTime(data) - { - var i; - for (i = 0; i < data.length; i++) { - data[i][1] = toDate(data[i][1]); - data[i][2] = toDate(data[i][2]); - } - return data; - } - - function processLineData(chart) { - chart.data = processSeries(chart.data, chart.options, "datetime"); - renderChart("LineChart", chart); - } - - function processColumnData(chart) { - chart.data = processSeries(chart.data, chart.options, "string"); - renderChart("ColumnChart", chart); - } - - function processPieData(chart) { - chart.data = processSimple(chart.data); - renderChart("PieChart", chart); - } - - function processBarData(chart) { - chart.data = processSeries(chart.data, chart.options, "string"); - renderChart("BarChart", chart); - } - - function processAreaData(chart) { - chart.data = processSeries(chart.data, chart.options, "datetime"); - renderChart("AreaChart", chart); - } - - function processGeoData(chart) { - chart.data = processSimple(chart.data); - renderChart("GeoChart", chart); - } - - function processScatterData(chart) { - chart.data = processSeries(chart.data, chart.options, "number"); - renderChart("ScatterChart", chart); - } - - function processTimelineData(chart) { - chart.data = processTime(chart.data); - renderChart("Timeline", chart); - } - - function setElement(chart, element, dataSource, opts, callback) { - if (typeof element === "string") { - element = document.getElementById(element); - } - chart.element = element; - chart.options = opts || {}; - chart.dataSource = dataSource; - Chartkick.charts[element.id] = chart; - fetchDataSource(chart, callback); - } - - // define classes - - Chartkick = { - LineChart: function (element, dataSource, opts) { - setElement(this, element, dataSource, opts, processLineData); - }, - PieChart: function (element, dataSource, opts) { - setElement(this, element, dataSource, opts, processPieData); - }, - ColumnChart: function (element, dataSource, opts) { - setElement(this, element, dataSource, opts, processColumnData); - }, - BarChart: function (element, dataSource, opts) { - setElement(this, element, dataSource, opts, processBarData); - }, - AreaChart: function (element, dataSource, opts) { - setElement(this, element, dataSource, opts, processAreaData); - }, - GeoChart: function (element, dataSource, opts) { - setElement(this, element, dataSource, opts, processGeoData); - }, - ScatterChart: function (element, dataSource, opts) { - setElement(this, element, dataSource, opts, processScatterData); - }, - Timeline: function (element, dataSource, opts) { - setElement(this, element, dataSource, opts, processTimelineData); - }, - charts: {} - }; - - window.Chartkick = Chartkick; -}(window)); \ No newline at end of file diff --git a/priv/static/js/chartkick.js.gz b/priv/static/js/chartkick.js.gz deleted file mode 100644 index 7f4282c4e856fd7129ef9f25ba2dd741e8d6feee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5442 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 From 484eaca4c68ccacea5db629689f6128d44fca9d2 Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Tue, 21 May 2019 01:01:30 -0300 Subject: [PATCH 30/37] Adjusting scraper --- scrape.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scrape.sh b/scrape.sh index 27be4b0..eb912e1 100755 --- a/scrape.sh +++ b/scrape.sh @@ -1,3 +1,4 @@ #!/bin/bash -phantomjs --wd & +kill $(ps | grep phantomjs | awk '{print $1}') # killall phantomjs +phantomjs --wd --webdriver-loglevel=ERROR & mix run lib/scraper/scraper.exs \ No newline at end of file From cb18778f6ae91d9609e1f700f9cd76fba074aa15 Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Tue, 21 May 2019 16:22:23 -0300 Subject: [PATCH 31/37] Adding hover to github logo --- assets/css/app.css | 3 +++ priv/static/cache_manifest.json | 2 +- ... app-dc9225cb10383d9ce1a72f0c1713ac64.css} | 2 +- ...p-dc9225cb10383d9ce1a72f0c1713ac64.css.gz} | Bin 2551 -> 2560 bytes priv/static/css/app.css | 3 +++ priv/static/css/app.css.gz | Bin 2551 -> 2560 bytes 6 files changed, 8 insertions(+), 2 deletions(-) rename priv/static/css/{app-98b96f8468594140b7c35f83e644e156.css => app-dc9225cb10383d9ce1a72f0c1713ac64.css} (86%) rename priv/static/css/{app-98b96f8468594140b7c35f83e644e156.css.gz => app-dc9225cb10383d9ce1a72f0c1713ac64.css.gz} (82%) diff --git a/assets/css/app.css b/assets/css/app.css index dacb372..c453f30 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -27,6 +27,9 @@ h6{font-size: 1.4rem; letter-spacing: 0; line-height: 1.2} width: 40px; opacity: 0.2; } +.footer img:hover { + opacity: 0.6; +} .center { justify-content: center; } diff --git a/priv/static/cache_manifest.json b/priv/static/cache_manifest.json index eb25f72..ea87158 100644 --- a/priv/static/cache_manifest.json +++ b/priv/static/cache_manifest.json @@ -1 +1 @@ -{"digests":{"css/app-98b96f8468594140b7c35f83e644e156.css":{"digest":"98b96f8468594140b7c35f83e644e156","logical_path":"css/app.css","mtime":63725628619,"size":9973},"favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico":{"digest":"e65bbcae05ea941ac84beeb4bbe50a16","logical_path":"favicon.ico","mtime":63725628619,"size":1150},"images/github-438c17272c5f0e9f4a6da34d3e4bc5bd.png":{"digest":"438c17272c5f0e9f4a6da34d3e4bc5bd","logical_path":"images/github.png","mtime":63725628619,"size":2625},"images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png":{"digest":"9e5b043f43f98c444b02356a213d1db1","logical_path":"images/surf-api-logo.png","mtime":63725628619,"size":4106},"js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js":{"digest":"1cba1dc6de51af8cc041a2ff9f14ca2a","logical_path":"js/app.js","mtime":63725628619,"size":12308},"robots-067185ba27a5d9139b10a759679045bf.txt":{"digest":"067185ba27a5d9139b10a759679045bf","logical_path":"robots.txt","mtime":63725628619,"size":202}},"latest":{"css/app.css":"css/app-98b96f8468594140b7c35f83e644e156.css","favicon.ico":"favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico","images/github.png":"images/github-438c17272c5f0e9f4a6da34d3e4bc5bd.png","images/surf-api-logo.png":"images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png","js/app.js":"js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js","robots.txt":"robots-067185ba27a5d9139b10a759679045bf.txt"},"version":1} \ No newline at end of file +{"digests":{"css/app-dc9225cb10383d9ce1a72f0c1713ac64.css":{"digest":"dc9225cb10383d9ce1a72f0c1713ac64","logical_path":"css/app.css","mtime":63725685579,"size":10003},"favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico":{"digest":"e65bbcae05ea941ac84beeb4bbe50a16","logical_path":"favicon.ico","mtime":63725685579,"size":1150},"images/github-438c17272c5f0e9f4a6da34d3e4bc5bd.png":{"digest":"438c17272c5f0e9f4a6da34d3e4bc5bd","logical_path":"images/github.png","mtime":63725685579,"size":2625},"images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png":{"digest":"9e5b043f43f98c444b02356a213d1db1","logical_path":"images/surf-api-logo.png","mtime":63725685579,"size":4106},"js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js":{"digest":"1cba1dc6de51af8cc041a2ff9f14ca2a","logical_path":"js/app.js","mtime":63725685579,"size":12308},"robots-067185ba27a5d9139b10a759679045bf.txt":{"digest":"067185ba27a5d9139b10a759679045bf","logical_path":"robots.txt","mtime":63725685579,"size":202}},"latest":{"css/app.css":"css/app-dc9225cb10383d9ce1a72f0c1713ac64.css","favicon.ico":"favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico","images/github.png":"images/github-438c17272c5f0e9f4a6da34d3e4bc5bd.png","images/surf-api-logo.png":"images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png","js/app.js":"js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js","robots.txt":"robots-067185ba27a5d9139b10a759679045bf.txt"},"version":1} \ No newline at end of file diff --git a/priv/static/css/app-98b96f8468594140b7c35f83e644e156.css b/priv/static/css/app-dc9225cb10383d9ce1a72f0c1713ac64.css similarity index 86% rename from priv/static/css/app-98b96f8468594140b7c35f83e644e156.css rename to priv/static/css/app-dc9225cb10383d9ce1a72f0c1713ac64.css index 66f15ee..0c0f6e0 100644 --- a/priv/static/css/app-98b96f8468594140b7c35f83e644e156.css +++ b/priv/static/css/app-dc9225cb10383d9ce1a72f0c1713ac64.css @@ -1 +1 @@ -*,:after,:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000;font-family:Helvetica,Arial,sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote :last-child{margin-bottom:0}.button,button,input[type=button],input[type=reset],input[type=submit]{background-color:#0069d9;border:.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type=button][disabled]:focus,input[type=button][disabled]:hover,input[type=reset][disabled]:focus,input[type=reset][disabled]:hover,input[type=submit][disabled]:focus,input[type=submit][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type=button].button-outline,input[type=reset].button-outline,input[type=submit].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type=button].button-outline:focus,input[type=button].button-outline:hover,input[type=reset].button-outline:focus,input[type=reset].button-outline:hover,input[type=submit].button-outline:focus,input[type=submit].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type=button].button-outline[disabled]:focus,input[type=button].button-outline[disabled]:hover,input[type=reset].button-outline[disabled]:focus,input[type=reset].button-outline[disabled]:hover,input[type=submit].button-outline[disabled]:focus,input[type=submit].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type=button].button-clear,input[type=reset].button-clear,input[type=submit].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type=button].button-clear:focus,input[type=button].button-clear:hover,input[type=reset].button-clear:focus,input[type=reset].button-clear:hover,input[type=submit].button-clear:focus,input[type=submit].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type=button].button-clear[disabled]:focus,input[type=button].button-clear[disabled]:hover,input[type=reset].button-clear[disabled]:focus,input[type=reset].button-clear[disabled]:hover,input[type=submit].button-clear[disabled]:focus,input[type=submit].button-clear[disabled]:hover{color:#0069d9}code{border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}code,pre{background:#f4f5f6}pre{border-left:.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:.1rem solid #f4f5f6;margin:3rem 0}input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1rem;width:100%}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') 100% no-repeat;padding-right:3rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type=checkbox],input[type=radio]{display:inline}.label-inline{display:inline-block;font-weight:400;margin-left:.5rem}.row{display:flex;flex-direction:column;width:100%}.row,.row.row-no-padding,.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width:40rem){.row{flex-direction:row;margin-left:-1rem;width:calc(100% + 2rem)}.row .column{margin-bottom:inherit;padding:0 1rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:700}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:" ";display:table}.float-left{float:left}.float-right{float:right}h1{font-size:3.6rem;line-height:1.25}h2{font-size:2.8rem;line-height:1.3}h3{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h4{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h5{font-size:1.6rem;line-height:1.4}h5,h6{letter-spacing:0}h6{font-size:1.4rem;line-height:1.2}.container{margin:0 auto;max-width:80rem;padding:0 2rem;position:relative;width:100%}.footer{display:flex;margin:30px auto;padding:0}.footer img{height:40px;width:40px;opacity:.2}.center{justify-content:center}select{width:auto}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert p{margin-bottom:0}.alert:empty{display:none}.help-block{color:#a94442;display:block;margin:-1rem 0 2rem}.charts{color:#bababa;text-align:center;border-bottom:1px solid #e3e3e3;background:#eee;border-radius:6px;padding:40px 40px 10px;font-weight:400;font-size:100%}.charts p{margin-top:10px;margin-bottom:0}.surf-api-logo{min-width:300px;margin:1rem;display:block}.surf-api-logo img{width:auto;display:block}header{width:100%;background:#fdfdfd;border-bottom:1px solid #eaeaea;margin-bottom:2rem}header section{align-items:center;display:flex;flex-direction:column;justify-content:space-between}header section :first-child{order:2}header section :last-child{order:1}header nav li,header nav ul{margin:0;padding:0;display:block;text-align:right;white-space:nowrap}header nav ul{margin:0 1rem 1rem}header nav a{display:block}@media (min-width:40.0rem){header section{flex-direction:row}header nav ul{margin:1rem}.surf-api-logo{flex-basis:527px;margin:2rem 1rem}} \ No newline at end of file +*,:after,:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000;font-family:Helvetica,Arial,sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote :last-child{margin-bottom:0}.button,button,input[type=button],input[type=reset],input[type=submit]{background-color:#0069d9;border:.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type=button][disabled]:focus,input[type=button][disabled]:hover,input[type=reset][disabled]:focus,input[type=reset][disabled]:hover,input[type=submit][disabled]:focus,input[type=submit][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type=button].button-outline,input[type=reset].button-outline,input[type=submit].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type=button].button-outline:focus,input[type=button].button-outline:hover,input[type=reset].button-outline:focus,input[type=reset].button-outline:hover,input[type=submit].button-outline:focus,input[type=submit].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type=button].button-outline[disabled]:focus,input[type=button].button-outline[disabled]:hover,input[type=reset].button-outline[disabled]:focus,input[type=reset].button-outline[disabled]:hover,input[type=submit].button-outline[disabled]:focus,input[type=submit].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type=button].button-clear,input[type=reset].button-clear,input[type=submit].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type=button].button-clear:focus,input[type=button].button-clear:hover,input[type=reset].button-clear:focus,input[type=reset].button-clear:hover,input[type=submit].button-clear:focus,input[type=submit].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type=button].button-clear[disabled]:focus,input[type=button].button-clear[disabled]:hover,input[type=reset].button-clear[disabled]:focus,input[type=reset].button-clear[disabled]:hover,input[type=submit].button-clear[disabled]:focus,input[type=submit].button-clear[disabled]:hover{color:#0069d9}code{border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}code,pre{background:#f4f5f6}pre{border-left:.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:.1rem solid #f4f5f6;margin:3rem 0}input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1rem;width:100%}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') 100% no-repeat;padding-right:3rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type=checkbox],input[type=radio]{display:inline}.label-inline{display:inline-block;font-weight:400;margin-left:.5rem}.row{display:flex;flex-direction:column;width:100%}.row,.row.row-no-padding,.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width:40rem){.row{flex-direction:row;margin-left:-1rem;width:calc(100% + 2rem)}.row .column{margin-bottom:inherit;padding:0 1rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:700}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:" ";display:table}.float-left{float:left}.float-right{float:right}h1{font-size:3.6rem;line-height:1.25}h2{font-size:2.8rem;line-height:1.3}h3{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h4{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h5{font-size:1.6rem;line-height:1.4}h5,h6{letter-spacing:0}h6{font-size:1.4rem;line-height:1.2}.container{margin:0 auto;max-width:80rem;padding:0 2rem;position:relative;width:100%}.footer{display:flex;margin:30px auto;padding:0}.footer img{height:40px;width:40px;opacity:.2}.footer img :hover{opacity:.6}.center{justify-content:center}select{width:auto}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert p{margin-bottom:0}.alert:empty{display:none}.help-block{color:#a94442;display:block;margin:-1rem 0 2rem}.charts{color:#bababa;text-align:center;border-bottom:1px solid #e3e3e3;background:#eee;border-radius:6px;padding:40px 40px 10px;font-weight:400;font-size:100%}.charts p{margin-top:10px;margin-bottom:0}.surf-api-logo{min-width:300px;margin:1rem;display:block}.surf-api-logo img{width:auto;display:block}header{width:100%;background:#fdfdfd;border-bottom:1px solid #eaeaea;margin-bottom:2rem}header section{align-items:center;display:flex;flex-direction:column;justify-content:space-between}header section :first-child{order:2}header section :last-child{order:1}header nav li,header nav ul{margin:0;padding:0;display:block;text-align:right;white-space:nowrap}header nav ul{margin:0 1rem 1rem}header nav a{display:block}@media (min-width:40.0rem){header section{flex-direction:row}header nav ul{margin:1rem}.surf-api-logo{flex-basis:527px;margin:2rem 1rem}} \ No newline at end of file diff --git a/priv/static/css/app-98b96f8468594140b7c35f83e644e156.css.gz b/priv/static/css/app-dc9225cb10383d9ce1a72f0c1713ac64.css.gz similarity index 82% rename from priv/static/css/app-98b96f8468594140b7c35f83e644e156.css.gz rename to priv/static/css/app-dc9225cb10383d9ce1a72f0c1713ac64.css.gz index ad4133f5f21ef5629b6b0449b3d19b8a1d6eacfe..60653d6f86cbed13c1d87c1a5d89ccaa474065e3 100644 GIT binary patch delta 408 zcmV;J0cZaA6Mz)3a|nO+RcuS16pzt}E=Zh}|85(CvNvb&BzY{#4us&$#OPg6z?wWt zs%==^r<->XJ$~usVP!4bBEuS&|)KFkzJecutamRSL?>c({V&ZnuB)O`QA`rf|ZE@ks}v ztg4&+u?QcC;k6=f59{-@-OXW9i8^{RwO-#zFX0J@C47yVG^d$VGtiv@`xyS{LO+W} zOMQR=`<&FCEQD}kwTK#da02FX7XR8Z+fNIBWmkzf#^tlL6NMAb^wYF;=70)01-{^J z%+2We@<8XOzOH|k2_fGoqYF=Pa|r0NI;9fUn$aoytmq1`kKtI8e62?0jD{Y-=^dSq z>9*wEY3B^d4Z?CVg{9>HV*mLw9OdknTXaAv!K+muTX}nAJ8Hvd;(>}^@e{<<<~Osn zwnJN2MF4sS!Z}|@q`~L#_{?JVmCjbBm CAJ16; delta 399 zcmV;A0dW3+6!#Oba|nNBB8$`T-)%!s_T~(}A`d>qgYbbE zUMuqUurEKo-5eH`sFWvD>lK{z1D;}7!kef`bDAqP1Kk<0kKxZM^wVav)CU-_&q?jN zLI@{Ti>Q$YCtyxx@vkkj{j{`K_Kk>CTs})XGdST)KTTU_4yce*;0x}??2Dct4|IO6 z>uQ-0@~tqs@C1K1hk!1tQ)*qU-JG(|imm|r7!EGU*J?yoXsGf}@91qzwOD t#?;#t$@fIV^EBK%F`sebTAcO_8q~z0zaM?ee~8%s7fA=Tjp_9!008{D#c}`u diff --git a/priv/static/css/app.css b/priv/static/css/app.css index 05ebb44..09ae3f6 100644 --- a/priv/static/css/app.css +++ b/priv/static/css/app.css @@ -27,6 +27,9 @@ h6{font-size: 1.4rem; letter-spacing: 0; line-height: 1.2} width: 40px; opacity: 0.2; } +.footer img:hover { + opacity: 0.6; +} .center { justify-content: center; } diff --git a/priv/static/css/app.css.gz b/priv/static/css/app.css.gz index ad4133f5f21ef5629b6b0449b3d19b8a1d6eacfe..60653d6f86cbed13c1d87c1a5d89ccaa474065e3 100644 GIT binary patch delta 408 zcmV;J0cZaA6Mz)3a|nO+RcuS16pzt}E=Zh}|85(CvNvb&BzY{#4us&$#OPg6z?wWt zs%==^r<->XJ$~usVP!4bBEuS&|)KFkzJecutamRSL?>c({V&ZnuB)O`QA`rf|ZE@ks}v ztg4&+u?QcC;k6=f59{-@-OXW9i8^{RwO-#zFX0J@C47yVG^d$VGtiv@`xyS{LO+W} zOMQR=`<&FCEQD}kwTK#da02FX7XR8Z+fNIBWmkzf#^tlL6NMAb^wYF;=70)01-{^J z%+2We@<8XOzOH|k2_fGoqYF=Pa|r0NI;9fUn$aoytmq1`kKtI8e62?0jD{Y-=^dSq z>9*wEY3B^d4Z?CVg{9>HV*mLw9OdknTXaAv!K+muTX}nAJ8Hvd;(>}^@e{<<<~Osn zwnJN2MF4sS!Z}|@q`~L#_{?JVmCjbBm CAJ16; delta 399 zcmV;A0dW3+6!#Oba|nNBB8$`T-)%!s_T~(}A`d>qgYbbE zUMuqUurEKo-5eH`sFWvD>lK{z1D;}7!kef`bDAqP1Kk<0kKxZM^wVav)CU-_&q?jN zLI@{Ti>Q$YCtyxx@vkkj{j{`K_Kk>CTs})XGdST)KTTU_4yce*;0x}??2Dct4|IO6 z>uQ-0@~tqs@C1K1hk!1tQ)*qU-JG(|imm|r7!EGU*J?yoXsGf}@91qzwOD t#?;#t$@fIV^EBK%F`sebTAcO_8q~z0zaM?ee~8%s7fA=Tjp_9!008{D#c}`u From 951b82d100d311db0ac4829277f56c879e4ffafb Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Tue, 21 May 2019 16:35:16 -0300 Subject: [PATCH 32/37] Building static assets --- priv/static/cache_manifest.json | 2 +- ... app-4506d74389be3d8d4a33dc468908c409.css} | 2 +- ...p-4506d74389be3d8d4a33dc468908c409.css.gz} | Bin 2560 -> 2559 bytes priv/static/css/app.css | 149 +----------------- priv/static/css/app.css.gz | Bin 2560 -> 2559 bytes priv/static/js/app.js | 132 +--------------- 6 files changed, 4 insertions(+), 281 deletions(-) rename priv/static/css/{app-dc9225cb10383d9ce1a72f0c1713ac64.css => app-4506d74389be3d8d4a33dc468908c409.css} (86%) rename priv/static/css/{app-dc9225cb10383d9ce1a72f0c1713ac64.css.gz => app-4506d74389be3d8d4a33dc468908c409.css.gz} (82%) diff --git a/priv/static/cache_manifest.json b/priv/static/cache_manifest.json index ea87158..0d6a106 100644 --- a/priv/static/cache_manifest.json +++ b/priv/static/cache_manifest.json @@ -1 +1 @@ -{"digests":{"css/app-dc9225cb10383d9ce1a72f0c1713ac64.css":{"digest":"dc9225cb10383d9ce1a72f0c1713ac64","logical_path":"css/app.css","mtime":63725685579,"size":10003},"favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico":{"digest":"e65bbcae05ea941ac84beeb4bbe50a16","logical_path":"favicon.ico","mtime":63725685579,"size":1150},"images/github-438c17272c5f0e9f4a6da34d3e4bc5bd.png":{"digest":"438c17272c5f0e9f4a6da34d3e4bc5bd","logical_path":"images/github.png","mtime":63725685579,"size":2625},"images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png":{"digest":"9e5b043f43f98c444b02356a213d1db1","logical_path":"images/surf-api-logo.png","mtime":63725685579,"size":4106},"js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js":{"digest":"1cba1dc6de51af8cc041a2ff9f14ca2a","logical_path":"js/app.js","mtime":63725685579,"size":12308},"robots-067185ba27a5d9139b10a759679045bf.txt":{"digest":"067185ba27a5d9139b10a759679045bf","logical_path":"robots.txt","mtime":63725685579,"size":202}},"latest":{"css/app.css":"css/app-dc9225cb10383d9ce1a72f0c1713ac64.css","favicon.ico":"favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico","images/github.png":"images/github-438c17272c5f0e9f4a6da34d3e4bc5bd.png","images/surf-api-logo.png":"images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png","js/app.js":"js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js","robots.txt":"robots-067185ba27a5d9139b10a759679045bf.txt"},"version":1} \ No newline at end of file +{"digests":{"css/app-4506d74389be3d8d4a33dc468908c409.css":{"digest":"4506d74389be3d8d4a33dc468908c409","logical_path":"css/app.css","mtime":63725686487,"size":10002},"favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico":{"digest":"e65bbcae05ea941ac84beeb4bbe50a16","logical_path":"favicon.ico","mtime":63725686487,"size":1150},"images/github-438c17272c5f0e9f4a6da34d3e4bc5bd.png":{"digest":"438c17272c5f0e9f4a6da34d3e4bc5bd","logical_path":"images/github.png","mtime":63725686487,"size":2625},"images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png":{"digest":"9e5b043f43f98c444b02356a213d1db1","logical_path":"images/surf-api-logo.png","mtime":63725686487,"size":4106},"js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js":{"digest":"1cba1dc6de51af8cc041a2ff9f14ca2a","logical_path":"js/app.js","mtime":63725686487,"size":12308},"robots-067185ba27a5d9139b10a759679045bf.txt":{"digest":"067185ba27a5d9139b10a759679045bf","logical_path":"robots.txt","mtime":63725686487,"size":202}},"latest":{"css/app.css":"css/app-4506d74389be3d8d4a33dc468908c409.css","favicon.ico":"favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico","images/github.png":"images/github-438c17272c5f0e9f4a6da34d3e4bc5bd.png","images/surf-api-logo.png":"images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png","js/app.js":"js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js","robots.txt":"robots-067185ba27a5d9139b10a759679045bf.txt"},"version":1} \ No newline at end of file diff --git a/priv/static/css/app-dc9225cb10383d9ce1a72f0c1713ac64.css b/priv/static/css/app-4506d74389be3d8d4a33dc468908c409.css similarity index 86% rename from priv/static/css/app-dc9225cb10383d9ce1a72f0c1713ac64.css rename to priv/static/css/app-4506d74389be3d8d4a33dc468908c409.css index 0c0f6e0..096fd58 100644 --- a/priv/static/css/app-dc9225cb10383d9ce1a72f0c1713ac64.css +++ b/priv/static/css/app-4506d74389be3d8d4a33dc468908c409.css @@ -1 +1 @@ -*,:after,:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000;font-family:Helvetica,Arial,sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote :last-child{margin-bottom:0}.button,button,input[type=button],input[type=reset],input[type=submit]{background-color:#0069d9;border:.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type=button][disabled]:focus,input[type=button][disabled]:hover,input[type=reset][disabled]:focus,input[type=reset][disabled]:hover,input[type=submit][disabled]:focus,input[type=submit][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type=button].button-outline,input[type=reset].button-outline,input[type=submit].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type=button].button-outline:focus,input[type=button].button-outline:hover,input[type=reset].button-outline:focus,input[type=reset].button-outline:hover,input[type=submit].button-outline:focus,input[type=submit].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type=button].button-outline[disabled]:focus,input[type=button].button-outline[disabled]:hover,input[type=reset].button-outline[disabled]:focus,input[type=reset].button-outline[disabled]:hover,input[type=submit].button-outline[disabled]:focus,input[type=submit].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type=button].button-clear,input[type=reset].button-clear,input[type=submit].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type=button].button-clear:focus,input[type=button].button-clear:hover,input[type=reset].button-clear:focus,input[type=reset].button-clear:hover,input[type=submit].button-clear:focus,input[type=submit].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type=button].button-clear[disabled]:focus,input[type=button].button-clear[disabled]:hover,input[type=reset].button-clear[disabled]:focus,input[type=reset].button-clear[disabled]:hover,input[type=submit].button-clear[disabled]:focus,input[type=submit].button-clear[disabled]:hover{color:#0069d9}code{border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}code,pre{background:#f4f5f6}pre{border-left:.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:.1rem solid #f4f5f6;margin:3rem 0}input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1rem;width:100%}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') 100% no-repeat;padding-right:3rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type=checkbox],input[type=radio]{display:inline}.label-inline{display:inline-block;font-weight:400;margin-left:.5rem}.row{display:flex;flex-direction:column;width:100%}.row,.row.row-no-padding,.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width:40rem){.row{flex-direction:row;margin-left:-1rem;width:calc(100% + 2rem)}.row .column{margin-bottom:inherit;padding:0 1rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:700}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:" ";display:table}.float-left{float:left}.float-right{float:right}h1{font-size:3.6rem;line-height:1.25}h2{font-size:2.8rem;line-height:1.3}h3{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h4{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h5{font-size:1.6rem;line-height:1.4}h5,h6{letter-spacing:0}h6{font-size:1.4rem;line-height:1.2}.container{margin:0 auto;max-width:80rem;padding:0 2rem;position:relative;width:100%}.footer{display:flex;margin:30px auto;padding:0}.footer img{height:40px;width:40px;opacity:.2}.footer img :hover{opacity:.6}.center{justify-content:center}select{width:auto}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert p{margin-bottom:0}.alert:empty{display:none}.help-block{color:#a94442;display:block;margin:-1rem 0 2rem}.charts{color:#bababa;text-align:center;border-bottom:1px solid #e3e3e3;background:#eee;border-radius:6px;padding:40px 40px 10px;font-weight:400;font-size:100%}.charts p{margin-top:10px;margin-bottom:0}.surf-api-logo{min-width:300px;margin:1rem;display:block}.surf-api-logo img{width:auto;display:block}header{width:100%;background:#fdfdfd;border-bottom:1px solid #eaeaea;margin-bottom:2rem}header section{align-items:center;display:flex;flex-direction:column;justify-content:space-between}header section :first-child{order:2}header section :last-child{order:1}header nav li,header nav ul{margin:0;padding:0;display:block;text-align:right;white-space:nowrap}header nav ul{margin:0 1rem 1rem}header nav a{display:block}@media (min-width:40.0rem){header section{flex-direction:row}header nav ul{margin:1rem}.surf-api-logo{flex-basis:527px;margin:2rem 1rem}} \ No newline at end of file +*,:after,:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000;font-family:Helvetica,Arial,sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote :last-child{margin-bottom:0}.button,button,input[type=button],input[type=reset],input[type=submit]{background-color:#0069d9;border:.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type=button][disabled]:focus,input[type=button][disabled]:hover,input[type=reset][disabled]:focus,input[type=reset][disabled]:hover,input[type=submit][disabled]:focus,input[type=submit][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type=button].button-outline,input[type=reset].button-outline,input[type=submit].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type=button].button-outline:focus,input[type=button].button-outline:hover,input[type=reset].button-outline:focus,input[type=reset].button-outline:hover,input[type=submit].button-outline:focus,input[type=submit].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type=button].button-outline[disabled]:focus,input[type=button].button-outline[disabled]:hover,input[type=reset].button-outline[disabled]:focus,input[type=reset].button-outline[disabled]:hover,input[type=submit].button-outline[disabled]:focus,input[type=submit].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type=button].button-clear,input[type=reset].button-clear,input[type=submit].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type=button].button-clear:focus,input[type=button].button-clear:hover,input[type=reset].button-clear:focus,input[type=reset].button-clear:hover,input[type=submit].button-clear:focus,input[type=submit].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type=button].button-clear[disabled]:focus,input[type=button].button-clear[disabled]:hover,input[type=reset].button-clear[disabled]:focus,input[type=reset].button-clear[disabled]:hover,input[type=submit].button-clear[disabled]:focus,input[type=submit].button-clear[disabled]:hover{color:#0069d9}code{border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}code,pre{background:#f4f5f6}pre{border-left:.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:.1rem solid #f4f5f6;margin:3rem 0}input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1rem;width:100%}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') 100% no-repeat;padding-right:3rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type=checkbox],input[type=radio]{display:inline}.label-inline{display:inline-block;font-weight:400;margin-left:.5rem}.row{display:flex;flex-direction:column;width:100%}.row,.row.row-no-padding,.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width:40rem){.row{flex-direction:row;margin-left:-1rem;width:calc(100% + 2rem)}.row .column{margin-bottom:inherit;padding:0 1rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:700}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:" ";display:table}.float-left{float:left}.float-right{float:right}h1{font-size:3.6rem;line-height:1.25}h2{font-size:2.8rem;line-height:1.3}h3{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h4{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h5{font-size:1.6rem;line-height:1.4}h5,h6{letter-spacing:0}h6{font-size:1.4rem;line-height:1.2}.container{margin:0 auto;max-width:80rem;padding:0 2rem;position:relative;width:100%}.footer{display:flex;margin:30px auto;padding:0}.footer img{height:40px;width:40px;opacity:.2}.footer img:hover{opacity:.6}.center{justify-content:center}select{width:auto}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert p{margin-bottom:0}.alert:empty{display:none}.help-block{color:#a94442;display:block;margin:-1rem 0 2rem}.charts{color:#bababa;text-align:center;border-bottom:1px solid #e3e3e3;background:#eee;border-radius:6px;padding:40px 40px 10px;font-weight:400;font-size:100%}.charts p{margin-top:10px;margin-bottom:0}.surf-api-logo{min-width:300px;margin:1rem;display:block}.surf-api-logo img{width:auto;display:block}header{width:100%;background:#fdfdfd;border-bottom:1px solid #eaeaea;margin-bottom:2rem}header section{align-items:center;display:flex;flex-direction:column;justify-content:space-between}header section :first-child{order:2}header section :last-child{order:1}header nav li,header nav ul{margin:0;padding:0;display:block;text-align:right;white-space:nowrap}header nav ul{margin:0 1rem 1rem}header nav a{display:block}@media (min-width:40.0rem){header section{flex-direction:row}header nav ul{margin:1rem}.surf-api-logo{flex-basis:527px;margin:2rem 1rem}} \ No newline at end of file diff --git a/priv/static/css/app-dc9225cb10383d9ce1a72f0c1713ac64.css.gz b/priv/static/css/app-4506d74389be3d8d4a33dc468908c409.css.gz similarity index 82% rename from priv/static/css/app-dc9225cb10383d9ce1a72f0c1713ac64.css.gz rename to priv/static/css/app-4506d74389be3d8d4a33dc468908c409.css.gz index 60653d6f86cbed13c1d87c1a5d89ccaa474065e3..b365ae8a3e21ec66dc0b486962769aaf63aa67dd 100644 GIT binary patch delta 404 zcmV;F0c-w%6#o;jb_joYP&@`Bx*l;<{=01m%HEv8k>sf;8xVpqlcIM)0c-N8sJ3Bs zpYCZkzibU{sqiAa8T!VuIkc|^+w3;ie>E%gBg z>~m6EvJk?F)go%-!3mhhS^R6uY(K60l}#nW7?;n|4iru}(@)dZnFA{16!?O>F*T#d z%LAPs`np;sgnWOWj4nLE%^{%6>XbrQ>qV#Rv!W}&K890G^0gX~G8$R{r*||yrrVM? zr=2q-Hweqg6qc3(i2di!aFnB8ZqWgy1g}si3civ#Saium*33N+74Y^ y6#?iC3}asIip+eX;dzd3o|w-#aV<`J1`TTB(BF@~<;a!yW~pC$qWzYSg_rDhiu+~`j8%Bn(Zf-SLXyCvhBd< z2I`VZH?TT@C=JdAR#}oAU@&2o0eDW5fmI61%Xqkg<8HU}O`L!H6sB;(iSbDXp{%N# z{jmrih~c#&Zx8G9v)#>MQHeTwGPPdcNiX3Eh$VcDnlz`GR5Q?>0s9#K=t4h>MoWEw z0sEZPo-BlLVzr1Gd2j;eau)yEGTToJe`QyRIL76(v=fCB&h*o?b>@HyIR(DpZp_W- z`SL*Lr@pS12_b*qD5DEcaB~RgvO1*_)|$~N`>f~+u#e$blYFg4GkLkAL z-D&3x$qmACGKHn(0Am07GaTjYms@l|DZ#5%AX|BRWIJlZXySp2U-1*f)aEy{w6;TA zS49AN2g8_{yCOB8Xn3Bancode{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:0.1rem solid #f4f5f6;margin:3.0rem 0}input[type='email'],input[type='number'],input[type='password'],input[type='search'],input[type='tel'],input[type='text'],input[type='url'],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1.0rem;width:100%}input[type='email']:focus,input[type='number']:focus,input[type='password']:focus,input[type='search']:focus,input[type='tel']:focus,input[type='text']:focus,input[type='url']:focus,textarea:focus,select:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') center right no-repeat;padding-right:3.0rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type='checkbox'],input[type='radio']{display:inline}.label-inline{display:inline-block;font-weight:normal;margin-left:.5rem}.row{display:flex;flex-direction:column;padding:0;width:100%}.row.row-no-padding{padding:0}.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width: 40rem){.row{flex-direction:row;margin-left:-1.0rem;width:calc(100% + 2.0rem)}.row .column{margin-bottom:inherit;padding:0 1.0rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3.0rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1.0rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:0.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:bold}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2.0rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;letter-spacing:0;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:' ';display:table}.float-left{float:left}.float-right{float:right} - -/* General style */ -h1{font-size: 3.6rem; line-height: 1.25} -h2{font-size: 2.8rem; line-height: 1.3} -h3{font-size: 2.2rem; letter-spacing: -.08rem; line-height: 1.35} -h4{font-size: 1.8rem; letter-spacing: -.05rem; line-height: 1.5} -h5{font-size: 1.6rem; letter-spacing: 0; line-height: 1.4} -h6{font-size: 1.4rem; letter-spacing: 0; line-height: 1.2} - -.container { - margin: 0 auto; - max-width: 80.0rem; - padding: 0 2.0rem; - position: relative; - width: 100% -} -.footer { - display: flex; - margin: 30px auto; - padding: 0; -} -.footer img { - height: 40px; - width: 40px; - opacity: 0.2; -} -.footer img:hover { - opacity: 0.6; -} -.center { - justify-content: center; -} -select { - width: auto; -} - -/* Alerts and form errors */ -.alert { - padding: 15px; - margin-bottom: 20px; - border: 1px solid transparent; - border-radius: 4px; -} -.alert-info { - color: #31708f; - background-color: #d9edf7; - border-color: #bce8f1; -} -.alert-warning { - color: #8a6d3b; - background-color: #fcf8e3; - border-color: #faebcc; -} -.alert-danger { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -.alert p { - margin-bottom: 0; -} -.alert:empty { - display: none; -} -.help-block { - color: #a94442; - display: block; - margin: -1rem 0 2rem; -} - -/* Chart section */ -.charts { - color: #bababa; - text-align: center; - border-bottom: 1px solid #e3e3e3; - background: #eee; - border-radius: 6px; - padding: 40px 40px 10px 40px; - font-weight: normal; - font-size: 100%; -} -.charts p { - margin-top: 10px; - margin-bottom: 0; -} - -/* Logo */ -.surf-api-logo { - min-width: 300px; - margin: 1rem; - display: block; -} -.surf-api-logo img { - width: auto; - display: block; -} - -/* Headers */ -header { - width: 100%; - background: #fdfdfd; - border-bottom: 1px solid #eaeaea; - margin-bottom: 2rem; -} -header section { - align-items: center; - display: flex; - flex-direction: column; - justify-content: space-between; -} -header section :first-child { - order: 2; -} -header section :last-child { - order: 1; -} -header nav ul, -header nav li { - margin: 0; - padding: 0; - display: block; - text-align: right; - white-space: nowrap; -} -header nav ul { - margin: 1rem; - margin-top: 0; -} -header nav a { - display: block; -} - -@media (min-width: 40.0rem) { /* Small devices (landscape phones, 576px and up) */ - header section { - flex-direction: row; - } - header nav ul { - margin: 1rem; - } - .surf-api-logo { - flex-basis: 527px; - margin: 2rem 1rem; - } -} - +*,:after,:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000;font-family:Helvetica,Arial,sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote :last-child{margin-bottom:0}.button,button,input[type=button],input[type=reset],input[type=submit]{background-color:#0069d9;border:.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type=button][disabled]:focus,input[type=button][disabled]:hover,input[type=reset][disabled]:focus,input[type=reset][disabled]:hover,input[type=submit][disabled]:focus,input[type=submit][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type=button].button-outline,input[type=reset].button-outline,input[type=submit].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type=button].button-outline:focus,input[type=button].button-outline:hover,input[type=reset].button-outline:focus,input[type=reset].button-outline:hover,input[type=submit].button-outline:focus,input[type=submit].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type=button].button-outline[disabled]:focus,input[type=button].button-outline[disabled]:hover,input[type=reset].button-outline[disabled]:focus,input[type=reset].button-outline[disabled]:hover,input[type=submit].button-outline[disabled]:focus,input[type=submit].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type=button].button-clear,input[type=reset].button-clear,input[type=submit].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type=button].button-clear:focus,input[type=button].button-clear:hover,input[type=reset].button-clear:focus,input[type=reset].button-clear:hover,input[type=submit].button-clear:focus,input[type=submit].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type=button].button-clear[disabled]:focus,input[type=button].button-clear[disabled]:hover,input[type=reset].button-clear[disabled]:focus,input[type=reset].button-clear[disabled]:hover,input[type=submit].button-clear[disabled]:focus,input[type=submit].button-clear[disabled]:hover{color:#0069d9}code{border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}code,pre{background:#f4f5f6}pre{border-left:.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:.1rem solid #f4f5f6;margin:3rem 0}input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1rem;width:100%}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') 100% no-repeat;padding-right:3rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type=checkbox],input[type=radio]{display:inline}.label-inline{display:inline-block;font-weight:400;margin-left:.5rem}.row{display:flex;flex-direction:column;width:100%}.row,.row.row-no-padding,.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width:40rem){.row{flex-direction:row;margin-left:-1rem;width:calc(100% + 2rem)}.row .column{margin-bottom:inherit;padding:0 1rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:700}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:" ";display:table}.float-left{float:left}.float-right{float:right}h1{font-size:3.6rem;line-height:1.25}h2{font-size:2.8rem;line-height:1.3}h3{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h4{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h5{font-size:1.6rem;line-height:1.4}h5,h6{letter-spacing:0}h6{font-size:1.4rem;line-height:1.2}.container{margin:0 auto;max-width:80rem;padding:0 2rem;position:relative;width:100%}.footer{display:flex;margin:30px auto;padding:0}.footer img{height:40px;width:40px;opacity:.2}.footer img:hover{opacity:.6}.center{justify-content:center}select{width:auto}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert p{margin-bottom:0}.alert:empty{display:none}.help-block{color:#a94442;display:block;margin:-1rem 0 2rem}.charts{color:#bababa;text-align:center;border-bottom:1px solid #e3e3e3;background:#eee;border-radius:6px;padding:40px 40px 10px;font-weight:400;font-size:100%}.charts p{margin-top:10px;margin-bottom:0}.surf-api-logo{min-width:300px;margin:1rem;display:block}.surf-api-logo img{width:auto;display:block}header{width:100%;background:#fdfdfd;border-bottom:1px solid #eaeaea;margin-bottom:2rem}header section{align-items:center;display:flex;flex-direction:column;justify-content:space-between}header section :first-child{order:2}header section :last-child{order:1}header nav li,header nav ul{margin:0;padding:0;display:block;text-align:right;white-space:nowrap}header nav ul{margin:0 1rem 1rem}header nav a{display:block}@media (min-width:40.0rem){header section{flex-direction:row}header nav ul{margin:1rem}.surf-api-logo{flex-basis:527px;margin:2rem 1rem}} \ No newline at end of file diff --git a/priv/static/css/app.css.gz b/priv/static/css/app.css.gz index 60653d6f86cbed13c1d87c1a5d89ccaa474065e3..b365ae8a3e21ec66dc0b486962769aaf63aa67dd 100644 GIT binary patch delta 404 zcmV;F0c-w%6#o;jb_joYP&@`Bx*l;<{=01m%HEv8k>sf;8xVpqlcIM)0c-N8sJ3Bs zpYCZkzibU{sqiAa8T!VuIkc|^+w3;ie>E%gBg z>~m6EvJk?F)go%-!3mhhS^R6uY(K60l}#nW7?;n|4iru}(@)dZnFA{16!?O>F*T#d z%LAPs`np;sgnWOWj4nLE%^{%6>XbrQ>qV#Rv!W}&K890G^0gX~G8$R{r*||yrrVM? zr=2q-Hweqg6qc3(i2di!aFnB8ZqWgy1g}si3civ#Saium*33N+74Y^ y6#?iC3}asIip+eX;dzd3o|w-#aV<`J1`TTB(BF@~<;a!yW~pC$qWzYSg_rDhiu+~`j8%Bn(Zf-SLXyCvhBd< z2I`VZH?TT@C=JdAR#}oAU@&2o0eDW5fmI61%Xqkg<8HU}O`L!H6sB;(iSbDXp{%N# z{jmrih~c#&Zx8G9v)#>MQHeTwGPPdcNiX3Eh$VcDnlz`GR5Q?>0s9#K=t4h>MoWEw z0sEZPo-BlLVzr1Gd2j;eau)yEGTToJe`QyRIL76(v=fCB&h*o?b>@HyIR(DpZp_W- z`SL*Lr@pS12_b*qD5DEcaB~RgvO1*_)|$~N`>f~+u#e$blYFg4GkLkAL z-D&3x$qmACGKHn(0Am07GaTjYms@l|DZ#5%AX|BRWIJlZXySp2U-1*f)aEy{w6;TA zS49AN2g8_{yCOB8Xn3Ban Date: Tue, 21 May 2019 22:18:54 -0300 Subject: [PATCH 33/37] Fixing scraper --- lib/scraper/windguru.ex | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/scraper/windguru.ex b/lib/scraper/windguru.ex index 2cb6141..0b28536 100644 --- a/lib/scraper/windguru.ex +++ b/lib/scraper/windguru.ex @@ -134,19 +134,19 @@ defmodule WindguruScraper do def scrape(spot) do data = fetch_data(spot.windguru_id) - case data["datetimes"] do + case data.datetimes do nil -> IO.puts("Error while fetching data for #{spot.name} (#{spot.windguru_id})") _ -> Repo.insert(%SpotForecast{ spot_id: spot.id, - datetimes: data["datetimes"], - wind_speed: data["wind_speed"], - wind_gust: data["wind_gust"], - wind_direction: data["wind_direction"], - wave_height: data["wave_height"], - wave_period: data["wave_period"], - wave_direction: data["wave_direction"], - temperature: data["temperature"], + datetimes: data.datetimes, + wind_speed: data.wind_speed, + wind_gust: data.wind_gust, + wind_direction: data.wind_direction, + wave_height: data.wave_height, + wave_period: data.wave_period, + wave_direction: data.wave_direction, + temperature: data.temperature, }) end end From 61694f50845678b615fe215e0ac74896427e5939 Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Tue, 21 May 2019 22:30:19 -0300 Subject: [PATCH 34/37] Padding numbers on chart timestamp --- lib/scraper/windguru.ex | 6 ++++-- lib/waves_web/controllers/page_controller.ex | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/scraper/windguru.ex b/lib/scraper/windguru.ex index 0b28536..d90b9af 100644 --- a/lib/scraper/windguru.ex +++ b/lib/scraper/windguru.ex @@ -15,6 +15,8 @@ defmodule WindguruScraper do find_element(:id, "div_wgfcst0") end + defp pad(number), do: String.pad_leading("#{number}", 2, "0") + defp parse_int(number_str) do case Integer.parse(number_str) do {number, _rest} -> number @@ -48,11 +50,11 @@ defmodule WindguruScraper do def parse_month(wg_day, now_day, now_month) when wg_day < 10 and now_day > 20 do case now_month do 12 -> "01" - _ -> String.pad_leading("#{now_month+1}", 2, "0") + _ -> pad(now_month+1) end end - def parse_month(_wg_day, _now_day, now_month), do: String.pad_leading("#{now_month}", 2, "0") + def parse_month(_wg_day, _now_day, now_month), do: pad(now_month) defp parse_datetime( <<_wg_weekday::bytes-size(2)>> <> diff --git a/lib/waves_web/controllers/page_controller.ex b/lib/waves_web/controllers/page_controller.ex index 28a1571..bbe5d96 100644 --- a/lib/waves_web/controllers/page_controller.ex +++ b/lib/waves_web/controllers/page_controller.ex @@ -5,6 +5,8 @@ defmodule WavesWeb.PageController do alias Waves.{Repo, SpotForecast} + defp pad(number), do: String.pad_leading("#{number}", 2, "0") + def index(conn, _params) do forecast = SpotForecast @@ -52,7 +54,7 @@ defmodule WavesWeb.PageController do |> assign(:wave_height, wave_height) |> assign(:wind_data, wind_data) |> assign(:spot_name, spot_name) - |> assign(:forecast_datetime, "#{d.year}-#{d.month}-#{d.day} #{d.hour}:#{d.minute}") + |> assign(:forecast_datetime, "#{d.year}-#{pad(d.month)}-#{pad(d.day)} #{pad(d.hour)}:#{pad(d.minute)}") |> render("index.html") end end \ No newline at end of file From b3f5fc90c6f03a67f5765e56948ae9c102ade420 Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Tue, 21 May 2019 23:47:27 -0300 Subject: [PATCH 35/37] Formatting chart info --- assets/css/app.css | 9 +++++++-- lib/waves_web/controllers/page_controller.ex | 3 ++- lib/waves_web/templates/page/index.html.eex | 4 ++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/assets/css/app.css b/assets/css/app.css index c453f30..c2140f7 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -73,19 +73,24 @@ select { /* Chart section */ .charts { - color: #bababa; + color: #ccc; text-align: center; border-bottom: 1px solid #e3e3e3; background: #eee; border-radius: 6px; padding: 40px 40px 10px 40px; font-weight: normal; - font-size: 100%; + font-size: 14px; } .charts p { margin-top: 10px; margin-bottom: 0; } +.charts .name { + color: #babaca; + font-size: 18px; + font-weight: 600; +} /* Logo */ .surf-api-logo { diff --git a/lib/waves_web/controllers/page_controller.ex b/lib/waves_web/controllers/page_controller.ex index bbe5d96..6025ca4 100644 --- a/lib/waves_web/controllers/page_controller.ex +++ b/lib/waves_web/controllers/page_controller.ex @@ -54,7 +54,8 @@ defmodule WavesWeb.PageController do |> assign(:wave_height, wave_height) |> assign(:wind_data, wind_data) |> assign(:spot_name, spot_name) - |> assign(:forecast_datetime, "#{d.year}-#{pad(d.month)}-#{pad(d.day)} #{pad(d.hour)}:#{pad(d.minute)}") + |> assign(:forecast_date, "#{d.year}-#{pad(d.month)}-#{pad(d.day)}") + |> assign(:forecast_time, "#{pad(d.hour)}:#{pad(d.minute)}") |> render("index.html") end end \ No newline at end of file diff --git a/lib/waves_web/templates/page/index.html.eex b/lib/waves_web/templates/page/index.html.eex index 717c386..ca612b2 100644 --- a/lib/waves_web/templates/page/index.html.eex +++ b/lib/waves_web/templates/page/index.html.eex @@ -1,6 +1,6 @@
<%= raw Chartkick.line_chart Poison.encode!(@wave_height) %> <%= raw Chartkick.line_chart Poison.encode!(@wind_data) %> -

<%= @spot_name %>

-

<%= @forecast_datetime %>

+

<%= @spot_name %>

+

<%= @forecast_date %>   <%= @forecast_time %>   UTC

From 81232a6d2ea09112a6665cb9799b1b388fcea1ea Mon Sep 17 00:00:00 2001 From: Frederico Jordan Date: Tue, 21 May 2019 23:47:56 -0300 Subject: [PATCH 36/37] Rebuilding static --- priv/static/cache_manifest.json | 2 +- ...pp-4506d74389be3d8d4a33dc468908c409.css.gz | Bin 2559 -> 0 bytes ... app-a87782ca21ee7f9938fd998b681459e2.css} | 2 +- ...pp-a87782ca21ee7f9938fd998b681459e2.css.gz | Bin 0 -> 2579 bytes priv/static/css/app.css | 2 +- priv/static/css/app.css.gz | Bin 2559 -> 2579 bytes 6 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 priv/static/css/app-4506d74389be3d8d4a33dc468908c409.css.gz rename priv/static/css/{app-4506d74389be3d8d4a33dc468908c409.css => app-a87782ca21ee7f9938fd998b681459e2.css} (90%) create mode 100644 priv/static/css/app-a87782ca21ee7f9938fd998b681459e2.css.gz diff --git a/priv/static/cache_manifest.json b/priv/static/cache_manifest.json index 0d6a106..7fd10a6 100644 --- a/priv/static/cache_manifest.json +++ b/priv/static/cache_manifest.json @@ -1 +1 @@ -{"digests":{"css/app-4506d74389be3d8d4a33dc468908c409.css":{"digest":"4506d74389be3d8d4a33dc468908c409","logical_path":"css/app.css","mtime":63725686487,"size":10002},"favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico":{"digest":"e65bbcae05ea941ac84beeb4bbe50a16","logical_path":"favicon.ico","mtime":63725686487,"size":1150},"images/github-438c17272c5f0e9f4a6da34d3e4bc5bd.png":{"digest":"438c17272c5f0e9f4a6da34d3e4bc5bd","logical_path":"images/github.png","mtime":63725686487,"size":2625},"images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png":{"digest":"9e5b043f43f98c444b02356a213d1db1","logical_path":"images/surf-api-logo.png","mtime":63725686487,"size":4106},"js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js":{"digest":"1cba1dc6de51af8cc041a2ff9f14ca2a","logical_path":"js/app.js","mtime":63725686487,"size":12308},"robots-067185ba27a5d9139b10a759679045bf.txt":{"digest":"067185ba27a5d9139b10a759679045bf","logical_path":"robots.txt","mtime":63725686487,"size":202}},"latest":{"css/app.css":"css/app-4506d74389be3d8d4a33dc468908c409.css","favicon.ico":"favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico","images/github.png":"images/github-438c17272c5f0e9f4a6da34d3e4bc5bd.png","images/surf-api-logo.png":"images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png","js/app.js":"js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js","robots.txt":"robots-067185ba27a5d9139b10a759679045bf.txt"},"version":1} \ No newline at end of file +{"digests":{"css/app-a87782ca21ee7f9938fd998b681459e2.css":{"digest":"a87782ca21ee7f9938fd998b681459e2","logical_path":"css/app.css","mtime":63725712416,"size":10058},"favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico":{"digest":"e65bbcae05ea941ac84beeb4bbe50a16","logical_path":"favicon.ico","mtime":63725712416,"size":1150},"images/github-438c17272c5f0e9f4a6da34d3e4bc5bd.png":{"digest":"438c17272c5f0e9f4a6da34d3e4bc5bd","logical_path":"images/github.png","mtime":63725712416,"size":2625},"images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png":{"digest":"9e5b043f43f98c444b02356a213d1db1","logical_path":"images/surf-api-logo.png","mtime":63725712416,"size":4106},"js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js":{"digest":"1cba1dc6de51af8cc041a2ff9f14ca2a","logical_path":"js/app.js","mtime":63725712416,"size":12308},"robots-067185ba27a5d9139b10a759679045bf.txt":{"digest":"067185ba27a5d9139b10a759679045bf","logical_path":"robots.txt","mtime":63725712416,"size":202}},"latest":{"css/app.css":"css/app-a87782ca21ee7f9938fd998b681459e2.css","favicon.ico":"favicon-e65bbcae05ea941ac84beeb4bbe50a16.ico","images/github.png":"images/github-438c17272c5f0e9f4a6da34d3e4bc5bd.png","images/surf-api-logo.png":"images/surf-api-logo-9e5b043f43f98c444b02356a213d1db1.png","js/app.js":"js/app-1cba1dc6de51af8cc041a2ff9f14ca2a.js","robots.txt":"robots-067185ba27a5d9139b10a759679045bf.txt"},"version":1} \ No newline at end of file diff --git a/priv/static/css/app-4506d74389be3d8d4a33dc468908c409.css.gz b/priv/static/css/app-4506d74389be3d8d4a33dc468908c409.css.gz deleted file mode 100644 index b365ae8a3e21ec66dc0b486962769aaf63aa67dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2559 zcmV|vViwFP!000006U7=`vzt2ZuQ2I!Zo3yKfj|<{)7jmpec1g4clzLf3EmRS zf;q{#4F7%oMXHZf8-DE1IDP99T;MwX;CY@H&%hNGZ}C51@d^n_fc>`` zfx>P;**FcIAye3F-3VUA`wgN?PU3*FDNqTWT)b0^{#@YX$A4N(n7mw=0%jz3gBo6~ z1{Wx`KBQarIbA`0L8Tb?hPRq?@=g^D`QArJZN>Ni4;Eh_7YmqNcQ#hMJ)A*ihTq-+o z4{Wr6gtBs)3M5QjfR3XEvU z;Y-ub35EeqVX%DUMae!I%&P+x`{I@`)sH^-2Q@J`7cl*9&j9lUng_*V%wtmSaj=sv zmck6Q1vz2n7vwE=!?{Shr4+bovl;pV_S$L|ExN{Ky6hz@uko0vXVLOgF3)zq4jgnV ze;nxtwi!Ct!wQC2j|(PN(SGwN%} zcb;-HD|gY0jQrM3u@+Lq+k$ip>^w`7>Tm?emTp@DpP8B$U$cifgmCuH0>~6;(MC^#hnde4i~L03c*@^kruPSpr`%1J z`-y;IlKB=D?o*oHJ9!63~LQkfu_093H0omnkLCL5P`+y{jOJ!ZA}pxSipqXY>@6o(9!bk z`~%T~i`GwoZc?s&T3$I<{O1ffeSgRP*A*hmYm>w9RzVI@e3QIqErpZ0Y;+@TC2k{> zl04pe-p9F?=k6|bJs)^z+^|K2-sb~M`zGk!RMRm_NT{%fd>O1FUOQ7huM~2ERNWku z@2B5VKtPPH-~zuiub1EN*W%QY>|lSTZx($ko0m;aNELtia=YE!Tj1jQ^2PT&kKu1D zq2-s&cDJ!!5xo5!-(NPKa4Sn12=Uq?6C z@BO_MxRDMzodfxu{W=%99kujXfqYy3=6w}7g(m99<#J=n5j9V_o4*9 z48bC$XUgDeVgrpWE-hLmIZS@gZK<~a=pM%3AF_ykQSWj=9q~39RGUdsyxl0C2zZC1ehiG4XKs;T{1ABb*@_FAgDo{`w>i~V<~8_9*3VBcIp-;IlXV6o$;e-k);liEwSWXih^-Mn)W=ahjwLnYotm%1oM$Jx@JTR0$4$d;_M$XpjR4&_fY+uLrpJ0bN zcDRZi1oqnKPU95>Zb1L7G7NQL!*yY!Xl?pvuknf^H=_Sm8SeGf@7Gs<(1ks$3wzYD zj|B<{U}$RL2cyBf3b$2@?-a3jn%KJq zu|tI-)F_txBvL3MjUrm2FuN4>rIC?zB$eBmZ|xOr?=@{N`PV@a`=E)vNtJAwR7Lj13TZ@d1&WRH@lqGF9#iQJ2=sv0vh-#?z9tmu71ty_qng& z1V)^&&jSU?m-m$#Qqbo+4aYa!X*x8iH;_{PVW%eKru$Gz8_sDdY1GYfc^zlhqwA&9 z6SUst?V1eT#npT#`gBy2`6;37XdH_-*5=XZ;4ay_S%CrJp3w0};Xe}0tuEpGS=axf zZvA)YHuweI?*4b(hR<~?{B^?6o0?^3ay^%68c<-}Jvv@8wH}X2{mNVP!*GMd(E$q@ z!e615Zf6)XgKCw~&{FcMyO=>KVg$a$d?X+0tLlCl&Mo@*xO(+fYMb@~Eh`VRfJGX*R!X4Q;9LBD@*;#)++Cd$c*wQ`pBt!4D&4^90HQQF8(3vYc7VZzRR-WWNd{Ia zC@4 z!Wfs&(hd|(IMYwl)|mq;GR$IAnqANsmlCWL&Sj4nLE%^{%6>XbrQ>qV#R zv!W}&K890G^0gX~G8$R{r*||yrrVM?r=2q-Hweqg6qc3(i2di!aFnB8ZqWgy1g}si3civ#Saium*33N+74Y^6#?iC3}asIip+eX;dzd3o|w-#aV<`J1`TTB V(BF@~OT@E008Wt0`&j@ diff --git a/priv/static/css/app-4506d74389be3d8d4a33dc468908c409.css b/priv/static/css/app-a87782ca21ee7f9938fd998b681459e2.css similarity index 90% rename from priv/static/css/app-4506d74389be3d8d4a33dc468908c409.css rename to priv/static/css/app-a87782ca21ee7f9938fd998b681459e2.css index 096fd58..44dda52 100644 --- a/priv/static/css/app-4506d74389be3d8d4a33dc468908c409.css +++ b/priv/static/css/app-a87782ca21ee7f9938fd998b681459e2.css @@ -1 +1 @@ -*,:after,:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000;font-family:Helvetica,Arial,sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote :last-child{margin-bottom:0}.button,button,input[type=button],input[type=reset],input[type=submit]{background-color:#0069d9;border:.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type=button][disabled]:focus,input[type=button][disabled]:hover,input[type=reset][disabled]:focus,input[type=reset][disabled]:hover,input[type=submit][disabled]:focus,input[type=submit][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type=button].button-outline,input[type=reset].button-outline,input[type=submit].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type=button].button-outline:focus,input[type=button].button-outline:hover,input[type=reset].button-outline:focus,input[type=reset].button-outline:hover,input[type=submit].button-outline:focus,input[type=submit].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type=button].button-outline[disabled]:focus,input[type=button].button-outline[disabled]:hover,input[type=reset].button-outline[disabled]:focus,input[type=reset].button-outline[disabled]:hover,input[type=submit].button-outline[disabled]:focus,input[type=submit].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type=button].button-clear,input[type=reset].button-clear,input[type=submit].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type=button].button-clear:focus,input[type=button].button-clear:hover,input[type=reset].button-clear:focus,input[type=reset].button-clear:hover,input[type=submit].button-clear:focus,input[type=submit].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type=button].button-clear[disabled]:focus,input[type=button].button-clear[disabled]:hover,input[type=reset].button-clear[disabled]:focus,input[type=reset].button-clear[disabled]:hover,input[type=submit].button-clear[disabled]:focus,input[type=submit].button-clear[disabled]:hover{color:#0069d9}code{border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}code,pre{background:#f4f5f6}pre{border-left:.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:.1rem solid #f4f5f6;margin:3rem 0}input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1rem;width:100%}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') 100% no-repeat;padding-right:3rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type=checkbox],input[type=radio]{display:inline}.label-inline{display:inline-block;font-weight:400;margin-left:.5rem}.row{display:flex;flex-direction:column;width:100%}.row,.row.row-no-padding,.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width:40rem){.row{flex-direction:row;margin-left:-1rem;width:calc(100% + 2rem)}.row .column{margin-bottom:inherit;padding:0 1rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:700}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:" ";display:table}.float-left{float:left}.float-right{float:right}h1{font-size:3.6rem;line-height:1.25}h2{font-size:2.8rem;line-height:1.3}h3{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h4{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h5{font-size:1.6rem;line-height:1.4}h5,h6{letter-spacing:0}h6{font-size:1.4rem;line-height:1.2}.container{margin:0 auto;max-width:80rem;padding:0 2rem;position:relative;width:100%}.footer{display:flex;margin:30px auto;padding:0}.footer img{height:40px;width:40px;opacity:.2}.footer img:hover{opacity:.6}.center{justify-content:center}select{width:auto}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert p{margin-bottom:0}.alert:empty{display:none}.help-block{color:#a94442;display:block;margin:-1rem 0 2rem}.charts{color:#bababa;text-align:center;border-bottom:1px solid #e3e3e3;background:#eee;border-radius:6px;padding:40px 40px 10px;font-weight:400;font-size:100%}.charts p{margin-top:10px;margin-bottom:0}.surf-api-logo{min-width:300px;margin:1rem;display:block}.surf-api-logo img{width:auto;display:block}header{width:100%;background:#fdfdfd;border-bottom:1px solid #eaeaea;margin-bottom:2rem}header section{align-items:center;display:flex;flex-direction:column;justify-content:space-between}header section :first-child{order:2}header section :last-child{order:1}header nav li,header nav ul{margin:0;padding:0;display:block;text-align:right;white-space:nowrap}header nav ul{margin:0 1rem 1rem}header nav a{display:block}@media (min-width:40.0rem){header section{flex-direction:row}header nav ul{margin:1rem}.surf-api-logo{flex-basis:527px;margin:2rem 1rem}} \ No newline at end of file +*,:after,:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000;font-family:Helvetica,Arial,sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote :last-child{margin-bottom:0}.button,button,input[type=button],input[type=reset],input[type=submit]{background-color:#0069d9;border:.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type=button][disabled]:focus,input[type=button][disabled]:hover,input[type=reset][disabled]:focus,input[type=reset][disabled]:hover,input[type=submit][disabled]:focus,input[type=submit][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type=button].button-outline,input[type=reset].button-outline,input[type=submit].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type=button].button-outline:focus,input[type=button].button-outline:hover,input[type=reset].button-outline:focus,input[type=reset].button-outline:hover,input[type=submit].button-outline:focus,input[type=submit].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type=button].button-outline[disabled]:focus,input[type=button].button-outline[disabled]:hover,input[type=reset].button-outline[disabled]:focus,input[type=reset].button-outline[disabled]:hover,input[type=submit].button-outline[disabled]:focus,input[type=submit].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type=button].button-clear,input[type=reset].button-clear,input[type=submit].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type=button].button-clear:focus,input[type=button].button-clear:hover,input[type=reset].button-clear:focus,input[type=reset].button-clear:hover,input[type=submit].button-clear:focus,input[type=submit].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type=button].button-clear[disabled]:focus,input[type=button].button-clear[disabled]:hover,input[type=reset].button-clear[disabled]:focus,input[type=reset].button-clear[disabled]:hover,input[type=submit].button-clear[disabled]:focus,input[type=submit].button-clear[disabled]:hover{color:#0069d9}code{border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}code,pre{background:#f4f5f6}pre{border-left:.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:.1rem solid #f4f5f6;margin:3rem 0}input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1rem;width:100%}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') 100% no-repeat;padding-right:3rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type=checkbox],input[type=radio]{display:inline}.label-inline{display:inline-block;font-weight:400;margin-left:.5rem}.row{display:flex;flex-direction:column;width:100%}.row,.row.row-no-padding,.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width:40rem){.row{flex-direction:row;margin-left:-1rem;width:calc(100% + 2rem)}.row .column{margin-bottom:inherit;padding:0 1rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:700}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:" ";display:table}.float-left{float:left}.float-right{float:right}h1{font-size:3.6rem;line-height:1.25}h2{font-size:2.8rem;line-height:1.3}h3{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h4{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h5{font-size:1.6rem;line-height:1.4}h5,h6{letter-spacing:0}h6{font-size:1.4rem;line-height:1.2}.container{margin:0 auto;max-width:80rem;padding:0 2rem;position:relative;width:100%}.footer{display:flex;margin:30px auto;padding:0}.footer img{height:40px;width:40px;opacity:.2}.footer img:hover{opacity:.6}.center{justify-content:center}select{width:auto}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert p{margin-bottom:0}.alert:empty{display:none}.help-block{color:#a94442;display:block;margin:-1rem 0 2rem}.charts{color:#ccc;text-align:center;border-bottom:1px solid #e3e3e3;background:#eee;border-radius:6px;padding:40px 40px 10px;font-weight:400;font-size:14px}.charts p{margin-top:10px;margin-bottom:0}.charts .name{color:#babaca;font-size:18px;font-weight:600}.surf-api-logo{min-width:300px;margin:1rem;display:block}.surf-api-logo img{width:auto;display:block}header{width:100%;background:#fdfdfd;border-bottom:1px solid #eaeaea;margin-bottom:2rem}header section{align-items:center;display:flex;flex-direction:column;justify-content:space-between}header section :first-child{order:2}header section :last-child{order:1}header nav li,header nav ul{margin:0;padding:0;display:block;text-align:right;white-space:nowrap}header nav ul{margin:0 1rem 1rem}header nav a{display:block}@media (min-width:40.0rem){header section{flex-direction:row}header nav ul{margin:1rem}.surf-api-logo{flex-basis:527px;margin:2rem 1rem}} \ No newline at end of file diff --git a/priv/static/css/app-a87782ca21ee7f9938fd998b681459e2.css.gz b/priv/static/css/app-a87782ca21ee7f9938fd998b681459e2.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..2cc18e598b83e477766064dfc924dc50c97c6f72 GIT binary patch literal 2579 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 literal 0 HcmV?d00001 diff --git a/priv/static/css/app.css b/priv/static/css/app.css index 096fd58..44dda52 100644 --- a/priv/static/css/app.css +++ b/priv/static/css/app.css @@ -1 +1 @@ -*,:after,:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000;font-family:Helvetica,Arial,sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote :last-child{margin-bottom:0}.button,button,input[type=button],input[type=reset],input[type=submit]{background-color:#0069d9;border:.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type=button][disabled]:focus,input[type=button][disabled]:hover,input[type=reset][disabled]:focus,input[type=reset][disabled]:hover,input[type=submit][disabled]:focus,input[type=submit][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type=button].button-outline,input[type=reset].button-outline,input[type=submit].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type=button].button-outline:focus,input[type=button].button-outline:hover,input[type=reset].button-outline:focus,input[type=reset].button-outline:hover,input[type=submit].button-outline:focus,input[type=submit].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type=button].button-outline[disabled]:focus,input[type=button].button-outline[disabled]:hover,input[type=reset].button-outline[disabled]:focus,input[type=reset].button-outline[disabled]:hover,input[type=submit].button-outline[disabled]:focus,input[type=submit].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type=button].button-clear,input[type=reset].button-clear,input[type=submit].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type=button].button-clear:focus,input[type=button].button-clear:hover,input[type=reset].button-clear:focus,input[type=reset].button-clear:hover,input[type=submit].button-clear:focus,input[type=submit].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type=button].button-clear[disabled]:focus,input[type=button].button-clear[disabled]:hover,input[type=reset].button-clear[disabled]:focus,input[type=reset].button-clear[disabled]:hover,input[type=submit].button-clear[disabled]:focus,input[type=submit].button-clear[disabled]:hover{color:#0069d9}code{border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}code,pre{background:#f4f5f6}pre{border-left:.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:.1rem solid #f4f5f6;margin:3rem 0}input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1rem;width:100%}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') 100% no-repeat;padding-right:3rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type=checkbox],input[type=radio]{display:inline}.label-inline{display:inline-block;font-weight:400;margin-left:.5rem}.row{display:flex;flex-direction:column;width:100%}.row,.row.row-no-padding,.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width:40rem){.row{flex-direction:row;margin-left:-1rem;width:calc(100% + 2rem)}.row .column{margin-bottom:inherit;padding:0 1rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:700}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:" ";display:table}.float-left{float:left}.float-right{float:right}h1{font-size:3.6rem;line-height:1.25}h2{font-size:2.8rem;line-height:1.3}h3{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h4{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h5{font-size:1.6rem;line-height:1.4}h5,h6{letter-spacing:0}h6{font-size:1.4rem;line-height:1.2}.container{margin:0 auto;max-width:80rem;padding:0 2rem;position:relative;width:100%}.footer{display:flex;margin:30px auto;padding:0}.footer img{height:40px;width:40px;opacity:.2}.footer img:hover{opacity:.6}.center{justify-content:center}select{width:auto}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert p{margin-bottom:0}.alert:empty{display:none}.help-block{color:#a94442;display:block;margin:-1rem 0 2rem}.charts{color:#bababa;text-align:center;border-bottom:1px solid #e3e3e3;background:#eee;border-radius:6px;padding:40px 40px 10px;font-weight:400;font-size:100%}.charts p{margin-top:10px;margin-bottom:0}.surf-api-logo{min-width:300px;margin:1rem;display:block}.surf-api-logo img{width:auto;display:block}header{width:100%;background:#fdfdfd;border-bottom:1px solid #eaeaea;margin-bottom:2rem}header section{align-items:center;display:flex;flex-direction:column;justify-content:space-between}header section :first-child{order:2}header section :last-child{order:1}header nav li,header nav ul{margin:0;padding:0;display:block;text-align:right;white-space:nowrap}header nav ul{margin:0 1rem 1rem}header nav a{display:block}@media (min-width:40.0rem){header section{flex-direction:row}header nav ul{margin:1rem}.surf-api-logo{flex-basis:527px;margin:2rem 1rem}} \ No newline at end of file +*,:after,:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000;font-family:Helvetica,Arial,sans-serif;font-size:1.6em;font-weight:300;line-height:1.6}blockquote{border-left:.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote :last-child{margin-bottom:0}.button,button,input[type=button],input[type=reset],input[type=submit]{background-color:#0069d9;border:.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type=button][disabled]:focus,input[type=button][disabled]:hover,input[type=reset][disabled]:focus,input[type=reset][disabled]:hover,input[type=submit][disabled]:focus,input[type=submit][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type=button].button-outline,input[type=reset].button-outline,input[type=submit].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type=button].button-outline:focus,input[type=button].button-outline:hover,input[type=reset].button-outline:focus,input[type=reset].button-outline:hover,input[type=submit].button-outline:focus,input[type=submit].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type=button].button-outline[disabled]:focus,input[type=button].button-outline[disabled]:hover,input[type=reset].button-outline[disabled]:focus,input[type=reset].button-outline[disabled]:hover,input[type=submit].button-outline[disabled]:focus,input[type=submit].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type=button].button-clear,input[type=reset].button-clear,input[type=submit].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type=button].button-clear:focus,input[type=button].button-clear:hover,input[type=reset].button-clear:focus,input[type=reset].button-clear:hover,input[type=submit].button-clear:focus,input[type=submit].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type=button].button-clear[disabled]:focus,input[type=button].button-clear[disabled]:hover,input[type=reset].button-clear[disabled]:focus,input[type=reset].button-clear[disabled]:hover,input[type=submit].button-clear[disabled]:focus,input[type=submit].button-clear[disabled]:hover{color:#0069d9}code{border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}code,pre{background:#f4f5f6}pre{border-left:.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:.1rem solid #f4f5f6;margin:3rem 0}input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1rem;width:100%}input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8,') 100% no-repeat;padding-right:3rem}select:focus{background-image:url('data:image/svg+xml;utf8,')}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type=checkbox],input[type=radio]{display:inline}.label-inline{display:inline-block;font-weight:400;margin-left:.5rem}.row{display:flex;flex-direction:column;width:100%}.row,.row.row-no-padding,.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{-ms-grid-row-align:center;align-self:center}@media (min-width:40rem){.row{flex-direction:row;margin-left:-1rem;width:calc(100% + 2rem)}.row .column{margin-bottom:inherit;padding:0 1rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;width:100%}td,th{border-bottom:.1rem solid #e1e1e1;padding:1.2rem 1.5rem;text-align:left}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}b,strong{font-weight:700}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:" ";display:table}.float-left{float:left}.float-right{float:right}h1{font-size:3.6rem;line-height:1.25}h2{font-size:2.8rem;line-height:1.3}h3{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h4{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h5{font-size:1.6rem;line-height:1.4}h5,h6{letter-spacing:0}h6{font-size:1.4rem;line-height:1.2}.container{margin:0 auto;max-width:80rem;padding:0 2rem;position:relative;width:100%}.footer{display:flex;margin:30px auto;padding:0}.footer img{height:40px;width:40px;opacity:.2}.footer img:hover{opacity:.6}.center{justify-content:center}select{width:auto}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert p{margin-bottom:0}.alert:empty{display:none}.help-block{color:#a94442;display:block;margin:-1rem 0 2rem}.charts{color:#ccc;text-align:center;border-bottom:1px solid #e3e3e3;background:#eee;border-radius:6px;padding:40px 40px 10px;font-weight:400;font-size:14px}.charts p{margin-top:10px;margin-bottom:0}.charts .name{color:#babaca;font-size:18px;font-weight:600}.surf-api-logo{min-width:300px;margin:1rem;display:block}.surf-api-logo img{width:auto;display:block}header{width:100%;background:#fdfdfd;border-bottom:1px solid #eaeaea;margin-bottom:2rem}header section{align-items:center;display:flex;flex-direction:column;justify-content:space-between}header section :first-child{order:2}header section :last-child{order:1}header nav li,header nav ul{margin:0;padding:0;display:block;text-align:right;white-space:nowrap}header nav ul{margin:0 1rem 1rem}header nav a{display:block}@media (min-width:40.0rem){header section{flex-direction:row}header nav ul{margin:1rem}.surf-api-logo{flex-basis:527px;margin:2rem 1rem}} \ No newline at end of file diff --git a/priv/static/css/app.css.gz b/priv/static/css/app.css.gz index b365ae8a3e21ec66dc0b486962769aaf63aa67dd..2cc18e598b83e477766064dfc924dc50c97c6f72 100644 GIT binary patch literal 2579 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 delta 2524 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 Date: Wed, 22 May 2019 00:06:15 -0300 Subject: [PATCH 37/37] Refactoring PageController --- lib/waves_web/controllers/page_controller.ex | 72 +++++++++++--------- 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/lib/waves_web/controllers/page_controller.ex b/lib/waves_web/controllers/page_controller.ex index 6025ca4..7bb7307 100644 --- a/lib/waves_web/controllers/page_controller.ex +++ b/lib/waves_web/controllers/page_controller.ex @@ -7,55 +7,61 @@ defmodule WavesWeb.PageController do defp pad(number), do: String.pad_leading("#{number}", 2, "0") - def index(conn, _params) do + def index(conn, params) do forecast = SpotForecast |> last |> Repo.one |> Repo.preload(spot: :forecasts) + index(conn, params, forecast) + end + + defp index(conn, _params, nil), do: empty_index(conn) + + defp index(conn, _params, forecast) do wave_height = - case forecast do - nil -> [] - _ -> - [ - %{ - name: "Wave Height", - data: Map.new(List.zip([forecast.datetimes, forecast.wave_height])) - }, - ] - end + [ + %{ + name: "Wave Height", + data: Map.new(List.zip([forecast.datetimes, forecast.wave_height])) + }, + ] wind_data = - case forecast do - nil -> [] - _ -> - [ - %{ - name: "Wind Speed", - data: Map.new(List.zip([forecast.datetimes, forecast.wind_speed])) - }, - %{ - name: "Wind Gusts", - data: Map.new(List.zip([forecast.datetimes, forecast.wind_gust])) - }, - ] - end - - spot_name = - case forecast do - nil -> "Error" - _ -> forecast.spot.name - end + [ + %{ + name: "Wind Speed", + data: Map.new(List.zip([forecast.datetimes, forecast.wind_speed])) + }, + %{ + name: "Wind Gusts", + data: Map.new(List.zip([forecast.datetimes, forecast.wind_gust])) + }, + ] + + spot_name = forecast.spot.name d = forecast.inserted_at + forecast_date = "#{d.year}-#{pad(d.month)}-#{pad(d.day)}" + forecast_time = "#{pad(d.hour)}:#{pad(d.minute)}" conn |> assign(:wave_height, wave_height) |> assign(:wind_data, wind_data) |> assign(:spot_name, spot_name) - |> assign(:forecast_date, "#{d.year}-#{pad(d.month)}-#{pad(d.day)}") - |> assign(:forecast_time, "#{pad(d.hour)}:#{pad(d.minute)}") + |> assign(:forecast_date, forecast_date) + |> assign(:forecast_time, forecast_time) + |> render("index.html") + end + + def empty_index(conn) do + conn + |> assign(:wave_height, []) + |> assign(:wind_data, []) + |> assign(:spot_name, "") + |> assign(:forecast_date, "") + |> assign(:forecast_time, "") |> render("index.html") end end \ No newline at end of file