exshome

Build log

host

exshome 0.1.7 · fail · run exshome-0.1.7-1791181754346
2233 of 2233 lines
1Resolving Hex dependencies...2Resolution completed in 0.405s3Unchanged:4  castore 0.1.225  cc_precompiler 0.1.116  circular_buffer 1.1.07  cowboy 2.19.08  cowboy_telemetry 0.4.09  cowlib 2.20.0 VULNERABLE!10    EEF-CVE-2026-43966 (MEDIUM)11    aka: CVE-2026-43966, GHSA-w4f7-4cxr-rv3c12    HTTP Response Splitting via Non-VCHAR Bytes in cow_http_struct_hd:escape_string/213    https://osv.dev/vulnerability/EEF-CVE-2026-439661415    EEF-CVE-2026-43969 (LOW)16    aka: CVE-2026-43969, GHSA-g2wm-735q-3f5617    Cookie Request Header Injection via Unvalidated Encoder in cow_cookie:cookie/118    https://osv.dev/vulnerability/EEF-CVE-2026-4396919  db_connection 2.10.220  decimal 2.4.1 VULNERABLE!21    EEF-CVE-2026-32686 (MEDIUM)22    aka: CVE-2026-32686, GHSA-rhv4-8758-jx7v23    Unbounded exponent in decimal enables unauthenticated DoS24    https://osv.dev/vulnerability/EEF-CVE-2026-3268625  ecto 3.13.626  ecto_sql 3.13.527  ecto_sqlite3 0.7.728  elixir_make 0.10.029  erlexec 1.21.0 RETIRED!30    (deprecated) Deprecated31  esbuild 0.10.032  expo 1.1.133  exqlite 0.42.034  exshome 0.1.735  gettext 0.26.236  interactive_cmd 0.1.437  jason 1.4.538  mime 2.0.739  nerves 2.0.0-pre.240  nerves_discovery 0.1.541  nerves_logging 0.2.442  nerves_runtime 0.13.1343  nerves_system_bbb 2.30.244  nerves_system_br 1.34.445  nerves_system_mangopi_mq_pro 0.17.246  nerves_system_qemu_aarch64 0.4.247  nerves_system_rpi0 2.1.248  nerves_system_rpi4 2.1.249  nerves_system_rpi5 2.1.250  nerves_system_trellis 0.5.051  nerves_system_x86_64 1.34.252  nerves_toolchain_aarch64_nerves_linux_gnu 15.3.153  nerves_toolchain_armv6_nerves_linux_gnueabihf 15.3.154  nerves_toolchain_armv7_nerves_linux_gnueabihf 15.3.155  nerves_toolchain_riscv64_nerves_linux_gnu 15.3.156  nerves_toolchain_x86_64_nerves_linux_musl 15.3.157  nerves_uevent 0.1.758  nimble_options 0.4.059  phoenix 1.6.1760  phoenix_ecto 4.7.061  phoenix_html 3.3.462  phoenix_live_dashboard 0.6.563  phoenix_live_view 0.17.14 VULNERABLE!64    EEF-CVE-2026-64941 (LOW)65    aka: CVE-2026-64941, GHSA-36m4-rm57-3prf66    Open redirect in Phoenix.LiveView.validate_local_url!/2 via ASCII tab, LF and CR67    https://osv.dev/vulnerability/EEF-CVE-2026-6494168  phoenix_pubsub 2.3.069  phoenix_template 1.1.070  phoenix_view 2.0.471  plug 1.20.372  plug_cowboy 2.9.073  plug_crypto 1.2.574  property_table 0.3.475  ranch 2.3.076  ring_logger 0.11.777  tablet 0.3.378  tailwind 0.5.179  telemetry 1.4.280  telemetry_metrics 0.6.281  telemetry_poller 1.3.082  toolshed 0.5.083  tz 0.20.184  tz_extra 0.20.185  uboot_env 1.0.286Found retired packages, see above for details87Found packages with security advisories, see above for details88All dependencies have been fetched89==> nimble_options90Compiling 3 files (.ex)91Generated nimble_options app92==> nerves_compatibility_test93===> Fetching pc v1.15.094===> Analyzing applications...95===> Compiling pc96===> Compiling c_src/ei++.cpp97===> Compiling c_src/exec.cpp98===> Compiling c_src/exec_impl.cpp99===> Linking /work/proj/_build/host/lib/erlexec/priv/x86_64-pc-linux-gnu/exec-port100===> Analyzing applications...101===> Compiling erlexec102==> phoenix_html103Compiling 9 files (.ex)104    warning: comparison between distinct types found:105106        id == nil107108    given types:109110        dynamic(not false and not nil and not binary()) == nil111112    where "id" was given the types:113114        # type: dynamic(not false and not nil)115        # from: lib/phoenix_html/form_data.ex:92:8116        id = Keyword.get(opts, :id) || name117118        # type: dynamic(not false and not nil and not binary())119        # from: lib/phoenix_html/form_data.ex:94:12120        is_binary(id)121122    While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false123124    type warning found at:125    │126 94 │     unless is_binary(id) or is_nil(id) do127    │     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~128    │129    └─ lib/phoenix_html/form_data.ex:94: Phoenix.HTML.FormData.Atom.to_form/2130131    warning: the 1st pattern in clause will never match:132133        60134135    because it is expected to receive type:136137        dynamic(empty_list() or non_empty_list(term(), term()))138139    hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())140141    type warning found at:142    │143 56 │   def to_iodata(?<), do: "&lt;"144    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~145    │146    └─ lib/phoenix_html/safe.ex:56: Phoenix.HTML.Safe.List.to_iodata/1147148    warning: the 1st pattern in clause will never match:149150        62151152    because it is expected to receive type:153154        dynamic(empty_list() or non_empty_list(term(), term()))155156    hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())157158    type warning found at:159    │160 57 │   def to_iodata(?>), do: "&gt;"161    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~162    │163    └─ lib/phoenix_html/safe.ex:57: Phoenix.HTML.Safe.List.to_iodata/1164165    warning: the 1st pattern in clause will never match:166167        38168169    because it is expected to receive type:170171        dynamic(empty_list() or non_empty_list(term(), term()))172173    hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())174175    type warning found at:176    │177 58 │   def to_iodata(?&), do: "&amp;"178    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~179    │180    └─ lib/phoenix_html/safe.ex:58: Phoenix.HTML.Safe.List.to_iodata/1181182    warning: the 1st pattern in clause will never match:183184        34185186    because it is expected to receive type:187188        dynamic(empty_list() or non_empty_list(term(), term()))189190    hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())191192    type warning found at:193    │194 59 │   def to_iodata(?"), do: "&quot;"195    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~196    │197    └─ lib/phoenix_html/safe.ex:59: Phoenix.HTML.Safe.List.to_iodata/1198199    warning: the 1st pattern in clause will never match:200201        39202203    because it is expected to receive type:204205        dynamic(empty_list() or non_empty_list(term(), term()))206207    hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())208209    type warning found at:210    │211 60 │   def to_iodata(?'), do: "&#39;"212    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~213    │214    └─ lib/phoenix_html/safe.ex:60: Phoenix.HTML.Safe.List.to_iodata/1215216    warning: the 1st pattern in clause will never match:217218        {:safe, data}219220    because it is expected to receive type:221222        dynamic(empty_list() or non_empty_list(term(), term()))223224    hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())225226    type warning found at:227    │228 76 │   def to_iodata({:safe, data}) do229    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~230    │231    └─ lib/phoenix_html/safe.ex:76: Phoenix.HTML.Safe.List.to_iodata/1232233    warning: the following clause is redundant:234235        def to_iodata(other)236237    it has type:238239        dynamic(empty_list() or non_empty_list(term(), term()))240241    previous clauses have already matched on the following types:242243        non_empty_list(term(), term())244        empty_list()245246    │247 80 │   def to_iodata(other) do248    │       ~249    │250    └─ lib/phoenix_html/safe.ex:80:7: Phoenix.HTML.Safe.List.to_iodata/1251252    warning: the 1st pattern in clause will never match:253254        h255256    because it is expected to receive type:257258        dynamic(empty_list() or non_empty_list(term(), term()))259260    where "h" was given the type:261262        # type: integer()263        # from: lib/phoenix_html/safe.ex:62:25264        is_integer(h)265266    hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())267268    type warning found at:269    │270 62 │   def to_iodata(h) when is_integer(h) and h <= 255 do271    │                 ~272    │273    └─ lib/phoenix_html/safe.ex:62:17: Phoenix.HTML.Safe.List.to_iodata/1274275    warning: the 1st pattern in clause will never match:276277        h278279    because it is expected to receive type:280281        dynamic(empty_list() or non_empty_list(term(), term()))282283    where "h" was given the type:284285        # type: integer()286        # from: lib/phoenix_html/safe.ex:66:25287        is_integer(h)288289    hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())290291    type warning found at:292    │293 66 │   def to_iodata(h) when is_integer(h) do294    │                 ~295    │296    └─ lib/phoenix_html/safe.ex:66:17: Phoenix.HTML.Safe.List.to_iodata/1297298    warning: the 1st pattern in clause will never match:299300        h301302    because it is expected to receive type:303304        dynamic(empty_list() or non_empty_list(term(), term()))305306    where "h" was given the type:307308        # type: binary()309        # from: lib/phoenix_html/safe.ex:72:25310        is_binary(h)311312    hint: defimpl for List requires its callbacks to match exclusively on empty_list() or non_empty_list(term(), term())313314    type warning found at:315    │316 72 │   def to_iodata(h) when is_binary(h) do317    │                 ~318    │319    └─ lib/phoenix_html/safe.ex:72:17: Phoenix.HTML.Safe.List.to_iodata/1320321Generated phoenix_html app322warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"323  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/2324  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/1325  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/5326  (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/2327  (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/4328  (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/2329330==> phoenix_ecto331Compiling 7 files (.ex)332Generated phoenix_ecto app333==> phoenix_template334Compiling 4 files (.ex)335Generated phoenix_template app336==> phoenix_view337Compiling 1 file (.ex)338     warning: the variable "prefix_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator339     │340 655 │       <<prefix::binary-size(prefix_size), ^suffix::binary>> -> prefix341     │                             ~342     │343     └─ lib/phoenix_view.ex:655:29: Phoenix.View.unsuffix/2344345Generated phoenix_view app346==> tz347Compiling 15 files (.ex)348    warning: Application.fetch_env/2 is discouraged in the module body, use Application.compile_env/3 instead349    │350  3 │     case Application.fetch_env(:tz, :http_client) do351    │                      ~352    │353    └─ lib/http/http.ex:3:22: Tz.HTTP (module)354355    warning: using single-quoted strings to represent charlists is deprecated.356    Use ~c"" if you indeed want a charlist or use "" instead.357    You may run "mix format --migrate" to change all single-quoted358    strings to use the ~c sigil and fix this warning.359    │360 55 │       'africa',361    │       ~362    │363    └─ lib/iana_data_dir.ex:55:7364365    warning: using single-quoted strings to represent charlists is deprecated.366    Use ~c"" if you indeed want a charlist or use "" instead.367    You may run "mix format --migrate" to change all single-quoted368    strings to use the ~c sigil and fix this warning.369    │370 56 │       'antarctica',371    │       ~372    │373    └─ lib/iana_data_dir.ex:56:7374375    warning: using single-quoted strings to represent charlists is deprecated.376    Use ~c"" if you indeed want a charlist or use "" instead.377    You may run "mix format --migrate" to change all single-quoted378    strings to use the ~c sigil and fix this warning.379    │380 57 │       'asia',381    │       ~382    │383    └─ lib/iana_data_dir.ex:57:7384385    warning: using single-quoted strings to represent charlists is deprecated.386    Use ~c"" if you indeed want a charlist or use "" instead.387    You may run "mix format --migrate" to change all single-quoted388    strings to use the ~c sigil and fix this warning.389    │390 58 │       'australasia',391    │       ~392    │393    └─ lib/iana_data_dir.ex:58:7394395    warning: using single-quoted strings to represent charlists is deprecated.396    Use ~c"" if you indeed want a charlist or use "" instead.397    You may run "mix format --migrate" to change all single-quoted398    strings to use the ~c sigil and fix this warning.399    │400 59 │       'backward',401    │       ~402    │403    └─ lib/iana_data_dir.ex:59:7404405    warning: using single-quoted strings to represent charlists is deprecated.406    Use ~c"" if you indeed want a charlist or use "" instead.407    You may run "mix format --migrate" to change all single-quoted408    strings to use the ~c sigil and fix this warning.409    │410 60 │       'etcetera',411    │       ~412    │413    └─ lib/iana_data_dir.ex:60:7414415    warning: using single-quoted strings to represent charlists is deprecated.416    Use ~c"" if you indeed want a charlist or use "" instead.417    You may run "mix format --migrate" to change all single-quoted418    strings to use the ~c sigil and fix this warning.419    │420 61 │       'europe',421    │       ~422    │423    └─ lib/iana_data_dir.ex:61:7424425    warning: using single-quoted strings to represent charlists is deprecated.426    Use ~c"" if you indeed want a charlist or use "" instead.427    You may run "mix format --migrate" to change all single-quoted428    strings to use the ~c sigil and fix this warning.429    │430 62 │       'northamerica',431    │       ~432    │433    └─ lib/iana_data_dir.ex:62:7434435    warning: using single-quoted strings to represent charlists is deprecated.436    Use ~c"" if you indeed want a charlist or use "" instead.437    You may run "mix format --migrate" to change all single-quoted438    strings to use the ~c sigil and fix this warning.439    │440 63 │       'southamerica',441    │       ~442    │443    └─ lib/iana_data_dir.ex:63:7444445    warning: using single-quoted strings to represent charlists is deprecated.446    Use ~c"" if you indeed want a charlist or use "" instead.447    You may run "mix format --migrate" to change all single-quoted448    strings to use the ~c sigil and fix this warning.449    │450 64 │       'iso3166.tab',451    │       ~452    │453    └─ lib/iana_data_dir.ex:64:7454455    warning: using single-quoted strings to represent charlists is deprecated.456    Use ~c"" if you indeed want a charlist or use "" instead.457    You may run "mix format --migrate" to change all single-quoted458    strings to use the ~c sigil and fix this warning.459    │460 65 │       'zone1970.tab'461    │       ~462    │463    └─ lib/iana_data_dir.ex:65:7464465    warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead466    │467  3 │   @custom_data_dir Application.get_env(:tz, :data_dir)468    │                                ~469    │470    └─ lib/iana_data_dir.ex:3:32: Tz.IanaDataDir (module)471472    warning: Application.get_env/3 is discouraged in the module body, use Application.compile_env/3 instead473    │474  5 │   @build_periods_with_ongoing_dst_changes_until_year Application.get_env(:tz, :build_time_zone_periods_with_ongoing_dst_changes_until_year, 5 + NaiveDateTime.utc_now().year)475    │                                                                  ~476    │477    └─ lib/iana_file_parser.ex:5:66: Tz.IanaFileParser (module)478479    warning: Application.get_env/2 is discouraged in the module body, use Application.compile_env/3 instead480    │481 11 │   @reject_periods_before_year Application.get_env(:tz, :reject_time_zone_periods_before_year)482    │                                           ~483    │484    └─ lib/compiler.ex:11:43: Tz.Compiler (module)485486    warning: unused require Tz.IanaFileParser487    │488  4 │   require Tz.IanaFileParser489    │   ~490    │491    └─ lib/compiler.ex:4:3492493    warning: unused require Tz.PeriodsBuilder494    │495  5 │   require Tz.PeriodsBuilder496    │   ~497    │498    └─ lib/compiler.ex:5:3499500    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead501    │502 15 │           Logger.warn("Tz found a more recent time zone database available for download at #{link}")503    │                  ~504    │505    └─ lib/watch_periodically.ex:15:18: Tz.WatchPeriodically.watch/0506507Compiling lib/compiler_runner.ex (it's taking more than 10s)508    warning: nil.request/2 is undefined (module nil is not available or is yet to be defined)509    │510 27 │     case HTTP.get_http_client!().request("data.iana.org", "/time-zones/tzdb/version") do511    │                                  ~512    │513    └─ lib/updater.ex:27:34: Tz.Updater.fetch_iana_tz_version/0514    └─ lib/updater.ex:75:34: Tz.Updater.download_tz_database/1515516    warning: this clause of defp reject_periods_before_year/2 is never used (or it will always fail/warn when invoked)517    │518 65 │   defp reject_periods_before_year(periods, reject_before_year) do519    │        ~520    │521    └─ lib/compiler.ex:65:8: Tz.Compiler.reject_periods_before_year/2522523     warning: this clause of defp add_to_and_convert_date_tuple/4 is never used (or it will always fail/warn when invoked)524     │525 250 │   defp add_to_and_convert_date_tuple(:min, _, _, _), do: :min526     │        ~527     │528     └─ lib/periods_builder.ex:250:8: Tz.PeriodsBuilder.add_to_and_convert_date_tuple/4529530     warning: this clause of defp add_to_and_convert_date_tuple/4 is never used (or it will always fail/warn when invoked)531     │532 251 │   defp add_to_and_convert_date_tuple(:max, _, _, _), do: :max533     │        ~534     │535     └─ lib/periods_builder.ex:251:8: Tz.PeriodsBuilder.add_to_and_convert_date_tuple/4536537Generated tz app538==> tz_extra539Compiling 7 files (.ex)540    warning: unused require TzExtra.IanaFileParser541    │542  4 │   require TzExtra.IanaFileParser543    │   ~544    │545    └─ lib/compiler.ex:4:3546547    warning: unused require TzExtra.Compiler548    │549  3 │     require TzExtra.Compiler550    │     ~551    │552    └─ lib/changeset.ex:3:5553554Generated tz_extra app555==> ecto_sqlite3556Compiling 4 files (.ex)557     warning: using single-quoted strings to represent charlists is deprecated.558     Use ~c"" if you indeed want a charlist or use "" instead.559     You may run "mix format --migrate" to change all single-quoted560     strings to use the ~c sigil and fix this warning.561     │562 778 │         {['?'], counter + 1}563     │           ~564     │565     └─ lib/ecto/adapters/sqlite3/connection.ex:778:11566567      warning: using single-quoted strings to represent charlists is deprecated.568      Use ~c"" if you indeed want a charlist or use "" instead.569      You may run "mix format --migrate" to change all single-quoted570      strings to use the ~c sigil and fix this warning.571      │572 1177 │     '?'573      │     ~574      │575      └─ lib/ecto/adapters/sqlite3/connection.ex:1177:5576577    warning: function dump_cmd/3 required by behaviour Ecto.Adapter.Structure is not implemented (in module Ecto.Adapters.SQLite3)578    │579  1 │ defmodule Ecto.Adapters.SQLite3 do580    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~581    │582    └─ lib/ecto/adapters/sqlite3.ex:1: Ecto.Adapters.SQLite3 (module)583584    warning: function query_many/4 required by behaviour Ecto.Adapters.SQL.Connection is not implemented (in module Ecto.Adapters.SQLite3.Connection)585    │586  1 │ defmodule Ecto.Adapters.SQLite3.Connection do587    │ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~588    │589    └─ lib/ecto/adapters/sqlite3/connection.ex:1: Ecto.Adapters.SQLite3.Connection (module)590591     warning: the following clause is redundant:592593         def execute_ddl({:create, %Ecto.Migration.Index{} = index})594595     it has type:596597         dynamic({:create, %Ecto.Migration.Index{}})598599     previous clauses have already matched on the following types:600601         {:create, %Ecto.Migration.Table{}, term()}602         {:create_if_not_exists, %Ecto.Migration.Table{}, term()}603         {:drop, %Ecto.Migration.Table{}}604         {:drop, %Ecto.Migration.Table{}, term()}605         {:drop_if_exists, %Ecto.Migration.Table{}}606         {:drop_if_exists, %Ecto.Migration.Table{}, term()}607         {:alter, %Ecto.Migration.Table{}, term()}608         {:create, %Ecto.Migration.Index{}}609         {:create_if_not_exists, %Ecto.Migration.Index{}}610         {:drop, %Ecto.Migration.Index{}}611         {:drop, %Ecto.Migration.Index{}, term()}612         {:drop_if_exists, %Ecto.Migration.Index{}}613         {:drop_if_exists, %Ecto.Migration.Index{}, term()}614         {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}615         {:rename, %Ecto.Migration.Table{}, term(), term()}616617     │618 560 │   def execute_ddl({:create, %Index{} = index}) do619     │       ~620     │621     └─ lib/ecto/adapters/sqlite3/connection.ex:560:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/1622623     warning: the following clause is redundant:624625         def execute_ddl({:create_if_not_exists, %Ecto.Migration.Index{} = index})626627     it has type:628629         dynamic({:create_if_not_exists, %Ecto.Migration.Index{}})630631     previous clauses have already matched on the following types:632633         {:create, %Ecto.Migration.Table{}, term()}634         {:create_if_not_exists, %Ecto.Migration.Table{}, term()}635         {:drop, %Ecto.Migration.Table{}}636         {:drop, %Ecto.Migration.Table{}, term()}637         {:drop_if_exists, %Ecto.Migration.Table{}}638         {:drop_if_exists, %Ecto.Migration.Table{}, term()}639         {:alter, %Ecto.Migration.Table{}, term()}640         {:create, %Ecto.Migration.Index{}}641         {:create_if_not_exists, %Ecto.Migration.Index{}}642         {:drop, %Ecto.Migration.Index{}}643         {:drop, %Ecto.Migration.Index{}, term()}644         {:drop_if_exists, %Ecto.Migration.Index{}}645         {:drop_if_exists, %Ecto.Migration.Index{}, term()}646         {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}647         {:rename, %Ecto.Migration.Table{}, term(), term()}648649     │650 582 │   def execute_ddl({:create_if_not_exists, %Index{} = index}) do651     │       ~652     │653     └─ lib/ecto/adapters/sqlite3/connection.ex:582:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/1654655     warning: the following clause is redundant:656657         def execute_ddl({:drop, %Ecto.Migration.Index{} = index})658659     it has type:660661         dynamic({:drop, %Ecto.Migration.Index{}})662663     previous clauses have already matched on the following types:664665         {:create, %Ecto.Migration.Table{}, term()}666         {:create_if_not_exists, %Ecto.Migration.Table{}, term()}667         {:drop, %Ecto.Migration.Table{}}668         {:drop, %Ecto.Migration.Table{}, term()}669         {:drop_if_exists, %Ecto.Migration.Table{}}670         {:drop_if_exists, %Ecto.Migration.Table{}, term()}671         {:alter, %Ecto.Migration.Table{}, term()}672         {:create, %Ecto.Migration.Index{}}673         {:create_if_not_exists, %Ecto.Migration.Index{}}674         {:drop, %Ecto.Migration.Index{}}675         {:drop, %Ecto.Migration.Index{}, term()}676         {:drop_if_exists, %Ecto.Migration.Index{}}677         {:drop_if_exists, %Ecto.Migration.Index{}, term()}678         {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}679         {:rename, %Ecto.Migration.Table{}, term(), term()}680         {:create, %Ecto.Migration.Constraint{}}681682     │683 609 │   def execute_ddl({:drop, %Index{} = index}) do684     │       ~685     │686     └─ lib/ecto/adapters/sqlite3/connection.ex:609:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/1687688     warning: the following clause is redundant:689690         def execute_ddl({:drop, %Ecto.Migration.Index{} = index, _mode})691692     it has type:693694         dynamic({:drop, %Ecto.Migration.Index{}, term()})695696     previous clauses have already matched on the following types:697698         {:create, %Ecto.Migration.Table{}, term()}699         {:create_if_not_exists, %Ecto.Migration.Table{}, term()}700         {:drop, %Ecto.Migration.Table{}}701         {:drop, %Ecto.Migration.Table{}, term()}702         {:drop_if_exists, %Ecto.Migration.Table{}}703         {:drop_if_exists, %Ecto.Migration.Table{}, term()}704         {:alter, %Ecto.Migration.Table{}, term()}705         {:create, %Ecto.Migration.Index{}}706         {:create_if_not_exists, %Ecto.Migration.Index{}}707         {:drop, %Ecto.Migration.Index{}}708         {:drop, %Ecto.Migration.Index{}, term()}709         {:drop_if_exists, %Ecto.Migration.Index{}}710         {:drop_if_exists, %Ecto.Migration.Index{}, term()}711         {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}712         {:rename, %Ecto.Migration.Table{}, term(), term()}713         {:create, %Ecto.Migration.Constraint{}}714715     │716 619 │   def execute_ddl({:drop, %Index{} = index, _mode}) do717     │       ~718     │719     └─ lib/ecto/adapters/sqlite3/connection.ex:619:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/1720721     warning: the following clause is redundant:722723         def execute_ddl({:drop_if_exists, %Ecto.Migration.Index{} = index})724725     it has type:726727         dynamic({:drop_if_exists, %Ecto.Migration.Index{}})728729     previous clauses have already matched on the following types:730731         {:create, %Ecto.Migration.Table{}, term()}732         {:create_if_not_exists, %Ecto.Migration.Table{}, term()}733         {:drop, %Ecto.Migration.Table{}}734         {:drop, %Ecto.Migration.Table{}, term()}735         {:drop_if_exists, %Ecto.Migration.Table{}}736         {:drop_if_exists, %Ecto.Migration.Table{}, term()}737         {:alter, %Ecto.Migration.Table{}, term()}738         {:create, %Ecto.Migration.Index{}}739         {:create_if_not_exists, %Ecto.Migration.Index{}}740         {:drop, %Ecto.Migration.Index{}}741         {:drop, %Ecto.Migration.Index{}, term()}742         {:drop_if_exists, %Ecto.Migration.Index{}}743         {:drop_if_exists, %Ecto.Migration.Index{}, term()}744         {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}745         {:rename, %Ecto.Migration.Table{}, term(), term()}746         {:create, %Ecto.Migration.Constraint{}}747748     │749 624 │   def execute_ddl({:drop_if_exists, %Index{} = index}) do750     │       ~751     │752     └─ lib/ecto/adapters/sqlite3/connection.ex:624:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/1753754     warning: the following clause is redundant:755756         def execute_ddl({:drop_if_exists, %Ecto.Migration.Index{} = index, _mode})757758     it has type:759760         dynamic({:drop_if_exists, %Ecto.Migration.Index{}, term()})761762     previous clauses have already matched on the following types:763764         {:create, %Ecto.Migration.Table{}, term()}765         {:create_if_not_exists, %Ecto.Migration.Table{}, term()}766         {:drop, %Ecto.Migration.Table{}}767         {:drop, %Ecto.Migration.Table{}, term()}768         {:drop_if_exists, %Ecto.Migration.Table{}}769         {:drop_if_exists, %Ecto.Migration.Table{}, term()}770         {:alter, %Ecto.Migration.Table{}, term()}771         {:create, %Ecto.Migration.Index{}}772         {:create_if_not_exists, %Ecto.Migration.Index{}}773         {:drop, %Ecto.Migration.Index{}}774         {:drop, %Ecto.Migration.Index{}, term()}775         {:drop_if_exists, %Ecto.Migration.Index{}}776         {:drop_if_exists, %Ecto.Migration.Index{}, term()}777         {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}778         {:rename, %Ecto.Migration.Table{}, term(), term()}779         {:create, %Ecto.Migration.Constraint{}}780781     │782 634 │   def execute_ddl({:drop_if_exists, %Index{} = index, _mode}) do783     │       ~784     │785     └─ lib/ecto/adapters/sqlite3/connection.ex:634:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/1786787     warning: the following clause is redundant:788789         def execute_ddl(790               {:rename, %Ecto.Migration.Table{} = current_table, %Ecto.Migration.Table{} = new_table}791             )792793     it has type:794795         dynamic({:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}})796797     previous clauses have already matched on the following types:798799         {:create, %Ecto.Migration.Table{}, term()}800         {:create_if_not_exists, %Ecto.Migration.Table{}, term()}801         {:drop, %Ecto.Migration.Table{}}802         {:drop, %Ecto.Migration.Table{}, term()}803         {:drop_if_exists, %Ecto.Migration.Table{}}804         {:drop_if_exists, %Ecto.Migration.Table{}, term()}805         {:alter, %Ecto.Migration.Table{}, term()}806         {:create, %Ecto.Migration.Index{}}807         {:create_if_not_exists, %Ecto.Migration.Index{}}808         {:drop, %Ecto.Migration.Index{}}809         {:drop, %Ecto.Migration.Index{}, term()}810         {:drop_if_exists, %Ecto.Migration.Index{}}811         {:drop_if_exists, %Ecto.Migration.Index{}, term()}812         {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}813         {:rename, %Ecto.Migration.Table{}, term(), term()}814         {:create, %Ecto.Migration.Constraint{}}815         {:drop, %Ecto.Migration.Constraint{}, term()}816         {:drop_if_exists, %Ecto.Migration.Constraint{}, term()}817818     │819 649 │   def execute_ddl({:rename, %Table{} = current_table, %Table{} = new_table}) do820     │       ~821     │822     └─ lib/ecto/adapters/sqlite3/connection.ex:649:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/1823824     warning: the following clause is redundant:825826         def execute_ddl({:rename, %Ecto.Migration.Table{} = table, current_column, new_column})827828     it has type:829830         dynamic({:rename, %Ecto.Migration.Table{}, term(), term()})831832     previous clauses have already matched on the following types:833834         {:create, %Ecto.Migration.Table{}, term()}835         {:create_if_not_exists, %Ecto.Migration.Table{}, term()}836         {:drop, %Ecto.Migration.Table{}}837         {:drop, %Ecto.Migration.Table{}, term()}838         {:drop_if_exists, %Ecto.Migration.Table{}}839         {:drop_if_exists, %Ecto.Migration.Table{}, term()}840         {:alter, %Ecto.Migration.Table{}, term()}841         {:create, %Ecto.Migration.Index{}}842         {:create_if_not_exists, %Ecto.Migration.Index{}}843         {:drop, %Ecto.Migration.Index{}}844         {:drop, %Ecto.Migration.Index{}, term()}845         {:drop_if_exists, %Ecto.Migration.Index{}}846         {:drop_if_exists, %Ecto.Migration.Index{}, term()}847         {:rename, %Ecto.Migration.Table{}, %Ecto.Migration.Table{}}848         {:rename, %Ecto.Migration.Table{}, term(), term()}849         {:create, %Ecto.Migration.Constraint{}}850         {:drop, %Ecto.Migration.Constraint{}, term()}851         {:drop_if_exists, %Ecto.Migration.Constraint{}, term()}852853     │854 661 │   def execute_ddl({:rename, %Table{} = table, current_column, new_column}) do855     │       ~856     │857     └─ lib/ecto/adapters/sqlite3/connection.ex:661:7: Ecto.Adapters.SQLite3.Connection.execute_ddl/1858859Generated ecto_sqlite3 app860warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"861  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/2862  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/1863  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/5864  (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/2865  (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/4866  (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/2867868==> phoenix869Compiling 69 files (.ex)870     warning: using single-quoted strings to represent charlists is deprecated.871     Use ~c"" if you indeed want a charlist or use "" instead.872     You may run "mix format --migrate" to change all single-quoted873     strings to use the ~c sigil and fix this warning.874     │875 258 │           notBefore: {:utcTime, '#{not_before}000000Z'},876     │                                 ~877     │878     └─ lib/mix/tasks/phx.gen.cert.ex:258:33879880     warning: using single-quoted strings to represent charlists is deprecated.881     Use ~c"" if you indeed want a charlist or use "" instead.882     You may run "mix format --migrate" to change all single-quoted883     strings to use the ~c sigil and fix this warning.884     │885 259 │           notAfter: {:utcTime, '#{not_after}000000Z'}886     │                                ~887     │888     └─ lib/mix/tasks/phx.gen.cert.ex:259:32889890    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead891    │892 50 │             Logger.warn(893    │                    ~894    │895    └─ lib/phoenix/code_reloader/server.ex:50:20: Phoenix.CodeReloader.Server.handle_call/3896897     warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.898899     This error happens when you have function calls without parentheses inside keywords. For example:900901         function(arg, one: nested_call a, b, c)902         function(arg, one: if expr, do: :this, else: :that)903904     In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses:905906         function(arg, one: if(expr, do: :this, else: :that))907         function(arg, one: nested_call(a, b, c))908909     Ambiguity found at:910     │911 998 │   defp get_disposition_type(other), do: raise ArgumentError, "expected :disposition to be :attachment or :inline, got: #{inspect(other)}"912     │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~913     │914     └─ lib/phoenix/controller.ex:998915916    warning: unused require Logger917    │918  9 │   require Logger919    │   ~920    │921    └─ lib/phoenix/config.ex:9:3922923     warning: unused require Logger924     │925 259 │   require Logger926     │   ~927     │928     └─ lib/phoenix/endpoint.ex:259:3929930      warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead931      │932 1009 │       Logger.warn "send_download/3 has been invoked during an AJAX request. " <>933      │              ~934      │935      └─ lib/phoenix/controller.ex:1009:14: Phoenix.Controller.warn_if_ajax/1936937    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead938    │939 34 │             Logger.warn("no configuration found for otp_app #{inspect(otp_app)} and module #{inspect(mod)}")940    │                    ~941    │942    └─ lib/phoenix/endpoint/supervisor.ex:34:20: Phoenix.Endpoint.Supervisor.init/1943944    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead945    │946 57 │       Logger.warn(":instrumenters configuration for #{inspect(mod)} is deprecated and has no effect")947    │              ~948    │949    └─ lib/phoenix/endpoint/supervisor.ex:57:14: Phoenix.Endpoint.Supervisor.init/1950951    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead952    │953 78 │       Logger.warn """954    │              ~955    │956    └─ lib/phoenix/endpoint/supervisor.ex:78:14: Phoenix.Endpoint.Supervisor.pubsub_children/2957958     warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead959     │960 264 │       Logger.warn("url: [host: ...] configuration value #{inspect(host)} for #{inspect(endpoint)} is invalid")961     │              ~962     │963     └─ lib/phoenix/endpoint/supervisor.ex:264:14: Phoenix.Endpoint.Supervisor.build_url/2964965    warning: unused require Phoenix.Endpoint966    │967  6 │   require Phoenix.Endpoint968    │   ~969    │970    └─ lib/phoenix/controller.ex:6:3971972    warning: the variable "prefix_size" is accessed inside size(...) of a bitstring but it was defined outside of the match. You must precede it with the pin operator973    │974 46 │       <<prefix::binary-size(prefix_size), ^suffix::binary>> -> prefix975    │                             ~976    │977    └─ lib/phoenix/naming.ex:46:29: Phoenix.Naming.unsuffix/2978979    warning: unused require Phoenix.Endpoint980    │981 19 │   require Phoenix.Endpoint982    │   ~983    │984    └─ lib/phoenix/endpoint/render_errors.ex:19:3985986    warning: missing parentheses for expression following "do:" keyword. Parentheses are required to solve ambiguity inside keywords.987988    This error happens when you have function calls without parentheses inside keywords. For example:989990        function(arg, one: nested_call a, b, c)991        function(arg, one: if expr, do: :this, else: :that)992993    In the examples above, we don't know if the arguments "b" and "c" apply to the function "function" or "nested_call". Or if the keywords "do" and "else" apply to the function "function" or "if". You can solve this by explicitly adding parentheses:994995        function(arg, one: if(expr, do: :this, else: :that))996        function(arg, one: nested_call(a, b, c))997998    Ambiguity found at:999    │1000 71 │     unless actions -- supported_actions == [], do: raise ArgumentError, """1001    │     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1002    │1003    └─ lib/phoenix/router/resource.ex:7110041005     warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead1006     │1007 653 │         Logger.warn fn -> "Ignoring unmatched topic \"#{topic}\" in #{inspect(socket.handler)}" end1008     │                ~1009     │1010     └─ lib/phoenix/socket.ex:653:16: Phoenix.Socket.handle_in/410111012    warning: unused require Phoenix.Endpoint1013    │1014  6 │   require Phoenix.Endpoint1015    │   ~1016    │1017    └─ lib/phoenix/channel/server.ex:6:310181019     warning: unused require Phoenix.Endpoint1020     │1021 192 │   require Phoenix.Endpoint1022     │   ~1023     │1024     └─ lib/phoenix/socket.ex:192:310251026    warning: unused require Logger1027    │1028 93 │   require Logger1029    │   ~1030    │1031    └─ lib/phoenix/token.ex:93:310321033     warning: comparison between distinct types found:10341035         merge_all != []10361037     given types:10381039         dynamic(non_empty_list({atom(), term()})) != empty_list()10401041     where "merge_all" was given the type:10421043         # type: dynamic(non_empty_list({atom(), term()}))1044         # from: lib/phoenix/router/route.ex:111:151045         merge_all = merge_params ++ merge_private ++ merge_assigns10461047     While Elixir can compare across all types, you are comparing across types which are always disjoint, and the result is either always true or always false10481049     type warning found at:1050     │1051 113 │     if merge_all != [] do1052     │                  ~1053     │1054     └─ lib/phoenix/router/route.ex:113:18: Phoenix.Router.Route.build_prepare/110551056    warning: a struct for Plug.Conn is expected on struct update:10571058        %Plug.Conn{conn | state: :sent}10591060    but got type:10611062        dynamic()10631064    where "conn" was given the type:10651066        # type: dynamic()1067        # from: lib/phoenix/endpoint/render_errors.ex:57:171068        conn10691070    when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"10711072    type warning found at:1073    │1074 61 │         %Plug.Conn{conn | state: :sent}1075    │         ~1076    │1077    └─ lib/phoenix/endpoint/render_errors.ex:61:9: Phoenix.Endpoint.RenderErrors.__catch__/510781079     warning: a struct for Plug.Conn is expected on struct update:10801081         %Plug.Conn{conn | query_params: %{}, params: %{}}10821083     but got type:10841085         dynamic(%{..., params: %Plug.Conn.Unfetched{}})10861087     where "conn" was given the types:10881089         # type: dynamic(%{..., params: term()})1090         # from: lib/phoenix/endpoint/render_errors.ex:124:171091         conn.params10921093         # type: dynamic(%{..., params: %Plug.Conn.Unfetched{}})1094         # from: lib/phoenix/endpoint/render_errors.ex:124:171095         conn.params10961097     when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"10981099     type warning found at:1100     │1101 125 │         %Plug.Conn.Unfetched{} -> %Plug.Conn{conn | query_params: %{}, params: %{}}1102     │                                   ~1103     │1104     └─ lib/phoenix/endpoint/render_errors.ex:125:35: Phoenix.Endpoint.RenderErrors.maybe_fetch_query_params/111051106     warning: a struct for Plug.Conn is expected on struct update:11071108         %Plug.Conn{conn | query_params: %{}, params: params}11091110     but got type:11111112         dynamic(%{..., params: not %Plug.Conn.Unfetched{}})11131114     where "conn" was given the types:11151116         # type: dynamic(%{..., params: term()})1117         # from: lib/phoenix/endpoint/render_errors.ex:124:171118         conn.params11191120         # type: dynamic(%{..., params: not %Plug.Conn.Unfetched{}})1121         # from: lib/phoenix/endpoint/render_errors.ex:124:171122         conn.params11231124     when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"11251126     type warning found at:1127     │1128 126 │         params -> %Plug.Conn{conn | query_params: %{}, params: params}1129     │                   ~1130     │1131     └─ lib/phoenix/endpoint/render_errors.ex:126:19: Phoenix.Endpoint.RenderErrors.maybe_fetch_query_params/111321133    warning: incompatible types given to socket_children/1:11341135        socket_children(mod)11361137    given types:11381139        -dynamic(atom())-11401141    but expected one of:11421143        %{..., __sockets__: term()}11441145    where "mod" was given the types:11461147        # type: dynamic(atom() or binary())1148        # from: lib/phoenix/endpoint/supervisor.ex:27:411149        defaults(otp_app, mod)11501151        # type: dynamic(atom())1152        # from: lib/phoenix/endpoint/supervisor.ex:31:161153        mod.init(:supervisor, env_conf)11541155    type warning found at:1156    │1157 67 │       socket_children(mod) ++1158    │       ~1159    │1160    └─ lib/phoenix/endpoint/supervisor.ex:67:7: Phoenix.Endpoint.Supervisor.init/111611162      warning: a struct for Plug.Conn is expected on struct update:11631164          %Plug.Conn{conn | params: params}11651166      but got type:11671168          dynamic(%{..., params: map()})11691170      where "conn" was given the type:11711172          # type: dynamic(%{..., params: map()})1173          # from: lib/phoenix/controller.ex:1036:171174          Map.get(conn.params, required_key)11751176      when defining the variable "conn", you must also pattern match on "%Plug.Conn{}"11771178      type warning found at:1179      │1180 1043 │     %Plug.Conn{conn | params: params}1181      │     ~1182      │1183      └─ lib/phoenix/controller.ex:1043:5: Phoenix.Controller.scrub_params/211841185     warning: expected a module (an atom) when invoking compress_file/2 in expression:11861187         compressor.compress_file(file.digested_filename, file.digested_content)11881189     where "compressor" was given the type:11901191         # type: dynamic(%{..., file_extensions: non_empty_list(term(), term())})1192         # from: lib/phoenix/digester.ex:167:281193         [file_extension | _] = compressor.file_extensions11941195     where "file" was given the type:11961197         # type: dynamic(%{..., relative_path: term()})1198         # from: lib/phoenix/digester.ex:161:171199         Path.join(output_path, file.relative_path)12001201     type warning found at:1202     │1203 170 │              compressor.compress_file(file.digested_filename, file.digested_content) do1204     │                         ~1205     │1206     └─ lib/phoenix/digester.ex:170:25: Phoenix.Digester.write_to_disk/212071208Generated phoenix app1209warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"1210  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/21211  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/11212  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/51213  (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/21214  (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/41215  (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/212161217==> phoenix_live_view1218Compiling 31 files (.ex)1219     warning: using single-quoted strings to represent charlists is deprecated.1220     Use ~c"" if you indeed want a charlist or use "" instead.1221     You may run "mix format --migrate" to change all single-quoted1222     strings to use the ~c sigil and fix this warning.1223     │1224 319 │         {'LiveView', view},1225     │          ~1226     │1227     └─ lib/phoenix_live_view/channel.ex:319:1012281229     warning: using single-quoted strings to represent charlists is deprecated.1230     Use ~c"" if you indeed want a charlist or use "" instead.1231     You may run "mix format --migrate" to change all single-quoted1232     strings to use the ~c sigil and fix this warning.1233     │1234 320 │         {'Parent pid', parent_pid},1235     │          ~1236     │1237     └─ lib/phoenix_live_view/channel.ex:320:1012381239     warning: using single-quoted strings to represent charlists is deprecated.1240     Use ~c"" if you indeed want a charlist or use "" instead.1241     You may run "mix format --migrate" to change all single-quoted1242     strings to use the ~c sigil and fix this warning.1243     │1244 321 │         {'Transport pid', transport_pid},1245     │          ~1246     │1247     └─ lib/phoenix_live_view/channel.ex:321:1012481249     warning: using single-quoted strings to represent charlists is deprecated.1250     Use ~c"" if you indeed want a charlist or use "" instead.1251     You may run "mix format --migrate" to change all single-quoted1252     strings to use the ~c sigil and fix this warning.1253     │1254 322 │         {'Topic', topic},1255     │          ~1256     │1257     └─ lib/phoenix_live_view/channel.ex:322:1012581259     warning: using single-quoted strings to represent charlists is deprecated.1260     Use ~c"" if you indeed want a charlist or use "" instead.1261     You may run "mix format --migrate" to change all single-quoted1262     strings to use the ~c sigil and fix this warning.1263     │1264 323 │         {'Components count', map_size(cid_to_component)}1265     │          ~1266     │1267     └─ lib/phoenix_live_view/channel.ex:323:1012681269     warning: using single-quoted strings to represent charlists is deprecated.1270     Use ~c"" if you indeed want a charlist or use "" instead.1271     You may run "mix format --migrate" to change all single-quoted1272     strings to use the ~c sigil and fix this warning.1273     │1274 329 │     [data: [{'State', state}]]1275     │              ~1276     │1277     └─ lib/phoenix_live_view/channel.ex:329:1412781279     warning: using single-quoted strings to represent charlists is deprecated.1280     Use ~c"" if you indeed want a charlist or use "" instead.1281     You may run "mix format --migrate" to change all single-quoted1282     strings to use the ~c sigil and fix this warning.1283     │1284 112 │   @codepoints '\s\n\r\t'1285     │               ~1286     │1287     └─ lib/phoenix_live_view/html_algebra.ex:112:1512881289     warning: using single-quoted strings to represent charlists is deprecated.1290     Use ~c"" if you indeed want a charlist or use "" instead.1291     You may run "mix format --migrate" to change all single-quoted1292     strings to use the ~c sigil and fix this warning.1293     │1294 125 │     do: :binary.first(text) in '\n\r'1295     │                                ~1296     │1297     └─ lib/phoenix_live_view/html_algebra.ex:125:3212981299     warning: using single-quoted strings to represent charlists is deprecated.1300     Use ~c"" if you indeed want a charlist or use "" instead.1301     You may run "mix format --migrate" to change all single-quoted1302     strings to use the ~c sigil and fix this warning.1303     │1304 130 │     do: :binary.last(text) in '\n\r'1305     │                               ~1306     │1307     └─ lib/phoenix_live_view/html_algebra.ex:130:3113081309     warning: using single-quoted strings to represent charlists is deprecated.1310     Use ~c"" if you indeed want a charlist or use "" instead.1311     You may run "mix format --migrate" to change all single-quoted1312     strings to use the ~c sigil and fix this warning.1313     │1314 503 │   defp count_newlines_until_text(<<char, rest::binary>>, counter) when char in '\s\t\r',1315     │                                                                                ~1316     │1317     └─ lib/phoenix_live_view/html_formatter.ex:503:8013181319     warning: using single-quoted strings to represent charlists is deprecated.1320     Use ~c"" if you indeed want a charlist or use "" instead.1321     You may run "mix format --migrate" to change all single-quoted1322     strings to use the ~c sigil and fix this warning.1323     │1324 536 │     do: if(String.trim_leading(text) == "", do: false, else: !(:binary.last(text) in '\s\t'))1325     │                                                                                      ~1326     │1327     └─ lib/phoenix_live_view/html_formatter.ex:536:8613281329     warning: using single-quoted strings to represent charlists is deprecated.1330     Use ~c"" if you indeed want a charlist or use "" instead.1331     You may run "mix format --migrate" to change all single-quoted1332     strings to use the ~c sigil and fix this warning.1333     │1334 546 │       if String.trim_leading(text) != "" and :binary.first(text) not in '\s\t\n\r' do1335     │                                                                         ~1336     │1337     └─ lib/phoenix_live_view/html_formatter.ex:546:7313381339    warning: using single-quoted strings to represent charlists is deprecated.1340    Use ~c"" if you indeed want a charlist or use "" instead.1341    You may run "mix format --migrate" to change all single-quoted1342    strings to use the ~c sigil and fix this warning.1343    │1344  3 │   @space_chars '\s\t\f'1345    │                ~1346    │1347    └─ lib/phoenix_live_view/html_tokenizer.ex:3:1613481349    warning: using single-quoted strings to represent charlists is deprecated.1350    Use ~c"" if you indeed want a charlist or use "" instead.1351    You may run "mix format --migrate" to change all single-quoted1352    strings to use the ~c sigil and fix this warning.1353    │1354  4 │   @quote_chars '"\''1355    │                ~1356    │1357    └─ lib/phoenix_live_view/html_tokenizer.ex:4:1613581359    warning: using single-quoted strings to represent charlists is deprecated.1360    Use ~c"" if you indeed want a charlist or use "" instead.1361    You may run "mix format --migrate" to change all single-quoted1362    strings to use the ~c sigil and fix this warning.1363    │1364  5 │   @stop_chars '>/=\r\n' ++ @quote_chars ++ @space_chars1365    │               ~1366    │1367    └─ lib/phoenix_live_view/html_tokenizer.ex:5:1513681369    warning: unused require Logger1370    │1371 25 │   require Logger1372    │   ~1373    │1374    └─ lib/phoenix_live_view/socket.ex:25:313751376     warning: unused require Phoenix.ChannelTest1377     │1378 179 │   require Phoenix.ChannelTest1379     │   ~1380     │1381     └─ lib/phoenix_live_view/test/live_view_test.ex:179:313821383     warning: unused require Phoenix.ConnTest1384     │1385 178 │   require Phoenix.ConnTest1386     │   ~1387     │1388     └─ lib/phoenix_live_view/test/live_view_test.ex:178:313891390    warning: unused require Phoenix.ChannelTest1391    │1392  4 │   require Phoenix.ChannelTest1393    │   ~1394    │1395    └─ lib/phoenix_live_view/test/upload_client.ex:4:313961397    warning: unused require Logger1398    │1399  6 │   require Logger1400    │   ~1401    │1402    └─ lib/phoenix_live_view/upload_channel.ex:6:314031404     warning: a struct for Phoenix.LiveView.Socket is expected on struct update:14051406         %Phoenix.LiveView.Socket{1407           socket1408           | private: Map.put(socket.private, :phoenix_live_layout, {mod, template})1409         }14101411     but got type:14121413         dynamic()14141415     where "socket" was given the type:14161417         # type: dynamic()1418         # from: lib/phoenix_live_view/utils.ex:459:211419         socket14201421     when defining the variable "socket", you must also pattern match on "%Phoenix.LiveView.Socket{}"14221423     type warning found at:1424     │1425 460 │     %Socket{socket | private: Map.put(socket.private, :phoenix_live_layout, {mod, template})}1426     │     ~1427     │1428     └─ lib/phoenix_live_view/utils.ex:460:5: Phoenix.LiveView.Utils.do_mount_opt/314291430     warning: a struct for Phoenix.LiveView.Socket is expected on struct update:14311432         %Phoenix.LiveView.Socket{socket | private: Map.put(socket.private, :phoenix_live_layout, false)}14331434     but got type:14351436         dynamic()14371438     where "socket" was given the type:14391440         # type: dynamic()1441         # from: lib/phoenix_live_view/utils.ex:463:211442         socket14431444     when defining the variable "socket", you must also pattern match on "%Phoenix.LiveView.Socket{}"14451446     type warning found at:1447     │1448 464 │     %Socket{socket | private: Map.put(socket.private, :phoenix_live_layout, false)}1449     │     ~1450     │1451     └─ lib/phoenix_live_view/utils.ex:464:5: Phoenix.LiveView.Utils.do_mount_opt/314521453     warning: a struct for Phoenix.LiveView.Socket is expected on struct update:14541455         %Phoenix.LiveView.Socket{1456           socket1457           | assigns: Map.merge(temp_assigns, socket.assigns),1458             private: Map.put(socket.private, :temporary_assigns, temp_assigns)1459         }14601461     but got type:14621463         dynamic()14641465     where "socket" was given the type:14661467         # type: dynamic()1468         # from: lib/phoenix_live_view/utils.ex:473:211469         socket14701471     when defining the variable "socket", you must also pattern match on "%Phoenix.LiveView.Socket{}"14721473     type warning found at:1474     │1475 480 │     %Socket{1476     │     ~1477     │1478     └─ lib/phoenix_live_view/utils.ex:480:5: Phoenix.LiveView.Utils.do_mount_opt/314791480     warning: a struct for Phoenix.LiveView.Socket is expected on struct update:14811482         %Phoenix.LiveView.Socket{1483           socket1484           | assigns: %Phoenix.LiveView.Socket.AssignsNotInSocket{__assigns__: assigns}1485         }14861487     but got type:14881489         dynamic(%{..., assigns: term()})14901491     where "socket" was given the type:14921493         # type: dynamic(%{..., assigns: term()})1494         # from: lib/phoenix_live_view/utils.ex:491:431495         %{assigns: assigns} = socket14961497     when defining the variable "socket", you must also pattern match on "%Phoenix.LiveView.Socket{}"14981499     type warning found at:1500     │1501 492 │     socket = %Socket{socket | assigns: %Socket.AssignsNotInSocket{__assigns__: assigns}}1502     │              ~1503     │1504     └─ lib/phoenix_live_view/utils.ex:492:14: Phoenix.LiveView.Utils.render_assigns/115051506      warning: a struct for Phoenix.HTML.Form is expected on struct update:15071508          %Phoenix.HTML.Form{Phoenix.HTML.FormData.to_form(form_for, form_options) | action: action || "#"}15091510      but got type:15111512          dynamic()15131514      where "form_for" was given the type:15151516          # type: dynamic(not false and not nil)1517          # from: lib/phoenix_live_view/helpers.ex:1101:141518          form_for = assigns[:for] || :erlang.error(ArgumentError.exception("missing :for assign to form"))15191520      where "form_options" was given the type:15211522          # type: dynamic(list({term(), term()}))1523          # from: lib/phoenix_live_view/helpers.ex:1102:181524          form_options = assigns_to_attributes(assigns, [:action, :for])15251526      you must assign "Phoenix.HTML.FormData.to_form(form_for, form_options)" to variable and pattern match on "%Phoenix.HTML.Form{}"15271528      type warning found at:1529      │1530 1106 │       form = %Phoenix.HTML.Form{1531      │              ~1532      │1533      └─ lib/phoenix_live_view/helpers.ex:1106:14: Phoenix.LiveView.Helpers.form/115341535     warning: a struct for Phoenix.LiveView.UploadEntry is expected on struct update:15361537         %Phoenix.LiveView.UploadEntry{entry | preflighted?: true}15381539     but got type:15401541         dynamic()15421543     where "entry" was given the type:15441545         # type: dynamic()1546         # from: lib/phoenix_live_view/upload_config.ex:339:281547         entry <- conf.entries15481549     when defining the variable "entry", you must also pattern match on "%Phoenix.LiveView.UploadEntry{}"15501551     type warning found at:1552     │1553 339 │       | entries: for(entry <- conf.entries, do: %UploadEntry{entry | preflighted?: true})1554     │                                                 ~1555     │1556     └─ lib/phoenix_live_view/upload_config.ex:339:49: Phoenix.LiveView.UploadConfig.mark_preflighted/115571558     warning: a struct for Phoenix.LiveView.UploadEntry is expected on struct update:15591560         %Phoenix.LiveView.UploadEntry{entry | valid?: true, uuid: generate_uuid()}15611562     but got type:15631564         dynamic()15651566     where "entry" was given the type:15671568         # type: dynamic()1569         # from: lib/phoenix_live_view/upload_config.ex:539:301570         entry15711572     when defining the variable "entry", you must also pattern match on "%Phoenix.LiveView.UploadEntry{}"15731574     type warning found at:1575     │1576 540 │     entry = %UploadEntry{entry | valid?: true, uuid: generate_uuid()}1577     │             ~1578     │1579     └─ lib/phoenix_live_view/upload_config.ex:540:13: Phoenix.LiveView.UploadConfig.put_valid_entry/215801581     warning: a struct for Phoenix.LiveView.UploadEntry is expected on struct update:15821583         %Phoenix.LiveView.UploadEntry{entry | valid?: false}15841585     but got type:15861587         dynamic()15881589     where "entry" was given the type:15901591         # type: dynamic()1592         # from: lib/phoenix_live_view/upload_config.ex:552:321593         entry15941595     when defining the variable "entry", you must also pattern match on "%Phoenix.LiveView.UploadEntry{}"15961597     type warning found at:1598     │1599 553 │     entry = %UploadEntry{entry | valid?: false}1600     │             ~1601     │1602     └─ lib/phoenix_live_view/upload_config.ex:553:13: Phoenix.LiveView.UploadConfig.put_invalid_entry/316031604     warning: a struct for Phoenix.LiveView.UploadEntry is expected on struct update:16051606         %Phoenix.LiveView.UploadEntry{entry | cancelled?: true}16071608     but got type:16091610         dynamic()16111612     where "entry" was given the type:16131614         # type: dynamic()1615         # from: lib/phoenix_live_view/upload_config.ex:635:421616         entry16171618     when defining the variable "entry", you must also pattern match on "%Phoenix.LiveView.UploadEntry{}"16191620     type warning found at:1621     │1622 635 │         update_entry(conf, entry.ref, fn entry -> %UploadEntry{entry | cancelled?: true} end)1623     │                                                   ~1624     │1625     └─ lib/phoenix_live_view/upload_config.ex:635:51: Phoenix.LiveView.UploadConfig.cancel_entry/216261627    warning: Logger.disable/1 is deprecated. Use Logger.put_process_level(pid, :none) instead1628    │1629 72 │     Logger.disable(self())1630    │            ~1631    │1632    └─ lib/phoenix_live_view/test/client_proxy.ex:72:12: Phoenix.LiveViewTest.ClientProxy.init/116331634     warning: a struct for Phoenix.LiveViewTest.ClientProxy is expected on struct update:16351636         %Phoenix.LiveViewTest.ClientProxy{view | rendered: rendered}16371638     but got type:16391640         dynamic(%{..., rendered: map()})16411642     where "view" was given the type:16431644         # type: dynamic(%{..., rendered: map()})1645         # from: lib/phoenix_live_view/test/client_proxy.ex:701:241646         Phoenix.LiveViewTest.DOM.merge_diff(view.rendered, diff)16471648     when defining the variable "view", you must also pattern match on "%Phoenix.LiveViewTest.ClientProxy{}"16491650     type warning found at:1651     │1652 702 │         new_view = %ClientProxy{view | rendered: rendered}1653     │                    ~1654     │1655     └─ lib/phoenix_live_view/test/client_proxy.ex:702:20: Phoenix.LiveViewTest.ClientProxy.merge_rendered/316561657      warning: Plug.Conn.Query.decode_pair/2 is deprecated. Use decode_init/0, decode_each/2, and decode_done/2 instead1658      │1659 1095 │       Plug.Conn.Query.decode_pair({name, DOM.attribute(selected, "value")}, acc)1660      │                       ~1661      │1662      └─ lib/phoenix_live_view/test/client_proxy.ex:1095:23: Phoenix.LiveViewTest.ClientProxy.form_defaults/31663      └─ lib/phoenix_live_view/test/client_proxy.ex:1100:21: Phoenix.LiveViewTest.ClientProxy.form_defaults/31664      └─ lib/phoenix_live_view/test/client_proxy.ex:1110:27: Phoenix.LiveViewTest.ClientProxy.form_defaults/31665      └─ lib/phoenix_live_view/test/client_proxy.ex:1119:25: Phoenix.LiveViewTest.ClientProxy.form_defaults/316661667     warning: the right-hand side of || (shown as ... below) will never be executed:16681669         conn.private[:live_view_connect_info] || prune_conn(conn) || ...16701671     because the left-hand side always evaluates to:16721673         dynamic(not false and not nil)16741675     where "conn" was given the types:16761677         # type: dynamic(%Plug.Conn{assigns: %{..., live_module: term()}, status: integer()})1678         # from: lib/phoenix_live_view/test/live_view_test.ex:320:721679         %Plug.Conn{status: 200, assigns: %{live_module: live_module}} = conn16801681         # type: dynamic(%Plug.Conn{1682           assigns: %{..., live_module: term()},1683           private:1684             %{..., __struct__: atom()} or nil or empty_list() or non_empty_list(term(), term()) or1685               non_struct_map(),1686           status: integer()1687         })1688         # from: lib/phoenix_live_view/test/live_view_test.ex:334:351689         conn.private[:live_view_connect_params]16901691     type warning found at:1692     │1693 335 │       connect_info: conn.private[:live_view_connect_info] || prune_conn(conn) || %{},1694     │       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1695     │1696     └─ lib/phoenix_live_view/test/live_view_test.ex:335: Phoenix.LiveViewTest.connect_from_static_token/216971698     warning: the following clause is redundant:16991700         def update(assigns, _key, fun) when is_function(fun, 1) or is_function(fun, 2)17011702     it has type:17031704         dynamic(), dynamic(), dynamic((none() -> term()) or (none(), none() -> term()))17051706     previous clauses have already matched on the following types:17071708         %Phoenix.LiveView.Socket{}, term(), (none(), none() -> term())1709         %Phoenix.LiveView.Socket{}, term(), (none() -> term())1710         term(), term(), (none(), none() -> term())1711         term(), term(), (none() -> term())17121713     │1714 952 │   def update(assigns, _key, fun) when is_function(fun, 1) or is_function(fun, 2) do1715     │       ~1716     │1717     └─ lib/phoenix_live_view.ex:952:7: Phoenix.LiveView.update/317181719     warning: this clause of defp class_names/1 is never used (or it will always fail/warn when invoked)1720     │1721 603 │   defp class_names(nil), do: []1722     │        ~1723     │1724     └─ lib/phoenix_live_view/js.ex:603:8: Phoenix.LiveView.JS.class_names/117251726     warning: the following clause is redundant:17271728         def to_iodata(%_{} = struct)17291730     it has type:17311732         dynamic(%Phoenix.LiveView.Rendered{})17331734     previous clauses have already matched on the following types:17351736         %Phoenix.LiveView.Rendered{}17371738     │1739 127 │     def to_iodata(%_{} = struct) do1740     │         ~1741     │1742     └─ lib/phoenix_live_view/engine.ex:127:9: Phoenix.HTML.Safe.Phoenix.LiveView.Rendered.to_iodata/117431744     warning: the 1st pattern in clause will never match:17451746         nil17471748     because it is expected to receive type:17491750         dynamic(%Phoenix.LiveView.Rendered{})17511752     hint: defimpl for Phoenix.LiveView.Rendered requires its callbacks to match exclusively on %Phoenix.LiveView.Rendered{}17531754     type warning found at:1755     │1756 131 │     def to_iodata(nil) do1757     │     ~~~~~~~~~~~~~~~~~~~~~1758     │1759     └─ lib/phoenix_live_view/engine.ex:131: Phoenix.HTML.Safe.Phoenix.LiveView.Rendered.to_iodata/117601761     warning: the following clause is redundant:17621763         def to_iodata(other)17641765     it has type:17661767         dynamic(%Phoenix.LiveView.Rendered{})17681769     previous clauses have already matched on the following types:17701771         %Phoenix.LiveView.Rendered{}17721773     │1774 135 │     def to_iodata(other) do1775     │         ~1776     │1777     └─ lib/phoenix_live_view/engine.ex:135:9: Phoenix.HTML.Safe.Phoenix.LiveView.Rendered.to_iodata/117781779Generated phoenix_live_view app1780warning: Phoenix now requires you to explicitly list which engine to use1781for Phoenix JSON encoding. We recommend everyone to upgrade to1782Jason by setting in your config/config.exs:17831784    config :phoenix, :json_library, Jason17851786And then adding {:jason, "~> 1.0"} as a dependency.17871788If instead you would rather continue using Poison, then add to1789your config/config.exs:17901791    config :phoenix, :json_library, Poison17921793  (phoenix 1.6.17) lib/phoenix.ex:56: Phoenix.start/21794  (kernel 11.0.4) application_master.erl:299: :application_master.start_it_old/417951796warning: "xref: [exclude: ...]" in your mix.exs file is deprecated, instead use: "elixirc_options: [no_warn_undefined: ...]"1797  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:243: Mix.Tasks.Compile.Elixir.xref_exclude_opts/21798  (mix 1.20.3) lib/mix/tasks/compile.elixir.ex:142: Mix.Tasks.Compile.Elixir.run/11799  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/51800  (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/21801  (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/41802  (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/218031804==> phoenix_live_dashboard1805Compiling 40 files (.ex)1806     warning: using single-quoted strings to represent charlists is deprecated.1807     Use ~c"" if you indeed want a charlist or use "" instead.1808     You may run "mix format --migrate" to change all single-quoted1809     strings to use the ~c sigil and fix this warning.1810     │1811 709 │     '#Port' ++ rest = :erlang.port_to_list(ref)1812     │     ~1813     │1814     └─ lib/phoenix/live_dashboard/page_builder.ex:709:518151816     warning: using single-quoted strings to represent charlists is deprecated.1817     Use ~c"" if you indeed want a charlist or use "" instead.1818     You may run "mix format --migrate" to change all single-quoted1819     strings to use the ~c sigil and fix this warning.1820     │1821 728 │     '#Ref' ++ rest = :erlang.ref_to_list(ref)1822     │     ~1823     │1824     └─ lib/phoenix/live_dashboard/page_builder.ex:728:518251826     warning: using single-quoted strings to represent charlists is deprecated.1827     Use ~c"" if you indeed want a charlist or use "" instead.1828     You may run "mix format --migrate" to change all single-quoted1829     strings to use the ~c sigil and fix this warning.1830     │1831 446 │   @inet_ports ['tcp_inet', 'udp_inet', 'sctp_inet']1832     │                ~1833     │1834     └─ lib/phoenix/live_dashboard/system_info.ex:446:1618351836     warning: using single-quoted strings to represent charlists is deprecated.1837     Use ~c"" if you indeed want a charlist or use "" instead.1838     You may run "mix format --migrate" to change all single-quoted1839     strings to use the ~c sigil and fix this warning.1840     │1841 446 │   @inet_ports ['tcp_inet', 'udp_inet', 'sctp_inet']1842     │                            ~1843     │1844     └─ lib/phoenix/live_dashboard/system_info.ex:446:2818451846     warning: using single-quoted strings to represent charlists is deprecated.1847     Use ~c"" if you indeed want a charlist or use "" instead.1848     You may run "mix format --migrate" to change all single-quoted1849     strings to use the ~c sigil and fix this warning.1850     │1851 446 │   @inet_ports ['tcp_inet', 'udp_inet', 'sctp_inet']1852     │                                        ~1853     │1854     └─ lib/phoenix/live_dashboard/system_info.ex:446:4018551856     warning: using single-quoted strings to represent charlists is deprecated.1857     Use ~c"" if you indeed want a charlist or use "" instead.1858     You may run "mix format --migrate" to change all single-quoted1859     strings to use the ~c sigil and fix this warning.1860     │1861 654 │         [{'none', 0, 0}] -> []1862     │           ~1863     │1864     └─ lib/phoenix/live_dashboard/system_info.ex:654:1118651866warning: 0..-2 has a default step of -1, please write 0..-2//-1 instead1867  lib/phoenix/live_dashboard/page_live.ex:178: Phoenix.LiveDashboard.PageLive.dashboard_mount_path/318681869warning: 0..-3 has a default step of -1, please write 0..-3//-1 instead1870  lib/phoenix/live_dashboard/page_live.ex:178: Phoenix.LiveDashboard.PageLive.dashboard_mount_path/318711872     warning: expected a module (an atom) when invoking __live__/0 in expression:18731874         Map.put(component_assigns, :page, page).__live__()18751876     but got type:18771878         dynamic(%{..., page: term()})18791880     where "component_assigns" was given the type:18811882         # type: dynamic(map())1883         # from: lib/phoenix/live_dashboard/components/nav_bar_component.ex:218:391884         Map.put(component_assigns, :page, page)18851886     where "page" was given the type:18871888         # type: dynamic()1889         # from: lib/phoenix/live_dashboard/components/nav_bar_component.ex:215:231890         page18911892     hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()18931894     type warning found at:1895     │1896 218 │         live_component(component, Map.put(component_assigns, :page, page))1897     │         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1898     │1899     └─ lib/phoenix/live_dashboard/components/nav_bar_component.ex:218: Phoenix.LiveDashboard.NavBarComponent.render_content/219001901     warning: expected a module (an atom) when invoking __live__/0 in expression:19021903         component_assigns.__live__()19041905     where "component_assigns" was given the type:19061907         # type: dynamic(%{..., page: term()})1908         # from: lib/phoenix/live_dashboard/page_live.ex:238:231909         component_assigns = Map.put(component_assigns, :page, assigns.page)19101911     hint: "var.field" (without parentheses) means "var" is a map() while "var.fun()" (with parentheses) means "var" is an atom()19121913     type warning found at:1914     │1915 239 │     live_component(component, component_assigns)1916     │     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1917     │1918     └─ lib/phoenix/live_dashboard/page_live.ex:239: Phoenix.LiveDashboard.PageLive.render_page/219191920     warning: Postgrex.Interval.to_string/1 is undefined (module Postgrex.Interval is not available or is yet to be defined)1921     │1922 276 │     do: struct.to_string(value)1923     │                ~1924     │1925     └─ lib/phoenix/live_dashboard/pages/ecto_stats_page.ex:276:16: Phoenix.LiveDashboard.EctoStatsPage.format/219261927    warning: Logger.add_backend/1 is deprecated. Use LoggerBackends.add/2 from :logger_backends dependency1928    │1929  8 │     Logger.add_backend(Phoenix.LiveDashboard.LoggerPubSubBackend)1930    │            ~1931    │1932    └─ lib/phoenix/live_dashboard/application.ex:8:12: Phoenix.LiveDashboard.Application.start/219331934Generated phoenix_live_dashboard app1935warning: the :gettext compiler is no longer required in your mix.exs.19361937Please find the following line in your mix.exs and remove the :gettext entry:19381939    compilers: [..., :gettext, ...] ++ Mix.compilers(),19401941  (gettext 0.26.2) lib/mix/tasks/compile.gettext.ex:5: Mix.Tasks.Compile.Gettext.run/11942  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/51943  (mix 1.20.3) lib/mix/task.compiler.ex:299: Mix.Task.Compiler.run_compiler/21944  (mix 1.20.3) lib/mix/task.compiler.ex:287: Mix.Task.Compiler.run/41945  (mix 1.20.3) lib/mix/tasks/compile.all.ex:75: Mix.Tasks.Compile.All.do_run/21946  (mix 1.20.3) lib/mix/task.ex:502: anonymous fn/3 in Mix.Task.run_task/519471948==> exshome1949Compiling 68 files (.ex)1950    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead1951    │1952  5 │   use Exshome.Dependency.GenServerDependency, name: "utc_time"1953    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1954    │1955    └─ lib/exshome_clock/services/utc_time.ex:5: ExshomeClock.Services.UtcTime.handle_dependency_change/119561957    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead1958    │1959  5 │   use Exshome.Dependency.GenServerDependency, name: "utc_time"1960    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1961    │1962    └─ lib/exshome_clock/services/utc_time.ex:5: ExshomeClock.Services.UtcTime.handle_event/219631964    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead1965    │1966  6 │   use Exshome.Dependency.GenServerDependency,1967    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1968    │1969    └─ lib/exshome_clock/services/local_time.ex:6: ExshomeClock.Services.LocalTime.handle_dependency_change/119701971    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead1972    │1973  6 │   use Exshome.Dependency.GenServerDependency,1974    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1975    │1976    └─ lib/exshome_clock/services/local_time.ex:6: ExshomeClock.Services.LocalTime.handle_event/219771978    warning: using single-quoted strings to represent charlists is deprecated.1979    Use ~c"" if you indeed want a charlist or use "" instead.1980    You may run "mix format --migrate" to change all single-quoted1981    strings to use the ~c sigil and fix this warning.1982    │1983 80 │       '--no-video',1984    │       ~1985    │1986    └─ lib/exshome_player/services/mpv_server.ex:80:719871988    warning: using single-quoted strings to represent charlists is deprecated.1989    Use ~c"" if you indeed want a charlist or use "" instead.1990    You may run "mix format --migrate" to change all single-quoted1991    strings to use the ~c sigil and fix this warning.1992    │1993 81 │       '--idle',1994    │       ~1995    │1996    └─ lib/exshome_player/services/mpv_server.ex:81:719971998    warning: using single-quoted strings to represent charlists is deprecated.1999    Use ~c"" if you indeed want a charlist or use "" instead.2000    You may run "mix format --migrate" to change all single-quoted2001    strings to use the ~c sigil and fix this warning.2002    │2003 82 │       '--no-cache',2004    │       ~2005    │2006    └─ lib/exshome_player/services/mpv_server.ex:82:720072008    warning: using single-quoted strings to represent charlists is deprecated.2009    Use ~c"" if you indeed want a charlist or use "" instead.2010    You may run "mix format --migrate" to change all single-quoted2011    strings to use the ~c sigil and fix this warning.2012    │2013 83 │       '--no-terminal',2014    │       ~2015    │2016    └─ lib/exshome_player/services/mpv_server.ex:83:720172018    warning: using single-quoted strings to represent charlists is deprecated.2019    Use ~c"" if you indeed want a charlist or use "" instead.2020    You may run "mix format --migrate" to change all single-quoted2021    strings to use the ~c sigil and fix this warning.2022    │2023 84 │       '--input-ipc-server=#{socket_path()}'2024    │       ~2025    │2026    └─ lib/exshome_player/services/mpv_server.ex:84:720272028    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2029    │2030  5 │   use Exshome.Dependency.GenServerDependency, name: "mpv_server"2031    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2032    │2033    └─ lib/exshome_player/services/mpv_server.ex:5: ExshomePlayer.Services.MpvServer.handle_dependency_change/120342035    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2036    │2037  5 │   use Exshome.Dependency.GenServerDependency, name: "mpv_server"2038    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2039    │2040    └─ lib/exshome_player/services/mpv_server.ex:5: ExshomePlayer.Services.MpvServer.handle_event/220412042    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2043    │2044  5 │   use Exshome.Dependency.GenServerDependency, name: "mpv_socket"2045    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2046    │2047    └─ lib/exshome_player/services/mpv_socket.ex:5: ExshomePlayer.Services.MpvSocket.handle_dependency_change/120482049    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2050    │2051  5 │   use Exshome.Dependency.GenServerDependency, name: "mpv_socket"2052    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2053    │2054    └─ lib/exshome_player/services/mpv_socket.ex:5: ExshomePlayer.Services.MpvSocket.handle_event/220552056    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2057    │2058 11 │   use Exshome.Dependency.GenServerDependency,2059    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2060    │2061    └─ lib/exshome_player/services/player_state.ex:11: ExshomePlayer.Services.PlayerState.handle_dependency_change/120622063    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2064    │2065 11 │   use Exshome.Dependency.GenServerDependency,2066    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2067    │2068    └─ lib/exshome_player/services/player_state.ex:11: ExshomePlayer.Services.PlayerState.handle_event/220692070    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2071    │2072 11 │   use Exshome.Dependency.GenServerDependency,2073    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2074    │2075    └─ lib/exshome_player/services/playlist.ex:11: ExshomePlayer.Services.Playlist.handle_dependency_change/120762077    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2078    │2079  8 │   use Exshome.Dependency.GenServerDependency,2080    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2081    │2082    └─ lib/exshome_player/variables/duration.ex:8: ExshomePlayer.Variables.Duration.handle_dependency_change/120832084    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2085    │2086 11 │   use Exshome.Dependency.GenServerDependency,2087    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2088    │2089    └─ lib/exshome_player/services/playlist.ex:11: ExshomePlayer.Services.Playlist.handle_event/220902091    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2092    │2093  8 │   use Exshome.Dependency.GenServerDependency,2094    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2095    │2096    └─ lib/exshome_player/variables/duration.ex:8: ExshomePlayer.Variables.Duration.handle_event/220972098    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2099    │2100  8 │   use Exshome.Dependency.GenServerDependency,2101    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2102    │2103    └─ lib/exshome_player/variables/path.ex:8: ExshomePlayer.Variables.Path.handle_dependency_change/121042105    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2106    │2107  8 │   use Exshome.Dependency.GenServerDependency,2108    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2109    │2110    └─ lib/exshome_player/variables/path.ex:8: ExshomePlayer.Variables.Path.handle_event/221112112    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2113    │2114  8 │   use Exshome.Dependency.GenServerDependency,2115    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2116    │2117    └─ lib/exshome_player/variables/pause.ex:8: ExshomePlayer.Variables.Pause.handle_dependency_change/121182119    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2120    │2121  8 │   use Exshome.Dependency.GenServerDependency,2122    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2123    │2124    └─ lib/exshome_player/variables/pause.ex:8: ExshomePlayer.Variables.Pause.handle_event/221252126    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2127    │2128  8 │   use Exshome.Dependency.GenServerDependency,2129    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2130    │2131    └─ lib/exshome_player/variables/position.ex:8: ExshomePlayer.Variables.Position.handle_dependency_change/121322133    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2134    │2135  8 │   use Exshome.Dependency.GenServerDependency,2136    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2137    │2138    └─ lib/exshome_player/variables/position.ex:8: ExshomePlayer.Variables.Position.handle_event/221392140    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2141    │2142  8 │   use Exshome.Dependency.GenServerDependency,2143    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2144    │2145    └─ lib/exshome_player/variables/title.ex:8: ExshomePlayer.Variables.Title.handle_dependency_change/121462147    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2148    │2149  8 │   use Exshome.Dependency.GenServerDependency,2150    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2151    │2152    └─ lib/exshome_player/variables/title.ex:8: ExshomePlayer.Variables.Title.handle_event/221532154    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2155    │2156  8 │   use Exshome.Dependency.GenServerDependency,2157    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2158    │2159    └─ lib/exshome_player/variables/volume.ex:8: ExshomePlayer.Variables.Volume.handle_dependency_change/121602161    warning: Logger.warn/1 is deprecated. Use Logger.warning/2 instead2162    │2163  8 │   use Exshome.Dependency.GenServerDependency,2164    │   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2165    │2166    └─ lib/exshome_player/variables/volume.ex:8: ExshomePlayer.Variables.Volume.handle_event/221672168warning: defining a Gettext backend by calling21692170    use Gettext, otp_app: ...21712172is deprecated. To define a backend, call:21732174    use Gettext.Backend, otp_app: :my_app21752176Then, instead of importing your backend, call this in your module:21772178    use Gettext, backend: MyApp.Gettext21792180  lib/exshome_web/gettext.ex:23: ExshomeWeb.Gettext (module)21812182    warning: using single-quoted strings to represent charlists is deprecated.2183    Use ~c"" if you indeed want a charlist or use "" instead.2184    You may run "mix format --migrate" to change all single-quoted2185    strings to use the ~c sigil and fix this warning.2186    │2187 21 │             class={"text-4xl #{if @deps.playlist.current_id == track.id, do: 'playing'}"}2188    │                                                                              ~2189    │2190    └─ lib/exshome_player/web/templates/playlist.html.heex:21:7821912192    warning: using single-quoted strings to represent charlists is deprecated.2193    Use ~c"" if you indeed want a charlist or use "" instead.2194    You may run "mix format --migrate" to change all single-quoted2195    strings to use the ~c sigil and fix this warning.2196    │2197 26 │             "#{if @deps.playlist.current_id == track.id, do: 'font-bold dark:text-yellow-200'} flex flex-col flex-grow pl-4 text-left justify-center overflow-x-auto overflow-y-hidden"2198    │                                                              ~2199    │2200    └─ lib/exshome_player/web/templates/playlist.html.heex:26:6222012202    warning: using single-quoted strings to represent charlists is deprecated.2203    Use ~c"" if you indeed want a charlist or use "" instead.2204    You may run "mix format --migrate" to change all single-quoted2205    strings to use the ~c sigil and fix this warning.2206    │2207  6 │     <div class={"icon mt-[15%] #{if @deps.pause, do: 'play', else: 'pause'}"}>2208    │                                                      ~2209    │2210    └─ lib/exshome_player/web/templates/preview.html.heex:6:5422112212    warning: using single-quoted strings to represent charlists is deprecated.2213    Use ~c"" if you indeed want a charlist or use "" instead.2214    You may run "mix format --migrate" to change all single-quoted2215    strings to use the ~c sigil and fix this warning.2216    │2217  6 │     <div class={"icon mt-[15%] #{if @deps.pause, do: 'play', else: 'pause'}"}>2218    │                                                                    ~2219    │2220    └─ lib/exshome_player/web/templates/preview.html.heex:6:68222122222223== Compilation error in file lib/exshome_web/endpoint.ex ==2224** (ArgumentError) invalid :json_decoder option. The module Poison is not loaded and could not be found2225    (plug 1.20.3) lib/plug/parsers/json.ex:48: Plug.Parsers.JSON.validate_decoder!/12226    (plug 1.20.3) lib/plug/parsers/json.ex:35: Plug.Parsers.JSON.init/12227    (plug 1.20.3) lib/plug/parsers.ex:283: anonymous fn/2 in Plug.Parsers.convert_parsers/22228    (elixir 1.20.3) lib/enum.ex:1725: Enum."-map/2-lists^map/1-1-"/22229    (elixir 1.20.3) lib/enum.ex:1725: Enum."-map/2-lists^map/1-1-"/22230    (plug 1.20.3) lib/plug/parsers.ex:263: Plug.Parsers.init/12231    (plug 1.20.3) lib/plug/builder.ex:358: Plug.Builder.init_module_plug/42232    (plug 1.20.3) lib/plug/builder.ex:339: anonymous fn/5 in Plug.Builder.compile/32233could not compile dependency :exshome, "mix compile" failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile exshome --force", update it with "mix deps.update exshome" or clean it with "mix deps.clean exshome"