From ff3c40f9e88fe303ecbc8967b1013579d2a1b4da Mon Sep 17 00:00:00 2001 From: kinson <1526888+kinson@users.noreply.github.com> Date: Mon, 21 Jul 2025 21:36:55 -0700 Subject: [PATCH 1/3] Update Elixir Version to 1.18 --- .tool-versions | 4 ++-- mix.exs | 6 +++--- mix.lock | 13 ++++++------- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/.tool-versions b/.tool-versions index 0b35a2a4..2fef6889 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ -elixir 1.15 -erlang 25.0 +elixir 1.18.4 +erlang 27.3.4.2 diff --git a/mix.exs b/mix.exs index f0d6cd28..4f8871cc 100644 --- a/mix.exs +++ b/mix.exs @@ -52,9 +52,9 @@ defmodule SchoolHouse.MixProject do {:jason, "~> 1.0"}, {:libcluster, "~> 3.3"}, {:locale_plug, "~> 0.1.0"}, - {:makeup_elixir, ">= 0.0.0"}, - {:makeup_erlang, ">= 0.0.0"}, - {:nimble_publisher, "~> 0.1"}, + {:makeup_elixir, "~> 1.0"}, + {:makeup_erlang, "~> 1.0"}, + {:nimble_publisher, "~> 1.0"}, {:phoenix, "~> 1.6.9"}, {:phoenix_html, "~> 3.2"}, {:phoenix_live_view, "~> 0.17"}, diff --git a/mix.lock b/mix.lock index eb667052..574bd40c 100644 --- a/mix.lock +++ b/mix.lock @@ -14,8 +14,7 @@ "decimal": {:hex, :decimal, "2.3.0", "3ad6255aa77b4a3c4f818171b12d237500e63525c2fd056699967a3e7ea20f62", [:mix], [], "hexpm", "a4d66355cb29cb47c3cf30e71329e58361cfcb37c34235ef3bf1d7bf3773aeac"}, "decorator": {:hex, :decorator, "1.4.0", "a57ac32c823ea7e4e67f5af56412d12b33274661bb7640ec7fc882f8d23ac419", [:mix], [], "hexpm", "0a07cedd9083da875c7418dea95b78361197cf2bf3211d743f6f7ce39656597f"}, "dialyxir": {:hex, :dialyxir, "1.1.0", "c5aab0d6e71e5522e77beff7ba9e08f8e02bad90dfbeffae60eaf0cb47e29488", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "07ea8e49c45f15264ebe6d5b93799d4dd56a44036cf42d0ad9c960bc266c0b9a"}, - "earmark": {:hex, :earmark, "1.4.15", "2c7f924bf495ec1f65bd144b355d0949a05a254d0ec561740308a54946a67888", [:mix], [{:earmark_parser, ">= 1.4.13", [hex: :earmark_parser, repo: "hexpm", optional: false]}], "hexpm", "3b1209b85bc9f3586f370f7c363f6533788fb4e51db23aa79565875e7f9999ee"}, - "earmark_parser": {:hex, :earmark_parser, "1.4.15", "b29e8e729f4aa4a00436580dcc2c9c5c51890613457c193cc8525c388ccb2f06", [:mix], [], "hexpm", "044523d6438ea19c1b8ec877ec221b008661d3c27e3b848f4c879f500421ca5c"}, + "earmark": {:hex, :earmark, "1.4.48", "5f41e579d85ef812351211842b6e005f6e0cef111216dea7d4b9d58af4608434", [:mix], [], "hexpm", "a461a0ddfdc5432381c876af1c86c411fd78a25790c75023c7a4c035fdc858f9"}, "ecto": {:hex, :ecto, "3.6.2", "efdf52acfc4ce29249bab5417415bd50abd62db7b0603b8bab0d7b996548c2bc", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "efad6dfb04e6f986b8a3047822b0f826d9affe8e4ebdd2aeedbfcb14fd48884e"}, "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, "esbuild": {:hex, :esbuild, "0.3.1", "bf6a3783f8677aa93e8e6ee04b79eeceadb29e07255941fab7e50f1e3527f4a8", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}], "hexpm", "342ccd0eb2c64211326580189389d52cdf0f16f5ca22bc0267a66357e269a14a"}, @@ -28,14 +27,14 @@ "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, "libcluster": {:hex, :libcluster, "3.3.3", "a4f17721a19004cfc4467268e17cff8b1f951befe428975dd4f6f7b84d927fe0", [:mix], [{:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "7c0a2275a0bb83c07acd17dab3c3bfb4897b145106750eeccc62d302e3bdfee5"}, "locale_plug": {:hex, :locale_plug, "0.1.0", "508ede18b0f281ffaf5c3502d9a5ab39b90ffac101e7faa9c7ff640cb495682f", [:mix], [{:gettext, ">= 0.0.0", [hex: :gettext, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "97d9c44a487b2ac3bae0566cca11855c944eaaff35a380b5b9e598b279f884cc"}, - "makeup": {:hex, :makeup, "1.0.5", "d5a830bc42c9800ce07dd97fa94669dfb93d3bf5fcf6ea7a0c67b2e0e4a7f26c", [:mix], [{:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cfa158c02d3f5c0c665d0af11512fed3fba0144cf1aadee0f2ce17747fba2ca9"}, - "makeup_elixir": {:hex, :makeup_elixir, "0.15.1", "b5888c880d17d1cc3e598f05cdb5b5a91b7b17ac4eaf5f297cb697663a1094dd", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.1", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "db68c173234b07ab2a07f645a5acdc117b9f99d69ebf521821d89690ae6c6ec8"}, - "makeup_erlang": {:hex, :makeup_erlang, "0.1.1", "3fcb7f09eb9d98dc4d208f49cc955a34218fc41ff6b84df7c75b3e6e533cc65f", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "174d0809e98a4ef0b3309256cbf97101c6ec01c4ab0b23e926a9e17df2077cbb"}, + "makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"}, + "makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"}, + "makeup_erlang": {:hex, :makeup_erlang, "1.0.2", "03e1804074b3aa64d5fad7aa64601ed0fb395337b982d9bcf04029d68d51b6a7", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "af33ff7ef368d5893e4a267933e7744e46ce3cf1f61e2dccf53a111ed3aa3727"}, "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"}, "mime": {:hex, :mime, "2.0.5", "dc34c8efd439abe6ae0343edbb8556f4d63f178594894720607772a041b04b02", [:mix], [], "hexpm", "da0d64a365c45bc9935cc5c8a7fc5e49a0e0f9932a761c55d6c52b142780a05c"}, "mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"}, - "nimble_parsec": {:hex, :nimble_parsec, "1.1.0", "3a6fca1550363552e54c216debb6a9e95bd8d32348938e13de5eda962c0d7f89", [:mix], [], "hexpm", "08eb32d66b706e913ff748f11694b17981c0b04a33ef470e33e11b3d3ac8f54b"}, - "nimble_publisher": {:hex, :nimble_publisher, "0.1.2", "5f6386b2d503be6acb8136a6b5b0e0494bc25095ebe4166f6838fb0d6396b51a", [:mix], [{:earmark, "~> 1.4", [hex: :earmark, repo: "hexpm", optional: false]}, {:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:makeup_elixir, ">= 0.0.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm", "3aad6046940c0cceef9533145f2c6cf9d46ace18092cd53e9aa9242efa506398"}, + "nimble_parsec": {:hex, :nimble_parsec, "1.4.2", "8efba0122db06df95bfaa78f791344a89352ba04baedd3849593bfce4d0dc1c6", [:mix], [], "hexpm", "4b21398942dda052b403bbe1da991ccd03a053668d147d53fb8c4e0efe09c973"}, + "nimble_publisher": {:hex, :nimble_publisher, "1.1.1", "3ea4d4cfca45b11a5377bce7608367a9ddd7e717a9098161d8439eca23e239aa", [:mix], [{:earmark, "~> 1.4", [hex: :earmark, repo: "hexpm", optional: false]}, {:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "d67e15bddf07e8c60f75849008b78ea8c6b2b4ae8e3f882ccf0a22d57bd42ed0"}, "parse_trans": {:hex, :parse_trans, "3.3.1", "16328ab840cc09919bd10dab29e431da3af9e9e7e7e6f0089dd5a2d2820011d8", [:rebar3], [], "hexpm", "07cd9577885f56362d414e8c4c4e6bdf10d43a8767abb92d24cbe8b24c54888b"}, "phoenix": {:hex, :phoenix, "1.6.16", "e5bdd18c7a06da5852a25c7befb72246de4ddc289182285f8685a40b7b5f5451", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 1.0 or ~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "e15989ff34f670a96b95ef6d1d25bad0d9c50df5df40b671d8f4a669e050ac39"}, "phoenix_html": {:hex, :phoenix_html, "3.3.1", "4788757e804a30baac6b3fc9695bf5562465dd3f1da8eb8460ad5b404d9a2178", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "bed1906edd4906a15fd7b412b85b05e521e1f67c9a85418c55999277e553d0d3"}, From e2b321d3ac2052087e10cef06d8f8c7366883c34 Mon Sep 17 00:00:00 2001 From: kinson <1526888+kinson@users.noreply.github.com> Date: Sun, 3 Aug 2025 21:13:13 -0700 Subject: [PATCH 2/3] Convert Templates to Use Component Syntax --- .formatter.exs | 1 + lib/school_house/content/post.ex | 2 +- lib/school_house_web.ex | 2 +- .../live/conferences_live.html.heex | 11 --- .../error/translation_missing.html.heex | 2 +- .../templates/layout/_footer.html.heex | 68 ++++++++++++++----- .../templates/layout/_header.html.heex | 16 +++-- .../templates/layout/app.html.heex | 4 +- .../templates/layout/live.html.heex | 4 +- .../templates/layout/root.html.heex | 2 +- .../templates/lesson/_pagination.html.heex | 4 +- .../lesson/_section_header.html.heex | 4 +- .../templates/lesson/index.html.heex | 2 +- .../templates/lesson/lesson.html.heex | 6 +- .../templates/page/index.html.heex | 36 +++++----- .../templates/page/podcasts.html.heex | 4 +- .../templates/post/_post_preview.html.heex | 12 ++-- .../templates/post/index.html.heex | 4 +- .../templates/post/post.html.heex | 6 +- lib/school_house_web/views/error_helpers.ex | 18 +++-- lib/school_house_web/views/html_helpers.ex | 42 +++++++----- lib/school_house_web/views/layout_view.ex | 3 +- lib/school_house_web/views/lesson_view.ex | 14 ++-- mix.exs | 13 ++-- mix.lock | 42 +++++++----- 25 files changed, 190 insertions(+), 132 deletions(-) diff --git a/.formatter.exs b/.formatter.exs index feeae96b..ac9f786f 100644 --- a/.formatter.exs +++ b/.formatter.exs @@ -2,5 +2,6 @@ import_deps: [:phoenix], inputs: ["*.{ex,exs}", "{config,lib,test}/**/*.{ex,exs}"], subdirectories: [], + plugins: [Phoenix.LiveView.HTMLFormatter], line_length: 120 ] diff --git a/lib/school_house/content/post.ex b/lib/school_house/content/post.ex index 374fb160..028b3137 100644 --- a/lib/school_house/content/post.ex +++ b/lib/school_house/content/post.ex @@ -31,7 +31,7 @@ defmodule SchoolHouse.Content.Post do slug = filename |> Path.basename(".md") - |> String.slice(date_prefix_length..-1) + |> String.slice(date_prefix_length..-1//1) {title_text, attrs} = Map.pop!(attrs, :title) {excerpt, attrs} = Map.pop!(attrs, :excerpt) diff --git a/lib/school_house_web.ex b/lib/school_house_web.ex index c562ef46..625b8fe7 100644 --- a/lib/school_house_web.ex +++ b/lib/school_house_web.ex @@ -81,7 +81,7 @@ defmodule SchoolHouseWeb do defp view_helpers do quote do # Use all HTML functionality (forms, tags, etc) - use Phoenix.HTML + import Phoenix.Component # Import LiveView helpers (live_render, live_component, live_patch, etc) import Phoenix.LiveView.Helpers diff --git a/lib/school_house_web/live/conferences_live.html.heex b/lib/school_house_web/live/conferences_live.html.heex index 465138d2..c01eea32 100644 --- a/lib/school_house_web/live/conferences_live.html.heex +++ b/lib/school_house_web/live/conferences_live.html.heex @@ -13,17 +13,6 @@
- <.form :let={f} for={:filters} id="filter-form" class="flex-row flex items-center mb-6 px-2 text-primary dark:text-primary-dark" phx-change="filter"> -

<%= gettext("Filter")%>

-
- <%= checkbox f, :online, id: "online-only", checked: filter_is_online?(@filters) %> - -
-
- - <%= select f, :country, @country_options, selected: country_filter(@filters), class: "w-40 pl-3 pr-6 appearance-none bg-nav dark:bg-nav-dark", id: "country-select" %> -
-
diff --git a/lib/school_house_web/templates/error/translation_missing.html.heex b/lib/school_house_web/templates/error/translation_missing.html.heex index dd27741c..3af188e8 100644 --- a/lib/school_house_web/templates/error/translation_missing.html.heex +++ b/lib/school_house_web/templates/error/translation_missing.html.heex @@ -4,6 +4,6 @@ <%= gettext("Translation unavailable")%>

<%= gettext("We're sorry, the resource you're looking for has not been translated yet.")%>

-

<%= gettext("If you speak that language, you can help translate")%> <%= link gettext("this page"), to: "https://github.com/elixirschool/elixirschool/tree/master/lessons/#{@missing_locale}", class: "text-purple dark:text-purple-dark" %>.

+

<%= gettext("If you speak that language, you can help translate")%> <.link href={"https://github.com/elixirschool/elixirschool/tree/master/lessons/#{@missing_locale}"} class="text-purple dark:text-purple-dark"><%= gettext("this page") %>.

diff --git a/lib/school_house_web/templates/layout/_footer.html.heex b/lib/school_house_web/templates/layout/_footer.html.heex index c4ddedef..bba98ca5 100644 --- a/lib/school_house_web/templates/layout/_footer.html.heex +++ b/lib/school_house_web/templates/layout/_footer.html.heex @@ -38,13 +38,19 @@

  • - <%= link(gettext("Why Elixir?"), to: Routes.page_path(@conn, :why, current_locale()), class: "text-base text-light dark:text-light-dark hover:text-gray-900") %> + <.link navigate={Routes.page_path(@conn, :why, current_locale())} class="text-base text-light dark:text-light-dark hover:text-gray-900"> + <%= gettext("Why Elixir?") %> +
  • - <%= link(gettext("Podcasts"), to: Routes.page_path(@conn, :podcasts, current_locale()), class: "text-base text-light dark:text-light-dark hover:text-gray-900") %> + <.link navigate={Routes.page_path(@conn, :podcasts, current_locale())} class="text-base text-light dark:text-light-dark hover:text-gray-900"> + <%= gettext("Podcasts") %> +
  • - <%= link(gettext("Conferences"), to: Routes.live_path(@conn, SchoolHouseWeb.ConferencesLive, current_locale()), class: "text-base text-light dark:text-light-dark hover:text-gray-900") %> + <.link navigate={Routes.live_path(@conn, SchoolHouseWeb.ConferencesLive, current_locale())} class="text-base text-light dark:text-light-dark hover:text-gray-900"> + <%= gettext("Conferences") %> +
@@ -54,35 +60,51 @@

  • - <%= link(gettext("Basics"), to: Routes.lesson_path(@conn, :index, current_locale(), :basics), class: "text-base text-light dark:text-light-dark hover:text-gray-900") %> + <.link navigate={Routes.lesson_path(@conn, :index, current_locale(), :basics)} class="text-base text-light dark:text-light-dark hover:text-gray-900"> + <%= gettext("Basics") %> +
  • - <%= link(gettext("Intermediate"), to: Routes.lesson_path(@conn, :index, current_locale(), :intermediate), class: "text-base text-light dark:text-light-dark hover:text-gray-900") %> + <.link navigate={Routes.lesson_path(@conn, :index, current_locale(), :intermediate)} class="text-base text-light dark:text-light-dark hover:text-gray-900"> + <%= gettext("Intermediate") %> +
  • - <%= link(gettext("Advanced"), to: Routes.lesson_path(@conn, :index, current_locale(), :advanced), class: "text-base text-light dark:text-light-dark hover:text-gray-900") %> + <.link navigate={Routes.lesson_path(@conn, :index, current_locale(), :advanced)} class="text-base text-light dark:text-light-dark hover:text-gray-900"> + <%= gettext("Advanced") %> +
  • - <%= link(gettext("Testing"), to: Routes.lesson_path(@conn, :index, current_locale(), :testing), class: "text-base text-light dark:text-light-dark hover:text-gray-900") %> + <.link navigate={Routes.lesson_path(@conn, :index, current_locale(), :testing)} class="text-base text-light dark:text-light-dark hover:text-gray-900"> + <%= gettext("Testing") %> +
  • - <%= link(gettext("Data Processing"), to: Routes.lesson_path(@conn, :index, current_locale(), :data_processing), class: "text-base text-light dark:text-light-dark hover:text-gray-900") %> + <.link navigate={Routes.lesson_path(@conn, :index, current_locale(), :data_processing)} class="text-base text-light dark:text-light-dark hover:text-gray-900"> + <%= gettext("Data Processing") %> +
  • - <%= link(gettext("Ecto"), to: Routes.lesson_path(@conn, :index, current_locale(), :ecto), class: "text-base text-light dark:text-light-dark hover:text-gray-900") %> + <.link navigate={Routes.lesson_path(@conn, :index, current_locale(), :ecto)} class="text-base text-light dark:text-light-dark hover:text-gray-900"> + <%= gettext("Ecto") %> +
  • - <%= link(gettext("Storage"), to: Routes.lesson_path(@conn, :index, current_locale(), :storage), class: "text-base text-light dark:text-light-dark hover:text-gray-900") %> + <.link navigate={Routes.lesson_path(@conn, :index, current_locale(), :storage)} class="text-base text-light dark:text-light-dark hover:text-gray-900"> + <%= gettext("Storage") %> +
  • - <%= link(gettext("Miscellaneous"), to: Routes.lesson_path(@conn, :index, current_locale(), :misc), class: "text-base text-light dark:text-light-dark hover:text-gray-900") %> + <.link navigate={Routes.lesson_path(@conn, :index, current_locale(), :misc)} class="text-base text-light dark:text-light-dark hover:text-gray-900"> + <%= gettext("Miscellaneous") %> +
@@ -90,19 +112,27 @@

- <%= link(gettext("Blog"), to: Routes.post_path(@conn, :index), class: "hover:text-gray-600") %> + <.link navigate={Routes.post_path(@conn, :index)} class="hover:text-gray-600"> + <%= gettext("Blog") %> +

  • - <%= link(gettext("Announcements"), to: Routes.post_path(@conn, :filter_by_tag, "announcement"), class: "text-base text-light dark:text-light-dark hover:text-gray-900") %> + <.link navigate={Routes.post_path(@conn, :filter_by_tag, "announcement")} class="text-base text-light dark:text-light-dark hover:text-gray-900"> + <%= gettext("Announcements") %> +
  • - <%= link(gettext("Today I Learned (TIL)"), to: Routes.post_path(@conn, :filter_by_tag, "til"), class: "text-base text-light dark:text-light-dark hover:text-gray-900") %> + <.link navigate={Routes.post_path(@conn, :filter_by_tag, "til")} class="text-base text-light dark:text-light-dark hover:text-gray-900"> + <%= gettext("Today I Learned (TIL)") %> +
  • - <%= link(gettext("Reviews"), to: Routes.post_path(@conn, :filter_by_tag, "review"), class: "text-base text-light dark:text-light-dark hover:text-gray-900") %> + <.link navigate={Routes.post_path(@conn, :filter_by_tag, "review")} class="text-base text-light dark:text-light-dark hover:text-gray-900"> + <%= gettext("Reviews") %> +
@@ -113,11 +143,15 @@

  • - <%= link(gettext("Get Involved"), to: Routes.page_path(@conn, :get_involved, current_locale()), class: "text-base text-light dark:text-light-dark hover:text-gray-900") %> + <.link navigate={Routes.page_path(@conn, :get_involved, current_locale())} class="text-base text-light dark:text-light-dark hover:text-gray-900"> + <%= gettext("Get Involved") %> +
  • <%= if current_locale() != "en" do %>
  • - <%= link gettext("Translation Report"), to: Routes.report_path(@conn, :index, current_locale()), class: "text-base text-light dark:text-light-dark hover:text-gray-900" %> + <.link navigate={Routes.report_path(@conn, :index, current_locale())} class="text-base text-light dark:text-light-dark hover:text-gray-900"> + <%= gettext("Translation Report") %> +
  • <% end %>
diff --git a/lib/school_house_web/templates/layout/_header.html.heex b/lib/school_house_web/templates/layout/_header.html.heex index 1f161bce..8ebc1f68 100644 --- a/lib/school_house_web/templates/layout/_header.html.heex +++ b/lib/school_house_web/templates/layout/_header.html.heex @@ -1,25 +1,31 @@
<% end %>
diff --git a/lib/school_house_web/templates/lesson/_section_header.html.heex b/lib/school_house_web/templates/lesson/_section_header.html.heex index 3570eea0..d3f3f0d9 100644 --- a/lib/school_house_web/templates/lesson/_section_header.html.heex +++ b/lib/school_house_web/templates/lesson/_section_header.html.heex @@ -1,8 +1,8 @@ -<%= content_tag String.to_atom(@header), class: "flex", id: @fragment do %> +<.dynamic_tag tag={@header} class="flex" id={@fragment}> <%= @name %> -<% end %> \ No newline at end of file + \ No newline at end of file diff --git a/lib/school_house_web/templates/lesson/index.html.heex b/lib/school_house_web/templates/lesson/index.html.heex index 989c63e6..0368c7d7 100644 --- a/lib/school_house_web/templates/lesson/index.html.heex +++ b/lib/school_house_web/templates/lesson/index.html.heex @@ -7,7 +7,7 @@ <%= lesson_link(@conn, lesson.section, lesson.name, "text-lg font-medium leading-6 text-purple dark:text-purple-dark") do %> <%= lesson.title %> <% end %> - <%= raw lesson.excerpt %> + <%= Phoenix.HTML.raw lesson.excerpt %>
<% end %> diff --git a/lib/school_house_web/templates/lesson/lesson.html.heex b/lib/school_house_web/templates/lesson/lesson.html.heex index 0bcb29b9..322ba027 100644 --- a/lib/school_house_web/templates/lesson/lesson.html.heex +++ b/lib/school_house_web/templates/lesson/lesson.html.heex @@ -4,16 +4,16 @@ <%= if @lesson.excerpt do %> -
<%= raw @lesson.excerpt %>
+
<%= Phoenix.HTML.raw @lesson.excerpt %>
<% end %>
<%= gettext("Table of Contents")%>
- <%= raw @lesson.table_of_contents %> + <%= Phoenix.HTML.raw @lesson.table_of_contents %>
- <%= raw @lesson.body %> + <%= Phoenix.HTML.raw @lesson.body %>
<%= gettext("Caught a mistake or want to contribute to the lesson?")%> diff --git a/lib/school_house_web/templates/page/index.html.heex b/lib/school_house_web/templates/page/index.html.heex index 91e4fa82..dd93f959 100644 --- a/lib/school_house_web/templates/page/index.html.heex +++ b/lib/school_house_web/templates/page/index.html.heex @@ -73,12 +73,12 @@

<%= gettext("By focusing on breaking problems down into simple side-effect free functions we can ensure fewer bugs, better test coverage, while incrementally building our solutions through the composition of well tested functions.")%>

- <%= link(to: Routes.page_path(@conn, :why, current_locale()), class: "inline-flex items-center mt-3 text-purple dark:text-purple-dark") do %> + <.link navigate={Routes.page_path(@conn, :why, current_locale())} class="inline-flex items-center mt-3 text-purple dark:text-purple-dark"> <%= gettext("Learn More")%> - <% end %> +
@@ -92,12 +92,12 @@

<%= gettext("Built on the back of a giant, the Erlang runtime system, Elixir takes things even further with easy extensibility, compatibility with Erlang and other BEAM languages, and an ever expanding collection of libraries and packages to improve developer happiness.")%>

- <%= link(to: Routes.page_path(@conn, :why, current_locale()), class: "inline-flex items-center mt-3 text-purple dark:text-purple-dark") do %> + <.link navigate={Routes.page_path(@conn, :why, current_locale())} class="inline-flex items-center mt-3 text-purple dark:text-purple-dark"> <%= gettext("Learn More")%> - <% end %> +
@@ -112,12 +112,12 @@

<%= gettext("With dozens of conferences, hundreds of meetups, Slack, IRC, Discord, and multiple active hashtags.")%>

- <%= link(to: Routes.page_path(@conn, :why, current_locale()), class: "inline-flex items-center mt-3 text-purple dark:text-purple-dark") do %> + <.link navigate={Routes.page_path(@conn, :why, current_locale())} class="inline-flex items-center mt-3 text-purple dark:text-purple-dark"> <%= gettext("Learn More")%> - <% end %> +
@@ -151,56 +151,56 @@

100+
<%= gettext("Conferences")%>

- <%= link(to: "https://github.com/elixir-lang/elixir/wiki/Conferences", class: "inline-flex items-center mx-auto text-white") do %> + <.link href="https://github.com/elixir-lang/elixir/wiki/Conferences" class="inline-flex items-center mx-auto text-white"> <%= gettext("See Them Here")%> - <% end %> +

6 <%= gettext("Podcasts")%>
<%= gettext("(& Counting)")%>

- <%= link(to: Routes.page_path(@conn, :podcasts, current_locale()), class: "inline-flex items-center mx-auto text-white") do %> + <.link navigate={Routes.page_path(@conn, :podcasts, current_locale())} class="inline-flex items-center mx-auto text-white"> <%= gettext("See Them Here")%> - <% end %> +

25 <%= gettext("Languages")%>
<%= gettext("With Lesson")%>
<%= gettext("Translations")%>

- <%= link(to: "https://github.com/elixirschool/elixirschool", class: "inline-flex items-center mx-auto text-white") do %> + <.link href="https://github.com/elixirschool/elixirschool" class="inline-flex items-center mx-auto text-white"> <%= gettext("See Them Here")%> - <% end %> +

600+ <%= gettext("Companies")%>
<%= gettext("Using Elixir")%>

- <%= link(to: "https://elixir-companies.com/en", class: "inline-flex items-center mx-auto text-white") do %> + <.link href="https://elixir-companies.com/en" class="inline-flex items-center mx-auto text-white"> <%= gettext("See Them Here")%> - <% end %> +

13,000+ <%= gettext("Packages")%>
<%= gettext("On Hex")%>

- <%= link(to: "https://hex.pm/", class: "inline-flex items-center mx-auto text-white") do %> + <.link href="https://hex.pm/" class="inline-flex items-center mx-auto text-white"> <%= gettext("See Them Here")%> - <% end %> +
@@ -271,7 +271,9 @@

<%= gettext("We have articles spanning several topics")%>

- <%= link(gettext("Visit the Blog"), to: Routes.post_path(@conn, :index), class: "font-extrabold items-center justify-center px-5 py-3 border border-transparent text-base font-medium rounded-md text-white bg-purple hover:text-white") %> + <.link navigate={Routes.post_path(@conn, :index)} class="font-extrabold items-center justify-center px-5 py-3 border border-transparent text-base rounded-md text-white bg-purple hover:text-white"> + <%= gettext("Visit the Blog") %> +
diff --git a/lib/school_house_web/templates/page/podcasts.html.heex b/lib/school_house_web/templates/page/podcasts.html.heex index 03e9f35b..eeb83004 100644 --- a/lib/school_house_web/templates/page/podcasts.html.heex +++ b/lib/school_house_web/templates/page/podcasts.html.heex @@ -25,12 +25,12 @@
- <%= link(to: podcast.website) do %> + <.link href={podcast.website}>

<%= podcast.name %>

<%= if podcast.language do %>

<%= podcast.language %>

<% end %> - <% end %> +

<%= podcast.about %>

diff --git a/lib/school_house_web/templates/post/_post_preview.html.heex b/lib/school_house_web/templates/post/_post_preview.html.heex index 022df78c..36a950b7 100644 --- a/lib/school_house_web/templates/post/_post_preview.html.heex +++ b/lib/school_house_web/templates/post/_post_preview.html.heex @@ -1,17 +1,17 @@
<%= for tag <- @post.tags do %> - <%= link(to: Routes.post_path(@conn, :filter_by_tag, String.downcase(tag))) do %> + <.link navigate={Routes.post_path(@conn, :filter_by_tag, String.downcase(tag))}> <%= String.downcase(tag) %> - <% end %> + <% end %>
- <%= link(to: Routes.post_path(@conn, :show, @post.slug), class: "block mt-4 prose dark:prose-dark") do %> - <%= raw @post.title %> - <%= raw @post.excerpt %> - <% end %> + <.link navigate={Routes.post_path(@conn, :show, @post.slug)} class="block mt-4 prose dark:prose-dark"> + <%= Phoenix.HTML.raw @post.title %> + <%= Phoenix.HTML.raw @post.excerpt %> +
-

<%= raw @post.title %>

+

<%= Phoenix.HTML.raw @post.title %>

@@ -25,10 +25,10 @@
- <%= raw @post.excerpt %> + <%= Phoenix.HTML.raw @post.excerpt %>
- <%= raw @post.body %> + <%= Phoenix.HTML.raw @post.body %>
diff --git a/lib/school_house_web/views/error_helpers.ex b/lib/school_house_web/views/error_helpers.ex index 61ee7bd2..3685ee58 100644 --- a/lib/school_house_web/views/error_helpers.ex +++ b/lib/school_house_web/views/error_helpers.ex @@ -3,20 +3,28 @@ defmodule SchoolHouseWeb.ErrorHelpers do Conveniences for translating and building error messages. """ - use Phoenix.HTML + use Phoenix.Component @doc """ Generates tag for inlined form input errors. """ def error_tag(form, field) do Enum.map(Keyword.get_values(form.errors, field), fn error -> - content_tag(:span, translate_error(error), - class: "invalid-feedback", - phx_feedback_for: input_id(form, field) - ) + error_span(%{ + message: translate_error(error), + phx_feedback_for: Phoenix.HTML.Form.input_id(form, field) + }) end) end + defp error_span(assigns) do + ~H""" + + <%= @message %> + + """ + end + @doc """ Translates an error message using gettext. """ diff --git a/lib/school_house_web/views/html_helpers.ex b/lib/school_house_web/views/html_helpers.ex index d271c0cb..4cc77e00 100644 --- a/lib/school_house_web/views/html_helpers.ex +++ b/lib/school_house_web/views/html_helpers.ex @@ -2,9 +2,9 @@ defmodule SchoolHouseWeb.HtmlHelpers do @moduledoc """ A collection of helpers to assist in working with translations and lessons """ - use Phoenix.HTML import SchoolHouseWeb.Gettext + use Phoenix.Component alias SchoolHouse.Lessons alias SchoolHouse.LocaleInfo @@ -55,17 +55,21 @@ defmodule SchoolHouseWeb.HtmlHelpers do "#{class} #{additional_classes}" end - content_tag( - :span, - [ - link(contents, - class: "#{class} #{additional_classes}", - to: destination - ), - name |> Lessons.coming_soon?() |> maybe_coming_soon_badge() - ], - class: "flex flex-wrap" - ) + lesson_link_content(%{ + destination: destination, + class: class, + contents: contents, + name: name + }) + end + + def lesson_link_content(assigns) do + ~H""" + +
{@contents} + <%= maybe_coming_soon_badge(@name |> Lessons.coming_soon?()) %> + + """ end # mod -> module @@ -80,15 +84,19 @@ defmodule SchoolHouseWeb.HtmlHelpers do end def maybe_coming_soon_badge(true) do - content_tag( - :span, - gettext("Coming Soon"), - class: "rounded py-px px-1 bg-purple text-xs text-white font-semibold self-center flex-shrink-0" - ) + coming_soon_badge(%{}) end def maybe_coming_soon_badge(_), do: [] + defp coming_soon_badge(assigns) do + ~H""" + + <%= gettext("Coming Soon") %> + + """ + end + def supported_locales do locales = LocaleInfo.map() Map.values(locales) diff --git a/lib/school_house_web/views/layout_view.ex b/lib/school_house_web/views/layout_view.ex index 33a4c1ad..11ac9c4d 100644 --- a/lib/school_house_web/views/layout_view.ex +++ b/lib/school_house_web/views/layout_view.ex @@ -1,6 +1,7 @@ defmodule SchoolHouseWeb.LayoutView do use SchoolHouseWeb, :view - import Phoenix.Component, only: [live_flash: 2] + + import Phoenix.Component def render_dark_mode?(conn) do case Map.get(conn.query_params, "ui", nil) do diff --git a/lib/school_house_web/views/lesson_view.ex b/lib/school_house_web/views/lesson_view.ex index 7ca84976..67d94415 100644 --- a/lib/school_house_web/views/lesson_view.ex +++ b/lib/school_house_web/views/lesson_view.ex @@ -1,16 +1,16 @@ defmodule SchoolHouseWeb.LessonView do use SchoolHouseWeb, :view - import Phoenix.Component, only: [sigil_H: 2] + import Phoenix.Component def fa_locale_styles(assigns) do ~H""" - + html[lang="fa"] { + font-family: Vazirmatn, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } + """ end end diff --git a/mix.exs b/mix.exs index 4f8871cc..59269c8e 100644 --- a/mix.exs +++ b/mix.exs @@ -7,7 +7,7 @@ defmodule SchoolHouse.MixProject do version: "0.1.0", elixir: "~> 1.13", elixirc_paths: elixirc_paths(Mix.env()), - compilers: [:phoenix] ++ Mix.compilers(), + compilers: Mix.compilers(), start_permanent: Mix.env() == :prod, aliases: aliases(), deps: deps(), @@ -46,8 +46,8 @@ defmodule SchoolHouse.MixProject do # Type `mix help deps` for examples and options. defp deps do [ - {:appsignal, "~> 2.7"}, - {:appsignal_phoenix, "~> 2.3"}, + {:appsignal, "~> 2.15"}, + {:appsignal_phoenix, "~> 2.7"}, {:gettext, "~> 0.11"}, {:jason, "~> 1.0"}, {:libcluster, "~> 3.3"}, @@ -55,9 +55,10 @@ defmodule SchoolHouse.MixProject do {:makeup_elixir, "~> 1.0"}, {:makeup_erlang, "~> 1.0"}, {:nimble_publisher, "~> 1.0"}, - {:phoenix, "~> 1.6.9"}, - {:phoenix_html, "~> 3.2"}, - {:phoenix_live_view, "~> 0.17"}, + {:phoenix, "~> 1.7"}, + {:phoenix_view, "~> 2.0"}, + {:phoenix_html, "~> 4.2"}, + {:phoenix_live_view, "~> 1.0"}, {:plug_cowboy, "~> 2.0"}, {:ssl_verify_fun, "~> 1.1.7", manager: :rebar3, override: true}, {:telemetry_metrics, "~> 0.6"}, diff --git a/mix.lock b/mix.lock index 574bd40c..ecbd358b 100644 --- a/mix.lock +++ b/mix.lock @@ -1,14 +1,14 @@ %{ - "appsignal": {:hex, :appsignal, "2.7.6", "8c2268346f0c2abdf52d2fab023f6c0981df4a087136d1c25284d78ecbe65228", [:make, :mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:decorator, "~> 1.2.3 or ~> 1.3", [hex: :decorator, repo: "hexpm", optional: false]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:poison, ">= 1.3.0", [hex: :poison, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "1bfe6fa39db979578cdbf6fb531932118edf56d5a1cd5238ea323500ad45675b"}, - "appsignal_phoenix": {:hex, :appsignal_phoenix, "2.3.4", "c83a8e15a51456db7d722a21bfe9a45e23618b550219caa8fb6d4853f61b5734", [:mix], [{:appsignal, ">= 2.7.6 and < 3.0.0", [hex: :appsignal, repo: "hexpm", optional: false]}, {:appsignal_plug, ">= 2.0.15 and < 3.0.0", [hex: :appsignal_plug, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.11 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_live_view, "~> 0.9", [hex: :phoenix_live_view, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "1ca040fbfa653bdda25735031d8b89c81ebb50c475bc35d5ac0e13236e5f6600"}, - "appsignal_plug": {:hex, :appsignal_plug, "2.0.15", "758a8a78944878e8461bbc77ca86219121a56f4299c6d79940ab083cf9afea00", [:mix], [{:appsignal, ">= 2.7.6 and < 3.0.0", [hex: :appsignal, repo: "hexpm", optional: false]}, {:plug, ">= 1.1.0", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "1c6059049e2081e808aaef04e2b9917e06277f61a35a0e103db860d08cbc41f1"}, + "appsignal": {:hex, :appsignal, "2.15.10", "63df6e8bf0b0e459cc69835410b89bc1b7c11f25546d68409e2ad9ded5bb224e", [:make, :mix], [{:castore, "~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:certifi, "~> 2.14", [hex: :certifi, repo: "hexpm", optional: false]}, {:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:decorator, "~> 1.2.3 or ~> 1.3", [hex: :decorator, repo: "hexpm", optional: false]}, {:finch, "~> 0.19", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "86a5aa88183f4e8e91d296b4a06b481a222a1ab13153f86c94f295a4d36e62ec"}, + "appsignal_phoenix": {:hex, :appsignal_phoenix, "2.7.0", "9284b4dfe40fb9a78ff371e8c7e9d3aa01bc46aa20fe3d31240bb7f9944cd728", [:mix], [{:appsignal, ">= 2.15.0 and < 3.0.0", [hex: :appsignal, repo: "hexpm", optional: false]}, {:appsignal_plug, ">= 2.1.0 and < 3.0.0", [hex: :appsignal_plug, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.11 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_live_view, "~> 0.9 or ~> 1.0", [hex: :phoenix_live_view, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b4df4ffce4c37e85a20e0e37e1a10e65b096f97608cec1dd5bd58dc365111a44"}, + "appsignal_plug": {:hex, :appsignal_plug, "2.1.1", "2fc3a32712eb6e559bab2aaef0369d4c832f3541393c5e4ceefe10088fe71d2f", [:mix], [{:appsignal, ">= 2.15.0 and < 3.0.0", [hex: :appsignal, repo: "hexpm", optional: false]}, {:plug, ">= 1.1.0", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "bbcaf3f888f019d088123c843583daf81dd97c8a9bd3cad0df7858a0a85e065d"}, "bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"}, - "castore": {:hex, :castore, "1.0.3", "7130ba6d24c8424014194676d608cb989f62ef8039efd50ff4b3f33286d06db8", [:mix], [], "hexpm", "680ab01ef5d15b161ed6a95449fac5c6b8f60055677a8e79acf01b27baa4390b"}, - "certifi": {:hex, :certifi, "2.9.0", "6f2a475689dd47f19fb74334859d460a2dc4e3252a3324bd2111b8f0429e7e21", [:rebar3], [], "hexpm", "266da46bdb06d6c6d35fde799bcb28d36d985d424ad7c08b5bb48f5b5cdd4641"}, + "castore": {:hex, :castore, "1.0.14", "4582dd7d630b48cf5e1ca8d3d42494db51e406b7ba704e81fbd401866366896a", [:mix], [], "hexpm", "7bc1b65249d31701393edaaac18ec8398d8974d52c647b7904d01b964137b9f4"}, + "certifi": {:hex, :certifi, "2.15.0", "0e6e882fcdaaa0a5a9f2b3db55b1394dba07e8d6d9bcad08318fb604c6839712", [:rebar3], [], "hexpm", "b147ed22ce71d72eafdad94f055165c1c182f61a2ff49df28bcc71d1d5b94a60"}, "connection": {:hex, :connection, "1.1.0", "ff2a49c4b75b6fb3e674bfc5536451607270aac754ffd1bdfe175abe4a6d7a68", [:mix], [], "hexpm", "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c"}, - "cowboy": {:hex, :cowboy, "2.10.0", "ff9ffeff91dae4ae270dd975642997afe2a1179d94b1887863e43f681a203e26", [:make, :rebar3], [{:cowlib, "2.12.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "3afdccb7183cc6f143cb14d3cf51fa00e53db9ec80cdcd525482f5e99bc41d6b"}, + "cowboy": {:hex, :cowboy, "2.13.0", "09d770dd5f6a22cc60c071f432cd7cb87776164527f205c5a6b0f24ff6b38990", [:make, :rebar3], [{:cowlib, ">= 2.14.0 and < 3.0.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, ">= 1.8.0 and < 3.0.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "e724d3a70995025d654c1992c7b11dbfea95205c047d86ff9bf1cda92ddc5614"}, "cowboy_telemetry": {:hex, :cowboy_telemetry, "0.3.1", "ebd1a1d7aff97f27c66654e78ece187abdc646992714164380d8a041eda16754", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "3a6efd3366130eab84ca372cbd4a7d3c3a97bdfcfb4911233b035d117063f0af"}, - "cowlib": {:hex, :cowlib, "2.12.1", "a9fa9a625f1d2025fe6b462cb865881329b5caff8f1854d1cbc9f9533f00e1e1", [:make, :rebar3], [], "hexpm", "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0"}, + "cowlib": {:hex, :cowlib, "2.15.0", "3c97a318a933962d1c12b96ab7c1d728267d2c523c25a5b57b0f93392b6e9e25", [:make, :rebar3], [], "hexpm", "4f00c879a64b4fe7c8fcb42a4281925e9ffdb928820b03c3ad325a617e857532"}, "credo": {:hex, :credo, "1.7.12", "9e3c20463de4b5f3f23721527fcaf16722ec815e70ff6c60b86412c695d426c1", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "8493d45c656c5427d9c729235b99d498bd133421f3e0a683e5c1b561471291e5"}, "db_connection": {:hex, :db_connection, "2.4.0", "d04b1b73795dae60cead94189f1b8a51cc9e1f911c234cc23074017c43c031e5", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ad416c21ad9f61b3103d254a71b63696ecadb6a917b36f563921e0de00d7d7c8"}, "decimal": {:hex, :decimal, "2.3.0", "3ad6255aa77b4a3c4f818171b12d237500e63525c2fd056699967a3e7ea20f62", [:mix], [], "hexpm", "a4d66355cb29cb47c3cf30e71329e58361cfcb37c34235ef3bf1d7bf3773aeac"}, @@ -19,9 +19,11 @@ "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, "esbuild": {:hex, :esbuild, "0.3.1", "bf6a3783f8677aa93e8e6ee04b79eeceadb29e07255941fab7e50f1e3527f4a8", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}], "hexpm", "342ccd0eb2c64211326580189389d52cdf0f16f5ca22bc0267a66357e269a14a"}, "file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"}, + "finch": {:hex, :finch, "0.20.0", "5330aefb6b010f424dcbbc4615d914e9e3deae40095e73ab0c1bb0968933cadf", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.6.2 or ~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 1.1", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "2658131a74d051aabfcba936093c903b8e89da9a1b63e430bee62045fa9b2ee2"}, "floki": {:hex, :floki, "0.31.0", "f05ee8a8e6a3ced4e62beeb2c79a63bc8e12ab98fbaaf6e6a3d9b76b1278e23f", [:mix], [{:html_entities, "~> 0.5.0", [hex: :html_entities, repo: "hexpm", optional: false]}], "hexpm", "b05afa372f5c345a5bf240ac25ea1f0f3d5fcfd7490ac0beeb4a203f9444891e"}, "gettext": {:hex, :gettext, "0.20.0", "75ad71de05f2ef56991dbae224d35c68b098dd0e26918def5bb45591d5c8d429", [:mix], [], "hexpm", "1c03b177435e93a47441d7f681a7040bd2a816ece9e2666d1c9001035121eb3d"}, "hackney": {:hex, :hackney, "1.18.1", "f48bf88f521f2a229fc7bae88cf4f85adc9cd9bcf23b5dc8eb6a1788c662c4f6", [:rebar3], [{:certifi, "~>2.9.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "a4ecdaff44297e9b5894ae499e9a070ea1888c84afdd1fd9b7b2bc384950128e"}, + "hpax": {:hex, :hpax, "1.0.3", "ed67ef51ad4df91e75cc6a1494f851850c0bd98ebc0be6e81b026e765ee535aa", [:mix], [], "hexpm", "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"}, "html_entities": {:hex, :html_entities, "0.5.2", "9e47e70598da7de2a9ff6af8758399251db6dbb7eebe2b013f2bbd2515895c3c", [:mix], [], "hexpm", "c53ba390403485615623b9531e97696f076ed415e8d8058b1dbaa28181f4fdcc"}, "idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"}, "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, @@ -31,25 +33,31 @@ "makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"}, "makeup_erlang": {:hex, :makeup_erlang, "1.0.2", "03e1804074b3aa64d5fad7aa64601ed0fb395337b982d9bcf04029d68d51b6a7", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "af33ff7ef368d5893e4a267933e7744e46ce3cf1f61e2dccf53a111ed3aa3727"}, "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"}, - "mime": {:hex, :mime, "2.0.5", "dc34c8efd439abe6ae0343edbb8556f4d63f178594894720607772a041b04b02", [:mix], [], "hexpm", "da0d64a365c45bc9935cc5c8a7fc5e49a0e0f9932a761c55d6c52b142780a05c"}, + "mime": {:hex, :mime, "2.0.7", "b8d739037be7cd402aee1ba0306edfdef982687ee7e9859bee6198c1e7e2f128", [:mix], [], "hexpm", "6171188e399ee16023ffc5b76ce445eb6d9672e2e241d2df6050f3c771e80ccd"}, "mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"}, + "mint": {:hex, :mint, "1.7.1", "113fdb2b2f3b59e47c7955971854641c61f378549d73e829e1768de90fc1abf1", [:mix], [{:castore, "~> 0.1.0 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:hpax, "~> 0.1.1 or ~> 0.2.0 or ~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}], "hexpm", "fceba0a4d0f24301ddee3024ae116df1c3f4bb7a563a731f45fdfeb9d39a231b"}, + "nimble_options": {:hex, :nimble_options, "1.1.1", "e3a492d54d85fc3fd7c5baf411d9d2852922f66e69476317787a7b2bb000a61b", [:mix], [], "hexpm", "821b2470ca9442c4b6984882fe9bb0389371b8ddec4d45a9504f00a66f650b44"}, "nimble_parsec": {:hex, :nimble_parsec, "1.4.2", "8efba0122db06df95bfaa78f791344a89352ba04baedd3849593bfce4d0dc1c6", [:mix], [], "hexpm", "4b21398942dda052b403bbe1da991ccd03a053668d147d53fb8c4e0efe09c973"}, + "nimble_pool": {:hex, :nimble_pool, "1.1.0", "bf9c29fbdcba3564a8b800d1eeb5a3c58f36e1e11d7b7fb2e084a643f645f06b", [:mix], [], "hexpm", "af2e4e6b34197db81f7aad230c1118eac993acc0dae6bc83bac0126d4ae0813a"}, "nimble_publisher": {:hex, :nimble_publisher, "1.1.1", "3ea4d4cfca45b11a5377bce7608367a9ddd7e717a9098161d8439eca23e239aa", [:mix], [{:earmark, "~> 1.4", [hex: :earmark, repo: "hexpm", optional: false]}, {:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "d67e15bddf07e8c60f75849008b78ea8c6b2b4ae8e3f882ccf0a22d57bd42ed0"}, "parse_trans": {:hex, :parse_trans, "3.3.1", "16328ab840cc09919bd10dab29e431da3af9e9e7e7e6f0089dd5a2d2820011d8", [:rebar3], [], "hexpm", "07cd9577885f56362d414e8c4c4e6bdf10d43a8767abb92d24cbe8b24c54888b"}, - "phoenix": {:hex, :phoenix, "1.6.16", "e5bdd18c7a06da5852a25c7befb72246de4ddc289182285f8685a40b7b5f5451", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 1.0 or ~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "e15989ff34f670a96b95ef6d1d25bad0d9c50df5df40b671d8f4a669e050ac39"}, - "phoenix_html": {:hex, :phoenix_html, "3.3.1", "4788757e804a30baac6b3fc9695bf5562465dd3f1da8eb8460ad5b404d9a2178", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "bed1906edd4906a15fd7b412b85b05e521e1f67c9a85418c55999277e553d0d3"}, + "phoenix": {:hex, :phoenix, "1.7.21", "14ca4f1071a5f65121217d6b57ac5712d1857e40a0833aff7a691b7870fc9a3b", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "336dce4f86cba56fed312a7d280bf2282c720abb6074bdb1b61ec8095bdd0bc9"}, + "phoenix_html": {:hex, :phoenix_html, "4.2.1", "35279e2a39140068fc03f8874408d58eef734e488fc142153f055c5454fd1c08", [:mix], [], "hexpm", "cff108100ae2715dd959ae8f2a8cef8e20b593f8dfd031c9cba92702cf23e053"}, + "phoenix_html_helpers": {:hex, :phoenix_html_helpers, "1.0.1", "7eed85c52eff80a179391036931791ee5d2f713d76a81d0d2c6ebafe1e11e5ec", [:mix], [{:phoenix_html, "~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "cffd2385d1fa4f78b04432df69ab8da63dc5cf63e07b713a4dcf36a3740e3090"}, "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.3.3", "3a53772a6118d5679bf50fc1670505a290e32a1d195df9e069d8c53ab040c054", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "766796676e5f558dbae5d1bdb066849673e956005e3730dfd5affd7a6da4abac"}, - "phoenix_live_view": {:hex, :phoenix_live_view, "0.19.5", "6e730595e8e9b8c5da230a814e557768828fd8dfeeb90377d2d8dbb52d4ec00a", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b2eaa0dd3cfb9bd7fb949b88217df9f25aed915e986a28ad5c8a0d054e7ca9d3"}, + "phoenix_live_view": {:hex, :phoenix_live_view, "1.1.0-rc.4", "1e933da296a80c0f57689b25db8711fc47feb452ac5de4b4824e8e64bccae9f9", [:mix], [{:igniter, ">= 0.6.16 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:lazy_html, "~> 0.1.0", [hex: :lazy_html, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0 or ~> 1.8.0-rc", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "4747a143c9b494b19f6ac58b919be46ff773066efe4882ee37ba0fd272f673c2"}, "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"}, - "phoenix_template": {:hex, :phoenix_template, "1.0.3", "32de561eefcefa951aead30a1f94f1b5f0379bc9e340bb5c667f65f1edfa4326", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "16f4b6588a4152f3cc057b9d0c0ba7e82ee23afa65543da535313ad8d25d8e2c"}, - "phoenix_view": {:hex, :phoenix_view, "2.0.2", "6bd4d2fd595ef80d33b439ede6a19326b78f0f1d8d62b9a318e3d9c1af351098", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}], "hexpm", "a929e7230ea5c7ee0e149ffcf44ce7cf7f4b6d2bfe1752dd7c084cdff152d36f"}, - "plug": {:hex, :plug, "1.14.2", "cff7d4ec45b4ae176a227acd94a7ab536d9b37b942c8e8fa6dfc0fff98ff4d80", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "842fc50187e13cf4ac3b253d47d9474ed6c296a8732752835ce4a86acdf68d13"}, - "plug_cowboy": {:hex, :plug_cowboy, "2.6.1", "9a3bbfceeb65eff5f39dab529e5cd79137ac36e913c02067dba3963a26efe9b2", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "de36e1a21f451a18b790f37765db198075c25875c64834bcc82d90b309eb6613"}, - "plug_crypto": {:hex, :plug_crypto, "1.2.5", "918772575e48e81e455818229bf719d4ab4181fcbf7f85b68a35620f78d89ced", [:mix], [], "hexpm", "26549a1d6345e2172eb1c233866756ae44a9609bd33ee6f99147ab3fd87fd842"}, - "ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"}, + "phoenix_template": {:hex, :phoenix_template, "1.0.4", "e2092c132f3b5e5b2d49c96695342eb36d0ed514c5b252a77048d5969330d639", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206"}, + "phoenix_view": {:hex, :phoenix_view, "2.0.4", "b45c9d9cf15b3a1af5fb555c674b525391b6a1fe975f040fb4d913397b31abf4", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}], "hexpm", "4e992022ce14f31fe57335db27a28154afcc94e9983266835bb3040243eb620b"}, + "plug": {:hex, :plug, "1.18.1", "5067f26f7745b7e31bc3368bc1a2b818b9779faa959b49c934c17730efc911cf", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "57a57db70df2b422b564437d2d33cf8d33cd16339c1edb190cd11b1a3a546cc2"}, + "plug_cowboy": {:hex, :plug_cowboy, "2.7.4", "729c752d17cf364e2b8da5bdb34fb5804f56251e88bb602aff48ae0bd8673d11", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "9b85632bd7012615bae0a5d70084deb1b25d2bcbb32cab82d1e9a1e023168aa3"}, + "plug_crypto": {:hex, :plug_crypto, "2.1.1", "19bda8184399cb24afa10be734f84a16ea0a2bc65054e23a62bb10f06bc89491", [:mix], [], "hexpm", "6470bce6ffe41c8bd497612ffde1a7e4af67f36a15eea5f921af71cf3e11247c"}, + "ranch": {:hex, :ranch, "2.2.0", "25528f82bc8d7c6152c57666ca99ec716510fe0925cb188172f41ce93117b1b0", [:make, :rebar3], [], "hexpm", "fa0b99a1780c80218a4197a59ea8d3bdae32fbff7e88527d7d8a4787eff4f8e7"}, "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.7", "354c321cf377240c7b8716899e182ce4890c5938111a1296add3ec74cf1715df", [:make, :mix, :rebar3], [], "hexpm", "fe4c190e8f37401d30167c8c405eda19469f34577987c76dde613e838bbc67f8"}, "telemetry": {:hex, :telemetry, "0.4.3", "a06428a514bdbc63293cd9a6263aad00ddeb66f608163bdec7c8995784080818", [:rebar3], [], "hexpm", "eb72b8365ffda5bed68a620d1da88525e326cb82a75ee61354fc24b844768041"}, "telemetry_metrics": {:hex, :telemetry_metrics, "0.6.0", "da9d49ee7e6bb1c259d36ce6539cd45ae14d81247a2b0c90edf55e2b50507f7b", [:mix], [{:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "5cfe67ad464b243835512aa44321cee91faed6ea868d7fb761d7016e02915c3d"}, "telemetry_poller": {:hex, :telemetry_poller, "0.5.0", "4770888ef85599ead39c7f51d6b4b62306e602d96c69b2625d54dea3d9a5204b", [:rebar3], [{:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "69e4e8e65b0ae077c9e14cd5f42c7cc486de0e07ac6e3409e6f0e52699a7872c"}, "unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"}, + "websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"}, + "websock_adapter": {:hex, :websock_adapter, "0.5.8", "3b97dc94e407e2d1fc666b2fb9acf6be81a1798a2602294aac000260a7c4a47d", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "315b9a1865552212b5f35140ad194e67ce31af45bcee443d4ecb96b5fd3f3782"}, } From 85e83d788698025b4f0e2a2f063cdecbcda3bb1c Mon Sep 17 00:00:00 2001 From: kinson <1526888+kinson@users.noreply.github.com> Date: Sun, 3 Aug 2025 21:23:58 -0700 Subject: [PATCH 3/3] Update live_reload deps --- mix.exs | 2 +- mix.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mix.exs b/mix.exs index eb6c8f0d..05884e61 100644 --- a/mix.exs +++ b/mix.exs @@ -69,7 +69,7 @@ defmodule SchoolHouse.MixProject do {:dialyxir, "~> 1.0", only: [:dev, :test], runtime: false}, {:esbuild, "~> 0.2", runtime: Mix.env() == :dev}, {:floki, ">= 0.0.0", only: :test}, - {:phoenix_live_reload, "~> 1.2", only: :dev} + {:phoenix_live_reload, "~> 1.6", only: :dev} ] end diff --git a/mix.lock b/mix.lock index aa2ad343..c0f505d9 100644 --- a/mix.lock +++ b/mix.lock @@ -46,7 +46,7 @@ "phoenix": {:hex, :phoenix, "1.7.21", "14ca4f1071a5f65121217d6b57ac5712d1857e40a0833aff7a691b7870fc9a3b", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "336dce4f86cba56fed312a7d280bf2282c720abb6074bdb1b61ec8095bdd0bc9"}, "phoenix_html": {:hex, :phoenix_html, "4.2.1", "35279e2a39140068fc03f8874408d58eef734e488fc142153f055c5454fd1c08", [:mix], [], "hexpm", "cff108100ae2715dd959ae8f2a8cef8e20b593f8dfd031c9cba92702cf23e053"}, "phoenix_html_helpers": {:hex, :phoenix_html_helpers, "1.0.1", "7eed85c52eff80a179391036931791ee5d2f713d76a81d0d2c6ebafe1e11e5ec", [:mix], [{:phoenix_html, "~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "cffd2385d1fa4f78b04432df69ab8da63dc5cf63e07b713a4dcf36a3740e3090"}, - "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.3.3", "3a53772a6118d5679bf50fc1670505a290e32a1d195df9e069d8c53ab040c054", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "766796676e5f558dbae5d1bdb066849673e956005e3730dfd5affd7a6da4abac"}, + "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.6.0", "2791fac0e2776b640192308cc90c0dbcf67843ad51387ed4ecae2038263d708d", [:mix], [{:file_system, "~> 0.2.10 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "b3a1fa036d7eb2f956774eda7a7638cf5123f8f2175aca6d6420a7f95e598e1c"}, "phoenix_live_view": {:hex, :phoenix_live_view, "1.1.0-rc.4", "1e933da296a80c0f57689b25db8711fc47feb452ac5de4b4824e8e64bccae9f9", [:mix], [{:igniter, ">= 0.6.16 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:lazy_html, "~> 0.1.0", [hex: :lazy_html, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0 or ~> 1.8.0-rc", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "4747a143c9b494b19f6ac58b919be46ff773066efe4882ee37ba0fd272f673c2"}, "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"}, "phoenix_template": {:hex, :phoenix_template, "1.0.4", "e2092c132f3b5e5b2d49c96695342eb36d0ed514c5b252a77048d5969330d639", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206"},