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: "<"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: ">"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: "&"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: """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: "'"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"