diff --git a/.gitignore b/.gitignore
index 18973d3..2bad31a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,8 +38,4 @@ npm-debug.log
# Env
.env
-# Dialyzer
-/priv/plts/*.plt
-/priv/plts/*.plt.hash
-
priv/scripts/tailwind_components_diffs.txt
diff --git a/assets/js/app.js b/assets/js/app.js
index bb63da2..1390ead 100644
--- a/assets/js/app.js
+++ b/assets/js/app.js
@@ -20,22 +20,15 @@ import "phoenix_html";
// Establish Phoenix Socket and LiveView configuration.
import { Socket } from "phoenix";
import { LiveSocket } from "phoenix_live_view";
+import { hooks } from "phoenix-colocated/cen";
import topbar from "../vendor/topbar";
import Croppr from "./croppr";
-import { VKIDOneTap } from "./vkid";
-import { CookiesConsent } from "./cookies_consent";
-
-const hooks = {
- Croppr,
- VKIDOneTap,
- CookiesConsent,
-};
const csrfToken = document
.querySelector("meta[name='csrf-token']")
.getAttribute("content");
const liveSocket = new LiveSocket("/live", Socket, {
- hooks,
+ hooks: { Croppr, ...hooks },
longPollFallbackMs: 2500,
params: { _csrf_token: csrfToken },
});
diff --git a/assets/js/cookies_consent.js b/assets/js/cookies_consent.js
deleted file mode 100644
index aba32ce..0000000
--- a/assets/js/cookies_consent.js
+++ /dev/null
@@ -1,12 +0,0 @@
-export const CookiesConsent = {
- mounted() {
- this.el
- .querySelector("#accept-cookies-consent")
- .addEventListener("click", () => {
- document.cookie =
- "cookies_consent=accepted; max-age=31536000; path=/; SameSite=Lax";
- console.log("hi");
- this.el.remove();
- });
- },
-};
diff --git a/assets/js/vkid.js b/assets/js/vkid.js
deleted file mode 100644
index fd322cf..0000000
--- a/assets/js/vkid.js
+++ /dev/null
@@ -1,28 +0,0 @@
-const VKID = window.VKIDSDK;
-
-export const VKIDOneTap = {
- mounted() {
- VKID.Config.init({
- app: this.el.dataset.clientId,
- redirectUrl: this.el.dataset.redirectUrl,
- responseMode: VKID.ConfigResponseMode.Redirect,
- scope: "vkid.personal_info email phone",
- codeVerifier: this.el.dataset.codeVerifier,
- state: this.el.dataset.state
- });
-
- const oneTap = new VKID.OneTap();
-
- oneTap.render({
- container: this.el,
- showAlternativeLogin: true,
- // Fast auth ain't work cause of CORS problem (maybe)
- // So I decided to disable loading
- fastAuthEnabled: false,
- styles: {
- borderRadius: 23,
- height: 46
- }
- })
- }
-}
diff --git a/config/config.exs b/config/config.exs
index 561cb78..d879dca 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -51,9 +51,9 @@ config :cen,
config :esbuild,
version: "0.17.11",
cen: [
- args: ~w(js/app.js --bundle --target=es2017 --outdir=../priv/static/assets --external:/fonts/* --external:/images/*),
+ args: ~w(js/app.js --bundle --target=es2022 --outdir=../priv/static/assets --external:/fonts/* --external:/images/* --alias:@=.),
cd: Path.expand("../assets", __DIR__),
- env: %{"NODE_PATH" => Path.expand("../deps", __DIR__)}
+ env: %{"NODE_PATH" => [Path.expand("../deps", __DIR__), Mix.Project.build_path()]}
]
config :gettext, :default_locale, "ru"
diff --git a/config/dev.exs b/config/dev.exs
index 9e2cd33..b9d473a 100644
--- a/config/dev.exs
+++ b/config/dev.exs
@@ -95,6 +95,7 @@ config :phoenix, :plug_init_mode, :runtime
config :phoenix, :stacktrace_depth, 20
config :phoenix_live_view,
+ debug_attributes: true,
# Include HEEx debug annotations as HTML comments in rendered markup
debug_heex_annotations: true,
# Enable helpful, but potentially expensive runtime checks
diff --git a/lib/cen_web/components/chat_component.ex b/lib/cen_web/components/chat_component.ex
index 0bc5666..f8fa6e3 100644
--- a/lib/cen_web/components/chat_component.ex
+++ b/lib/cen_web/components/chat_component.ex
@@ -46,7 +46,13 @@ defmodule CenWeb.ChatComponent do
{dgettext("publications", "Чаты")}
- -
+
-
<.chat_card interaction={interaction} />
@@ -55,8 +61,12 @@ defmodule CenWeb.ChatComponent do
<%= if @selected_interaction do %>
<.chat_header interaction={@selected_interaction} myself={@myself} />
-
"""
diff --git a/lib/cen_web/live/organization_live/show.ex b/lib/cen_web/live/organization_live/show.ex
index ce0e53a..176ca24 100644
--- a/lib/cen_web/live/organization_live/show.ex
+++ b/lib/cen_web/live/organization_live/show.ex
@@ -22,16 +22,14 @@ defmodule CenWeb.OrganizationLive.Show do
class="outline-[1rem] absolute top-0 left-1/2 h-32 w-32 -translate-x-1/2 rounded-full outline outline-white lg:-translate-y-1/2"
/>
- <%= for {value, icon} <- contacts_list(@organization) do %>
- <.render_not_nil value={value}>
- -
- <.icon name={icon} class="h-4 w-4" />
-
- {value}
-
-
-
- <% end %>
+ <.render_not_nil :for={{value, icon} <- contacts_list(@organization)} value={value}>
+ -
+ <.icon name={icon} class="h-4 w-4" />
+
+ {value}
+
+
+
diff --git a/lib/cen_web/live/resume_live/index.ex b/lib/cen_web/live/resume_live/index.ex
index 490144b..7a7b774 100644
--- a/lib/cen_web/live/resume_live/index.ex
+++ b/lib/cen_web/live/resume_live/index.ex
@@ -25,18 +25,16 @@ defmodule CenWeb.ResumeLive.Index do
<% end %>
- <%= for resume <- @resumes do %>
- -
- <.basic_card class="w-full px-6 py-7" header={resume.job_title}>
-
- {resume.user.fullname}, {Accounts.calculate_user_age(resume.user)}
-
- <.regular_button class="mt-5 flex w-full justify-center bg-white" phx-click={JS.navigate(~p"/cvs/#{resume}")}>
- {gettext("Открыть")}
-
-
-
- <% end %>
+ -
+ <.basic_card class="w-full px-6 py-7" header={resume.job_title}>
+
+ {resume.user.fullname}, {Accounts.calculate_user_age(resume.user)}
+
+ <.regular_button class="mt-5 flex w-full justify-center bg-white" phx-click={JS.navigate(~p"/cvs/#{resume}")}>
+ {gettext("Открыть")}
+
+
+
"""
diff --git a/lib/cen_web/live/resume_live/search.ex b/lib/cen_web/live/resume_live/search.ex
index 5f2f13b..1e551b8 100644
--- a/lib/cen_web/live/resume_live/search.ex
+++ b/lib/cen_web/live/resume_live/search.ex
@@ -46,7 +46,7 @@ defmodule CenWeb.ResumeLive.Search do
- -
+
-
<.basic_card class="w-full px-6 py-7" header={resume.job_title}>
{resume.user.fullname}, {Accounts.calculate_user_age(resume.user)}
diff --git a/lib/cen_web/live/resume_live/show.ex b/lib/cen_web/live/resume_live/show.ex
index e0c4a1f..b565010 100644
--- a/lib/cen_web/live/resume_live/show.ex
+++ b/lib/cen_web/live/resume_live/show.ex
@@ -22,16 +22,14 @@ defmodule CenWeb.ResumeLive.Show do
<.basic_card class="px-6 pt-24 pb-14" header={"#{@resume.user.fullname}"}>
- <%= for {value, icon} <- contacts_list(@resume.user) do %>
- <.render_not_nil value={value}>
- -
- <.icon name={icon} class="h-4 w-4" />
-
- {value}
-
-
-
- <% end %>
+ <.render_not_nil :for={{value, icon} <- contacts_list(@resume.user)} value={value}>
+ -
+ <.icon name={icon} class="h-4 w-4" />
+
+ {value}
+
+
+
diff --git a/lib/cen_web/live/user_live/index.ex b/lib/cen_web/live/user_live/index.ex
index a60bb7d..03b18b2 100644
--- a/lib/cen_web/live/user_live/index.ex
+++ b/lib/cen_web/live/user_live/index.ex
@@ -17,15 +17,13 @@ defmodule CenWeb.UserLive.Index do
- <%= for user <- @users do %>
- -
- <.basic_card class="w-full px-6 py-7" header={user.email}>
-
- {dgettext("users", "Роль:")} {translate_role(user.role)}
-
-
-
- <% end %>
+ -
+ <.basic_card class="w-full px-6 py-7" header={user.email}>
+
+ {dgettext("users", "Роль:")} {translate_role(user.role)}
+
+
+
"""
diff --git a/lib/cen_web/live/vacancy_live/index.ex b/lib/cen_web/live/vacancy_live/index.ex
index 0e537e7..7c66c68 100644
--- a/lib/cen_web/live/vacancy_live/index.ex
+++ b/lib/cen_web/live/vacancy_live/index.ex
@@ -24,21 +24,19 @@ defmodule CenWeb.VacancyLive.Index do
<% end %>
- <%= for vacancy <- @vacancies do %>
- -
- <.basic_card class="w-full px-6 py-7" header={vacancy.job_title}>
-
- {pgettext("money", "от")} {Publications.format_salary(vacancy.proposed_salary)}
-
-
- {vacancy.organization.name}
-
- <.regular_button class="mt-5 flex w-full justify-center bg-white" phx-click={JS.navigate(~p"/jobs/#{vacancy}")}>
- {gettext("Открыть")}
-
-
-
- <% end %>
+ -
+ <.basic_card class="w-full px-6 py-7" header={vacancy.job_title}>
+
+ {pgettext("money", "от")} {Publications.format_salary(vacancy.proposed_salary)}
+
+
+ {vacancy.organization.name}
+
+ <.regular_button class="mt-5 flex w-full justify-center bg-white" phx-click={JS.navigate(~p"/jobs/#{vacancy}")}>
+ {gettext("Открыть")}
+
+
+
"""
diff --git a/lib/cen_web/live/vacancy_live/search.ex b/lib/cen_web/live/vacancy_live/search.ex
index f7c696a..6c352a5 100644
--- a/lib/cen_web/live/vacancy_live/search.ex
+++ b/lib/cen_web/live/vacancy_live/search.ex
@@ -45,7 +45,7 @@ defmodule CenWeb.VacancyLive.Search do
- -
+
-
<.basic_card class="w-full px-6 py-7" header={vacancy.job_title}>
{pgettext("money", "от")} {Publications.format_salary(vacancy.proposed_salary)}
diff --git a/lib/cen_web/live/vacancy_live/show.ex b/lib/cen_web/live/vacancy_live/show.ex
index 31adcf1..979bdd9 100644
--- a/lib/cen_web/live/vacancy_live/show.ex
+++ b/lib/cen_web/live/vacancy_live/show.ex
@@ -25,16 +25,14 @@ defmodule CenWeb.VacancyLive.Show do
class="outline-[1rem] absolute top-0 left-1/2 h-32 w-32 -translate-x-1/2 rounded-full outline outline-white lg:-translate-y-1/2"
/>
- <%= for {value, icon} <- contacts_list(@vacancy.organization) do %>
- <.render_not_nil value={value}>
- -
- <.icon name={icon} class="h-4 w-4" />
-
- {value}
-
-
-
- <% end %>
+ <.render_not_nil :for={{value, icon} <- contacts_list(@vacancy.organization)} value={value}>
+ -
+ <.icon name={icon} class="h-4 w-4" />
+
+ {value}
+
+
+
@@ -78,14 +76,12 @@ defmodule CenWeb.VacancyLive.Show do
<.basic_card class="w-full px-6 py-10 lg:col-span-9 lg:py-12">
- <%= for {header, text} <- format_vacancy_info(@vacancy) do %>
-
-
- {header}
-
-
{text}
-
- <% end %>
+
+
+ {header}
+
+
{text}
+
diff --git a/mix.exs b/mix.exs
index 477ea4e..1df615f 100644
--- a/mix.exs
+++ b/mix.exs
@@ -7,6 +7,8 @@ defmodule Cen.MixProject do
version: "0.1.0",
elixir: "~> 1.17",
elixirc_paths: elixirc_paths(Mix.env()),
+ compilers: [:phoenix_live_view] ++ Mix.compilers(),
+ listeners: [Phoenix.CodeReloader],
start_permanent: Mix.env() == :prod,
aliases: aliases(),
deps: deps()
@@ -53,14 +55,14 @@ defmodule Cen.MixProject do
# Misc
{:flop, "~> 0.26.1"},
{:better_number, "~> 1.0"},
- {:phoenix, "~> 1.7.14"},
+ {:phoenix, "~> 1.8"},
{:phoenix_ecto, "~> 4.5"},
{:ecto_sql, "~> 3.10"},
{:postgrex, ">= 0.0.0"},
{:phoenix_html, "~> 4.1"},
{:phoenix_live_reload, "~> 1.2", only: :dev},
- {:phoenix_live_view, "~> 1.0.0", override: true},
- {:floki, ">= 0.30.0", only: :test},
+ {:phoenix_live_view, "~> 1.1"},
+ {:lazy_html, ">= 0.0.0", only: :test},
{:phoenix_live_dashboard, "~> 0.8.3"},
{:esbuild, "~> 0.8", runtime: Mix.env() == :dev},
{:tailwind, "~> 0.2", runtime: Mix.env() == :dev},
diff --git a/mix.lock b/mix.lock
index 9dd705d..faf456b 100644
--- a/mix.lock
+++ b/mix.lock
@@ -3,7 +3,7 @@
"bcrypt_elixir": {:hex, :bcrypt_elixir, "3.3.2", "d50091e3c9492d73e17fc1e1619a9b09d6a5ef99160eb4d736926fd475a16ca3", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "471be5151874ae7931911057d1467d908955f93554f7a6cd1b7d804cac8cef53"},
"better_number": {:hex, :better_number, "1.0.1", "5832757e2575feda6f6e67b3ff18f1510a42efec4f5673221f89cff8132add7b", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "782efdaf7bb4a7109265878fa30497a335bf7cd5954ce37ee539a3ce7cf09ceb"},
"bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"},
- "castore": {:hex, :castore, "1.0.14", "4582dd7d630b48cf5e1ca8d3d42494db51e406b7ba704e81fbd401866366896a", [:mix], [], "hexpm", "7bc1b65249d31701393edaaac18ec8398d8974d52c647b7904d01b964137b9f4"},
+ "cc_precompiler": {:hex, :cc_precompiler, "0.1.11", "8c844d0b9fb98a3edea067f94f616b3f6b29b959b6b3bf25fee94ffe34364768", [:mix], [{:elixir_make, "~> 0.7", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "3427232caf0835f94680e5bcf082408a70b48ad68a5f5c0b02a3bea9f3a075b9"},
"certifi": {:hex, :certifi, "2.15.0", "0e6e882fcdaaa0a5a9f2b3db55b1394dba07e8d6d9bcad08318fb604c6839712", [:rebar3], [], "hexpm", "b147ed22ce71d72eafdad94f055165c1c182f61a2ff49df28bcc71d1d5b94a60"},
"circular_buffer": {:hex, :circular_buffer, "1.0.0", "25c004da0cba7bd8bc1bdabded4f9a902d095e20600fd15faf1f2ffbaea18a07", [:mix], [], "hexpm", "c829ec31c13c7bafd1f546677263dff5bfb006e929f25635878ac3cfba8749e5"},
"claude": {:hex, :claude, "0.2.4", "7600622f7d2b69ff7251b1d4575cf345f698b0609bcf41a002c626eaa66e5cac", [:mix], [{:igniter, "~> 0.6", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.2", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "5e249a97cfdfa0335bf5bd22bdd11f533c6f38b25e43348cae7d7d024fc28b01"},
@@ -23,7 +23,7 @@
"expo": {:hex, :expo, "1.1.0", "f7b9ed7fb5745ebe1eeedf3d6f29226c5dd52897ac67c0f8af62a07e661e5c75", [:mix], [], "hexpm", "fbadf93f4700fb44c331362177bdca9eeb8097e8b0ef525c9cc501cb9917c960"},
"file_system": {:hex, :file_system, "1.1.0", "08d232062284546c6c34426997dd7ef6ec9f8bbd090eb91780283c9016840e8f", [:mix], [], "hexpm", "bfcf81244f416871f2a2e15c1b515287faa5db9c6bcf290222206d120b3d43f6"},
"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.38.0", "62b642386fa3f2f90713f6e231da0fa3256e41ef1089f83b6ceac7a3fd3abf33", [:mix], [], "hexpm", "a5943ee91e93fb2d635b612caf5508e36d37548e84928463ef9dd986f0d1abd9"},
+ "fine": {:hex, :fine, "0.1.3", "5809ac079cc62cd16a30b9a015d4f667418239f3ff77631bf8c9462ec22be404", [:mix], [], "hexpm", "4d8b38ec0d2f23ba2ed3c3b65d0ca7d914298336eeea8c591e89372083241505"},
"flop": {:hex, :flop, "0.26.3", "9bc700b34f96a57e56aaa89b850926356311372556eacd5a1abe0fdd0ea40bf2", [:mix], [{:ecto, "~> 3.11", [hex: :ecto, repo: "hexpm", optional: false]}, {:nimble_options, "~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}], "hexpm", "cd77588229778ac55560c90dfbe15ab6486773f067d6e52db9fa703b8c9a9d2d"},
"gen_smtp": {:hex, :gen_smtp, "1.3.0", "62c3d91f0dcf6ce9db71bcb6881d7ad0d1d834c7f38c13fa8e952f4104a8442e", [:rebar3], [{:ranch, ">= 1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "0b73fbf069864ecbce02fe653b16d3f35fd889d0fdd4e14527675565c39d84e6"},
"gettext": {:hex, :gettext, "0.26.2", "5978aa7b21fada6deabf1f6341ddba50bc69c999e812211903b169799208f2a8", [:mix], [{:expo, "~> 0.5.1 or ~> 1.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "aa978504bcf76511efdc22d580ba08e2279caab1066b76bb9aa81c4a1e0a32a5"},
@@ -34,6 +34,7 @@
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
"igniter": {:hex, :igniter, "0.6.25", "e2774a4605c2bc9fc38f689232604aea0fc925c7966ae8e928fd9ea2fa9d300c", [:mix], [{:glob_ex, "~> 0.1.7", [hex: :glob_ex, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:owl, "~> 0.11", [hex: :owl, repo: "hexpm", optional: false]}, {:phx_new, "~> 1.7", [hex: :phx_new, repo: "hexpm", optional: true]}, {:req, "~> 0.5", [hex: :req, repo: "hexpm", optional: false]}, {:rewrite, ">= 1.1.1 and < 2.0.0-0", [hex: :rewrite, repo: "hexpm", optional: false]}, {:sourceror, "~> 1.4", [hex: :sourceror, repo: "hexpm", optional: false]}, {:spitfire, ">= 0.1.3 and < 1.0.0-0", [hex: :spitfire, repo: "hexpm", optional: false]}], "hexpm", "b1916e1e45796d5c371c7671305e81277231617eb58b1c120915aba237fbce6a"},
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
+ "lazy_html": {:hex, :lazy_html, "0.1.5", "cafd130ffafd5ed2a4b359876ec8e4929b81ad47877c130fe42774c98581967e", [:make, :mix], [{:cc_precompiler, "~> 0.1", [hex: :cc_precompiler, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.9.0", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:fine, "~> 0.1.0", [hex: :fine, repo: "hexpm", optional: false]}], "hexpm", "51b1e57cc260764a682b66f0a31f8b1fdf0cfc70fc61326c069e93d582584f27"},
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"},
"mime": {:hex, :mime, "2.0.7", "b8d739037be7cd402aee1ba0306edfdef982687ee7e9859bee6198c1e7e2f128", [:mix], [], "hexpm", "6171188e399ee16023ffc5b76ce445eb6d9672e2e241d2df6050f3c771e80ccd"},
"mimerl": {:hex, :mimerl, "1.4.0", "3882a5ca67fbbe7117ba8947f27643557adec38fa2307490c4c4207624cb213b", [:rebar3], [], "hexpm", "13af15f9f68c65884ecca3a3891d50a7b57d82152792f3e19d88650aa126b144"},
@@ -44,12 +45,12 @@
"nimble_pool": {:hex, :nimble_pool, "1.1.0", "bf9c29fbdcba3564a8b800d1eeb5a3c58f36e1e11d7b7fb2e084a643f645f06b", [:mix], [], "hexpm", "af2e4e6b34197db81f7aad230c1118eac993acc0dae6bc83bac0126d4ae0813a"},
"owl": {:hex, :owl, "0.12.2", "65906b525e5c3ef51bab6cba7687152be017aebe1da077bb719a5ee9f7e60762", [:mix], [{:ucwidth, "~> 0.2", [hex: :ucwidth, repo: "hexpm", optional: true]}], "hexpm", "6398efa9e1fea70a04d24231e10dcd66c1ac1aa2da418d20ef5357ec61de2880"},
"parse_trans": {:hex, :parse_trans, "3.4.1", "6e6aa8167cb44cc8f39441d05193be6e6f4e7c2946cb2759f015f8c56b76e5ff", [:rebar3], [], "hexpm", "620a406ce75dada827b82e453c19cf06776be266f5a67cff34e1ef2cbb60e49a"},
- "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": {:hex, :phoenix, "1.8.0", "dc5d256bb253110266ded8c4a6a167e24fabde2e14b8e474d262840ae8d8ea18", [:mix], [{:bandit, "~> 1.0", [hex: :bandit, repo: "hexpm", optional: true]}, {: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", "15f6e9cb76646ad8d9f2947240519666fc2c4f29f8a93ad9c7664916ab4c167b"},
"phoenix_ecto": {:hex, :phoenix_ecto, "4.6.5", "c4ef322acd15a574a8b1a08eff0ee0a85e73096b53ce1403b6563709f15e1cea", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.1", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "26ec3208eef407f31b748cadd044045c6fd485fbff168e35963d2f9dfff28d4b"},
"phoenix_html": {:hex, :phoenix_html, "4.2.1", "35279e2a39140068fc03f8874408d58eef734e488fc142153f055c5454fd1c08", [:mix], [], "hexpm", "cff108100ae2715dd959ae8f2a8cef8e20b593f8dfd031c9cba92702cf23e053"},
"phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.8.7", "405880012cb4b706f26dd1c6349125bfc903fb9e44d1ea668adaf4e04d4884b7", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:ecto_sqlite3_extras, "~> 1.1.7 or ~> 1.2.0", [hex: :ecto_sqlite3_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.19 or ~> 1.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "3a8625cab39ec261d48a13b7468dc619c0ede099601b084e343968309bd4d7d7"},
"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.0.17", "beeb16d83a7d3760f7ad463df94e83b087577665d2acc0bf2987cd7d9778068f", [:mix], [{:floki, "~> 0.36", [hex: :floki, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, 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", "a4ca05c1eb6922c4d07a508a75bfa12c45e5f4d8f77ae83283465f02c53741e1"},
+ "phoenix_live_view": {:hex, :phoenix_live_view, "1.1.3", "0473936730cc76f9b02e52f131e081c63e5e5c3851003878dd3cbe12124fb39f", [: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", "942967524e8d256ce6847ca3143d94425fa5125b53563790a609c78740cfb6c9"},
"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"},
"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"},