diff --git a/.gitignore b/.gitignore index 7a848936..cce1ca14 100644 --- a/.gitignore +++ b/.gitignore @@ -39,6 +39,3 @@ erl_crash.dump /.elixir_ls/ *~ *.orig - -# asdf -.tool-versions diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 00000000..013b6663 --- /dev/null +++ b/.tool-versions @@ -0,0 +1,2 @@ +erlang 23.1.2 +elixir 1.11.2-otp-23 diff --git a/.travis.yml b/.travis.yml index efc031db..889a89e2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,8 +12,8 @@ stages: .elixir-env: &elixir-env language: elixir - elixir: "1.10" - otp_release: "22.0" + elixir: "1.11" + otp_release: "23.0" jobs: include: diff --git a/CHANGELOG.md b/CHANGELOG.md index 053b89a1..dae12028 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,7 +31,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 helm repo add accenture https://accenture.github.io/reactive-interaction-gateway helm install rig accenture/reactive-interaction-gateway ``` - + More information, follow the [deployment Readme](./deployment/README.md). [#319](https://github.com/Accenture/reactive-interaction-gateway/issues/319) - make README smaller, easier to read and highlight features. [#284](https://github.com/Accenture/reactive-interaction-gateway/issues/284) @@ -55,7 +55,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - +### Technical Improvements + +- Updated dependencies to support OTP 23. We've also replaced the versions file with `.tool-versions`, which makes it easier for those using the [asdf package manager](https://asdf-vm.com/) - just run `asdf install` to obtain the correct versions of Erlang and Elixir. + [#341](https://github.com/Accenture/reactive-interaction-gateway/issues/341) ## [2.4.0] - 2020-05-07 diff --git a/Dockerfile b/Dockerfile index b9590ffa..90430e56 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,8 @@ -FROM elixir:1.10-alpine as build +FROM elixir:1.11-alpine as build # Install Elixir & Erlang environment dependencies RUN apk add --no-cache make gcc g++ +COPY .tool-versions /opt/sites/rig/ RUN mix local.hex --force RUN mix local.rebar --force @@ -9,7 +10,6 @@ ENV MIX_ENV=prod WORKDIR /opt/sites/rig # Copy release config -COPY version /opt/sites/rig/ COPY rel /opt/sites/rig/rel/ COPY vm.args /opt/sites/rig/ @@ -28,7 +28,7 @@ COPY lib /opt/sites/rig/lib RUN mix compile RUN mix distillery.release -FROM erlang:22-alpine +FROM erlang:23-alpine LABEL org.label-schema.name="Reactive Interaction Gateway" LABEL org.label-schema.description="Reactive API Gateway and Event Hub" diff --git a/aws.dockerfile b/aws.dockerfile index 1a83960b..c804cb6a 100644 --- a/aws.dockerfile +++ b/aws.dockerfile @@ -7,10 +7,11 @@ WORKDIR /opt/sites/rig/kinesis-client # Compile AWS Kinesis Java application RUN mvn package -FROM elixir:1.10-alpine as elixir-build +FROM elixir:1.11-alpine as elixir-build # Install Elixir & Erlang environment dependencies RUN apk add --no-cache make gcc g++ +COPY .tool-versions /opt/sites/rig/ RUN mix local.hex --force RUN mix local.rebar --force @@ -18,7 +19,6 @@ ENV MIX_ENV=prod WORKDIR /opt/sites/rig # Copy release config -COPY version /opt/sites/rig/ COPY rel /opt/sites/rig/rel/ COPY vm.args /opt/sites/rig/ @@ -37,7 +37,7 @@ COPY lib /opt/sites/rig/lib RUN mix compile RUN mix distillery.release -FROM erlang:22-alpine +FROM erlang:23-alpine RUN apk add --no-cache bash diff --git a/config/config.exs b/config/config.exs index 073c2cb8..235e98c8 100644 --- a/config/config.exs +++ b/config/config.exs @@ -123,3 +123,9 @@ config :rig, RIG.Tracing, jaeger_service_name: {:system, :charlist, "JAEGER_SERVICE_NAME", 'rig'}, zipkin_address: {:system, :charlist, "ZIPKIN_ADDR", ''}, zipkin_service_name: {:system, "ZIPKIN_SERVICE_NAME", "rig"} + +# -------------------------------------- +# Phoenix +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +config :phoenix, :json_library, Jason diff --git a/config/rig_api/config.exs b/config/rig_api/config.exs index b914ae48..01d8f374 100644 --- a/config/rig_api/config.exs +++ b/config/rig_api/config.exs @@ -37,7 +37,7 @@ config :rig, RigApi.Endpoint, protocol_options: cowboy_options ], render_errors: [view: RigApi.ErrorView, accepts: ~w(json)], - pubsub: [name: Rig.PubSub], + pubsub_server: Rig.PubSub, check_origin: false # Always start the HTTP endpoints on application startup: diff --git a/config/rig_inbound_gateway/config.exs b/config/rig_inbound_gateway/config.exs index 6b90f765..8d90f6fe 100644 --- a/config/rig_inbound_gateway/config.exs +++ b/config/rig_inbound_gateway/config.exs @@ -65,7 +65,7 @@ config :rig, RigInboundGatewayWeb.Endpoint, transport_options: ranch_transport_options ], render_errors: [view: RigInboundGatewayWeb.ErrorView, accepts: ~w(html json xml)], - pubsub: [name: Rig.PubSub], + pubsub_server: Rig.PubSub, check_origin: false config :mime, :types, %{ diff --git a/docs/rig-dev-guide.md b/docs/rig-dev-guide.md index 0a834f64..5b10f6b6 100644 --- a/docs/rig-dev-guide.md +++ b/docs/rig-dev-guide.md @@ -4,7 +4,7 @@ title: Developer's Guide to the Reactive Interaction Gateway sidebar_label: Developer's Guide --- -You'd like to mess with the code? Great! To get started, install Elixir and the Mix build tool on your machine. You can either follow the [instructions on the Elixir website](https://elixir-lang.org/install.html), or use [kiex](https://github.com/taylor/kiex) to install and manage Elixir runtimes. Kiex is recommended for development, because it allows you to jump to definitions inside the Elixir source code, plus you can checkout upcoming Elixir versions easily. +You'd like to help hacking? Great! To get started, install Elixir and the Mix build tool on your machine. If you use [asdf](https://asdf-vm.com/), all you need to do is `asdf install`. Otherwise, either follow the [instructions on the Elixir website](https://elixir-lang.org/install.html), or use [kiex](https://github.com/taylor/kiex) to install and manage Elixir runtimes. With Elixir installed, do this: @@ -38,11 +38,11 @@ To have the project use a newer Elixir version, make sure to change the followin - `.travis.yml`: Update the Elixir and OTP versions in the `.elixir-env` section. - `Dockerfile`, `aws.dockerfile`, `smoke_tests.dockerfile`: Make sure to change the `FROM` image tag for both the build image (elixir:...-alpine) as well as the runtime image (erlang:...-alpine). If the Erlang runtime (ERTS) in the runtime image doesn't match the ERTS version in the build image, chances are the built image won't work due to missing libraries. Because of this, it's best to use the most recent versions for both images when upgrading - they should always be compatible. -- `version`: Again, make sure both the Elixir and the OTP versions match what you have used in the previous steps. +- `.tool-versions`: Again, make sure both the Elixir and the OTP versions match what you have used in the previous steps. ## Releasing a new version -- Increment `rig` version in the [version](../version) file +- Increment `@rig_version` in [mix.exs](../mix.exs) - Increment `appVersion` in the [Helm v2 Chart.yaml](../deployment/reactive-interaction-gateway/Chart.yaml) and [Helm v3 Chart.yaml](../deployment/reactive-interaction-gateway/Chart.yaml) files - Update Helm chart README files: install [helm-docs](https://github.com/norwoodj/helm-docs) and run `helm-docs` in the root directory - Increment image tag in the [Kubernetes rig.yaml](../deployment/kubectl/rig.yaml) file diff --git a/lib/rig/application.ex b/lib/rig/application.ex index 70bcfaf7..7fe8b0d3 100644 --- a/lib/rig/application.ex +++ b/lib/rig/application.ex @@ -18,7 +18,7 @@ defmodule Rig.Application do Discovery.start() children = [ - Spec.supervisor(Phoenix.PubSub.PG2, [Rig.PubSub, []]), + {Phoenix.PubSub, name: Rig.PubSub}, # Kafka: {DynamicSupervisor, strategy: :one_for_one, name: RigKafka.DynamicSupervisor}, # Event stream handling: diff --git a/lib/rig/distributed_set.ex b/lib/rig/distributed_set.ex index 01f56c3a..6d196f3d 100644 --- a/lib/rig/distributed_set.ex +++ b/lib/rig/distributed_set.ex @@ -124,7 +124,7 @@ defmodule RIG.DistributedSet do {:ok, %{state | ets_table: ets_table}} end - @doc "Handles get_record requests from other nodes." + # Handles get_record requests from other nodes. @impl GenServer def handle_call( {:get_records, since_record_id}, @@ -163,7 +163,7 @@ defmodule RIG.DistributedSet do {:reply, reply, state} end - @doc "Handles adding a record on this node." + # Handles adding a record on this node. @impl GenServer def handle_call( {:add_from_local, {_, uuid, _, _} = record}, @@ -211,12 +211,10 @@ defmodule RIG.DistributedSet do {:noreply, %{state | last_record_id: synced_record_id}} end - @doc """ - Asks a random peer for missing records. - - Records are missing on startup, but there could also be a gap caused by a temporary - network split. - """ + # Asks a random peer for missing records. + # + # Records are missing on startup, but there could also be a gap caused by a temporary + # network split. @impl GenServer def handle_info( :sync_with_random_peer, @@ -241,7 +239,7 @@ defmodule RIG.DistributedSet do {:noreply, state} end - @doc "Remove expired records." + # Remove expired records. @impl GenServer def handle_info(:cleanup, %{ets_table: ets_table} = state) do remove_expired_records(ets_table) diff --git a/lib/rig_api/router.ex b/lib/rig_api/router.ex index dc60897f..354bf381 100644 --- a/lib/rig_api/router.ex +++ b/lib/rig_api/router.ex @@ -6,7 +6,7 @@ defmodule RigApi.Router do parsers: [:urlencoded, :multipart, :json], # return "415 Unsupported Media Type" if not handled by any parser pass: [], - json_decoder: Poison + json_decoder: Jason ) end diff --git a/lib/rig_cloud_events/cloud_event.ex b/lib/rig_cloud_events/cloud_event.ex index f1c9ca2b..d8b77146 100644 --- a/lib/rig_cloud_events/cloud_event.ex +++ b/lib/rig_cloud_events/cloud_event.ex @@ -38,14 +38,12 @@ defmodule RigCloudEvents.CloudEvent do end end - @doc """ - Convenience function used in testing. - - If this would be called in production, of course it would be way more efficient to - access the given map directly. However, this modules' raison d'ĂȘtre is the safe - handling of incoming JSON encoded data, so it's safe to assume this function is ever - only called by tests. - """ + # Convenience function used in testing. + # + # If this would be called in production, of course it would be way more efficient to + # access the given map directly. However, this modules' raison d'ĂȘtre is the safe + # handling of incoming JSON encoded data, so it's safe to assume this function is ever + # only called by tests. @spec parse(map) :: {:ok, t} | {:error, any} def parse(map) when is_map(map) do map |> Jason.encode!() |> parse diff --git a/lib/rig_inbound_gateway/api_proxy/handler.ex b/lib/rig_inbound_gateway/api_proxy/handler.ex index 52386386..0def3f51 100644 --- a/lib/rig_inbound_gateway/api_proxy/handler.ex +++ b/lib/rig_inbound_gateway/api_proxy/handler.ex @@ -7,6 +7,5 @@ defmodule RigInboundGateway.ApiProxy.Handler do alias RigInboundGateway.ApiProxy.Api @type request_path :: String.t() - @callback handle_http_request(Conn.t(), Api.t(), Api.endpoint(), request_path) :: - :ok | {:error, any} + @callback handle_http_request(Conn.t(), Api.t(), Api.endpoint(), request_path) :: Conn.t() end diff --git a/lib/rig_inbound_gateway/api_proxy/handler/kafka.ex b/lib/rig_inbound_gateway/api_proxy/handler/kafka.ex index 96374317..d21ff9e3 100644 --- a/lib/rig_inbound_gateway/api_proxy/handler/kafka.ex +++ b/lib/rig_inbound_gateway/api_proxy/handler/kafka.ex @@ -59,7 +59,7 @@ defmodule RigInboundGateway.ApiProxy.Handler.Kafka do @impl Handler def handle_http_request(conn, api, endpoint, request_path) - @doc "CORS response for preflight request." + # CORS response for preflight request. def handle_http_request( %{method: "OPTIONS"} = conn, _, @@ -139,7 +139,7 @@ defmodule RigInboundGateway.ApiProxy.Handler.Kafka do query: conn.query_string }) |> Tracing.append_context(Tracing.context()) - |> Poison.encode!() + |> Jason.encode!() produce(partition, kafka_message, topic, schema) diff --git a/lib/rig_inbound_gateway/api_proxy/handler/kinesis.ex b/lib/rig_inbound_gateway/api_proxy/handler/kinesis.ex index 49b291f6..a209580d 100644 --- a/lib/rig_inbound_gateway/api_proxy/handler/kinesis.ex +++ b/lib/rig_inbound_gateway/api_proxy/handler/kinesis.ex @@ -55,7 +55,7 @@ defmodule RigInboundGateway.ApiProxy.Handler.Kinesis do @impl Handler def handle_http_request(conn, api, endpoint, request_path) - @doc "CORS response for preflight request." + # CORS response for preflight request. def handle_http_request( %{method: "OPTIONS"} = conn, _, @@ -125,7 +125,7 @@ defmodule RigInboundGateway.ApiProxy.Handler.Kinesis do query: conn.query_string }) |> Tracing.append_context(Tracing.context()) - |> Poison.encode!() + |> Jason.encode!() produce(partition, kinesis_message, topic) diff --git a/lib/rig_inbound_gateway/api_proxy/handler/nats.ex b/lib/rig_inbound_gateway/api_proxy/handler/nats.ex index 97e040a4..429f87f0 100644 --- a/lib/rig_inbound_gateway/api_proxy/handler/nats.ex +++ b/lib/rig_inbound_gateway/api_proxy/handler/nats.ex @@ -23,7 +23,7 @@ defmodule RigInboundGateway.ApiProxy.Handler.Nats do @doc @help_text def handle_http_request(conn, api, endpoint, request_path) - @doc "CORS response for preflight request." + # CORS response for preflight request. def handle_http_request(%{method: "OPTIONS"} = conn, _, %{"target" => "nats"} = _endpoint, _) do conn |> with_cors() diff --git a/lib/rig_inbound_gateway/api_proxy/presence_handler.ex b/lib/rig_inbound_gateway/api_proxy/presence_handler.ex index bc9deaab..3731f374 100644 --- a/lib/rig_inbound_gateway/api_proxy/presence_handler.ex +++ b/lib/rig_inbound_gateway/api_proxy/presence_handler.ex @@ -10,7 +10,7 @@ defmodule RigInboundGateway.ApiProxy.PresenceHandler do """ require Logger - @behaviour Phoenix.Tracker + use Phoenix.Tracker alias RigInboundGateway.Proxy diff --git a/lib/rig_inbound_gateway/api_proxy/serializer.ex b/lib/rig_inbound_gateway/api_proxy/serializer.ex index 578cf2e3..a5c271aa 100644 --- a/lib/rig_inbound_gateway/api_proxy/serializer.ex +++ b/lib/rig_inbound_gateway/api_proxy/serializer.ex @@ -23,6 +23,6 @@ defmodule RigInboundGateway.ApiProxy.Serializer do end def encode_error_message(message) do - Poison.encode!(%{message: message}) + Jason.encode!(%{message: message}) end end diff --git a/lib/rig_inbound_gateway/api_proxy/sup.ex b/lib/rig_inbound_gateway/api_proxy/sup.ex index 14dcef7f..6d7dde95 100644 --- a/lib/rig_inbound_gateway/api_proxy/sup.ex +++ b/lib/rig_inbound_gateway/api_proxy/sup.ex @@ -12,7 +12,7 @@ defmodule RigInboundGateway.ApiProxy.Sup do def init(:ok) do children = [ - worker(RigInboundGateway.ApiProxy.PresenceHandler, _args = [[pubsub_server: Rig.PubSub]]) + {RigInboundGateway.ApiProxy.PresenceHandler, [pubsub_server: Rig.PubSub]} ] Supervisor.init(children, strategy: :one_for_one) diff --git a/lib/rig_inbound_gateway/request_logger/kafka.ex b/lib/rig_inbound_gateway/request_logger/kafka.ex index 5ff4c04a..65625dd2 100644 --- a/lib/rig_inbound_gateway/request_logger/kafka.ex +++ b/lib/rig_inbound_gateway/request_logger/kafka.ex @@ -56,7 +56,7 @@ defmodule RigInboundGateway.RequestLogger.Kafka do } } |> Tracing.append_context(Tracing.context()) - |> Poison.encode!() + |> Jason.encode!() produce("partition", kafka_message) end diff --git a/lib/rig_inbound_gateway_web/v1/sse.ex b/lib/rig_inbound_gateway_web/v1/sse.ex index b50f3049..0b99b4ca 100644 --- a/lib/rig_inbound_gateway_web/v1/sse.ex +++ b/lib/rig_inbound_gateway_web/v1/sse.ex @@ -50,7 +50,8 @@ defmodule RigInboundGatewayWeb.V1.SSE do {:error, reason} -> req = :cowboy_req.reply(400, %{}, reason, req) - {:stop, req, :unknown_state} + # Returning :ok at this point simply closes the handler. + {:ok, req, :unknown_state} end end @@ -84,7 +85,8 @@ defmodule RigInboundGatewayWeb.V1.SSE do on_error = fn reason -> req = :cowboy_req.reply(400, %{}, reason, req) - {:stop, req, :no_state} + # Returning :ok at this point simply closes the handler. + {:ok, req, :no_state} end ConnectionInit.set_up( diff --git a/lib/rig_inbound_gateway_web/v1/websocket.ex b/lib/rig_inbound_gateway_web/v1/websocket.ex index ebdce252..3fbab701 100644 --- a/lib/rig_inbound_gateway_web/v1/websocket.ex +++ b/lib/rig_inbound_gateway_web/v1/websocket.ex @@ -96,13 +96,13 @@ defmodule RigInboundGatewayWeb.V1.Websocket do # --- - @doc ~S"The client may send this as the response to the :ping heartbeat." + # The client may send this as the response to the :ping heartbeat. @impl :cowboy_websocket def websocket_handle({:pong, _app_data}, state), do: {:ok, state, :hibernate} @impl :cowboy_websocket def websocket_handle(:pong, state), do: {:ok, state, :hibernate} - @doc ~S"Allow the client to send :ping messages to test connectivity." + # Allow the client to send :ping messages to test connectivity. @impl :cowboy_websocket def websocket_handle({:ping, app_data}, _state), do: {:reply, {:pong, app_data}, :hibernate} diff --git a/lib/rig_outbound_gateway/kinesis/java_client.ex b/lib/rig_outbound_gateway/kinesis/java_client.ex index 42245c87..7017ff49 100644 --- a/lib/rig_outbound_gateway/kinesis/java_client.ex +++ b/lib/rig_outbound_gateway/kinesis/java_client.ex @@ -117,7 +117,7 @@ defmodule RigOutboundGateway.Kinesis.JavaClient do @spec java_client_callback(data :: [{atom(), String.t()}, ...]) :: :ok def java_client_callback(data) do data[:body] - |> Poison.decode!() + |> Jason.decode!() |> KinesisToFilter.kinesis_handler() end end diff --git a/mix.exs b/mix.exs index c5193c7c..d929ffe8 100644 --- a/mix.exs +++ b/mix.exs @@ -7,8 +7,10 @@ defmodule RIG.MixProject do from backend services to connected frontends (and vice versa). """ + @rig_version "3.0.0-alpha.1" + def project do - %{rig: rig_version, elixir: elixir_version} = versions() + elixir_version = elixir_version_from_tool_versions_file() [ # OTP app: @@ -17,7 +19,7 @@ defmodule RIG.MixProject do # Meta data: name: "Reactive Interaction Gateway", description: @description, - version: rig_version, + version: @rig_version, source_url: "https://github.com/Accenture/reactive-interaction-gateway", homepage_url: "https://accenture.github.io/reactive-interaction-gateway", docs: docs(), @@ -44,6 +46,11 @@ defmodule RIG.MixProject do ] end + defp elixir_version_from_tool_versions_file do + [_, version] = Regex.run(~r/^elixir (.+)-otp-\d+$/m, File.read!(".tool-versions")) + version + end + defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_), do: ["lib"] @@ -70,11 +77,6 @@ defmodule RIG.MixProject do ] end - defp versions do - {map, []} = Code.eval_file("version", ".") - map - end - defp docs do [ # Website and documentation is built off master, @@ -116,7 +118,7 @@ defmodule RIG.MixProject do # Read and use application configuration from environment variables: {:confex, "~> 3.4"}, # For providing the global Phx PubSub server: - {:phoenix_pubsub, "~> 1.1"}, + {:phoenix_pubsub, "~> 2.0"}, # for Kafka, partition from MurmurHash(key): {:murmur, "~> 1.0"}, {:peerage, "~> 1.0"}, @@ -124,9 +126,7 @@ defmodule RIG.MixProject do {:porcelain, "~> 2.0"}, # HTTP request handling (wraps Cowboy): {:plug, "~> 1.9"}, - # JSON parser, for cloud_event and event_hub: - {:poison, "~> 3.0 or ~> 4.0"}, - # JSON parser that's supposedly faster than poison: + # JSON parser: {:jason, "~> 1.2"}, {:jaxon, "~> 1.0"}, # JSON Pointer (RFC 6901) implementation for subscriptions: @@ -152,7 +152,7 @@ defmodule RIG.MixProject do # For JSON Web Tokens: {:joken, "~> 1.5"}, # Web framework, for all HTTP endpoints except SSE and WS: - {:phoenix, "~> 1.4"}, + {:phoenix, "~> 1.5"}, {:plug_cowboy, "~> 2.1"}, {:phoenix_swagger, "~> 0.8"}, # Data validation library, e.g. used for proxy configuration: @@ -179,7 +179,7 @@ defmodule RIG.MixProject do {:opencensus_jaeger, "~> 0.0.1"}, {:opencensus_zipkin, "~> 0.3"}, # NATS client: - {:gnat, "~> 1.0.0"} + {:gnat, "~> 1.0"} ] end diff --git a/mix.lock b/mix.lock index c94291e4..cc4f754c 100644 --- a/mix.lock +++ b/mix.lock @@ -1,56 +1,60 @@ %{ "accept": {:hex, :accept, "0.3.5", "b33b127abca7cc948bbe6caa4c263369abf1347cfa9d8e699c6d214660f10cd1", [:rebar3], [], "hexpm", "11b18c220bcc2eab63b5470c038ef10eb6783bcb1fcdb11aa4137defa5ac1bb8"}, - "artificery": {:hex, :artificery, "0.4.2", "3ded6e29e13113af52811c72f414d1e88f711410cac1b619ab3a2666bbd7efd4", [:mix], [], "hexpm", "514586f4312ef3709a3ccbd8e55f69455add235c1729656687bb781d10d0afdb"}, - "avrora": {:hex, :avrora, "0.12.0", "e8ca564b24b70f398ef98c954576088a47d4894aa3877ce0ff4f1dbd276d5b7d", [:mix], [{:erlavro, "~> 2.9.0", [hex: :erlavro, repo: "hexpm", optional: false]}, {:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "481834281d22c05699d8862976527bb2e6bc5e2e246374a3b6fb2a6564057cb6"}, + "artificery": {:hex, :artificery, "0.4.3", "0bc4260f988dcb9dda4b23f9fc3c6c8b99a6220a331534fdf5bf2fd0d4333b02", [:mix], [], "hexpm", "12e95333a30e20884e937abdbefa3e7f5e05609c2ba8cf37b33f000b9ffc0504"}, + "avrora": {:hex, :avrora, "0.13.0", "09534a0748327970ac9c20b87adc3cbda4b4e34e6c48f3f8ec26c9b2d87b2fe8", [:mix], [{:erlavro, "~> 2.9.0", [hex: :erlavro, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "e9622b9adc832be77613207428f26898dde824de631e54ac8bcf90ce03b5f3f1"}, "base64url": {:hex, :base64url, "0.0.1", "36a90125f5948e3afd7be97662a1504b934dd5dac78451ca6e9abf85a10286be", [:rebar], [], "hexpm", "fab09b20e3f5db886725544cbcf875b8e73ec93363954eb8a1a9ed834aa8c1f9"}, - "brod": {:hex, :brod, "3.9.5", "b311cdb78a359fdea8998ad98ceefb3bfedfdb513a272993e2d150bc6a58108a", [:make, :rebar, :rebar3], [{:kafka_protocol, "2.3.3", [hex: :kafka_protocol, repo: "hexpm", optional: false]}, {:supervisor3, "1.1.8", [hex: :supervisor3, repo: "hexpm", optional: false]}], "hexpm", "b14727482de1d00529c36190979283fd7e90a5aa4a5bec91472406c47bacb2ee"}, + "brod": {:hex, :brod, "3.15.1", "073b0e16f4193291a05e01ae36351ddba1bda85ad4f90f66566c8123a335150e", [:rebar3], [{:kafka_protocol, "2.3.6", [hex: :kafka_protocol, repo: "hexpm", optional: false]}, {:supervisor3, "1.1.11", [hex: :supervisor3, repo: "hexpm", optional: false]}], "hexpm", "170216364cb9c72201ab59416ec7283d5e3fc094406b03210df6be0347234c4e"}, "bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm", "7af5c7e09fe1d40f76c8e4f9dd2be7cebd83909f31fee7cd0e9eadc567da8353"}, - "certifi": {:hex, :certifi, "2.5.1", "867ce347f7c7d78563450a18a6a28a8090331e77fa02380b4a21962a65d36ee5", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "805abd97539caf89ec6d4732c91e62ba9da0cda51ac462380bbd28ee697a8c42"}, + "certifi": {:hex, :certifi, "2.5.2", "b7cfeae9d2ed395695dd8201c57a2d019c0c43ecaf8b8bcb9320b40d6662f340", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "3b3b5f36493004ac3455966991eaf6e768ce9884693d9968055aeeeb1e575040"}, "cloudevents": {:hex, :cloudevents, "0.4.0", "bf8b38fe530f0507db4e056818c8742fa96daa06367681cb126a782fb4526ba5", [:mix], [{:avrora, "~> 0.11", [hex: :avrora, repo: "hexpm", optional: false]}, {:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: false]}, {:typed_struct, "~> 0.2.0", [hex: :typed_struct, repo: "hexpm", optional: false]}], "hexpm", "9a971243124c43302b8a996143cc3f391353abe5a83485c81c92986385d27455"}, "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"}, - "confex": {:hex, :confex, "3.4.0", "8b1c3cc7a93320291abb31223a178df19d7f722ee816c05a8070c8c9a054560d", [:mix], [], "hexpm", "4a14e15185c772389979cf4c050ddcc7a25a4d62759da13a170e0ca7274a22c7"}, + "confex": {:hex, :confex, "3.5.0", "163857c73dd8f88a3815663f4bc00bee1b9c65daf40aa6e0d6ef272757fd22c7", [:mix], [], "hexpm", "34a9e31230c7fbb3dbe60db00341d0c84ee44ba3caf84b498f501c0bc8563570"}, "counters": {:hex, :counters, "0.2.1", "aa3d97e88f92573488987193d0f48efce0f3b2cd1443bf4ee760bc7f99322f0c", [:mix, :rebar3], [], "hexpm", "a020c714992f7db89178d27e1f39909e5d77da3b80daa4d6015877ed0c94b8ab"}, - "cowboy": {:hex, :cowboy, "2.7.0", "91ed100138a764355f43316b1d23d7ff6bdb0de4ea618cb5d8677c93a7a2f115", [:rebar3], [{:cowlib, "~> 2.8.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.7.1", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "04fd8c6a39edc6aaa9c26123009200fc61f92a3a94f3178c527b70b767c6e605"}, - "cowlib": {:hex, :cowlib, "2.8.0", "fd0ff1787db84ac415b8211573e9a30a3ebe71b5cbff7f720089972b2319c8a4", [:rebar3], [], "hexpm", "79f954a7021b302186a950a32869dbc185523d99d3e44ce430cd1f3289f41ed4"}, - "crc32cer": {:hex, :crc32cer, "0.1.3", "8984906c4b4fae6aa292c48f286a1c83b19ad44bd102287acb94d696015967ce", [:make, :rebar, :rebar3], [], "hexpm", "e35840bfd312192748bf177e92e85270e2bf0bbc01462da1f7afd4298edae4a7"}, - "credo": {:hex, :credo, "1.3.0", "37699fefdbe1b0480a5a6b73f259207e9cd7ad5e492277e22c2179bcb226a67b", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "8036b9226e4440d3ebce3931505e407b8d59fc95975f574c26337812e8de2a86"}, + "cowboy": {:hex, :cowboy, "2.8.0", "f3dc62e35797ecd9ac1b50db74611193c29815401e53bac9a5c0577bd7bc667d", [:rebar3], [{:cowlib, "~> 2.9.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.7.1", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "4643e4fba74ac96d4d152c75803de6fad0b3fa5df354c71afdd6cbeeb15fac8a"}, + "cowboy_telemetry": {:hex, :cowboy_telemetry, "0.3.1", "ebd1a1d7aff97f27c66654e78ece187abdc646992714164380d8a041eda16754", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "3a6efd3366130eab84ca372cbd4a7d3c3a97bdfcfb4911233b035d117063f0af"}, + "cowlib": {:hex, :cowlib, "2.9.1", "61a6c7c50cf07fdd24b2f45b89500bb93b6686579b069a89f88cb211e1125c78", [:rebar3], [], "hexpm", "e4175dc240a70d996156160891e1c62238ede1729e45740bdd38064dad476170"}, + "crc32cer": {:hex, :crc32cer, "0.1.4", "a656dff19474d1a1fc5bb0081610ab6b0695b23affc47fa90abeb079a8ef9752", [:rebar3], [], "hexpm", "964735a5422cf65bbc5354860a560fff546f0026f83f8860525bd58ab5bade5d"}, + "credo": {:hex, :credo, "1.5.1", "4fe303cc828412b9d21eed4eab60914c401e71f117f40243266aafb66f30d036", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "0b219ca4dcc89e4e7bc6ae7e6539c313e738e192e10b85275fa1e82b5203ecd7"}, "ctx": {:hex, :ctx, "0.5.0", "78e0f16712e12d707a7f34277381b8e193d7c71eaa24d37330dc02477c09eda5", [:rebar3], [], "hexpm", "52554d80f9d93b3f82dba8e1776e8ea87b0d6218ae94ba0f73d61ad1579aed08"}, "deferred_config": {:hex, :deferred_config, "0.1.1", "ec912e9ee3c99b90a8d4bdec8fbd15309f4bd6729f30789e0ff6f595d06bbce5", [:mix], [], "hexpm", "2eb5311037feb4a6a5dbe3ecc5c98af7ea849730e5dbd9aee0f45c5dbccc3922"}, - "dialyxir": {:hex, :dialyxir, "1.0.0-rc.6", "78e97d9c0ff1b5521dd68041193891aebebce52fc3b93463c0a6806874557d7d", [:mix], [{:erlex, "~> 0.2.1", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "49496d63267bc1a4614ffd5f67c45d9fc3ea62701a6797975bc98bc156d2763f"}, + "dialyxir": {:hex, :dialyxir, "1.0.0", "6a1fa629f7881a9f5aaf3a78f094b2a51a0357c843871b8bc98824e7342d00a5", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "aeb06588145fac14ca08d8061a142d52753dbc2cf7f0d00fc1013f53f8654654"}, "distillery": {:hex, :distillery, "2.1.1", "f9332afc2eec8a1a2b86f22429e068ef35f84a93ea1718265e740d90dd367814", [:mix], [{:artificery, "~> 0.2", [hex: :artificery, repo: "hexpm", optional: false]}], "hexpm", "bbc7008b0161a6f130d8d903b5b3232351fccc9c31a991f8fcbf2a12ace22995"}, "earmark": {:hex, :earmark, "1.4.3", "364ca2e9710f6bff494117dbbd53880d84bebb692dafc3a78eb50aa3183f2bfd", [:mix], [], "hexpm", "8cf8a291ebf1c7b9539e3cddb19e9cef066c2441b1640f13c34c1d3cfc825fec"}, - "elixir_make": {:hex, :elixir_make, "0.5.2", "96a28c79f5b8d34879cd95ebc04d2a0d678cfbbd3e74c43cb63a76adf0ee8054", [:mix], [], "hexpm", "382eeea8e02dfe6c468f6729b6cf20fe5b14390671d38c7363e59621c7ab4efc"}, + "earmark_parser": {:hex, :earmark_parser, "1.4.10", "6603d7a603b9c18d3d20db69921527f82ef09990885ed7525003c7fe7dc86c56", [:mix], [], "hexpm", "8e2d5370b732385db2c9b22215c3f59c84ac7dda7ed7e544d7c459496ae519c0"}, + "ed25519": {:hex, :ed25519, "1.3.2", "e3a2d4badf57f0799279cf09925bd761ec38df6df3696e266585626280b5c0ad", [:mix], [], "hexpm", "2290e46e0e23717adbe20632c6dd29aa71a46ca6e153ef7ba41fe1204f66f859"}, + "elixir_make": {:hex, :elixir_make, "0.6.1", "8faa29a5597faba999aeeb72bbb9c91694ef8068f0131192fb199f98d32994ef", [:mix], [], "hexpm", "35d33270680f8d839a4003c3e9f43afb595310a592405a00afc12de4c7f55a18"}, "erlavro": {:hex, :erlavro, "2.9.0", "a709780bde5fd16cb3ea759bc34c4fe5276513a8c6eeeab3cf0df7d2ca92dcb2", [:make, :rebar, :rebar3], [{:jsone, "1.4.6", [hex: :jsone, repo: "hexpm", optional: false]}], "hexpm", "fce3428cd395a429c3354700abe2f1592e33a33272870dc2d15d662d4f454afc"}, - "erlex": {:hex, :erlex, "0.2.4", "23791959df45fe8f01f388c6f7eb733cc361668cbeedd801bf491c55a029917b", [:mix], [], "hexpm", "4a12ebc7cd8f24f2d0fce93d279fa34eb5068e0e885bb841d558c4d83c52c439"}, + "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, "ex2ms": {:hex, :ex2ms, "1.6.0", "f39bbd9ff1b0f27b3f707bab2d167066dd8965e7df1149b962d94c74615d0e09", [:mix], [], "hexpm", "0d1ab5e08421af5cd69146efb408dbb1ff77f38a2f4df5f086f2512dc8cf65bf"}, - "ex_aws": {:hex, :ex_aws, "2.1.0", "b92651527d6c09c479f9013caa9c7331f19cba38a650590d82ebf2c6c16a1d8a", [:mix], [{:configparser_ex, "~> 2.0", [hex: :configparser_ex, repo: "hexpm", optional: true]}, {:hackney, "1.6.3 or 1.6.5 or 1.7.1 or 1.8.6 or ~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jsx, "~> 2.8", [hex: :jsx, repo: "hexpm", optional: true]}, {:poison, ">= 1.2.0", [hex: :poison, repo: "hexpm", optional: true]}, {:sweet_xml, "~> 0.6", [hex: :sweet_xml, repo: "hexpm", optional: true]}, {:xml_builder, "~> 0.1.0", [hex: :xml_builder, repo: "hexpm", optional: true]}], "hexpm", "4223b096805cf3fc7b1af766d5039d2945cc82f9794094fdced49a721864956d"}, + "ex_aws": {:hex, :ex_aws, "2.1.6", "41ab8b4caa48035c96d07faa035d2d9de6df480e7e084c054e662ac888dcd4d4", [:mix], [{:configparser_ex, "~> 4.0", [hex: :configparser_ex, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: true]}, {:jsx, "~> 2.8", [hex: :jsx, repo: "hexpm", optional: true]}, {:sweet_xml, "~> 0.6", [hex: :sweet_xml, repo: "hexpm", optional: true]}], "hexpm", "a541bd042c1ee26412bb1e749ddf2a1c327e4fb7e382b1cd227e1b00eed3d469"}, "ex_aws_kinesis": {:hex, :ex_aws_kinesis, "2.0.1", "7f8746e89904ccc6da2c9575e8fe08584e189b2739d964968bba2b9ec1f57fd6", [:mix], [{:ex_aws, "~> 2.0", [hex: :ex_aws, repo: "hexpm", optional: false]}], "hexpm", "7ba0e4673ad62bf8e9752e747f180a6a999ca53e9bb433d728df6b8cdcc86f75"}, - "ex_doc": {:hex, :ex_doc, "0.21.3", "857ec876b35a587c5d9148a2512e952e24c24345552259464b98bfbb883c7b42", [:mix], [{:earmark, "~> 1.4", [hex: :earmark, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm", "0db1ee8d1547ab4877c5b5dffc6604ef9454e189928d5ba8967d4a58a801f161"}, - "excoveralls": {:hex, :excoveralls, "0.12.2", "a513defac45c59e310ac42fcf2b8ae96f1f85746410f30b1ff2b710a4b6cd44b", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "151c476331d49b45601ffc45f43cb3a8beb396b02a34e3777fea0ad34ae57d89"}, + "ex_doc": {:hex, :ex_doc, "0.23.0", "a069bc9b0bf8efe323ecde8c0d62afc13d308b1fa3d228b65bca5cf8703a529d", [:mix], [{:earmark_parser, "~> 1.4.0", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm", "f5e2c4702468b2fd11b10d39416ddadd2fcdd173ba2a0285ebd92c39827a5a16"}, + "excoveralls": {:hex, :excoveralls, "0.13.3", "edc5f69218f84c2bf61b3609a22ddf1cec0fbf7d1ba79e59f4c16d42ea4347ed", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "cc26f48d2f68666380b83d8aafda0fffc65dafcc8d8650358e0b61f6a99b1154"}, "fake_server": {:hex, :fake_server, "2.1.0", "aefed08a587e2498fdb39ac9de6f9eabbe7bd83da9801d08d3574d61b7eb03d5", [:mix], [{:cowboy, "~> 2.5", [hex: :cowboy, repo: "hexpm", optional: false]}, {:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: false]}], "hexpm", "3200d57a523b27d2c8ebfc1a80b76697b3c8a06bf9d678d82114f5f98d350c75"}, - "file_system": {:hex, :file_system, "0.2.8", "f632bd287927a1eed2b718f22af727c5aeaccc9a98d8c2bd7bff709e851dc986", [:mix], [], "hexpm", "97a3b6f8d63ef53bd0113070102db2ce05352ecf0d25390eb8d747c2bde98bca"}, - "gettext": {:hex, :gettext, "0.17.0", "abe21542c831887a2b16f4c94556db9c421ab301aee417b7c4fbde7fbdbe01ec", [:mix], [], "hexpm", "e0b8598e802676c81e66b061a2148c37c03886b24a3ca86a1f98ed40693b94b3"}, - "gnat": {:hex, :gnat, "1.0.0", "6417fb6bb122e80f941b151cca25e9209f7523bde4dbe10901ba05aa21ae1bbd", [:mix], [{:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 0.5", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "db15a1905eb5a82b6a744994ff4ecab566a3a64995dc1cfa25731b2a3cbaff87"}, - "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"}, - "httpoison": {:hex, :httpoison, "1.6.2", "ace7c8d3a361cebccbed19c283c349b3d26991eff73a1eaaa8abae2e3c8089b6", [:mix], [{:hackney, "~> 1.15 and >= 1.15.2", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "aa2c74bd271af34239a3948779612f87df2422c2fdcfdbcec28d9c105f0773fe"}, - "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.2.1", "12b22825e22f468c02eb3e4b9985f3d0cb8dc40b9bd704730efa11abd2708c44", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "b659b8571deedf60f79c5a608e15414085fa141344e2716fbd6988a084b5f993"}, + "file_system": {:hex, :file_system, "0.2.9", "545b9c9d502e8bfa71a5315fac2a923bd060fd9acb797fe6595f54b0f975fd32", [:mix], [], "hexpm", "3cf87a377fe1d93043adeec4889feacf594957226b4f19d5897096d6f61345d8"}, + "gettext": {:hex, :gettext, "0.18.2", "7df3ea191bb56c0309c00a783334b288d08a879f53a7014341284635850a6e55", [:mix], [], "hexpm", "f9f537b13d4fdd30f3039d33cb80144c3aa1f8d9698e47d7bcbcc8df93b1f5c5"}, + "gnat": {:hex, :gnat, "1.2.0", "6b6a0dd0b7d94b359395c1fb3632f546af0d9b825cdddc0e435312de7dad1ad9", [:mix], [{:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 0.5", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:nkeys, "~> 0.2", [hex: :nkeys, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b1d0396939962fc7c1457fe11ad5ec5fd08e45fddbd7efb1994bf6594439aefb"}, + "hackney": {:hex, :hackney, "1.16.0", "5096ac8e823e3a441477b2d187e30dd3fff1a82991a806b2003845ce72ce2d84", [:rebar3], [{:certifi, "2.5.2", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.1", [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]}, {:parse_trans, "3.3.0", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.6", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "3bf0bebbd5d3092a3543b783bf065165fa5d3ad4b899b836810e513064134e18"}, + "httpoison": {:hex, :httpoison, "1.7.0", "abba7d086233c2d8574726227b6c2c4f6e53c4deae7fe5f6de531162ce9929a0", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "975cc87c845a103d3d1ea1ccfd68a2700c211a434d8428b10c323dc95dc5b980"}, + "idna": {:hex, :idna, "6.0.1", "1d038fb2e7668ce41fbf681d2c45902e52b3cb9e9c77b55334353b222c2ee50c", [:rebar3], [{:unicode_util_compat, "0.5.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "a02c8a1c4fd601215bb0b0324c8a6986749f807ce35f25449ec9e69758708122"}, + "jason": {:hex, :jason, "1.2.2", "ba43e3f2709fd1aa1dce90aaabfd039d000469c05c56f0b8e31978e03fa39052", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "18a228f5f0058ee183f29f9eae0805c6e59d61c3b006760668d8d18ff0d12179"}, "jaxon": {:hex, :jaxon, "1.0.10", "bedd7e3a8ed6325fdfef15aff0063faeab633d4b5ddbe8011051b35092a22f15", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "a65e99fa43320700ac8000e82c5061ff5a898ab2dd97c689376e35575554b7f6"}, "joken": {:hex, :joken, "1.5.0", "42a0953e80bd933fc98a0874e156771f78bf0e92abe6c3a9c22feb6da28efb0b", [:mix], [{:jose, "~> 1.8", [hex: :jose, repo: "hexpm", optional: false]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}, {:poison, "~> 1.5 or ~> 2.0 or ~> 3.0", [hex: :poison, repo: "hexpm", optional: true]}], "hexpm", "b161e49dcf44b060407979fbc9c8085c3350f8fda4c60b25c0d5748a7f595aaf"}, - "jose": {:hex, :jose, "1.9.0", "4167c5f6d06ffaebffd15cdb8da61a108445ef5e85ab8f5a7ad926fdf3ada154", [:mix, :rebar3], [{:base64url, "~> 0.0.1", [hex: :base64url, repo: "hexpm", optional: false]}], "hexpm", "6429c4fee52b2dda7861ee19a4f09c8c1ffa213bee3a1ec187828fde95d447ed"}, + "jose": {:hex, :jose, "1.10.1", "16d8e460dae7203c6d1efa3f277e25b5af8b659febfc2f2eb4bacf87f128b80a", [:mix, :rebar3], [], "hexpm", "3c7ddc8a9394b92891db7c2771da94bf819834a1a4c92e30857b7d582e2f8257"}, "jsone": {:hex, :jsone, "1.4.6", "644d6d57befb22c8e19b324dee19d73b1c004565009861a8f64c68b7b9e64dbf", [:rebar3], [], "hexpm", "78eee8bb38f0bee2e73673d71bc75fc6fb01f56f0d23e769a26eee3655487a38"}, "jsx": {:hex, :jsx, "2.9.0", "d2f6e5f069c00266cad52fb15d87c428579ea4d7d73a33669e12679e203329dd", [:mix, :rebar3], [], "hexpm", "8ee1db1cabafdd578a2776a6aaae87c2a8ce54b47b59e9ec7dab5d7eb71cd8dc"}, - "kafka_protocol": {:hex, :kafka_protocol, "2.3.3", "a43eaf1768a1a0300e81c356f543f9e6c02576c5a6a3301a1e5eea7eeede7435", [:rebar, :rebar3], [{:crc32cer, "0.1.3", [hex: :crc32cer, repo: "hexpm", optional: false]}, {:snappyer, "1.2.4", [hex: :snappyer, repo: "hexpm", optional: false]}], "hexpm", "3405854af32823697255bda9550f6d6e7267a01769a5df97923f1aa479ce53be"}, - "makeup": {:hex, :makeup, "1.0.0", "671df94cf5a594b739ce03b0d0316aa64312cee2574b6a44becb83cd90fb05dc", [:mix], [{:nimble_parsec, "~> 0.5.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "a10c6eb62cca416019663129699769f0c2ccf39428b3bb3c0cb38c718a0c186d"}, - "makeup_elixir": {:hex, :makeup_elixir, "0.14.0", "cf8b7c66ad1cff4c14679698d532f0b5d45a3968ffbcbfd590339cb57742f1ae", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "d4b316c7222a85bbaa2fd7c6e90e37e953257ad196dc229505137c5e505e9eff"}, - "memoize": {:hex, :memoize, "1.3.0", "c82eaf40cd2afd0cc050ee0d7e6b298aa2a0d5faa8680b48147deecb4b94300d", [:mix], [], "hexpm", "e7821b08820b39f090c8a2a321c639068fd11690d0477a5a32d477696329058e"}, + "kafka_protocol": {:hex, :kafka_protocol, "2.3.6", "df076a8ef49fffae3535c805cb00f3a057ce1895e63398bf8a10569eeeac02f8", [:rebar, :rebar3], [{:crc32cer, "0.1.4", [hex: :crc32cer, repo: "hexpm", optional: false]}, {:snappyer, "1.2.5", [hex: :snappyer, repo: "hexpm", optional: false]}], "hexpm", "7cb061fe46babc7fd269d2c0e5b4dba5d1efc4f7dacce85b17a9cca973106b23"}, + "makeup": {:hex, :makeup, "1.0.5", "d5a830bc42c9800ce07dd97fa94669dfb93d3bf5fcf6ea7a0c67b2e0e4a7f26c", [:mix], [{:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cfa158c02d3f5c0c665d0af11512fed3fba0144cf1aadee0f2ce17747fba2ca9"}, + "makeup_elixir": {:hex, :makeup_elixir, "0.14.1", "4f0e96847c63c17841d42c08107405a005a2680eb9c7ccadfd757bd31dabccfb", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "f2438b1a80eaec9ede832b5c41cd4f373b38fd7aa33e3b22d9db79e640cbde11"}, + "memoize": {:hex, :memoize, "1.3.2", "f928aea1597b063d148158198a53590c9e5bf8d0c1c8aca8e20b78e566163679", [:mix], [], "hexpm", "c757710fd8afb5a305da997f0a8c7a1cb54dd700af04d3208198553f9b4269c3"}, "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"}, - "mime": {:hex, :mime, "1.3.1", "30ce04ab3175b6ad0bdce0035cba77bba68b813d523d1aac73d9781b4d193cf8", [:mix], [], "hexpm", "6cbe761d6a0ca5a31a0931bf4c63204bceb64538e664a8ecf784a9a6f3b875f1"}, + "mime": {:hex, :mime, "1.4.0", "5066f14944b470286146047d2f73518cf5cca82f8e4815cf35d196b58cf07c47", [:mix], [], "hexpm", "75fa42c4228ea9a23f70f123c74ba7cece6a03b1fd474fe13f6a7a85c6ea4ff6"}, "mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"}, "mix_test_watch": {:hex, :mix_test_watch, "1.0.2", "34900184cbbbc6b6ed616ed3a8ea9b791f9fd2088419352a6d3200525637f785", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm", "47ac558d8b06f684773972c6d04fcc15590abdb97aeb7666da19fcbfdc441a07"}, - "mox": {:hex, :mox, "0.5.0", "c519b48407017a85f03407a9a4c4ceb7cc6dec5fe886b2241869fb2f08476f9e", [:mix], [], "hexpm", "bdc9e95c3e4b80e4864987d822a981da2f2a6032bf409b3ec641f5be3488e8e6"}, + "mox": {:hex, :mox, "0.5.2", "55a0a5ba9ccc671518d068c8dddd20eeb436909ea79d1799e2209df7eaa98b6c", [:mix], [], "hexpm", "df4310628cd628ee181df93f50ddfd07be3e5ecc30232d3b6aadf30bdfe6092b"}, "murmur": {:hex, :murmur, "1.0.1", "a6e6bced2dd0d666090a9cf3e73699f3b9176bbcf32d35b0f022f137667608e3", [:mix], [], "hexpm", "1303e80b1a5514a8afe0baf4241903ae31e3ba8b7e9e7c2219a668c065a691a6"}, - "nimble_parsec": {:hex, :nimble_parsec, "0.5.3", "def21c10a9ed70ce22754fdeea0810dafd53c2db3219a0cd54cf5526377af1c6", [:mix], [], "hexpm", "589b5af56f4afca65217a1f3eb3fee7e79b09c40c742fddc1c312b3ac0b3399f"}, + "nimble_parsec": {:hex, :nimble_parsec, "0.6.0", "32111b3bf39137144abd7ba1cce0914533b2d16ef35e8abc5ec8be6122944263", [:mix], [], "hexpm", "27eac315a94909d4dc68bc07a4a83e06c8379237c5ea528a9acff4ca1c873c52"}, + "nkeys": {:hex, :nkeys, "0.2.0", "8f633ac09c295e47a83f3245ccd439a69f0a6372bc87b952b3e0aac9215adec5", [:mix], [{:ed25519, "~> 1.3", [hex: :ed25519, repo: "hexpm", optional: false]}], "hexpm", "29af6d3b3cbcb8aefc9fb334157775b474a844b5c25c0c65b8c1eda48d787c14"}, "odgn_json_pointer": {:hex, :odgn_json_pointer, "2.5.0", "d90b8e854cb2b59cc1ec6f0fd8a38026debadfdd2bc418364a0f51707ba6b0af", [:mix], [], "hexpm", "99d01a562cad25de01d81e344f35084d9cfcbe385d7276447a4d417b8632a510"}, "opencensus": {:hex, :opencensus, "0.9.3", "a7bb2771b40593f8513fc14eb70d822e88bea1b2fb552e19a1e2e6f98371427a", [:rebar3], [{:counters, "~> 0.2.1", [hex: :counters, repo: "hexpm", optional: false]}, {:ctx, "~> 0.5", [hex: :ctx, repo: "hexpm", optional: false]}, {:wts, "~> 0.3", [hex: :wts, repo: "hexpm", optional: false]}], "hexpm", "9495b4fa817f10a7cdf8b69cca929470aeda0633a04ea18cff6a0a9ea03a03e9"}, "opencensus_elixir": {:hex, :opencensus_elixir, "0.4.0", "ac00f3b027841ba47ad8a9205c442c2e5473c1ffeb45e9c2569cccd5d35fa814", [:mix], [{:opencensus, "~> 0.9", [hex: :opencensus, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "471122e0080059ed9aac7b46fcb8bcb21b13eb1739f87cd983d282af5127100d"}, @@ -59,33 +63,33 @@ "opencensus_zipkin": {:hex, :opencensus_zipkin, "0.3.0", "a966fb97c2d56a37371f49f387c0210f906081889e3084434bdec42f4781aeac", [:rebar3], [{:jsx, "~>2.9.0", [hex: :jsx, repo: "hexpm", optional: false]}, {:opencensus, "~>0.9.2", [hex: :opencensus, repo: "hexpm", optional: false]}], "hexpm", "e5e7de60ca4d601b39ae4b63251c4610e9aea9ab46d66ce67f2bbf28bb30cc4e"}, "parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm", "17ef63abde837ad30680ea7f857dd9e7ced9476cdd7b0394432af4bfc241b960"}, "peerage": {:hex, :peerage, "1.0.3", "945c3dfc407215b89682c65198d004028df0fa772bfea4d2cc9bb4e39e8be9a0", [:mix], [{:deferred_config, "~> 0.1.1", [hex: :deferred_config, repo: "hexpm", optional: false]}], "hexpm", "c9a3316be955f65da1ec39ef891b4c15f2f13bec7bd8d84ef3cdc9fd633d889b"}, - "phoenix": {:hex, :phoenix, "1.4.3", "8eed4a64ff1e12372cd634724bddd69185938f52c18e1396ebac76375d85677d", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 1.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}], "hexpm", "dca877890e8267d02a4bb8bd68622b6c30e8eae3e0b542f715c8c588693158a5"}, - "phoenix_pubsub": {:hex, :phoenix_pubsub, "1.1.2", "496c303bdf1b2e98a9d26e89af5bba3ab487ba3a3735f74bf1f4064d2a845a3e", [:mix], [], "hexpm", "1f13f9f0f3e769a667a6b6828d29dec37497a082d195cc52dbef401a9b69bf38"}, - "phoenix_swagger": {:hex, :phoenix_swagger, "0.8.1", "af7fc985804145e17df316bb988db86d43401af3cff2f5f7ef6c21d22af5086c", [:mix], [{:ex_json_schema, "~> 0.5", [hex: :ex_json_schema, repo: "hexpm", optional: true]}, {:plug, "~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}, {:poison, "~> 2.2 or ~> 3.0", [hex: :poison, repo: "hexpm", optional: false]}], "hexpm", "54f76fff87d797dee86ced3f17b9206383517868c06ad90f239a305e1d0dd6dc"}, - "plug": {:hex, :plug, "1.9.0", "8d7c4e26962283ff9f8f3347bd73838e2413fbc38b7bb5467d5924f68f3a5a4a", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "9902eda2c52ada2a096434682e99a2493f5d06a94d6ac6bcfff9805f952350f1"}, - "plug_cowboy": {:hex, :plug_cowboy, "2.1.2", "8b0addb5908c5238fac38e442e81b6fcd32788eaa03246b4d55d147c47c5805e", [:mix], [{:cowboy, "~> 2.5", [hex: :cowboy, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "7d722581ce865a237e14da6d946f92704101740a256bd13ec91e63c0b122fc70"}, - "plug_crypto": {:hex, :plug_crypto, "1.1.2", "bdd187572cc26dbd95b87136290425f2b580a116d3fb1f564216918c9730d227", [:mix], [], "hexpm", "6b8b608f895b6ffcfad49c37c7883e8df98ae19c6a28113b02aa1e9c5b22d6b5"}, + "phoenix": {:hex, :phoenix, "1.5.6", "8298cdb4e0f943242ba8410780a6a69cbbe972fef199b341a36898dd751bdd66", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 2.13", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.1.2 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "0dc4d39af1306b6aa5122729b0a95ca779e42c708c6fe7abbb3d336d5379e956"}, + "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.0.0", "a1ae76717bb168cdeb10ec9d92d1480fec99e3080f011402c0a2d68d47395ffb", [:mix], [], "hexpm", "c52d948c4f261577b9c6fa804be91884b381a7f8f18450c5045975435350f771"}, + "phoenix_swagger": {:hex, :phoenix_swagger, "0.8.2", "cc49d9641d7e7c87766ba800110ff67d2fb55379f83982ee33d85d1e0b39d100", [:mix], [{:ex_json_schema, "~> 0.6", [hex: :ex_json_schema, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}, {:poison, "~> 2.2 or ~> 3.0", [hex: :poison, repo: "hexpm", optional: true]}], "hexpm", "e6d177764d75d388b199a863c5f7502ac8c202cd3fca61220807cbdcb31efef2"}, + "plug": {:hex, :plug, "1.11.0", "f17217525597628298998bc3baed9f8ea1fa3f1160aa9871aee6df47a6e4d38e", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "2d9c633f0499f9dc5c2fd069161af4e2e7756890b81adcbb2ceaa074e8308876"}, + "plug_cowboy": {:hex, :plug_cowboy, "2.4.1", "779ba386c0915027f22e14a48919a9545714f849505fa15af2631a0d298abf0f", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d72113b6dff7b37a7d9b2a5b68892808e3a9a752f2bf7e503240945385b70507"}, + "plug_crypto": {:hex, :plug_crypto, "1.2.0", "1cb20793aa63a6c619dd18bb33d7a3aa94818e5fd39ad357051a67f26dfa2df6", [:mix], [], "hexpm", "a48b538ae8bf381ffac344520755f3007cc10bd8e90b240af98ea29b69683fc2"}, "poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm", "fec8660eb7733ee4117b85f55799fd3833eb769a6df71ccf8903e8dc5447cfce"}, "porcelain": {:hex, :porcelain, "2.0.3", "2d77b17d1f21fed875b8c5ecba72a01533db2013bd2e5e62c6d286c029150fdc", [:mix], [], "hexpm", "dc996ab8fadbc09912c787c7ab8673065e50ea1a6245177b0c24569013d23620"}, - "prometheus": {:hex, :prometheus, "4.2.2", "a830e77b79dc6d28183f4db050a7cac926a6c58f1872f9ef94a35cd989aceef8", [:mix, :rebar3], [], "hexpm", "b479a33d4aa4ba7909186e29bb6c1240254e0047a8e2a9f88463f50c0089370e"}, + "prometheus": {:hex, :prometheus, "4.6.0", "20510f381db1ccab818b4cf2fac5fa6ab5cc91bc364a154399901c001465f46f", [:mix, :rebar3], [], "hexpm", "4905fd2992f8038eccd7aa0cd22f40637ed618c0bed1f75c05aacec15b7545de"}, "prometheus_ex": {:hex, :prometheus_ex, "3.0.5", "fa58cfd983487fc5ead331e9a3e0aa622c67232b3ec71710ced122c4c453a02f", [:mix], [{:prometheus, "~> 4.0", [hex: :prometheus, repo: "hexpm", optional: false]}], "hexpm", "9fd13404a48437e044b288b41f76e64acd9735fb8b0e3809f494811dfa66d0fb"}, "prometheus_plugs": {:hex, :prometheus_plugs, "1.1.5", "25933d48f8af3a5941dd7b621c889749894d8a1082a6ff7c67cc99dec26377c5", [:mix], [{:accept, "~> 0.1", [hex: :accept, repo: "hexpm", optional: false]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}, {:prometheus_ex, "~> 1.1 or ~> 2.0 or ~> 3.0", [hex: :prometheus_ex, repo: "hexpm", optional: false]}, {:prometheus_process_collector, "~> 1.1", [hex: :prometheus_process_collector, repo: "hexpm", optional: true]}], "hexpm", "0273a6483ccb936d79ca19b0ab629aef0dba958697c94782bb728b920dfc6a79"}, "ranch": {:hex, :ranch, "1.7.1", "6b1fab51b49196860b733a49c07604465a47bdb78aa10c1c16a3d199f7f8c881", [:rebar3], [], "hexpm", "451d8527787df716d99dc36162fca05934915db0b6141bbdac2ea8d3c7afc7d7"}, - "raxx": {:hex, :raxx, "1.0.1", "8c51ec5227c85f999360fc844fc1d4e2e5a2adf2b0ce068eb56243ee6b2f65e3", [:mix], [], "hexpm", "9e557820a50f3d3341ff95e02be507ecb165676dd52ba87427a04f8d6d2c12be"}, + "raxx": {:hex, :raxx, "1.1.0", "d6a03143a91f8092c0be1ec555075c76c8d680601236de706f020d17abcf8b16", [:mix], [], "hexpm", "58fdc4b62127890dfe7129a7e372b624411a7623f688bde9e98ff2af3fd9cb46"}, "schemex": {:hex, :schemex, "0.1.1", "62d4fb3e61c940f23e7f37dbd74c0476ecae7fb9bf354e2e4731cb6e26d99ba8", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:poison, "~> 3.1", [hex: :poison, repo: "hexpm", optional: false]}], "hexpm", "57a00ab900cbfdf2136ba533bcd1b52e52498b7a75bdc80047d128eed846d189"}, "server_sent_event": {:hex, :server_sent_event, "1.0.0", "23646a67d1c165ed718017c08f8646334758d8fcebfca0b12a4c648bf0235c08", [:mix], [{:raxx, "~> 1.0", [hex: :raxx, repo: "hexpm", optional: false]}], "hexpm", "17f7956495fcc98243cd0b3100a0ea0e79c1262585df93d30abb397bf95428cf"}, - "snappyer": {:hex, :snappyer, "1.2.4", "6d739c534cd2339633127a2b40279be71f149e5842c5363a4d88e66efb7c1fec", [:make, :rebar, :rebar3], [], "hexpm", "76abb8ed503722e10ee0f587956662881af9009067efdec87798a03db3527184"}, + "snappyer": {:hex, :snappyer, "1.2.5", "9154b9ac84031f0a799f72a4aa87df23ab2193b5631475fa2cdc304382d2df77", [:rebar3], [], "hexpm", "d2adc26a81efd5f138397a38a0bb545188d302972721f8be0de37fa452c8aed7"}, "socket": {:hex, :socket, "0.3.13", "98a2ab20ce17f95fb512c5cadddba32b57273e0d2dba2d2e5f976c5969d0c632", [:mix], [], "hexpm", "f82ea9833ef49dde272e6568ab8aac657a636acb4cf44a7de8a935acb8957c2e"}, - "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.5", "6eaf7ad16cb568bb01753dbbd7a95ff8b91c7979482b95f38443fe2c8852a79b", [:make, :mix, :rebar3], [], "hexpm", "13104d7897e38ed7f044c4de953a6c28597d1c952075eb2e328bc6d6f2bfc496"}, - "stream_data": {:hex, :stream_data, "0.4.3", "62aafd870caff0849a5057a7ec270fad0eb86889f4d433b937d996de99e3db25", [:mix], [], "hexpm", "7dafd5a801f0bc897f74fcd414651632b77ca367a7ae4568778191fc3bf3a19a"}, + "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.6", "cf344f5692c82d2cd7554f5ec8fd961548d4fd09e7d22f5b62482e5aeaebd4b0", [:make, :mix, :rebar3], [], "hexpm", "bdb0d2471f453c88ff3908e7686f86f9be327d065cc1ec16fa4540197ea04680"}, + "stream_data": {:hex, :stream_data, "0.5.0", "b27641e58941685c75b353577dc602c9d2c12292dd84babf506c2033cd97893e", [:mix], [], "hexpm", "012bd2eec069ada4db3411f9115ccafa38540a3c78c4c0349f151fc761b9e271"}, "stubr": {:hex, :stubr, "1.5.1", "6c710a66089c0b0393d29050b4294b46541baaae3ea7f8ff16925f13323e061e", [:mix], [], "hexpm", "30900c011a67e77e0c1c43debc9f33a24627de6c8859525cdf252d921b43b51e"}, - "supervisor3": {:hex, :supervisor3, "1.1.8", "5cf95c95342b589ec8d74689eea0646c0a3eb92820241e0c2d0ca4c104df92bc", [:make, :rebar, :rebar3], [], "hexpm", "4814b4d4343e777cc724312a588061828703f05149129cda2cb30d14105b1128"}, - "telemetry": {:hex, :telemetry, "0.4.1", "ae2718484892448a24470e6aa341bc847c3277bfb8d4e9289f7474d752c09c7f", [:rebar3], [], "hexpm", "4738382e36a0a9a2b6e25d67c960e40e1a2c95560b9f936d8e29de8cd858480f"}, + "supervisor3": {:hex, :supervisor3, "1.1.11", "d81cdec31d102fde407423e1d05b569572850deebed86b951d5233c387cba80b", [:rebar3], [], "hexpm", "e6c2dedbcabcba24995a218aca12db5e208b80d3252692b22ef0f1a266104b50"}, + "telemetry": {:hex, :telemetry, "0.4.2", "2808c992455e08d6177322f14d3bdb6b625fbcfd233a73505870d8738a2f4599", [:rebar3], [], "hexpm", "2d1419bd9dda6a206d7b5852179511722e2b18812310d304620c7bd92a13fcef"}, "thrift": {:hex, :thrift_erl, "0.13.0", "eaf130387890f044ac1a9e3088bf197934425c35a744f23c897a55d0396c3d40", [:rebar3], [], "hexpm", "8dcb88a250eff63629be969b2fa322cfa21d7749a02387c68d5b519b92385c26"}, - "timex": {:hex, :timex, "3.6.1", "efdf56d0e67a6b956cc57774353b0329c8ab7726766a11547e529357ffdc1d56", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 0.1.8 or ~> 0.5 or ~> 1.0.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "f354efb2400dd7a80fd9eb6c8419068c4f632da4ac47f3d8822d6e33f08bc852"}, + "timex": {:hex, :timex, "3.6.2", "845cdeb6119e2fef10751c0b247b6c59d86d78554c83f78db612e3290f819bc2", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 0.1.8 or ~> 0.5 or ~> 1.0.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "26030b46199d02a590be61c2394b37ea25a3664c02fafbeca0b24c972025d47a"}, "typed_struct": {:hex, :typed_struct, "0.2.1", "e1993414c371f09ff25231393b6430bd89d780e2a499ae3b2d2b00852f593d97", [:mix], [], "hexpm", "8f5218c35ec38262f627b2c522542f1eae41f625f92649c0af701a6fab2e11b3"}, - "tzdata": {:hex, :tzdata, "1.0.1", "f6027a331af7d837471248e62733c6ebee86a72e57c613aa071ebb1f750fc71a", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "cf1345dfbce6acdfd4e23cbb36e96e53d1981bc89181cd0b936f4f398f4c0b78"}, - "unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm", "1d1848c40487cdb0b30e8ed975e34e025860c02e419cb615d255849f3427439d"}, + "tzdata": {:hex, :tzdata, "1.0.4", "a3baa4709ea8dba552dca165af6ae97c624a2d6ac14bd265165eaa8e8af94af6", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "b02637db3df1fd66dd2d3c4f194a81633d0e4b44308d36c1b2fdfd1e4e6f169b"}, + "unicode_util_compat": {:hex, :unicode_util_compat, "0.5.0", "8516502659002cec19e244ebd90d312183064be95025a319a6c7e89f4bccd65b", [:rebar3], [], "hexpm", "d48d002e15f5cc105a696cf2f1bbb3fc72b4b770a184d8420c8db20da2674b38"}, "uuid": {:hex, :uuid, "1.1.8", "e22fc04499de0de3ed1116b770c7737779f226ceefa0badb3592e64d5cfb4eb9", [:mix], [], "hexpm", "c790593b4c3b601f5dc2378baae7efaf5b3d73c4c6456ba85759905be792f2ac"}, "vex": {:hex, :vex, "0.8.0", "0a04e3aebe5ec443525c88f3833b4481d97de272f891243b62b18efbda85b121", [:mix], [], "hexpm", "36a37f264b36fe4b0430c9f174d71c59845cf56d9e2ae32960038432b16961ea"}, "wts": {:hex, :wts, "0.4.0", "62d9dc400ad29f0d233f0665b9c75c8f8eb0a8af75eec921056ba4a73b0605a2", [:rebar3], [], "hexpm", "711bb675de2ce2b3ebab80a613ac93b994f74df44af4cff7970dc9eebe724869"}, diff --git a/scripts/encode_jwt/mix.exs b/scripts/encode_jwt/mix.exs index 766d91e0..ae82c34f 100644 --- a/scripts/encode_jwt/mix.exs +++ b/scripts/encode_jwt/mix.exs @@ -31,7 +31,6 @@ defmodule EncodeJwt.MixProject do # Run "mix help deps" to learn about dependencies. defp deps do [ - {:poison, "~> 2.0 or ~> 3.0 or ~> 4.0"}, {:joken, "~> 1.4"} ] end diff --git a/smoke_tests.dockerfile b/smoke_tests.dockerfile index eabc8f0e..79e44b99 100644 --- a/smoke_tests.dockerfile +++ b/smoke_tests.dockerfile @@ -1,16 +1,14 @@ -FROM elixir:1.10-alpine +FROM elixir:1.11-alpine WORKDIR /opt/sites/rig ENV MIX_ENV=test # Install Elixir & Erlang environment dependencies RUN apk add --no-cache make gcc g++ +COPY .tool-versions /opt/sites/rig/ RUN mix local.hex --force RUN mix local.rebar --force -# Copy release config -COPY version /opt/sites/rig/ - # Copy necessary files for dependencies COPY mix.exs /opt/sites/rig/ COPY mix.lock /opt/sites/rig/ diff --git a/test/blacklist_test.exs b/test/blacklist_test.exs index 9e4b02e2..765d82d2 100644 --- a/test/blacklist_test.exs +++ b/test/blacklist_test.exs @@ -56,12 +56,12 @@ defmodule BlacklistTest do # Verify all connections but the last one have been dropped: assert {_event, sse} = SseClient.read_event(sse, "rig.session_killed") - assert {:closed, sse} = SseClient.status(sse) + assert {:closed, _sse} = SseClient.status(sse) - assert {:closed, ws} = WsClient.status(ws) + assert {:closed, _ws} = WsClient.status(ws) assert {:ok, other_sse} = SseClient.refute_receive(other_sse) - assert {:open, other_sse} = SseClient.status(other_sse) + assert {:open, _other_sse} = SseClient.status(other_sse) end end diff --git a/test/event_subscription_test.exs b/test/event_subscription_test.exs index 9cbd7138..21b5e1d3 100644 --- a/test/event_subscription_test.exs +++ b/test/event_subscription_test.exs @@ -383,7 +383,7 @@ defmodule RigInboundGateway.EventSubscriptionTest do # After this, greetings to Alice are no longer forwarded: :ok = submit_event(greeting_for_alice()) - assert {:ok, ref} = client.refute_receive(ref) + assert {:ok, _ref} = client.refute_receive(ref) end end end diff --git a/test/rig_inbound_gateway/rig/proxy_test.exs b/test/rig_inbound_gateway/rig/proxy_test.exs index 6f50c153..1c3f61fe 100644 --- a/test/rig_inbound_gateway/rig/proxy_test.exs +++ b/test/rig_inbound_gateway/rig/proxy_test.exs @@ -36,7 +36,7 @@ defmodule RigInboundGateway.ProxyTest do end) =~ error - assert_received({:EXIT, proxy, :ReverseProxyConfigurationError}) + assert_received({:EXIT, _proxy, :ReverseProxyConfigurationError}) end describe "validations" do diff --git a/test/support/conn_case.ex b/test/support/conn_case.ex index 22007d16..a9524456 100644 --- a/test/support/conn_case.ex +++ b/test/support/conn_case.ex @@ -18,7 +18,8 @@ defmodule RigApi.ConnCase do using do quote do # Import conveniences for testing with connections - use Phoenix.ConnTest + import Plug.Conn + import Phoenix.ConnTest import RigApi.Router.Helpers # Example mock API definition to ease testing diff --git a/version b/version deleted file mode 100644 index 1f764761..00000000 --- a/version +++ /dev/null @@ -1,4 +0,0 @@ -%{ - rig: "3.0.0-alpha.1", - elixir: "~> 1.10.2", -}