From c3e6bb5f3e4b1723512488bde09e4bce725f923b Mon Sep 17 00:00:00 2001 From: Luna D Date: Wed, 4 Dec 2019 17:28:53 -0500 Subject: [PATCH 01/13] create staff links dummy --- .../templates/layout/_header.html.slime | 4 +- .../layout/_header_staff_links.html.slime | 67 +++++++++++++++++++ 2 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 lib/philomena_web/templates/layout/_header_staff_links.html.slime diff --git a/lib/philomena_web/templates/layout/_header.html.slime b/lib/philomena_web/templates/layout/_header.html.slime index 86846306..46626472 100644 --- a/lib/philomena_web/templates/layout/_header.html.slime +++ b/lib/philomena_web/templates/layout/_header.html.slime @@ -104,5 +104,5 @@ header.header nav.header.header--secondary .flex.flex--centered.flex--spaced-out.flex--wrap = render PhilomenaWeb.LayoutView, "_header_navigation.html", assigns - /- if current_user.try(:staff?) - include _header_staff_links.html \ No newline at end of file + = if @current_user.role != "user" do + = render PhilomenaWeb.LayoutView, "_header_staff_links.html", assigns diff --git a/lib/philomena_web/templates/layout/_header_staff_links.html.slime b/lib/philomena_web/templates/layout/_header_staff_links.html.slime new file mode 100644 index 00000000..9e3d16a5 --- /dev/null +++ b/lib/philomena_web/templates/layout/_header_staff_links.html.slime @@ -0,0 +1,67 @@ +/ Dummy view for the admin bar +.flex.flex--centered.header--secondary__admin-links.stretched-mobile-links.js-staff-action + .dropdown.hide-mobile + a.header__link title="Admin" + =<> "A" + i.fa.fa-caret-down + .dropdown__content.js-burger-links + = link to: "/admin/flipper", class: "header__link" do + i.fa.fa-fw.fa-toggle-on + | Site Settings + = link to: "/admin/site_notices", class: "header__link" do + i.fa.fa-fw.fa-info-circle + | Site Notices + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-tags + | Tags + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-users + | Users + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-comments + | Comments + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-paragraph + | Forums + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-shopping-bag + | Advertisements + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-trophy + | Badges + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-sticky-note + | Pages + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-sticky-note + | Mod Notes + = link to: "#", class: "header__link", title: "Duplicates" do + =<> "D" + span.header__counter__admin + | 0 + = link to: "#", class: "header__link", title: "Reports" do + =<> "R" + span.header__counter__admin + | 0 + = link to: "#", class: "header__link", title: "User Links" do + =<> "L" + span.header__counter__admin + | 0 + = link to: "#", class: "header__link", title: "DNP Requests" do + =<> "S" + span.header__counter__admin + | 0 + .dropdown.hide-mobile + a.header__link title="Bans" + =<> "B" + i.fa.fa-caret-down + .dropdown__content.dropdown__content-right.js-burger-links + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-user + | User Bans + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-internet-explorer + | IP Bans + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-desktop + | FP Bans From accc9b53042d2ef13e251f761068b8c71babe405 Mon Sep 17 00:00:00 2001 From: Luna D Date: Wed, 4 Dec 2019 18:15:54 -0500 Subject: [PATCH 02/13] actual working counters i think --- lib/philomena/dnp_entries.ex | 6 +++ lib/philomena/duplicate_reports.ex | 6 +++ lib/philomena/reports.ex | 6 +++ lib/philomena/user_links.ex | 6 +++ .../plugs/admin_counters_plug.ex | 48 +++++++++++++++++++ lib/philomena_web/router.ex | 1 + .../layout/_header_staff_links.html.slime | 8 ++-- 7 files changed, 77 insertions(+), 4 deletions(-) create mode 100644 lib/philomena_web/plugs/admin_counters_plug.ex diff --git a/lib/philomena/dnp_entries.ex b/lib/philomena/dnp_entries.ex index 3bbe940e..95c9d45b 100644 --- a/lib/philomena/dnp_entries.ex +++ b/lib/philomena/dnp_entries.ex @@ -101,4 +101,10 @@ defmodule Philomena.DnpEntries do def change_dnp_entry(%DnpEntry{} = dnp_entry) do DnpEntry.changeset(dnp_entry, %{}) end + + def count_dnp_entries() do + DnpEntry + |> where([ul], ul.aasm_state in [ "requested", "claimed", "acknowledged" ]) + |> Repo.aggregate(:count, :id) + end end diff --git a/lib/philomena/duplicate_reports.ex b/lib/philomena/duplicate_reports.ex index ec3a05e5..0a2f4bd1 100644 --- a/lib/philomena/duplicate_reports.ex +++ b/lib/philomena/duplicate_reports.ex @@ -114,4 +114,10 @@ defmodule Philomena.DuplicateReports do def change_duplicate_report(%DuplicateReport{} = duplicate_report) do DuplicateReport.changeset(duplicate_report, %{}) end + + def count_duplicate_reports() do + DuplicateReport + |> where([dr], dr.state == "open") + |> Repo.aggregate(:count, :id) + end end diff --git a/lib/philomena/reports.ex b/lib/philomena/reports.ex index 43ae1a2f..070b5487 100644 --- a/lib/philomena/reports.ex +++ b/lib/philomena/reports.ex @@ -116,4 +116,10 @@ defmodule Philomena.Reports do report end + + def count_reports() do + Report + |> where(open: true) + |> Repo.aggregate(:count, :id) + end end diff --git a/lib/philomena/user_links.ex b/lib/philomena/user_links.ex index 48e21856..98fd23ac 100644 --- a/lib/philomena/user_links.ex +++ b/lib/philomena/user_links.ex @@ -104,4 +104,10 @@ defmodule Philomena.UserLinks do def change_user_link(%UserLink{} = user_link) do UserLink.changeset(user_link, %{}) end + + def count_user_links() do + UserLink + |> where([ul], ul.aasm_state == "unverified") + |> Repo.aggregate(:count, :id) + end end diff --git a/lib/philomena_web/plugs/admin_counters_plug.ex b/lib/philomena_web/plugs/admin_counters_plug.ex new file mode 100644 index 00000000..ec4c2234 --- /dev/null +++ b/lib/philomena_web/plugs/admin_counters_plug.ex @@ -0,0 +1,48 @@ +defmodule PhilomenaWeb.AdminCountersPlug do + @moduledoc """ + This plug stores the counts used by the admin bar. + ## Example + plug PhilomenaWeb.AdminCountersPlug + """ + + alias Plug.Conn + alias Philomena.DuplicateReports + alias Philomena.Reports + alias Philomena.UserLinks + alias Philomena.DnpEntries + + import Plug.Conn, only: [assign: 3] + + @doc false + @spec init(any()) :: any() + def init(opts), do: opts + + @doc false + @spec call(Plug.Conn.t()) :: Plug.Conn.t() + def call(conn), do: call(conn, nil) + + @doc false + @spec call(Plug.Conn.t(), any()) :: Plug.Conn.t() + def call(conn, _opts) do + user = conn.assigns.current_user + + maybe_assign_admin_metrics(conn, staff?(user)) + end + + defp maybe_assign_admin_metrics(conn, false), do: conn + defp maybe_assign_admin_metrics(conn, true) do + duplicate_reports = DuplicateReports.count_duplicate_reports() + reports = Reports.count_reports() + user_links = UserLinks.count_user_links() + dnps = DnpEntries.count_dnp_entries() + + conn + |> assign(:duplicate_report_count, duplicate_reports) + |> assign(:report_count, reports) + |> assign(:user_link_count, user_links) + |> assign(:dnp_entry_count, dnps) + end + + defp staff?(%{role: role}) when role in ["assistant", "moderator", "admin"], do: true + defp staff?(_user), do: false +end diff --git a/lib/philomena_web/router.ex b/lib/philomena_web/router.ex index 4dd08e10..d9ff7a0e 100644 --- a/lib/philomena_web/router.ex +++ b/lib/philomena_web/router.ex @@ -19,6 +19,7 @@ defmodule PhilomenaWeb.Router do plug PhilomenaWeb.ForumListPlug plug PhilomenaWeb.FilterSelectPlug plug PhilomenaWeb.ChannelPlug + plug PhilomenaWeb.AdminCountersPlug end pipeline :api do diff --git a/lib/philomena_web/templates/layout/_header_staff_links.html.slime b/lib/philomena_web/templates/layout/_header_staff_links.html.slime index 9e3d16a5..9e1b8c4d 100644 --- a/lib/philomena_web/templates/layout/_header_staff_links.html.slime +++ b/lib/philomena_web/templates/layout/_header_staff_links.html.slime @@ -38,19 +38,19 @@ = link to: "#", class: "header__link", title: "Duplicates" do =<> "D" span.header__counter__admin - | 0 + = @duplicate_report_count = link to: "#", class: "header__link", title: "Reports" do =<> "R" span.header__counter__admin - | 0 + = @report_count = link to: "#", class: "header__link", title: "User Links" do =<> "L" span.header__counter__admin - | 0 + = @user_link_count = link to: "#", class: "header__link", title: "DNP Requests" do =<> "S" span.header__counter__admin - | 0 + = @dnp_entry_count .dropdown.hide-mobile a.header__link title="Bans" =<> "B" From 00373f44b23425847d9cd63bcf53b5d3276621e6 Mon Sep 17 00:00:00 2001 From: Luna D Date: Wed, 4 Dec 2019 18:21:12 -0500 Subject: [PATCH 03/13] simplify --- lib/philomena/dnp_entries.ex | 2 +- lib/philomena/duplicate_reports.ex | 2 +- lib/philomena/user_links.ex | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/philomena/dnp_entries.ex b/lib/philomena/dnp_entries.ex index 95c9d45b..db6ae483 100644 --- a/lib/philomena/dnp_entries.ex +++ b/lib/philomena/dnp_entries.ex @@ -104,7 +104,7 @@ defmodule Philomena.DnpEntries do def count_dnp_entries() do DnpEntry - |> where([ul], ul.aasm_state in [ "requested", "claimed", "acknowledged" ]) + |> where([dnp], dnp.aasm_state in [ "requested", "claimed", "acknowledged" ]) |> Repo.aggregate(:count, :id) end end diff --git a/lib/philomena/duplicate_reports.ex b/lib/philomena/duplicate_reports.ex index 0a2f4bd1..a3dd4398 100644 --- a/lib/philomena/duplicate_reports.ex +++ b/lib/philomena/duplicate_reports.ex @@ -117,7 +117,7 @@ defmodule Philomena.DuplicateReports do def count_duplicate_reports() do DuplicateReport - |> where([dr], dr.state == "open") + |> where(state: "open") |> Repo.aggregate(:count, :id) end end diff --git a/lib/philomena/user_links.ex b/lib/philomena/user_links.ex index 98fd23ac..1c154822 100644 --- a/lib/philomena/user_links.ex +++ b/lib/philomena/user_links.ex @@ -107,7 +107,7 @@ defmodule Philomena.UserLinks do def count_user_links() do UserLink - |> where([ul], ul.aasm_state == "unverified") + |> where(aasm_state: "unverified") |> Repo.aggregate(:count, :id) end end From 7c6a189dabceed34ef5bc64190fb46681913ef0e Mon Sep 17 00:00:00 2001 From: Luna D Date: Wed, 4 Dec 2019 18:23:03 -0500 Subject: [PATCH 04/13] no this isnt rails --- lib/philomena/dnp_entries.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/philomena/dnp_entries.ex b/lib/philomena/dnp_entries.ex index db6ae483..ed1440a1 100644 --- a/lib/philomena/dnp_entries.ex +++ b/lib/philomena/dnp_entries.ex @@ -104,7 +104,7 @@ defmodule Philomena.DnpEntries do def count_dnp_entries() do DnpEntry - |> where([dnp], dnp.aasm_state in [ "requested", "claimed", "acknowledged" ]) + |> where([dnp], dnp.aasm_state in ["requested", "claimed", "acknowledged"]) |> Repo.aggregate(:count, :id) end end From cb4c956079e2cb45db8639d234d9db08751b36cc Mon Sep 17 00:00:00 2001 From: Luna D Date: Thu, 5 Dec 2019 14:31:29 -0500 Subject: [PATCH 05/13] permission checks --- lib/philomena/dnp_entries.ex | 12 ++++--- lib/philomena/duplicate_reports.ex | 12 ++++--- lib/philomena/reports.ex | 12 ++++--- lib/philomena/user_links.ex | 12 ++++--- .../plugs/admin_counters_plug.ex | 14 ++++---- .../layout/_header_staff_links.html.slime | 36 ++++++++++--------- 6 files changed, 59 insertions(+), 39 deletions(-) diff --git a/lib/philomena/dnp_entries.ex b/lib/philomena/dnp_entries.ex index ed1440a1..f934b254 100644 --- a/lib/philomena/dnp_entries.ex +++ b/lib/philomena/dnp_entries.ex @@ -102,9 +102,13 @@ defmodule Philomena.DnpEntries do DnpEntry.changeset(dnp_entry, %{}) end - def count_dnp_entries() do - DnpEntry - |> where([dnp], dnp.aasm_state in ["requested", "claimed", "acknowledged"]) - |> Repo.aggregate(:count, :id) + def count_dnp_entries(user) do + if Canada.Can.can?(user, :manage, DnpEntry) do + DnpEntry + |> where([dnp], dnp.aasm_state in ["requested", "claimed", "acknowledged"]) + |> Repo.aggregate(:count, :id) + else + nil + end end end diff --git a/lib/philomena/duplicate_reports.ex b/lib/philomena/duplicate_reports.ex index a3dd4398..68ea318c 100644 --- a/lib/philomena/duplicate_reports.ex +++ b/lib/philomena/duplicate_reports.ex @@ -115,9 +115,13 @@ defmodule Philomena.DuplicateReports do DuplicateReport.changeset(duplicate_report, %{}) end - def count_duplicate_reports() do - DuplicateReport - |> where(state: "open") - |> Repo.aggregate(:count, :id) + def count_duplicate_reports(user) do + if Canada.Can.can?(user, :manage, DuplicateReport) do + DuplicateReport + |> where(state: "open") + |> Repo.aggregate(:count, :id) + else + nil + end end end diff --git a/lib/philomena/reports.ex b/lib/philomena/reports.ex index 070b5487..2363f633 100644 --- a/lib/philomena/reports.ex +++ b/lib/philomena/reports.ex @@ -117,9 +117,13 @@ defmodule Philomena.Reports do report end - def count_reports() do - Report - |> where(open: true) - |> Repo.aggregate(:count, :id) + def count_reports(user) do + if Canada.Can.can?(user, :manage, Report) do + Report + |> where(open: true) + |> Repo.aggregate(:count, :id) + else + nil + end end end diff --git a/lib/philomena/user_links.ex b/lib/philomena/user_links.ex index 1c154822..eef2200b 100644 --- a/lib/philomena/user_links.ex +++ b/lib/philomena/user_links.ex @@ -105,9 +105,13 @@ defmodule Philomena.UserLinks do UserLink.changeset(user_link, %{}) end - def count_user_links() do - UserLink - |> where(aasm_state: "unverified") - |> Repo.aggregate(:count, :id) + def count_user_links(user) do + if Canada.Can.can?(user, :edit, UserLink) do + UserLink + |> where(aasm_state: "unverified") + |> Repo.aggregate(:count, :id) + else + nil + end end end diff --git a/lib/philomena_web/plugs/admin_counters_plug.ex b/lib/philomena_web/plugs/admin_counters_plug.ex index ec4c2234..fe581cb9 100644 --- a/lib/philomena_web/plugs/admin_counters_plug.ex +++ b/lib/philomena_web/plugs/admin_counters_plug.ex @@ -26,15 +26,15 @@ defmodule PhilomenaWeb.AdminCountersPlug do def call(conn, _opts) do user = conn.assigns.current_user - maybe_assign_admin_metrics(conn, staff?(user)) + maybe_assign_admin_metrics(conn, user, staff?(user)) end - defp maybe_assign_admin_metrics(conn, false), do: conn - defp maybe_assign_admin_metrics(conn, true) do - duplicate_reports = DuplicateReports.count_duplicate_reports() - reports = Reports.count_reports() - user_links = UserLinks.count_user_links() - dnps = DnpEntries.count_dnp_entries() + defp maybe_assign_admin_metrics(conn, _user, false), do: conn + defp maybe_assign_admin_metrics(conn, user, true) do + duplicate_reports = DuplicateReports.count_duplicate_reports(user) + reports = Reports.count_reports(user) + user_links = UserLinks.count_user_links(user) + dnps = DnpEntries.count_dnp_entries(user) conn |> assign(:duplicate_report_count, duplicate_reports) diff --git a/lib/philomena_web/templates/layout/_header_staff_links.html.slime b/lib/philomena_web/templates/layout/_header_staff_links.html.slime index 9e1b8c4d..b7463a16 100644 --- a/lib/philomena_web/templates/layout/_header_staff_links.html.slime +++ b/lib/philomena_web/templates/layout/_header_staff_links.html.slime @@ -35,22 +35,26 @@ = link to: "#", class: "header__link" do i.fa.fa-fw.fa-sticky-note | Mod Notes - = link to: "#", class: "header__link", title: "Duplicates" do - =<> "D" - span.header__counter__admin - = @duplicate_report_count - = link to: "#", class: "header__link", title: "Reports" do - =<> "R" - span.header__counter__admin - = @report_count - = link to: "#", class: "header__link", title: "User Links" do - =<> "L" - span.header__counter__admin - = @user_link_count - = link to: "#", class: "header__link", title: "DNP Requests" do - =<> "S" - span.header__counter__admin - = @dnp_entry_count + = if @duplicate_report_count do + = link to: "#", class: "header__link", title: "Duplicates" do + =<> "D" + span.header__counter__admin + = @duplicate_report_count + = if @report_count do + = link to: "#", class: "header__link", title: "Reports" do + =<> "R" + span.header__counter__admin + = @report_count + = if @user_link_count do + = link to: "#", class: "header__link", title: "User Links" do + =<> "L" + span.header__counter__admin + = @user_link_count + = if @dnp_entry_count do + = link to: "#", class: "header__link", title: "DNP Requests" do + =<> "S" + span.header__counter__admin + = @dnp_entry_count .dropdown.hide-mobile a.header__link title="Bans" =<> "B" From 01de0bdca7002d8bf6299b4e511117c30ee1c009 Mon Sep 17 00:00:00 2001 From: Luna D Date: Thu, 5 Dec 2019 14:48:06 -0500 Subject: [PATCH 06/13] ip/fp info on comments --- .../templates/comment/_comment.html.slime | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/philomena_web/templates/comment/_comment.html.slime b/lib/philomena_web/templates/comment/_comment.html.slime index f722d75b..d2733757 100644 --- a/lib/philomena_web/templates/comment/_comment.html.slime +++ b/lib/philomena_web/templates/comment/_comment.html.slime @@ -2,14 +2,10 @@ article.block.communication id="comment_#{@comment.id}" .block__content.flex.flex--no-wrap .flex__fixed.spacing-right = render PhilomenaWeb.UserAttributionView, "_anon_user_avatar.html", object: @comment, conn: @conn - .flex__grow.communication__body - span.communication__body__sender-name = render PhilomenaWeb.UserAttributionView, "_anon_user.html", object: @comment, awards: true, conn: @conn br - = render PhilomenaWeb.UserAttributionView, "_anon_user_title.html", object: @comment, conn: @conn - .communication__body__text = if @comment.hidden_from_users do strong.comment_deleted @@ -17,10 +13,21 @@ article.block.communication id="comment_#{@comment.id}" => @comment.deletion_reason - else ==<> @body - .block__content.communication__options .flex.flex--wrap.flex--spaced-out = render PhilomenaWeb.CommentView, "_comment_options.html", comment: @comment, conn: @conn + = if can?(@conn, :hide, @comment) do + .js-staff-action + / todo: make delete button work + a.communication__interaction.togglable-delete-form-link href="#" + i.fa.fa-times + =<> "Delete" + = if can?(@conn, :manage, @comment) do + / todo: link_to_ip + .communication__info + =<> @comment.ip + .communication__info + =<> @comment.fingerprint /- if can?(:hide, Comment) / .js-staff-action / - if !comment.hidden_from_users && !comment.destroyed_content From 2b0e65e85ed9664adf505213e6510a110104dc3c Mon Sep 17 00:00:00 2001 From: Luna D Date: Thu, 5 Dec 2019 14:59:40 -0500 Subject: [PATCH 07/13] truncate FP and use helpers --- .../templates/comment/_comment.html.slime | 2 +- lib/philomena_web/views/comment_view.ex | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/philomena_web/templates/comment/_comment.html.slime b/lib/philomena_web/templates/comment/_comment.html.slime index d2733757..ced8c1fb 100644 --- a/lib/philomena_web/templates/comment/_comment.html.slime +++ b/lib/philomena_web/templates/comment/_comment.html.slime @@ -27,7 +27,7 @@ article.block.communication id="comment_#{@comment.id}" .communication__info =<> @comment.ip .communication__info - =<> @comment.fingerprint + =<> link_to_fingerprint(@comment.fingerprint) /- if can?(:hide, Comment) / .js-staff-action / - if !comment.hidden_from_users && !comment.destroyed_content diff --git a/lib/philomena_web/views/comment_view.ex b/lib/philomena_web/views/comment_view.ex index fbe88c11..27b565cc 100644 --- a/lib/philomena_web/views/comment_view.ex +++ b/lib/philomena_web/views/comment_view.ex @@ -1,3 +1,19 @@ defmodule PhilomenaWeb.CommentView do use PhilomenaWeb, :view + + def link_to_ip(ip) do + if ip do + ip + else + "N/A" + end + end + + def link_to_fingerprint(fp) do + if fp do + fp |> String.slice(0..6) + else + "N/A" + end + end end From 76dce674ea6943a5694a11b740dc1d68a38e5ac7 Mon Sep 17 00:00:00 2001 From: Luna D Date: Thu, 5 Dec 2019 15:06:18 -0500 Subject: [PATCH 08/13] ip/fp info on posts --- .../templates/post/_post.html.slime | 16 ++++++++++------ lib/philomena_web/views/app_view.ex | 16 ++++++++++++++++ lib/philomena_web/views/comment_view.ex | 16 ---------------- 3 files changed, 26 insertions(+), 22 deletions(-) diff --git a/lib/philomena_web/templates/post/_post.html.slime b/lib/philomena_web/templates/post/_post.html.slime index 0e881d73..00db8bc6 100644 --- a/lib/philomena_web/templates/post/_post.html.slime +++ b/lib/philomena_web/templates/post/_post.html.slime @@ -2,13 +2,10 @@ article.block.communication id="post_#{@post.id}" .block__content.flex.flex--no-wrap .flex__fixed.spacing-right = render PhilomenaWeb.UserAttributionView, "_anon_user_avatar.html", object: @post, conn: @conn - .flex__grow.communication__body span.communication__body__sender-name = render PhilomenaWeb.UserAttributionView, "_anon_user.html", object: @post, awards: true, conn: @conn br - = render PhilomenaWeb.UserAttributionView, "_anon_user_title.html", object: @post, conn: @conn - .communication__body__text = if @post.hidden_from_users do strong.comment_deleted @@ -16,12 +13,19 @@ article.block.communication id="post_#{@post.id}" => @post.deletion_reason - else ==<> @body - - .block__content.communication__options .flex.flex--wrap.flex--spaced-out = render PhilomenaWeb.PostView, "_post_options.html", conn: @conn, post: @post - + = if can?(@conn, :hide, @post) do + / todo: make post deletion work + a.communication__interaction.togglable-delete-form-link href="#" + i.fa.fa-times + =<> "Delete" + = if can?(@conn, :manage, @post) do + .communication__info + =<> link_to_ip(@post.ip) + .communication__info + =<> link_to_fingerprint(@post.fingerprint) /- if can?(:hide, Post) / .js-staff-action / - if !post.hidden_from_users && !post.destroyed_content diff --git a/lib/philomena_web/views/app_view.ex b/lib/philomena_web/views/app_view.ex index d3dda133..e204bd84 100644 --- a/lib/philomena_web/views/app_view.ex +++ b/lib/philomena_web/views/app_view.ex @@ -103,4 +103,20 @@ defmodule PhilomenaWeb.AppView do ]) |> to_string() end + + def link_to_ip(ip) do + if ip do + ip + else + "N/A" + end + end + + def link_to_fingerprint(fp) do + if fp do + fp |> String.slice(0..6) + else + "N/A" + end + end end diff --git a/lib/philomena_web/views/comment_view.ex b/lib/philomena_web/views/comment_view.ex index 27b565cc..fbe88c11 100644 --- a/lib/philomena_web/views/comment_view.ex +++ b/lib/philomena_web/views/comment_view.ex @@ -1,19 +1,3 @@ defmodule PhilomenaWeb.CommentView do use PhilomenaWeb, :view - - def link_to_ip(ip) do - if ip do - ip - else - "N/A" - end - end - - def link_to_fingerprint(fp) do - if fp do - fp |> String.slice(0..6) - else - "N/A" - end - end end From 621c6587d8d87177831d8fc9020db21d73cfe3fb Mon Sep 17 00:00:00 2001 From: Luna D Date: Thu, 5 Dec 2019 15:25:37 -0500 Subject: [PATCH 09/13] ip/fp info on images --- .../templates/comment/_comment.html.slime | 2 +- .../templates/image/_image_meta.html.slime | 10 ++++++++-- lib/philomena_web/views/app_view.ex | 17 +++++++---------- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/lib/philomena_web/templates/comment/_comment.html.slime b/lib/philomena_web/templates/comment/_comment.html.slime index ced8c1fb..bf84bec3 100644 --- a/lib/philomena_web/templates/comment/_comment.html.slime +++ b/lib/philomena_web/templates/comment/_comment.html.slime @@ -25,7 +25,7 @@ article.block.communication id="comment_#{@comment.id}" = if can?(@conn, :manage, @comment) do / todo: link_to_ip .communication__info - =<> @comment.ip + =<> link_to_ip(@comment.ip) .communication__info =<> link_to_fingerprint(@comment.fingerprint) /- if can?(:hide, Comment) diff --git a/lib/philomena_web/templates/image/_image_meta.html.slime b/lib/philomena_web/templates/image/_image_meta.html.slime index 59f0875f..20d1fe37 100644 --- a/lib/philomena_web/templates/image/_image_meta.html.slime +++ b/lib/philomena_web/templates/image/_image_meta.html.slime @@ -50,8 +50,14 @@ div ' Uploaded => pretty_time(@image.created_at) - ' by - => render PhilomenaWeb.UserAttributionView, "_anon_user.html", object: @image, awards: true, conn: @conn + span.image_uploader + ' by + => render PhilomenaWeb.UserAttributionView, "_anon_user.html", object: @image, awards: true, conn: @conn + = if can?(@conn, :manage, @image) do + =<> link_to_ip(@image.ip) + =<> link_to_fingerprint(@image.fingerprint) + a href="#" + i.fa.fa-edit span.image-size |   = @image.image_width diff --git a/lib/philomena_web/views/app_view.ex b/lib/philomena_web/views/app_view.ex index e204bd84..76fac213 100644 --- a/lib/philomena_web/views/app_view.ex +++ b/lib/philomena_web/views/app_view.ex @@ -104,19 +104,16 @@ defmodule PhilomenaWeb.AppView do |> to_string() end + defp text_or_na(text), do: text + defp text_or_na(nil), do: "N/A" + + # todo: make ip a real link def link_to_ip(ip) do - if ip do - ip - else - "N/A" - end + link(text_or_na(ip), to: "#") end + # todo: make fp a real link def link_to_fingerprint(fp) do - if fp do - fp |> String.slice(0..6) - else - "N/A" - end + link(String.slice(text_or_na(fp), 0..6), to: "#") end end From 499d9d017c3e6d01c238e66a53f326c398654005 Mon Sep 17 00:00:00 2001 From: Luna D Date: Thu, 5 Dec 2019 15:28:42 -0500 Subject: [PATCH 10/13] remove this from todo --- lib/philomena_web/templates/comment/_comment.html.slime | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/philomena_web/templates/comment/_comment.html.slime b/lib/philomena_web/templates/comment/_comment.html.slime index bf84bec3..b34eb702 100644 --- a/lib/philomena_web/templates/comment/_comment.html.slime +++ b/lib/philomena_web/templates/comment/_comment.html.slime @@ -23,7 +23,6 @@ article.block.communication id="comment_#{@comment.id}" i.fa.fa-times =<> "Delete" = if can?(@conn, :manage, @comment) do - / todo: link_to_ip .communication__info =<> link_to_ip(@comment.ip) .communication__info From 36e44146bcce3146ccb7535a63d55974df2262c3 Mon Sep 17 00:00:00 2001 From: Luna D Date: Fri, 6 Dec 2019 16:38:36 -0500 Subject: [PATCH 11/13] update fa, autoprefixer, normalize --- assets/brunch-config.js | 23 +- assets/css/common/base.scss | 10 +- assets/package-lock.json | 1873 ++++++++++------- assets/package.json | 11 +- .../templates/image/_description.html.slime | 4 +- .../templates/image/_source.html.slime | 4 +- .../templates/image/_tags.html.slime | 4 +- .../templates/image/comment/_form.html.slime | 4 +- .../templates/image/comment/index.html.slime | 3 +- .../templates/layout/_header.html.slime | 4 +- .../layout/_header_staff_links.html.slime | 28 +- .../templates/topic/new.html.slime | 4 +- .../templates/topic/post/_form.html.slime | 4 +- 13 files changed, 1225 insertions(+), 751 deletions(-) diff --git a/assets/brunch-config.js b/assets/brunch-config.js index b88f7bc9..c847c200 100644 --- a/assets/brunch-config.js +++ b/assets/brunch-config.js @@ -24,13 +24,32 @@ module.exports = { sass: { mode: 'native', options: { - includePaths: ['css', 'node_modules/font-awesome/scss'] + includePaths: ['css', 'node_modules/@fortawesome/fontawesome-free/scss'] } }, copycat: { - fonts: ['node_modules/font-awesome/fonts'], + fonts: ['node_modules/@fortawesome/fontawesome-free/webfonts'], verbose: false, onlyChanged: true + }, + postcss: { + processors: [ + require('autoprefixer')({ + overrideBrowserslist: [ + 'last 2 Android versions', + 'last 2 Chrome versions', + 'last 2 ChromeAndroid versions', + 'last 2 Edge versions', + 'last 1 Explorer version', + 'last 1 ExplorerMobile versions', + 'last 2 Firefox versions', + 'last 2 FirefoxAndroid versions', + 'last 2 iOS versions', + 'last 2 Opera versions' + ], + add: true + }) + ] } }, conventions: { diff --git a/assets/css/common/base.scss b/assets/css/common/base.scss index e65a3b8c..459fe1c6 100644 --- a/assets/css/common/base.scss +++ b/assets/css/common/base.scss @@ -11,8 +11,14 @@ @import "global"; -@import "../../node_modules/font-awesome/scss/font-awesome.scss"; -@import "../../node_modules/normalize-scss/sass/_normalize.scss"; +// Because FA is a SPECIAL SNOWFLAKE. +$fa-font-path: "/fonts"; + +@import "../../node_modules/@fortawesome/fontawesome-free/scss/fontawesome.scss"; +@import "../../node_modules/@fortawesome/fontawesome-free/scss/solid.scss"; +@import "../../node_modules/@fortawesome/fontawesome-free/scss/regular.scss"; +@import "../../node_modules/@fortawesome/fontawesome-free/scss/brands.scss"; +@import "../../node_modules/normalize-scss/sass/normalize/import-now"; body { background-color: $background_color; diff --git a/assets/package-lock.json b/assets/package-lock.json index d7a5a1f4..352f3af7 100644 --- a/assets/package-lock.json +++ b/assets/package-lock.json @@ -2,22 +2,28 @@ "requires": true, "lockfileVersion": 1, "dependencies": { + "@fortawesome/fontawesome-free": { + "version": "5.11.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.11.2.tgz", + "integrity": "sha512-XiUPoS79r1G7PcpnNtq85TJ7inJWe0v+b5oZJZKb0pGHNIV6+UiNeQWiFGmuQ0aj7GEhnD/v9iqxIsjuRKtEnQ==" + }, "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "version": "0.0.40", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.40.tgz", + "integrity": "sha512-p3KZgMto/JyxosKGmnLDJ/dG5wf+qTRMUjHJcspC2oQKa4jP7mz+tv0ND56lLBu3ojHlhzY33Ol+khLyNmilkA==", "dev": true }, "@types/node": { - "version": "12.7.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.2.tgz", - "integrity": "sha512-dyYO+f6ihZEtNPDcWNR1fkoTDf3zAK3lAABDze3mz6POyIercH0lEUawUFXlG8xaQZmm1yEBON/4TsYv/laDYg==", + "version": "12.12.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.14.tgz", + "integrity": "sha512-u/SJDyXwuihpwjXy7hOOghagLEV1KdAST6syfnOk6QZAMzZuWZqXy5aYYZbh8Jdpd4escVFP0MvftHNDb9pruA==", "dev": true }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true }, "accepts": { "version": "1.3.7", @@ -29,9 +35,9 @@ } }, "acorn": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz", - "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", + "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", "dev": true }, "acorn-dynamic-import": { @@ -41,9 +47,9 @@ "dev": true }, "acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", + "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", "dev": true }, "ajv": { @@ -100,6 +106,12 @@ "color-convert": "^1.9.0" } }, + "ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", + "dev": true + }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -107,16 +119,6 @@ "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } } }, "anysort": { @@ -180,14 +182,6 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "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", @@ -215,26 +209,20 @@ "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=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } } } }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true }, "are-we-there-yet": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -290,6 +278,29 @@ "minimalistic-assert": "^1.0.0" } }, + "assert": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz", + "integrity": "sha1-A5OaYiWCqBLMICMgoLmlbJuBWEk=", + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } + } + }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -336,18 +347,18 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "autoprefixer": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.1.tgz", - "integrity": "sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw==", + "version": "9.7.3", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.3.tgz", + "integrity": "sha512-8T5Y1C5Iyj6PgkPSFd0ODvK9DIleuPKUPYniNxybS47g2k2wFgLZ46lGQHlBuGKIAEV8fbCDfKCCRS1tvOgc3Q==", "dev": true, "requires": { - "browserslist": "^4.6.3", - "caniuse-lite": "^1.0.30000980", + "browserslist": "^4.8.0", + "caniuse-lite": "^1.0.30001012", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.17", - "postcss-value-parser": "^4.0.0" + "postcss": "^7.0.23", + "postcss-value-parser": "^4.0.2" } }, "aws-sign2": { @@ -357,9 +368,9 @@ "dev": true }, "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz", + "integrity": "sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A==", "dev": true }, "balanced-match": { @@ -481,11 +492,6 @@ "ms": "2.0.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", @@ -619,14 +625,14 @@ } }, "browserslist": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.6.tgz", - "integrity": "sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==", + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.2.tgz", + "integrity": "sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000984", - "electron-to-chromium": "^1.3.191", - "node-releases": "^1.1.25" + "caniuse-lite": "^1.0.30001015", + "electron-to-chromium": "^1.3.322", + "node-releases": "^1.1.42" } }, "brunch": { @@ -657,24 +663,6 @@ "skemata": "~0.1", "source-map": "~0.5", "universal-path": "^0.1" - }, - "dependencies": { - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "requires": { - "graceful-readlink": ">= 1.0.0" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - } } }, "brunch-skeletons": { @@ -699,9 +687,9 @@ }, "dependencies": { "acorn": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", + "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", "dev": true }, "os-homedir": { @@ -712,6 +700,16 @@ } } }, + "buffer": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.3.1.tgz", + "integrity": "sha1-DmX9Acw+kVTRUvazyTS1uKG2czw=", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -723,6 +721,11 @@ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, + "builtin-status-codes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-2.0.0.tgz", + "integrity": "sha1-byIAO6rPADzNKHr+aHIVH93FhXk=" + }, "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", @@ -761,9 +764,9 @@ } }, "caniuse-lite": { - "version": "1.0.30000989", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz", - "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==", + "version": "1.0.30001015", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001015.tgz", + "integrity": "sha512-/xL2AbW/XWHNu1gnIrO8UitBGoFthcsDgU9VLK1/dpsoxbaD5LscHozKze05R6WLsBvLhqv78dAPozMFQBYLbQ==", "dev": true }, "caseless": { @@ -816,39 +819,11 @@ "semver": "^5.3.0" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "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=" - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -861,140 +836,6 @@ "supports-color": "^2.0.0" } }, - "detect-file": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", - "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", - "requires": { - "fs-exists-sync": "^0.1.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "expand-tilde": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", - "requires": { - "os-homedir": "^1.0.1" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "requires": { - "is-extglob": "^1.0.0" - } - }, - "findup-sync": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", - "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", - "requires": { - "detect-file": "^0.1.0", - "is-glob": "^2.0.1", - "micromatch": "^2.3.7", - "resolve-dir": "^0.1.0" - } - }, - "global-modules": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", - "requires": { - "global-prefix": "^0.1.4", - "is-windows": "^0.2.0" - } - }, - "global-prefix": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", - "requires": { - "homedir-polyfill": "^1.0.0", - "ini": "^1.3.4", - "is-windows": "^0.2.0", - "which": "^1.2.12" - } - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=" - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "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=", - "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=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "resolve-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", - "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", - "requires": { - "expand-tilde": "^1.2.2", - "global-modules": "^0.2.3" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", @@ -1003,9 +844,9 @@ } }, "chokidar": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", - "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "requires": { "anymatch": "^2.0.0", "async-each": "^1.0.1", @@ -1019,14 +860,23 @@ "path-is-absolute": "^1.0.0", "readdirp": "^2.2.1", "upath": "^1.1.1" + }, + "dependencies": { + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + } } }, - "chownr": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz", - "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==", - "optional": true - }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -1071,7 +921,8 @@ "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=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "coffeescript": { "version": "1.12.7", @@ -1117,9 +968,12 @@ } }, "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "requires": { + "graceful-readlink": ">= 1.0.0" + } }, "commonjs-require-definition": { "version": "0.6.2", @@ -1144,7 +998,8 @@ "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true }, "content-disposition": { "version": "0.5.3", @@ -1233,6 +1088,23 @@ "which": "^1.2.9" } }, + "crypto-browserify": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", + "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", + "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" + } + }, "css-modules-loader-core": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", @@ -1365,6 +1237,21 @@ "assert-plus": "^1.0.0" } }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -1384,12 +1271,6 @@ "is-obj": "^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==", - "optional": true - }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -1449,7 +1330,8 @@ "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true }, "depd": { "version": "1.1.2", @@ -1483,9 +1365,9 @@ } }, "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "requires": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -1496,11 +1378,13 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "optional": true + "detect-file": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", + "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", + "requires": { + "fs-exists-sync": "^0.1.0" + } }, "detective": { "version": "4.7.1", @@ -1528,6 +1412,11 @@ "randombytes": "^2.0.0" } }, + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=" + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -1544,15 +1433,15 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.232", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.232.tgz", - "integrity": "sha512-11F8S49B+8AJy5V540BofxvJ1tWP4wZZ0sOre6KF32evS1YSHXiUB7+TQ/mjrfzg1lirnlA8XDdU8CDcJrBCbA==", + "version": "1.3.322", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz", + "integrity": "sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==", "dev": true }, "elliptic": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", - "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", "requires": { "bn.js": "^4.4.0", "brorand": "^1.0.1", @@ -1584,22 +1473,26 @@ } }, "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==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.3.tgz", + "integrity": "sha512-WtY7Fx5LiOnSYgF5eg/1T+GONaGmpvpPdCpSnYij+U2gDTL0UPfWrhDw7b2IYb+9NQJsYpCA0wOQvZfsd6YwRw==", "requires": { - "es-to-primitive": "^1.2.0", + "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", + "has-symbols": "^1.0.1", "is-callable": "^1.1.4", "is-regex": "^1.0.4", - "object-keys": "^1.0.12" + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" } }, "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==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -1627,6 +1520,11 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", @@ -1673,11 +1571,6 @@ "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=" } } }, @@ -1781,11 +1674,6 @@ "ms": "2.0.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", @@ -1958,11 +1846,6 @@ "requires": { "ms": "2.0.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -1976,17 +1859,139 @@ "pinkie-promise": "^2.0.0" } }, + "findup-sync": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", + "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", + "requires": { + "detect-file": "^0.1.0", + "is-glob": "^2.0.1", + "micromatch": "^2.3.7", + "resolve-dir": "^0.1.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "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=" + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "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=", + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-tilde": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", + "requires": { + "os-homedir": "^1.0.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "^1.0.0" + } + }, + "global-modules": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", + "requires": { + "global-prefix": "^0.1.4", + "is-windows": "^0.2.0" + } + }, + "global-prefix": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", + "requires": { + "homedir-polyfill": "^1.0.0", + "ini": "^1.3.4", + "is-windows": "^0.2.0", + "which": "^1.2.12" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=" + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "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=", + "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" + } + }, + "resolve-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", + "requires": { + "expand-tilde": "^1.2.2", + "global-modules": "^0.2.3" + } + } + } + }, "fn-args": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fn-args/-/fn-args-1.0.0.tgz", "integrity": "sha1-l02voa6sSsfCH6Ccw7gPZQEG7TI=", "dev": true }, - "font-awesome": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", - "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -2040,15 +2045,6 @@ "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=" }, - "fs-minipass": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.6.tgz", - "integrity": "sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==", - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, "fs-mode": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fs-mode/-/fs-mode-1.0.1.tgz", @@ -2071,6 +2067,477 @@ "requires": { "nan": "^2.12.1", "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "optional": true + } } }, "fstream": { @@ -2094,6 +2561,7 @@ "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -2258,6 +2726,12 @@ "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" }, + "growl": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz", + "integrity": "sha1-Sy3sjZB+k9szZiTc7AGDUC+MlCg=", + "dev": true + }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -2324,14 +2798,15 @@ } }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true }, "has-value": { "version": "1.0.0", @@ -2399,9 +2874,9 @@ } }, "hosted-git-info": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz", - "integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==", + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", "dev": true }, "http-errors": { @@ -2434,6 +2909,11 @@ "sshpk": "^1.7.0" } }, + "https-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=" + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -2453,15 +2933,6 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" }, - "ignore-walk": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, "in-publish": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", @@ -2651,16 +3122,24 @@ "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" } }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "is-extglob": "^2.1.1" + "is-extglob": "^1.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=" + } } }, "is-number": { @@ -2713,11 +3192,11 @@ } }, "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "requires": { - "has-symbols": "^1.0.0" + "has-symbols": "^1.0.1" } }, "is-typedarray": { @@ -2875,12 +3354,12 @@ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" }, "loggy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/loggy/-/loggy-1.0.4.tgz", - "integrity": "sha512-cNqUcV6oNLa1kemACNB420Hze4xREnnxfJZ2/EV6aGG6WXW481//DatmJTCyrfEICN0rOLV2NhR/3OFRJcJR7A==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/loggy/-/loggy-1.0.8.tgz", + "integrity": "sha512-3gXR0rOS4fnxVXGeiQID95/IML//jSbKx5T1GatifpzpOwDoOsTtlt25gosiBq27Mn4YnbzWB/DsKncnaLWKSg==", "requires": { - "colorette": "^1.0.1", - "native-notifier": "~0.1.0" + "colorette": "~1.1", + "native-notifier": "~0.1.6" } }, "longest": { @@ -2910,9 +3389,9 @@ } }, "magic-string": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz", - "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz", + "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", "dev": true, "requires": { "sourcemap-codec": "^1.4.4" @@ -3079,33 +3558,6 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, - "minipass": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - }, - "dependencies": { - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "optional": true - } - } - }, - "minizlib": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, "mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -3141,14 +3593,14 @@ } }, "mout": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mout/-/mout-1.1.0.tgz", - "integrity": "sha512-XsP0vf4As6BfqglxZqbqQ8SR6KQot2AgxvR0gG+WtUkf90vUXchMOZQtPf/Hml1rEffJupqL/tIrU6EYhsUQjw==" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/mout/-/mout-1.2.2.tgz", + "integrity": "sha512-w0OUxFEla6z3d7sVpMZGBCpQvYh8PHS1wZ6Wu9GNKHMpAHWJ0if0LsQZh3DlOqw55HlhJEOMLpFnwtxp99Y5GA==" }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "nan": { "version": "2.14.0", @@ -3174,9 +3626,9 @@ } }, "native-notifier": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/native-notifier/-/native-notifier-0.1.3.tgz", - "integrity": "sha512-EbfJX43lulcH5d2Ccqzsez9kmcM87Qqx1JzZIhVuYtegS1fTpDBmQ9mrCvMO3SbG7geIDGz8dK+SYIl6PxeEbQ==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/native-notifier/-/native-notifier-0.1.6.tgz", + "integrity": "sha512-BwRtjqhNsS2HpeVrNmERzQqZTFxR+MoJr/RdfCwZ0ODKyc/0EcHQhwnPwZr99gT1uHgRqbDk3C5fOo70TVYlcQ==", "requires": { "tag-shell": "~0.1.0" } @@ -3186,28 +3638,6 @@ "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=" }, - "needle": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", - "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "optional": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -3240,81 +3670,6 @@ "vm-browserify": "~0.0.4" }, "dependencies": { - "assert": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz", - "integrity": "sha1-A5OaYiWCqBLMICMgoLmlbJuBWEk=", - "requires": { - "util": "0.10.3" - }, - "dependencies": { - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "buffer": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.3.1.tgz", - "integrity": "sha1-DmX9Acw+kVTRUvazyTS1uKG2czw=", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "builtin-status-codes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-2.0.0.tgz", - "integrity": "sha1-byIAO6rPADzNKHr+aHIVH93FhXk=" - }, - "crypto-browserify": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", - "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", - "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" - } - }, - "domain-browser": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=" - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" - }, - "https-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=" - }, - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - }, - "os-browserify": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", - "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=" - }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", @@ -3338,52 +3693,10 @@ "util-deprecate": "~1.0.1" } }, - "stream-http": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.1.1.tgz", - "integrity": "sha1-O4gDA7q+A21va0MSfU3Nb4iT4ds=", - "requires": { - "builtin-status-codes": "^2.0.0", - "inherits": "^2.0.1", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, - "timers-browserify": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", - "requires": { - "process": "~0.11.0" - } - }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } - } - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "requires": { - "indexof": "0.0.1" - } } } }, @@ -3415,64 +3728,21 @@ } } }, - "node-pre-gyp": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz", - "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - }, - "dependencies": { - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "tar": { - "version": "4.4.10", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.10.tgz", - "integrity": "sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA==", - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.5", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "optional": true - } - } - }, "node-releases": { - "version": "1.1.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.27.tgz", - "integrity": "sha512-9iXUqHKSGo6ph/tdXVbHFbhRVQln4ZDTIBJCzsa90HimnBYc5jw8RWYt4wBYFHehGyC3koIz5O4mb2fHrbPOuA==", + "version": "1.1.42", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.42.tgz", + "integrity": "sha512-OQ/ESmUqGawI2PRX+XIRao44qWYBBfN54ImQYdWVTQqUckuejOg76ysSqDBK8NG3zwySRVnX36JwDQ6x+9GxzA==", "dev": true, "requires": { - "semver": "^5.3.0" + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "node-sass": { @@ -3578,9 +3848,12 @@ } }, "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } }, "normalize-range": { "version": "0.1.2", @@ -3594,26 +3867,11 @@ "integrity": "sha512-qj16bWnYs+9/ac29IgGjySg4R5qQTp1lXfm7ApFOZNVBYFY8RZ3f8+XQNDDLHeDtI3Ba7Jj4+LuPgz9v/fne2A==", "dev": true }, - "npm-bundled": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", - "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", - "optional": true - }, - "npm-packlist": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.4.tgz", - "integrity": "sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw==", - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -3630,7 +3888,8 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", @@ -3641,7 +3900,8 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true }, "object-copy": { "version": "0.1.0", @@ -3671,6 +3931,11 @@ } } }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" + }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -3733,6 +3998,11 @@ } } }, + "os-browserify": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", + "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=" + }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -3762,9 +4032,9 @@ } }, "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", "requires": { "asn1.js": "^4.0.0", "browserify-aes": "^1.0.0", @@ -3915,9 +4185,9 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "7.0.17", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz", - "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==", + "version": "7.0.24", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.24.tgz", + "integrity": "sha512-Xl0XvdNWg+CblAXzNvbSOUvgJXwSjmbAKORqyw9V2AlHrm1js2gFw9y3jibBAhpKZi8b5JzJCVh/FyzPsTtgTA==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -4174,9 +4444,9 @@ "dev": true }, "psl": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz", - "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.6.0.tgz", + "integrity": "sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA==", "dev": true }, "public-encrypt": { @@ -4274,18 +4544,6 @@ "unpipe": "1.0.0" } }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, "read-components": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/read-components/-/read-components-0.7.0.tgz", @@ -4382,9 +4640,9 @@ } }, "regexpu-core": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.5.tgz", - "integrity": "sha512-FpI67+ky9J+cDizQUJlIlNZFKual/lUkFr1AG6zOCpwZ9cLrg8UUVakyUQJD7fCDIe9Z2nwTQJNPyonatNmDFQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", + "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", "dev": true, "requires": { "regenerate": "^1.4.0", @@ -4396,9 +4654,9 @@ } }, "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", "dev": true }, "regjsparser": { @@ -4475,9 +4733,9 @@ "dev": true }, "resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.13.1.tgz", + "integrity": "sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -4516,6 +4774,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, "requires": { "glob": "^7.1.3" } @@ -4530,22 +4789,14 @@ } }, "rollup": { - "version": "1.19.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.19.4.tgz", - "integrity": "sha512-G24w409GNj7i/Yam2cQla6qV2k6Nug8bD2DZg9v63QX/cH/dEdbNJg8H4lUm5M1bRpPKRUC465Rm9H51JTKOfQ==", + "version": "1.27.8", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.27.8.tgz", + "integrity": "sha512-EVoEV5rAWl+5clnGznt1KY8PeVkzVQh/R0d2s3gHEkN7gfoyC4JmvIVuCtPbYE8NM5Ep/g+nAmvKXBjzaqTsHA==", "dev": true, "requires": { - "@types/estree": "0.0.39", - "@types/node": "^12.6.9", - "acorn": "^6.2.1" - }, - "dependencies": { - "acorn": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", - "dev": true - } + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" } }, "rollup-brunch": { @@ -4593,9 +4844,9 @@ "dev": true }, "rollup-pluginutils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz", - "integrity": "sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", "dev": true, "requires": { "estree-walker": "^0.6.1" @@ -4693,15 +4944,6 @@ "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", @@ -4732,15 +4974,6 @@ "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" - } - }, "postcss": { "version": "6.0.23", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", @@ -4772,12 +5005,6 @@ "yargs": "^7.0.0" } }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "optional": true - }, "scss-tokenizer": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", @@ -4854,16 +5081,6 @@ "debug": "^3.1", "loggy": "^1", "pushserve": "^1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - } } }, "serve-static": { @@ -4880,7 +5097,8 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "set-value": { "version": "2.0.1", @@ -4920,7 +5138,8 @@ "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "since-app-start": { "version": "0.3.3", @@ -4937,11 +5156,6 @@ "requires": { "ms": "2.0.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -4991,11 +5205,6 @@ "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=" } } }, @@ -5081,9 +5290,9 @@ } }, "source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -5149,6 +5358,188 @@ "extend-shallow": "^3.0.0" } }, + "spostcss-brunch": { + "version": "git+https://github.com/Meow/spostcss-brunch.git#b64df45c71064b73a4a60504a756eb8e71206b18", + "from": "git+https://github.com/Meow/spostcss-brunch.git#b64df45", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "loggy": "~0.3.5", + "postcss": "^6.0.12", + "postcss-modules": "^0.8.0", + "progeny": "^0.9.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 + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } + }, + "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 + }, + "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" + } + }, + "loggy": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/loggy/-/loggy-0.3.5.tgz", + "integrity": "sha1-M/EoAbH2Bjlm6nnZtqJduPy8QQc=", + "dev": true, + "requires": { + "ansicolors": "~0.3.2", + "growl": "~1.8.1" + } + }, + "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" + } + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-modules": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-0.8.0.tgz", + "integrity": "sha1-qdAYBt/+GcJgfe6I6hy9gNwFmZI=", + "dev": true, + "requires": { + "css-modules-loader-core": "^1.1.0", + "generic-names": "^1.0.2", + "postcss": "^6.0.1", + "string-hash": "^1.1.1" + } + }, + "progeny": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/progeny/-/progeny-0.9.0.tgz", + "integrity": "sha1-R5TTBfoYW6C3LKSbdho6yvKnc8w=", + "dev": true, + "requires": { + "async-each": "^1.0.0", + "chalk": "^1.1.3", + "fs-mode": "^1.0.1", + "glob": "^7.0.3" + }, + "dependencies": { + "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 + } + } + }, + "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 + } + } + }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -5208,6 +5599,17 @@ "readable-stream": "^2.0.2" } }, + "stream-http": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.1.1.tgz", + "integrity": "sha1-O4gDA7q+A21va0MSfU3Nb4iT4ds=", + "requires": { + "builtin-status-codes": "^2.0.0", + "inherits": "^2.0.1", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, "string-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", @@ -5218,12 +5620,31 @@ "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" } }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -5258,12 +5679,6 @@ "get-stdin": "^4.0.1" } }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "optional": true - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -5289,6 +5704,14 @@ "inherits": "2" } }, + "timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "requires": { + "process": "~0.11.0" + } + }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -5370,9 +5793,9 @@ } }, "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" }, "tunnel-agent": { "version": "0.6.0", @@ -5556,9 +5979,9 @@ } }, "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" }, "uri-js": { "version": "4.2.2", @@ -5595,6 +6018,21 @@ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -5606,9 +6044,9 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", "dev": true }, "validate-npm-package-license": { @@ -5637,6 +6075,14 @@ "extsprintf": "^1.2.0" } }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "requires": { + "indexof": "0.0.1" + } + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -5655,6 +6101,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, "requires": { "string-width": "^1.0.2 || 2" } diff --git a/assets/package.json b/assets/package.json index 6f218bc8..dcdf8449 100644 --- a/assets/package.json +++ b/assets/package.json @@ -6,14 +6,15 @@ "dependencies": { "brunch": "^2.10.17", "copycat-brunch": "^1.1.1", - "font-awesome": "^4.7.0" + "@fortawesome/fontawesome-free": "^5.11.2" }, "devDependencies": { - "acorn": "^7.0.0", - "autoprefixer": "^9.5.1", + "acorn": "^7.1.0", + "autoprefixer": "^9.7.3", "normalize-scss": "^7.0.1", - "rollup-brunch": "git+https://github.com/liamwhite/rollup-brunch#31967fc", - "sass-brunch": "git+https://github.com/brunch/sass-brunch#e9c0bfe", + "rollup-brunch": "git+https://github.com/liamwhite/rollup-brunch.git#31967fc", + "sass-brunch": "git+https://github.com/brunch/sass-brunch.git#e9c0bfe", + "spostcss-brunch": "git+https://github.com/Meow/spostcss-brunch.git#b64df45", "uglify-js-brunch": "^2.10.0" } } diff --git a/lib/philomena_web/templates/image/_description.html.slime b/lib/philomena_web/templates/image/_description.html.slime index e081adcd..2e4a77d4 100644 --- a/lib/philomena_web/templates/image/_description.html.slime +++ b/lib/philomena_web/templates/image/_description.html.slime @@ -2,11 +2,11 @@ div p = if can?(@conn, :edit_description, @image) do a.button#edit-description href="#" data-click-focus="#description" data-click-hide=".image-description" data-click-show="#description-form" title="Edit description" accessKey="d" - i.fa.fa-pencil> + i.fas.fa-edit> ' Description: - else ' Description: .image-description__text - == @body \ No newline at end of file + == @body diff --git a/lib/philomena_web/templates/image/_source.html.slime b/lib/philomena_web/templates/image/_source.html.slime index 24c988a1..fc880d84 100644 --- a/lib/philomena_web/templates/image/_source.html.slime +++ b/lib/philomena_web/templates/image/_source.html.slime @@ -23,7 +23,7 @@ .flex.flex--wrap#image-source p a.button.button--separate-right#edit-source data-click-focus="#source-field" data-click-hide="#image-source" data-click-show="#source-form" title="Edit source" accessKey="s" - i.fa.fa-pencil> + i.fas.fa-edit> ' Source: p @@ -37,4 +37,4 @@ a.button.button--link.button--separate-left href=Routes.image_source_change_path(@conn, :index, @image) title="Source history" i.fa.fa-history> - ' History \ No newline at end of file + ' History diff --git a/lib/philomena_web/templates/image/_tags.html.slime b/lib/philomena_web/templates/image/_tags.html.slime index 30650752..d98630c0 100644 --- a/lib/philomena_web/templates/image/_tags.html.slime +++ b/lib/philomena_web/templates/image/_tags.html.slime @@ -52,11 +52,11 @@ .tagsauce .block a.button.js-tag-sauce-toggle#edit-tags data-click-toggle=".tagsauce, .js-imageform" data-click-focus=".js-taginput-plain:not(.hidden), .js-taginput-input" title="Edit tags" accessKey="t" - i.fa.fa-pencil> + i.fas.fa-edit> ' Tags: a.button.button--link.button--separate-left href=Routes.image_tag_change_path(@conn, :index, @image) title="Tag history" i.fa.fa-history> ' History - = render PhilomenaWeb.TagView, "_tag_list.html", tags: display_order(@image.tags), conn: @conn \ No newline at end of file + = render PhilomenaWeb.TagView, "_tag_list.html", tags: display_order(@image.tags), conn: @conn diff --git a/lib/philomena_web/templates/image/comment/_form.html.slime b/lib/philomena_web/templates/image/comment/_form.html.slime index dae907ff..8ce81438 100644 --- a/lib/philomena_web/templates/image/comment/_form.html.slime +++ b/lib/philomena_web/templates/image/comment/_form.html.slime @@ -6,7 +6,7 @@ .block .block__header.block__header--js-tabbed a.selected href="#" data-click-tab="write" - i.fa.fa-pencil> + i.fas.fa-edit> ' Edit a href="#" data-click-tab="preview" @@ -29,4 +29,4 @@ = if @conn.assigns.current_user do = checkbox f, :anonymous, value: anonymous_by_default?(@conn) - = label f, :anonymous, "Anonymous" \ No newline at end of file + = label f, :anonymous, "Anonymous" diff --git a/lib/philomena_web/templates/image/comment/index.html.slime b/lib/philomena_web/templates/image/comment/index.html.slime index be525a95..68db3532 100644 --- a/lib/philomena_web/templates/image/comment/index.html.slime +++ b/lib/philomena_web/templates/image/comment/index.html.slime @@ -10,6 +10,7 @@ elixir: => pluralize("comment", "comments", @image.comments_count) ' posted button.button#js-refresh-comments title="Refresh" data-disable-with="..." + i.fa.fa-sync span.hide-mobile<> Refresh = for {comment, body} <- @comments do @@ -17,4 +18,4 @@ elixir: .block .block__header.block__header--light - = pagination \ No newline at end of file + = pagination diff --git a/lib/philomena_web/templates/layout/_header.html.slime b/lib/philomena_web/templates/layout/_header.html.slime index 46626472..99c10088 100644 --- a/lib/philomena_web/templates/layout/_header.html.slime +++ b/lib/philomena_web/templates/layout/_header.html.slime @@ -70,7 +70,7 @@ header.header i.fa.fa-fw.fa-comments> | Comments a.header__link href="/posts/?pq=my:posts" - i.fa.fa-fw.fa-pencil> + i.fas.fa-fw.fa-pen-square> | Posts a.header__link href='/user_links' i.fa.fa-fw.fa-link> @@ -85,7 +85,7 @@ header.header i.fa.fa-fw.fa-user> | Account a.header__link href="/session" data-method='delete' - i.fa.fa-fw.fa-sign-out> + i.fa.fa-fw.fa-sign-out-alt> | Logout - else a.header__link.hide-mobile href="/filters" diff --git a/lib/philomena_web/templates/layout/_header_staff_links.html.slime b/lib/philomena_web/templates/layout/_header_staff_links.html.slime index b7463a16..777d1716 100644 --- a/lib/philomena_web/templates/layout/_header_staff_links.html.slime +++ b/lib/philomena_web/templates/layout/_header_staff_links.html.slime @@ -7,34 +7,34 @@ .dropdown__content.js-burger-links = link to: "/admin/flipper", class: "header__link" do i.fa.fa-fw.fa-toggle-on - | Site Settings + =< "Site Settings" = link to: "/admin/site_notices", class: "header__link" do i.fa.fa-fw.fa-info-circle - | Site Notices + =< "Site Notices" = link to: "#", class: "header__link" do i.fa.fa-fw.fa-tags - | Tags + =< "Tags" = link to: "#", class: "header__link" do i.fa.fa-fw.fa-users - | Users + =< "Users" = link to: "#", class: "header__link" do i.fa.fa-fw.fa-comments - | Comments + =< "Comments" = link to: "#", class: "header__link" do i.fa.fa-fw.fa-paragraph - | Forums + =< "Forums" = link to: "#", class: "header__link" do i.fa.fa-fw.fa-shopping-bag - | Advertisements + =< "Advertisements" = link to: "#", class: "header__link" do i.fa.fa-fw.fa-trophy - | Badges + =< "Badges" = link to: "#", class: "header__link" do i.fa.fa-fw.fa-sticky-note - | Pages + =< "Pages" = link to: "#", class: "header__link" do i.fa.fa-fw.fa-sticky-note - | Mod Notes + =< "Mod Notes" = if @duplicate_report_count do = link to: "#", class: "header__link", title: "Duplicates" do =<> "D" @@ -62,10 +62,10 @@ .dropdown__content.dropdown__content-right.js-burger-links = link to: "#", class: "header__link" do i.fa.fa-fw.fa-user - | User Bans + =< "User Bans" = link to: "#", class: "header__link" do - i.fa.fa-fw.fa-internet-explorer - | IP Bans + i.fab.fa-fw.fa-internet-explorer + =< "IP Bans" = link to: "#", class: "header__link" do i.fa.fa-fw.fa-desktop - | FP Bans + =< "FP Bans" diff --git a/lib/philomena_web/templates/topic/new.html.slime b/lib/philomena_web/templates/topic/new.html.slime index 4bb20e92..4774fd7d 100644 --- a/lib/philomena_web/templates/topic/new.html.slime +++ b/lib/philomena_web/templates/topic/new.html.slime @@ -6,7 +6,7 @@ .block .block__header.block__header--js-tabbed a.selected href="#" data-click-tab="write" - i.fa.fa-pencil> + i.fas.fa-pencil-alt> ' Create a Topic a href="#" data-click-tab="preview" @@ -83,4 +83,4 @@ ' [Loading preview...] .block__content.communication-edit__actions - = submit "Post", class: "button" \ No newline at end of file + = submit "Post", class: "button" diff --git a/lib/philomena_web/templates/topic/post/_form.html.slime b/lib/philomena_web/templates/topic/post/_form.html.slime index 16029c91..968148e7 100644 --- a/lib/philomena_web/templates/topic/post/_form.html.slime +++ b/lib/philomena_web/templates/topic/post/_form.html.slime @@ -6,7 +6,7 @@ .block .block__header.block__header--js-tabbed a.selected href="#" data-click-tab="write" - i.fa.fa-pencil> + i.fas.fa-edit> ' Edit a href="#" data-click-tab="preview" @@ -29,4 +29,4 @@ = if @conn.assigns.current_user do = checkbox f, :anonymous, value: anonymous_by_default?(@conn) - = label f, :anonymous, "Anonymous" \ No newline at end of file + = label f, :anonymous, "Anonymous" From f584d87ceb7e69170b9a8fa6debaec7df4e0eb17 Mon Sep 17 00:00:00 2001 From: Luna D Date: Fri, 6 Dec 2019 17:00:51 -0500 Subject: [PATCH 12/13] make staff buttons reflect permissions properly --- .../layout/_header_staff_links.html.slime | 92 +++++++++++-------- 1 file changed, 53 insertions(+), 39 deletions(-) diff --git a/lib/philomena_web/templates/layout/_header_staff_links.html.slime b/lib/philomena_web/templates/layout/_header_staff_links.html.slime index 777d1716..cb5283c8 100644 --- a/lib/philomena_web/templates/layout/_header_staff_links.html.slime +++ b/lib/philomena_web/templates/layout/_header_staff_links.html.slime @@ -5,36 +5,47 @@ =<> "A" i.fa.fa-caret-down .dropdown__content.js-burger-links - = link to: "/admin/flipper", class: "header__link" do - i.fa.fa-fw.fa-toggle-on - =< "Site Settings" - = link to: "/admin/site_notices", class: "header__link" do - i.fa.fa-fw.fa-info-circle - =< "Site Notices" - = link to: "#", class: "header__link" do - i.fa.fa-fw.fa-tags - =< "Tags" - = link to: "#", class: "header__link" do - i.fa.fa-fw.fa-users - =< "Users" - = link to: "#", class: "header__link" do - i.fa.fa-fw.fa-comments - =< "Comments" - = link to: "#", class: "header__link" do - i.fa.fa-fw.fa-paragraph - =< "Forums" - = link to: "#", class: "header__link" do - i.fa.fa-fw.fa-shopping-bag - =< "Advertisements" - = link to: "#", class: "header__link" do - i.fa.fa-fw.fa-trophy - =< "Badges" - = link to: "#", class: "header__link" do - i.fa.fa-fw.fa-sticky-note - =< "Pages" - = link to: "#", class: "header__link" do - i.fa.fa-fw.fa-sticky-note - =< "Mod Notes" + / todo: make some sort of permission for this + = if @current_user.role == "admin" do + = link to: "/admin/flipper", class: "header__link" do + i.fa.fa-fw.fa-toggle-on + =< "Site Settings" + = if can?(@conn, :manage, SiteNotice) do + = link to: "/admin/site_notices", class: "header__link" do + i.fa.fa-fw.fa-info-circle + =< "Site Notices" + = if can?(@conn, :manage, Tag) do + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-tags + =< "Tags" + = if can?(@conn, :mod_read, User) do + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-users + =< "Users" + = if can?(@conn, :mod_read, Comment) do + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-comments + =< "Comments" + = if can?(@conn, :mod_read, Forum) do + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-paragraph + =< "Forums" + = if can?(@conn, :manage, Advert) do + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-shopping-bag + =< "Advertisements" + = if can?(@conn, :award, Badge) do + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-trophy + =< "Badges" + = if can?(@conn, :manage, StaticPages) do + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-sticky-note + =< "Pages" + = if can?(@conn, :manage, ModNote) do + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-sticky-note + =< "Mod Notes" = if @duplicate_report_count do = link to: "#", class: "header__link", title: "Duplicates" do =<> "D" @@ -60,12 +71,15 @@ =<> "B" i.fa.fa-caret-down .dropdown__content.dropdown__content-right.js-burger-links - = link to: "#", class: "header__link" do - i.fa.fa-fw.fa-user - =< "User Bans" - = link to: "#", class: "header__link" do - i.fab.fa-fw.fa-internet-explorer - =< "IP Bans" - = link to: "#", class: "header__link" do - i.fa.fa-fw.fa-desktop - =< "FP Bans" + = if can?(@conn, :mod_read, UserBan) do + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-user + =< "User Bans" + = if can?(@conn, :mod_read, SubnetBan) do + = link to: "#", class: "header__link" do + i.fab.fa-fw.fa-internet-explorer + =< "IP Bans" + = if can?(@conn, :mod_read, FingerprintBan) do + = link to: "#", class: "header__link" do + i.fa.fa-fw.fa-desktop + =< "FP Bans" From 06d6e7106198d1ee8411e9d228b3b6d17f1e4ea0 Mon Sep 17 00:00:00 2001 From: Luna D Date: Fri, 6 Dec 2019 17:46:46 -0500 Subject: [PATCH 13/13] replace =< with ' --- .../layout/_header_staff_links.html.slime | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/philomena_web/templates/layout/_header_staff_links.html.slime b/lib/philomena_web/templates/layout/_header_staff_links.html.slime index cb5283c8..6f658aa7 100644 --- a/lib/philomena_web/templates/layout/_header_staff_links.html.slime +++ b/lib/philomena_web/templates/layout/_header_staff_links.html.slime @@ -9,43 +9,43 @@ = if @current_user.role == "admin" do = link to: "/admin/flipper", class: "header__link" do i.fa.fa-fw.fa-toggle-on - =< "Site Settings" + ' Site Settings = if can?(@conn, :manage, SiteNotice) do = link to: "/admin/site_notices", class: "header__link" do i.fa.fa-fw.fa-info-circle - =< "Site Notices" + ' Site Notices = if can?(@conn, :manage, Tag) do = link to: "#", class: "header__link" do i.fa.fa-fw.fa-tags - =< "Tags" + ' Tags = if can?(@conn, :mod_read, User) do = link to: "#", class: "header__link" do i.fa.fa-fw.fa-users - =< "Users" + ' Users = if can?(@conn, :mod_read, Comment) do = link to: "#", class: "header__link" do i.fa.fa-fw.fa-comments - =< "Comments" + ' Comments = if can?(@conn, :mod_read, Forum) do = link to: "#", class: "header__link" do i.fa.fa-fw.fa-paragraph - =< "Forums" + ' Forums = if can?(@conn, :manage, Advert) do = link to: "#", class: "header__link" do i.fa.fa-fw.fa-shopping-bag - =< "Advertisements" + ' Advertisements = if can?(@conn, :award, Badge) do = link to: "#", class: "header__link" do i.fa.fa-fw.fa-trophy - =< "Badges" + ' Badges = if can?(@conn, :manage, StaticPages) do = link to: "#", class: "header__link" do i.fa.fa-fw.fa-sticky-note - =< "Pages" + ' Pages = if can?(@conn, :manage, ModNote) do = link to: "#", class: "header__link" do i.fa.fa-fw.fa-sticky-note - =< "Mod Notes" + ' Mod Notes = if @duplicate_report_count do = link to: "#", class: "header__link", title: "Duplicates" do =<> "D" @@ -74,12 +74,12 @@ = if can?(@conn, :mod_read, UserBan) do = link to: "#", class: "header__link" do i.fa.fa-fw.fa-user - =< "User Bans" + ' User Bans = if can?(@conn, :mod_read, SubnetBan) do = link to: "#", class: "header__link" do i.fab.fa-fw.fa-internet-explorer - =< "IP Bans" + ' IP Bans = if can?(@conn, :mod_read, FingerprintBan) do = link to: "#", class: "header__link" do i.fa.fa-fw.fa-desktop - =< "FP Bans" + ' FP Bans