From 0ff75986799c086eede4920f8d65bb53d18f4012 Mon Sep 17 00:00:00 2001 From: Mikko Ahlroth Date: Sat, 4 Apr 2020 23:05:31 +0300 Subject: [PATCH] Update to latest deps --- lib/mebe_2/application.ex | 2 +- lib/web/middleware/archives.ex | 34 ++++++++++------- lib/web/middleware/request_time.ex | 59 +++++++++++++++++------------- lib/web/router.ex | 12 ++---- lib/web/server.ex | 31 ++++++++++++++++ lib/web/views/base_layout.ex | 2 +- lib/web/views/feeds/base_layout.ex | 2 +- mix.exs | 25 +++++++------ mix.lock | 44 +++++++++++----------- 9 files changed, 127 insertions(+), 84 deletions(-) create mode 100644 lib/web/server.ex diff --git a/lib/mebe_2/application.ex b/lib/mebe_2/application.ex index ea92e53..2326f70 100644 --- a/lib/mebe_2/application.ex +++ b/lib/mebe_2/application.ex @@ -19,7 +19,7 @@ defmodule Mebe2.Application do # List all child processes to be supervised children = [ Mebe2.Engine.Worker.child_spec(name: Mebe2.Engine.Worker), - {Mebe2.Web.Router, [[], [port: port]]} + {Mebe2.Web.Server, [port: port, cleartext: true]} ] # See https://hexdocs.pm/elixir/Supervisor.html diff --git a/lib/web/middleware/archives.ex b/lib/web/middleware/archives.ex index 66e3727..d556eb6 100644 --- a/lib/web/middleware/archives.ex +++ b/lib/web/middleware/archives.ex @@ -1,26 +1,32 @@ defmodule Mebe2.Web.Middleware.Archives do - require Logger + @behaviour Raxx.Middleware @month_archives_key :mebe2_month_archives @tag_archives_key :mebe2_tag_archives - defmacro __using__(_opts) do - quote do - @before_compile unquote(__MODULE__) - end + @impl true + def process_head(request, state, inner_server) do + put_archives() + {parts, inner_server} = Raxx.Server.handle_head(inner_server, request) + {parts, state, inner_server} end - defmacro __before_compile__(_env) do - quote do - defoverridable Raxx.Server + @impl true + def process_tail(tail, state, inner_server) do + {parts, inner_server} = Raxx.Server.handle_tail(inner_server, tail) + {parts, state, inner_server} + end - @impl Raxx.Server - def handle_head(head, config) do - unquote(__MODULE__).put_archives() + @impl true + def process_data(data, state, inner_server) do + {parts, inner_server} = Raxx.Server.handle_data(inner_server, data) + {parts, state, inner_server} + end - super(head, config) - end - end + @impl true + def process_info(info, state, inner_server) do + {parts, inner_server} = Raxx.Server.handle_info(inner_server, info) + {parts, state, inner_server} end @doc """ diff --git a/lib/web/middleware/request_time.ex b/lib/web/middleware/request_time.ex index e327a78..5fd3647 100644 --- a/lib/web/middleware/request_time.ex +++ b/lib/web/middleware/request_time.ex @@ -1,40 +1,35 @@ defmodule Mebe2.Web.Middleware.RequestTime do require Logger + @behaviour Raxx.Middleware + @timer_key :mebe2_request_started @timer_cookie_name "mebe2-request-timer" - defmacro __using__(_opts) do - quote do - @before_compile unquote(__MODULE__) - end + @impl true + def process_head(request, state, inner_server) do + put_response_timer() + {parts, inner_server} = Raxx.Server.handle_head(inner_server, request) + {parts, state, inner_server} end - defmacro __before_compile__(_env) do - quote do - defoverridable Raxx.Server - - @impl Raxx.Server - def handle_head(head, config) do - unquote(__MODULE__).put_response_timer() - - super(head, config) - |> unquote(__MODULE__).process_response() - end - end + @impl true + def process_tail(tail, state, inner_server) do + {parts, inner_server} = Raxx.Server.handle_tail(inner_server, tail) + parts = modify_response_parts(parts, state) + {parts, state, inner_server} end - @doc false - def process_response(response = %Raxx.Response{}) do - add_timer_cookie(response) + @impl true + def process_data(data, state, inner_server) do + {parts, inner_server} = Raxx.Server.handle_data(inner_server, data) + {parts, state, inner_server} end - def process_response({[response = %Raxx.Response{} | parts], state}) do - {[add_timer_cookie(response) | parts], state} - end - - def process_response(reaction) do - reaction + @impl true + def process_info(info, state, inner_server) do + {parts, inner_server} = Raxx.Server.handle_info(inner_server, info) + {parts, state, inner_server} end @spec put_response_timer() :: :ok @@ -43,8 +38,20 @@ defmodule Mebe2.Web.Middleware.RequestTime do :ok end + defp modify_response_parts(parts, :disengage) do + parts + end + + defp modify_response_parts(parts, :engage) do + Enum.flat_map(parts, &do_handle_response_part(&1)) + end + + defp do_handle_response_part(response = %Raxx.Response{}) do + [add_timer_cookie(response)] + end + @spec add_timer_cookie(Raxx.Response.t()) :: Raxx.Response.t() - def add_timer_cookie(%Raxx.Response{} = response) do + defp add_timer_cookie(%Raxx.Response{} = response) do old_time = Process.get(@timer_key) diff = get_time() - old_time diff --git a/lib/web/router.ex b/lib/web/router.ex index 8a0f005..1933a9c 100644 --- a/lib/web/router.ex +++ b/lib/web/router.ex @@ -1,13 +1,9 @@ defmodule Mebe2.Web.Router do - use Ace.HTTP.Service, port: 2142, cleartext: true - use Raxx.Server - use Raxx.Logger - use Mebe2.Web.Middleware.RequestTime - use Raxx.Static, "../../priv/static" - use Mebe2.Web.Middleware.Archives + use Raxx.Router + alias Mebe2.Web.Routes - use Raxx.Router, [ + section([{Raxx.Logger, level: :debug}], [ {%{method: :GET, path: ["tag", _tag, "p", _page]}, Routes.Tag}, {%{method: :GET, path: ["tag", _tag, "feed"]}, Routes.Tag}, {%{method: :GET, path: ["tag", _tag]}, Routes.Tag}, @@ -23,5 +19,5 @@ defmodule Mebe2.Web.Router do {%{method: :GET, path: [_slug]}, Routes.Page}, {%{method: :GET, path: []}, Routes.Index}, {_, Routes.NotFound} - ] + ]) end diff --git a/lib/web/server.ex b/lib/web/server.ex new file mode 100644 index 0000000..c2e8973 --- /dev/null +++ b/lib/web/server.ex @@ -0,0 +1,31 @@ +defmodule Mebe2.Web.Server do + @files Raxx.Static.setup(source: Path.expand("priv/static")) + + def child_spec(server_options) do + {:ok, port} = Keyword.fetch(server_options, :port) + + %{ + id: {__MODULE__, port}, + start: {__MODULE__, :start_link, [server_options]}, + type: :supervisor + } + end + + def init(init_arg) do + {:ok, init_arg} + end + + def start_link(server_options) do + stack = + Raxx.Stack.new( + [ + {Raxx.Static, @files}, + {Mebe2.Web.Middleware.RequestTime, []}, + {Mebe2.Web.Middleware.Archives, []} + ], + {Mebe2.Web.Router, []} + ) + + Ace.HTTP.Service.start_link(stack, server_options) + end +end diff --git a/lib/web/views/base_layout.ex b/lib/web/views/base_layout.ex index b4c07b2..dc20311 100644 --- a/lib/web/views/base_layout.ex +++ b/lib/web/views/base_layout.ex @@ -1,5 +1,5 @@ defmodule Mebe2.Web.Views.BaseLayout do - use Raxx.Layout, + use Raxx.View.Layout, layout: "base_layout.html.eex" alias Mebe2.Web.Views.SinglePost diff --git a/lib/web/views/feeds/base_layout.ex b/lib/web/views/feeds/base_layout.ex index 26ce234..434b5eb 100644 --- a/lib/web/views/feeds/base_layout.ex +++ b/lib/web/views/feeds/base_layout.ex @@ -1,4 +1,4 @@ defmodule Mebe2.Web.Views.Feeds.BaseLayout do - use Raxx.Layout, + use Raxx.View.Layout, layout: "base_layout.xml.eex" end diff --git a/mix.exs b/mix.exs index cb2e548..7093e29 100644 --- a/mix.exs +++ b/mix.exs @@ -4,8 +4,8 @@ defmodule Mebe2.MixProject do def project do [ app: :mebe_2, - version: "0.2.1", - elixir: "~> 1.7", + version: "0.3.0", + elixir: "~> 1.10", start_permanent: Mix.env() == :prod, deps: deps() ] @@ -22,16 +22,17 @@ defmodule Mebe2.MixProject do # Run "mix help deps" to learn about dependencies. defp deps do [ - {:earmark, "~> 1.2.5"}, - {:raxx, "~> 0.17.2"}, - {:raxx_static, "~> 0.7.0"}, - {:eex_html, "~> 0.2.0"}, - {:ace, "~> 0.18.0"}, - {:calendar, "~> 0.17.4"}, - {:ex2ms, "~> 1.5.0"}, - {:mbu, "~> 3.0.0", runtime: false}, - {:exsync, "~> 0.2.3", only: :dev}, - {:distillery, "~> 2.0"} + {:earmark, "~> 1.4"}, + {:raxx, "~> 1.1"}, + {:raxx_static, "~> 0.8.3"}, + {:raxx_view, "~> 0.1.7"}, + {:raxx_logger, "~> 0.2.2"}, + {:eex_html, "~> 1.0"}, + {:ace, "~> 0.18.10"}, + {:calendar, "~> 1.0"}, + {:ex2ms, "~> 1.6"}, + {:mbu, "~> 3.0", runtime: false}, + {:exsync, "~> 0.2.4", only: :dev} ] end end diff --git a/mix.lock b/mix.lock index da87f05..6c76aa7 100644 --- a/mix.lock +++ b/mix.lock @@ -1,27 +1,29 @@ %{ - "ace": {:hex, :ace, "0.18.0", "a9d36859288797b41cec594a0b79079f1c655b2cec6001ff3ec5cd9b3ab0199c", [:mix], [{:hpack, "~> 0.2.3", [hex: :hpack_erl, repo: "hexpm", optional: false]}, {:raxx, "~> 0.17.0", [hex: :raxx, repo: "hexpm", optional: false]}], "hexpm"}, + "ace": {:hex, :ace, "0.18.10", "b471853b9da7acc1bd8df73749db832f99eef8555bab7d90de3854bda93b1dc8", [:mix], [{:hpack, "~> 0.2.3", [hex: :hpack_erl, repo: "hexpm", optional: false]}, {:raxx, "~> 0.17.0 or ~> 0.18.0 or ~> 1.0", [hex: :raxx, repo: "hexpm", optional: false]}], "hexpm", "73994932c92e92749c697690eed842b4733c4e78719d0f4a547c1656a189858f"}, "artificery": {:hex, :artificery, "0.2.6", "f602909757263f7897130cbd006b0e40514a541b148d366ad65b89236b93497a", [:mix], [], "hexpm"}, - "calendar": {:hex, :calendar, "0.17.4", "22c5e8d98a4db9494396e5727108dffb820ee0d18fed4b0aa8ab76e4f5bc32f1", [:mix], [{:tzdata, "~> 0.5.8 or ~> 0.1.201603", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm"}, - "certifi": {:hex, :certifi, "2.4.2", "75424ff0f3baaccfd34b1214184b6ef616d89e420b258bb0a5ea7d7bc628f7f0", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm"}, + "calendar": {:hex, :calendar, "1.0.0", "f52073a708528482ec33d0a171954ca610fe2bd28f1e871f247dc7f1565fa807", [:mix], [{:tzdata, "~> 0.5.20 or ~> 0.1.201603 or ~> 1.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "990e9581920c82912a5ee50e62ff5ef96da6b15949a2ee4734f935fdef0f0a6f"}, + "certifi": {:hex, :certifi, "2.5.1", "867ce347f7c7d78563450a18a6a28a8090331e77fa02380b4a21962a65d36ee5", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "805abd97539caf89ec6d4732c91e62ba9da0cda51ac462380bbd28ee697a8c42"}, "cookie": {:hex, :cookie, "0.1.1", "89438362ee0f0ed400e9f076d617d630f82d682e3fbcf767072a46a6e1ed5781", [:mix], [], "hexpm"}, "distillery": {:hex, :distillery, "2.0.12", "6e78fe042df82610ac3fa50bd7d2d8190ad287d120d3cd1682d83a44e8b34dfb", [:mix], [{:artificery, "~> 0.2", [hex: :artificery, repo: "hexpm", optional: false]}], "hexpm"}, - "earmark": {:hex, :earmark, "1.2.6", "b6da42b3831458d3ecc57314dff3051b080b9b2be88c2e5aa41cd642a5b044ed", [:mix], [], "hexpm"}, - "eex_html": {:hex, :eex_html, "0.2.0", "7f9da3e8ec2ecda2658a0443c65321e161c7c89897f2011e3d8a70f4f68341cb", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm"}, - "ex2ms": {:hex, :ex2ms, "1.5.0", "19e27f9212be9a96093fed8cdfbef0a2b56c21237196d26760f11dfcfae58e97", [:mix], [], "hexpm"}, - "exsync": {:hex, :exsync, "0.2.3", "a1ac11b4bd3808706003dbe587902101fcc1387d9fc55e8b10972f13a563dd15", [:mix], [{:file_system, "~> 0.2", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm"}, - "file_system": {:hex, :file_system, "0.2.6", "fd4dc3af89b9ab1dc8ccbcc214a0e60c41f34be251d9307920748a14bf41f1d3", [:mix], [], "hexpm"}, - "hackney": {:hex, :hackney, "1.14.3", "b5f6f5dcc4f1fba340762738759209e21914516df6be440d85772542d4a5e412", [:rebar3], [{:certifi, "2.4.2", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "1.0.2", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.4", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm"}, - "hpack": {:hex, :hpack_erl, "0.2.3", "17670f83ff984ae6cd74b1c456edde906d27ff013740ee4d9efaa4f1bf999633", [:rebar3], [], "hexpm"}, - "idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm"}, + "earmark": {:hex, :earmark, "1.4.3", "364ca2e9710f6bff494117dbbd53880d84bebb692dafc3a78eb50aa3183f2bfd", [:mix], [], "hexpm", "8cf8a291ebf1c7b9539e3cddb19e9cef066c2441b1640f13c34c1d3cfc825fec"}, + "eex_html": {:hex, :eex_html, "1.0.0", "c88020b584d5bfc48ef6c18176af2cfed558225fc5290b435e73119b8ce98ce0", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "7e8c0fa7228f69b30392905cd3551b38b5c8ba58c3ae4a0a9cfe7aa22fc15d32"}, + "ex2ms": {:hex, :ex2ms, "1.6.0", "f39bbd9ff1b0f27b3f707bab2d167066dd8965e7df1149b962d94c74615d0e09", [:mix], [], "hexpm", "0d1ab5e08421af5cd69146efb408dbb1ff77f38a2f4df5f086f2512dc8cf65bf"}, + "exsync": {:hex, :exsync, "0.2.4", "5cdc824553e0f4c4bf60018a9a6bbd5d3b51f93ef8401a0d8545f93127281d03", [:mix], [{:file_system, "~> 0.2", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm", "f7622d8bb98abbe473aa066ae46f91afdf7a5346b8b89728404f7189d2e80896"}, + "file_system": {:hex, :file_system, "0.2.8", "f632bd287927a1eed2b718f22af727c5aeaccc9a98d8c2bd7bff709e851dc986", [:mix], [], "hexpm", "97a3b6f8d63ef53bd0113070102db2ce05352ecf0d25390eb8d747c2bde98bca"}, + "hackney": {:hex, :hackney, "1.15.2", "07e33c794f8f8964ee86cebec1a8ed88db5070e52e904b8f12209773c1036085", [:rebar3], [{:certifi, "2.5.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.5", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "e0100f8ef7d1124222c11ad362c857d3df7cb5f4204054f9f0f4a728666591fc"}, + "hpack": {:hex, :hpack_erl, "0.2.3", "17670f83ff984ae6cd74b1c456edde906d27ff013740ee4d9efaa4f1bf999633", [:rebar3], [], "hexpm", "06f580167c4b8b8a6429040df36cc93bba6d571faeaec1b28816523379cbb23a"}, + "idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "4bdd305eb64e18b0273864920695cb18d7a2021f31a11b9c5fbcd9a253f936e2"}, "jason": {:hex, :jason, "1.1.2", "b03dedea67a99223a2eaf9f1264ce37154564de899fd3d8b9a21b1a6fd64afe7", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm"}, - "mbu": {:hex, :mbu, "3.0.0", "a00c3358cfdd5d5872466abd3580f962e86cd87db9554046f9206ac77fcdc70c", [:mix], [{:file_system, "~> 0.2.4", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm"}, - "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm"}, - "mime": {:hex, :mime, "1.3.0", "5e8d45a39e95c650900d03f897fbf99ae04f60ab1daa4a34c7a20a5151b7a5fe", [:mix], [], "hexpm"}, - "mimerl": {:hex, :mimerl, "1.0.2", "993f9b0e084083405ed8252b99460c4f0563e41729ab42d9074fd5e52439be88", [:rebar3], [], "hexpm"}, - "parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm"}, - "raxx": {:hex, :raxx, "0.17.2", "0666b48594a68ad3c92b00feab550bff28be68fc4f3b419abda15d63f61bf8b3", [:mix], [{:cookie, "~> 0.1.0", [hex: :cookie, repo: "hexpm", optional: false]}, {:eex_html, "~> 0.1.1 or ~> 0.2.0", [hex: :eex_html, repo: "hexpm", optional: false]}], "hexpm"}, - "raxx_static": {:hex, :raxx_static, "0.7.0", "0ab6f0ce89ab2cc6a7bd6408607b15095509cf4eef6b0ad05fa5f49b0b4b0db1", [:mix], [{:mime, "~> 1.1", [hex: :mime, repo: "hexpm", optional: false]}, {:raxx, "~> 0.17.0", [hex: :raxx, repo: "hexpm", optional: false]}], "hexpm"}, - "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.4", "f0eafff810d2041e93f915ef59899c923f4568f4585904d010387ed74988e77b", [:make, :mix, :rebar3], [], "hexpm"}, - "tzdata": {:hex, :tzdata, "0.5.19", "7962a3997bf06303b7d1772988ede22260f3dae1bf897408ebdac2b4435f4e6a", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm"}, - "unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm"}, + "mbu": {:hex, :mbu, "3.0.0", "a00c3358cfdd5d5872466abd3580f962e86cd87db9554046f9206ac77fcdc70c", [:mix], [{:file_system, "~> 0.2.4", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm", "562f2be19784644ed3e4077df64c936d5bcd3d74b6faa6990bc5587502b073b6"}, + "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"}, + "mime": {:hex, :mime, "1.3.1", "30ce04ab3175b6ad0bdce0035cba77bba68b813d523d1aac73d9781b4d193cf8", [:mix], [], "hexpm", "6cbe761d6a0ca5a31a0931bf4c63204bceb64538e664a8ecf784a9a6f3b875f1"}, + "mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"}, + "parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm", "17ef63abde837ad30680ea7f857dd9e7ced9476cdd7b0394432af4bfc241b960"}, + "raxx": {:hex, :raxx, "1.1.0", "d6a03143a91f8092c0be1ec555075c76c8d680601236de706f020d17abcf8b16", [:mix], [], "hexpm", "58fdc4b62127890dfe7129a7e372b624411a7623f688bde9e98ff2af3fd9cb46"}, + "raxx_logger": {:hex, :raxx_logger, "0.2.2", "51bbce9371298e7329de028fe13cf050bf59547bc8f1926910d479ba4b31c4b4", [:mix], [{:raxx, "~> 0.17.5 or ~> 0.18.0 or ~> 1.0", [hex: :raxx, repo: "hexpm", optional: false]}], "hexpm", "862e4cae2b98a3aa579bbf8952b496ee265b378ebcd079ccb6c9e269a3dbf45e"}, + "raxx_static": {:hex, :raxx_static, "0.8.3", "54022edeba731fa82f8c16fffe8a0c3f36bf55808aba7c3043922cb6b2951a1c", [:mix], [{:mime, "~> 1.1", [hex: :mime, repo: "hexpm", optional: false]}, {:raxx, "~> 0.17.0 or ~> 0.18.0 or ~> 1.0", [hex: :raxx, repo: "hexpm", optional: false]}], "hexpm", "c3f814dd82953b05b5344a4b16deb7199b79061a5e72126ec3f5cd42aebbacc8"}, + "raxx_view": {:hex, :raxx_view, "0.1.7", "8e7edeafaa3d59743f24ac7684852040e9634b9882dcd6d17b5e1e926b4ed729", [:mix], [{:eex_html, "~> 0.2.1 or ~> 1.0", [hex: :eex_html, repo: "hexpm", optional: false]}, {:raxx, "~> 0.17.6 or ~> 0.18.0 or ~> 1.0", [hex: :raxx, repo: "hexpm", optional: false]}], "hexpm", "d1e9e18000ae31a3c08be8cdca66dc338dc9bf9d2428ce6f589f389e5bd8789a"}, + "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.5", "6eaf7ad16cb568bb01753dbbd7a95ff8b91c7979482b95f38443fe2c8852a79b", [:make, :mix, :rebar3], [], "hexpm", "13104d7897e38ed7f044c4de953a6c28597d1c952075eb2e328bc6d6f2bfc496"}, + "tzdata": {:hex, :tzdata, "1.0.3", "73470ad29dde46e350c60a66e6b360d3b99d2d18b74c4c349dbebbc27a09a3eb", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "a6e1ee7003c4d04ecbd21dd3ec690d4c6662db5d3bbdd7262d53cdf5e7c746c1"}, + "unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm", "1d1848c40487cdb0b30e8ed975e34e025860c02e419cb615d255849f3427439d"}, }