From ec375ebcd12f7d824aa67a1978fa6eb4181a7951 Mon Sep 17 00:00:00 2001 From: Paulo Valente <16843419+polvalente@users.noreply.github.com> Date: Sat, 15 Aug 2026 09:17:56 -0300 Subject: [PATCH] fix: remove dangling typespecs and absorb used types into callbacks Dialyzer support was removed before 1.0, but this typespecs keep resulting in PRs which we can't prevent because we don't use them. This release properly removes them. --- grpc/CHANGELOG.md | 12 +++++-- grpc/lib/grpc/client/adapter.ex | 3 -- .../adapters/gun/stream_response_process.ex | 6 ---- .../adapters/mint/connection_process/state.ex | 13 -------- grpc/lib/grpc/client/connection.ex | 16 ---------- grpc/lib/grpc/client/interceptor.ex | 26 +++++++++------- grpc/lib/grpc/client/resolver.ex | 15 +++++---- grpc/lib/grpc/client/service_config.ex | 6 ---- grpc/lib/grpc/client/stream.ex | 20 ------------ grpc/lib/grpc/stub.ex | 11 ------- grpc/mix.exs | 6 ++-- grpc_core/lib/grpc/credential.ex | 1 - grpc_core/lib/grpc/rpc_error.ex | 6 ---- grpc_core/lib/grpc/status.ex | 2 -- grpc_core/mix.exs | 2 +- grpc_server/CHANGELOG.md | 12 +++++-- grpc_server/lib/grpc/server.ex | 4 --- grpc_server/lib/grpc/server/adapter.ex | 12 ++----- .../grpc/server/adapters/cowboy/handler.ex | 30 ------------------ .../grpc/server/adapters/report_exception.ex | 7 ----- grpc_server/lib/grpc/server/interceptor.ex | 28 ++++++++--------- grpc_server/lib/grpc/server/router.ex | 3 -- .../lib/grpc/server/router/template.ex | 2 -- grpc_server/lib/grpc/server/stream.ex | 31 ------------------- grpc_server/lib/grpc/server/supervisor.ex | 8 ----- grpc_server/lib/grpc/server/transcode.ex | 1 - grpc_server/lib/grpc/stream.ex | 6 ---- grpc_server/lib/grpc/stream/operators.ex | 4 --- grpc_server/mix.exs | 6 ++-- mix.lock | 2 +- 30 files changed, 63 insertions(+), 238 deletions(-) diff --git a/grpc/CHANGELOG.md b/grpc/CHANGELOG.md index 9b61b4a46..b09f98cf0 100644 --- a/grpc/CHANGELOG.md +++ b/grpc/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## v1.0.4 (2026-0-15) + +### Bug Fixes + + * Remove dangling typespecs + ## v1.0.3 (2026-07-27) ### Enhancements @@ -63,7 +69,7 @@ ### Enhancements * Feat add `exception_log_filter` option to server - + ### Bug fixes * Fix ensure thers is only one `GRPC.Client.Supervisor`. @@ -76,9 +82,9 @@ * Feat added new function to handle side-effects. * Feat added error handler for unary and stream pipelines. * Docs adds a better explanation of the different types of input. - * Docs improvements to module documentation. + * Docs improvements to module documentation. * Docs livebooks added directly to the documentation. - + ### Bug fixes * Fix refresh error spam on direct_state (no lb). diff --git a/grpc/lib/grpc/client/adapter.ex b/grpc/lib/grpc/client/adapter.ex index eb5d212ab..3438b4b2c 100644 --- a/grpc/lib/grpc/client/adapter.ex +++ b/grpc/lib/grpc/client/adapter.ex @@ -4,9 +4,6 @@ defmodule GRPC.Client.Adapter do """ alias GRPC.Client.Stream - @typedoc "Determines if the headers have finished being read." - @type fin :: :fin | :nofin - @callback connect(channel :: struct(), opts :: keyword()) :: {:ok, struct()} | {:error, any()} diff --git a/grpc/lib/grpc/client/adapters/gun/stream_response_process.ex b/grpc/lib/grpc/client/adapters/gun/stream_response_process.ex index 0ff3113e3..5256c6f2b 100644 --- a/grpc/lib/grpc/client/adapters/gun/stream_response_process.ex +++ b/grpc/lib/grpc/client/adapters/gun/stream_response_process.ex @@ -16,12 +16,6 @@ defmodule GRPC.Client.Adapters.Gun.StreamResponseProcess do @terminated_stream_error {:error, {:connection_error, :closed}} - @type state :: %{ - messages: :queue.queue(), - waiter: {GenServer.from(), reference() | nil} | nil, - done: boolean() - } - def start_link do GenServer.start_link(__MODULE__, []) end diff --git a/grpc/lib/grpc/client/adapters/mint/connection_process/state.ex b/grpc/lib/grpc/client/adapters/mint/connection_process/state.ex index 51197507f..6afab3ee9 100644 --- a/grpc/lib/grpc/client/adapters/mint/connection_process/state.ex +++ b/grpc/lib/grpc/client/adapters/mint/connection_process/state.ex @@ -16,19 +16,6 @@ if Code.ensure_loaded?(Mint.HTTP) do retry_attempt: 0 ] - @type t :: %__MODULE__{ - conn: Mint.HTTP.t(), - requests: map(), - parent: pid(), - scheme: Mint.Types.scheme() | nil, - host: Mint.Types.address() | nil, - port: :inet.port_number() | nil, - connect_opts: keyword(), - retry_timeout_ms: non_neg_integer() | nil, - retry: non_neg_integer(), - retry_attempt: non_neg_integer() - } - def new(conn, opts) do %__MODULE__{ conn: conn, diff --git a/grpc/lib/grpc/client/connection.ex b/grpc/lib/grpc/client/connection.ex index 0f4dd7b11..b085b62c9 100644 --- a/grpc/lib/grpc/client/connection.ex +++ b/grpc/lib/grpc/client/connection.ex @@ -166,22 +166,6 @@ defmodule GRPC.Client.Connection do @await_ready_start_event [:grpc, :client, :connection, :await_ready, :start] @await_ready_stop_event [:grpc, :client, :connection, :await_ready, :stop] - @type t :: %__MODULE__{ - virtual_channel: struct(), - real_channels: %{String.t() => {:connected, struct()} | {:failed, any()}}, - lb_mod: module() | nil, - lb_state: term() | nil, - resolver: module() | nil, - adapter: module(), - resolver_target: String.t() | nil, - connect_opts: keyword(), - resolver_state: term() | nil, - established?: boolean(), - last_error: term() | nil, - retry_attempt: non_neg_integer(), - waiters: [{pid(), GenServer.from(), reference(), integer()}] - } - defstruct virtual_channel: nil, real_channels: %{}, lb_mod: nil, diff --git a/grpc/lib/grpc/client/interceptor.ex b/grpc/lib/grpc/client/interceptor.ex index a2d3b7e44..5d623c606 100644 --- a/grpc/lib/grpc/client/interceptor.ex +++ b/grpc/lib/grpc/client/interceptor.ex @@ -7,12 +7,13 @@ defmodule GRPC.ClientInterceptor do alias GRPC.Client.Stream - @type options :: any() - @type req :: struct() | nil - @type next :: (Stream.t(), req -> GRPC.Stub.rpc_return()) - - @callback init(options) :: options - @callback call(stream :: Stream.t(), req, next, options) :: GRPC.Stub.rpc_return() + @callback init(options :: any()) :: options :: any() + @callback call( + stream :: Stream.t(), + req :: struct() | nil, + next :: (Stream.t(), req :: struct() | nil -> GRPC.Stub.rpc_return()), + options :: any() + ) :: GRPC.Stub.rpc_return() end defmodule GRPC.Client.Interceptor do @@ -21,10 +22,11 @@ defmodule GRPC.Client.Interceptor do """ alias GRPC.Client.Stream - @type options :: any() - @type req :: struct() | nil - @type next :: (Stream.t(), req -> GRPC.Stub.rpc_return()) - - @callback init(options) :: options - @callback call(stream :: Stream.t(), req, next, options) :: GRPC.Stub.rpc_return() + @callback init(options :: any()) :: options :: any() + @callback call( + stream :: Stream.t(), + req :: struct() | nil, + next :: (Stream.t(), req :: struct() | nil -> GRPC.Stub.rpc_return()), + options :: any() + ) :: GRPC.Stub.rpc_return() end diff --git a/grpc/lib/grpc/client/resolver.ex b/grpc/lib/grpc/client/resolver.ex index 570a246e7..cd9854e37 100644 --- a/grpc/lib/grpc/client/resolver.ex +++ b/grpc/lib/grpc/client/resolver.ex @@ -66,19 +66,18 @@ defmodule GRPC.Client.Resolver do alias GRPC.Client.Resolver.Unix alias GRPC.Client.Resolver.XDS - @type service_config :: GRPC.Client.ServiceConfig.t() | nil - - @callback resolve(String.t()) :: - {:ok, %{addresses: list(map()), service_config: service_config()}} + @callback resolve(target :: String.t()) :: + {:ok, + %{addresses: list(map()), service_config: GRPC.Client.ServiceConfig.t() | nil}} | {:error, term()} @callback init(target :: String.t(), opts :: keyword()) :: - {:ok, state :: term()} | {:error, term()} + {:ok, state :: any()} | {:error, term()} - @callback update(state :: term(), event :: term()) :: - {:ok, state :: term()} + @callback update(state :: any(), event :: any()) :: + {:ok, state :: any()} - @callback shutdown(state :: term()) :: :ok + @callback shutdown(state :: any()) :: :ok @optional_callbacks [init: 2, update: 2, shutdown: 1] diff --git a/grpc/lib/grpc/client/service_config.ex b/grpc/lib/grpc/client/service_config.ex index 987142ebc..25f79671b 100644 --- a/grpc/lib/grpc/client/service_config.ex +++ b/grpc/lib/grpc/client/service_config.ex @@ -68,12 +68,6 @@ defmodule GRPC.Client.ServiceConfig do method_configs: [], raw: %{} - @type t :: %__MODULE__{ - load_balancing_policy: atom(), - method_configs: list(), - raw: map() - } - def parse(nil), do: {:ok, %__MODULE__{}} def parse(json) when is_binary(json) do diff --git a/grpc/lib/grpc/client/stream.ex b/grpc/lib/grpc/client/stream.ex index 32956b502..4f4387eb4 100644 --- a/grpc/lib/grpc/client/stream.ex +++ b/grpc/lib/grpc/client/stream.ex @@ -14,26 +14,6 @@ defmodule GRPC.Client.Stream do * `:res_stream` - indicates if reply is streaming """ - @typep stream_payload :: any() - @type t :: %__MODULE__{ - channel: struct(), - service_name: String.t(), - method_name: String.t(), - grpc_type: atom(), - rpc: tuple(), - payload: stream_payload, - path: String.t(), - request_mod: atom(), - response_mod: atom(), - codec: atom(), - server_stream: boolean(), - canceled: boolean(), - compressor: module(), - accepted_compressors: [module()], - headers: map(), - __interface__: map() - } - defstruct channel: nil, service_name: nil, method_name: nil, diff --git a/grpc/lib/grpc/stub.ex b/grpc/lib/grpc/stub.ex index f1aeddb32..66c159774 100644 --- a/grpc/lib/grpc/stub.ex +++ b/grpc/lib/grpc/stub.ex @@ -46,17 +46,6 @@ defmodule GRPC.Stub do @canceled_error GRPC.RPCError.exception(GRPC.Status.cancelled(), "The operation was cancelled") - @type receive_data_return :: - {:ok, struct()} - | {:ok, struct(), map()} - | {:ok, Enumerable.t()} - | {:ok, Enumerable.t(), map()} - - @type rpc_return :: - GRPC.Client.Stream.t() - | {:error, GRPC.RPCError.t()} - | receive_data_return - defmacro __using__(opts) do opts = Keyword.validate!(opts, [:service, warn_on_collision: true]) diff --git a/grpc/mix.exs b/grpc/mix.exs index a5672bcce..e6f643a78 100644 --- a/grpc/mix.exs +++ b/grpc/mix.exs @@ -2,7 +2,7 @@ defmodule GRPC.MixProject do use Mix.Project @source_url "https://github.com/elixir-grpc/grpc/tree/master/grpc" - @version "1.0.3" + @version "1.0.4" def project do [ @@ -29,8 +29,8 @@ defmodule GRPC.MixProject do defp deps do [ - # {:grpc_core, path: "../grpc_core"}, - {:grpc_core, "~> 1.0.3"}, + {:grpc_core, path: "../grpc_core"}, + # {:grpc_core, "~> 1.0.3"}, {:gun, "~> 2.4.0", optional: true}, {:mint, "~> 1.9", optional: true}, {:castore, "~> 1.0", optional: true}, diff --git a/grpc_core/lib/grpc/credential.ex b/grpc_core/lib/grpc/credential.ex index 0205d909e..172eed8a6 100644 --- a/grpc_core/lib/grpc/credential.ex +++ b/grpc_core/lib/grpc/credential.ex @@ -16,7 +16,6 @@ defmodule GRPC.Credential do iex> GRPC.Stub.connect("localhost:10000", cred: cred) """ - @type t :: %__MODULE__{ssl: [:ssl.tls_option()]} defstruct ssl: [] @doc """ diff --git a/grpc_core/lib/grpc/rpc_error.ex b/grpc_core/lib/grpc/rpc_error.ex index 89d433333..4aa236be6 100644 --- a/grpc_core/lib/grpc/rpc_error.ex +++ b/grpc_core/lib/grpc/rpc_error.ex @@ -55,12 +55,6 @@ defmodule GRPC.RPCError do defguard is_rpc_error(e, status) when is_struct(e, __MODULE__) and e.status == status - @type t :: %__MODULE__{ - status: GRPC.Status.t(), - message: String.t(), - details: [Google.Protobuf.Any.t()] | nil - } - alias GRPC.Status def new(status) when is_atom(status) do diff --git a/grpc_core/lib/grpc/status.ex b/grpc_core/lib/grpc/status.ex index a0f99541e..d772f9a96 100644 --- a/grpc_core/lib/grpc/status.ex +++ b/grpc_core/lib/grpc/status.ex @@ -25,8 +25,6 @@ defmodule GRPC.Status do For more details, please refer to the [official gRPC docs](https://github.com/grpc/grpc/blob/master/doc/statuscodes.md) """ - @type t :: non_neg_integer - @doc """ Not an error; returned on success. """ diff --git a/grpc_core/mix.exs b/grpc_core/mix.exs index 549f80289..e9be2a759 100644 --- a/grpc_core/mix.exs +++ b/grpc_core/mix.exs @@ -2,7 +2,7 @@ defmodule GRPC.Core.MixProject do use Mix.Project @source_url "https://github.com/elixir-grpc/grpc_core" - @version "1.0.3" + @version "1.0.4" def project do [ diff --git a/grpc_server/CHANGELOG.md b/grpc_server/CHANGELOG.md index b7262a7cf..686e0b26c 100644 --- a/grpc_server/CHANGELOG.md +++ b/grpc_server/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## v1.0.4 (2026-0-15) + +### Bug Fixes + + * Remove dangling typespecs + ## v1.0.0 (2026-06-15) ### Enhancements @@ -43,7 +49,7 @@ ### Enhancements * Feat add `exception_log_filter` option to server - + ### Bug fixes * Fix ensure thers is only one `GRPC.Client.Supervisor`. @@ -56,9 +62,9 @@ * Feat added new function to handle side-effects. * Feat added error handler for unary and stream pipelines. * Docs adds a better explanation of the different types of input. - * Docs improvements to module documentation. + * Docs improvements to module documentation. * Docs livebooks added directly to the documentation. - + ### Bug fixes * Fix refresh error spam on direct_state (no lb). diff --git a/grpc_server/lib/grpc/server.ex b/grpc_server/lib/grpc/server.ex index e34978c3e..30d25281f 100644 --- a/grpc_server/lib/grpc/server.ex +++ b/grpc_server/lib/grpc/server.ex @@ -115,10 +115,6 @@ defmodule GRPC.Server do alias GRPC.Server.Router alias GRPC.Server.Transcode - @type rpc_req :: struct | Enumerable.t() - @type rpc_return :: struct | any - @type rpc :: (GRPC.Server.rpc_req(), GRPC.Server.Stream.t() -> rpc_return) - defmacro __using__(opts) do quote bind_quoted: [opts: opts], location: :keep do opts = diff --git a/grpc_server/lib/grpc/server/adapter.ex b/grpc_server/lib/grpc/server/adapter.ex index 9884ac9ff..de2cc9c85 100644 --- a/grpc_server/lib/grpc/server/adapter.ex +++ b/grpc_server/lib/grpc/server/adapter.ex @@ -3,14 +3,6 @@ defmodule GRPC.Server.Adapter do HTTP server adapter for GRPC. """ - @type state :: %{ - pid: pid, - handling_timer: reference | nil, - resp_trailers: map, - compressor: atom | nil, - pending_reader: nil - } - @callback start( atom(), %{String.t() => [module()]}, @@ -21,7 +13,7 @@ defmodule GRPC.Server.Adapter do @callback stop(atom(), %{String.t() => [module()]}) :: :ok | {:error, :not_found} - @callback send_reply(state, content :: binary(), opts :: keyword()) :: any() + @callback send_reply(state :: map(), content :: binary(), opts :: keyword()) :: any() - @callback send_headers(state, headers :: map()) :: any() + @callback send_headers(state :: map(), headers :: map()) :: any() end diff --git a/grpc_server/lib/grpc/server/adapters/cowboy/handler.ex b/grpc_server/lib/grpc/server/adapters/cowboy/handler.ex index b3f9cfedc..c2a9fccb0 100644 --- a/grpc_server/lib/grpc/server/adapters/cowboy/handler.ex +++ b/grpc_server/lib/grpc/server/adapters/cowboy/handler.ex @@ -18,36 +18,6 @@ defmodule GRPC.Server.Adapters.Cowboy.Handler do # Override per-server with the :max_body_size option (bytes). @default_max_body_size 4 * 1024 * 1024 - @type init_state :: { - endpoint :: atom(), - server :: {name :: String.t(), module()}, - route :: String.t(), - opts :: keyword() - } - - @type pending_reader :: { - cowboy_read_ref :: reference, - server_rpc_pid :: pid, - server_rpc_reader_reference :: reference - } - @type stream_state :: %{ - pid: server_rpc_pid :: pid, - handling_timer: timeout_timer_ref :: reference, - pending_reader: nil | pending_reader, - access_mode: GRPC.Server.Stream.access_mode(), - exception_log_filter: exception_log_filter() - } - @type init_result :: - {:cowboy_loop, :cowboy_req.req(), stream_state} | {:ok, :cowboy_req.req(), init_state} - - @type is_fin :: :fin | :nofin - - @type stream_body_opts :: {:code, module()} | {:compress, boolean()} - - @type headers :: %{binary() => binary()} - - @type exception_log_filter :: {module(), atom()} | nil - @doc """ This function is meant to be called whenever a new request arrives to an existing connection. This handler works mainly with two linked processes. diff --git a/grpc_server/lib/grpc/server/adapters/report_exception.ex b/grpc_server/lib/grpc/server/adapters/report_exception.ex index c2e915c09..47abe6e2b 100644 --- a/grpc_server/lib/grpc/server/adapters/report_exception.ex +++ b/grpc_server/lib/grpc/server/adapters/report_exception.ex @@ -5,13 +5,6 @@ defmodule GRPC.Server.Adapters.ReportException do defexception [:kind, :reason, :stack, :adapter_extra] - @type t :: %__MODULE__{ - kind: :error | :exit | :throw, - reason: GRPC.RPCError.t() | Exception.t() | term(), - stack: Exception.stacktrace(), - adapter_extra: term() - } - def new(adapter_extra, exception, stack \\ [], kind \\ :error) def new(adapter_extra, %{__exception__: _} = exception, stack, kind) do diff --git a/grpc_server/lib/grpc/server/interceptor.ex b/grpc_server/lib/grpc/server/interceptor.ex index 3e460cbdd..894317be2 100644 --- a/grpc_server/lib/grpc/server/interceptor.ex +++ b/grpc_server/lib/grpc/server/interceptor.ex @@ -7,13 +7,13 @@ defmodule GRPC.ServerInterceptor do alias GRPC.Server.Stream - @type options :: any() - @type rpc_return :: - {:ok, Stream.t(), struct()} | {:ok, Stream.t()} | {:error, GRPC.RPCError.t()} - @type next :: (GRPC.Server.rpc_req(), Stream.t() -> rpc_return()) - - @callback init(options) :: options - @callback call(GRPC.Server.rpc_req(), stream :: Stream.t(), next, options) :: rpc_return + @callback init(options :: any()) :: options :: any() + @callback call( + req :: struct() | nil, + stream :: Stream.t(), + next :: (req :: struct() | nil, Stream.t() -> GRPC.Server.rpc_return()), + options :: any() + ) :: GRPC.Server.rpc_return() end defmodule GRPC.Server.Interceptor do @@ -22,11 +22,11 @@ defmodule GRPC.Server.Interceptor do """ alias GRPC.Server.Stream - @type options :: any() - @type rpc_return :: - {:ok, Stream.t(), struct()} | {:ok, Stream.t()} | {:error, GRPC.RPCError.t()} - @type next :: (GRPC.Server.rpc_req(), Stream.t() -> rpc_return()) - - @callback init(options) :: options - @callback call(GRPC.Server.rpc_req(), stream :: Stream.t(), next, options) :: rpc_return + @callback init(options :: any()) :: options :: any() + @callback call( + req :: struct() | nil, + stream :: Stream.t(), + next :: (req :: struct() | nil, Stream.t() -> GRPC.Server.rpc_return()), + options :: any() + ) :: GRPC.Server.rpc_return() end diff --git a/grpc_server/lib/grpc/server/router.ex b/grpc_server/lib/grpc/server/router.ex index bc0458bd4..7f681c341 100644 --- a/grpc_server/lib/grpc/server/router.ex +++ b/grpc_server/lib/grpc/server/router.ex @@ -3,9 +3,6 @@ defmodule GRPC.Server.Router do """ alias __MODULE__.Template - @type http_method :: :get | :put | :post | :patch | :delete - @type route :: {http_method(), String.t(), Template.matchers()} - @wildcards [:_, :__] def build_route(path) when is_binary(path), do: build_route(:post, path) diff --git a/grpc_server/lib/grpc/server/router/template.ex b/grpc_server/lib/grpc/server/router/template.ex index 5d057d8da..4067e33d6 100644 --- a/grpc_server/lib/grpc/server/router/template.ex +++ b/grpc_server/lib/grpc/server/router/template.ex @@ -7,8 +7,6 @@ defmodule GRPC.Server.Router.Template do # Variable = "{" FieldPath [ "=" Segments ] "}" ; # FieldPath = IDENT { "." IDENT } ; # Verb = ":" LITERAL ; - @type segment_match :: String.t() | {atom(), [segment_match]} - @type matchers :: [segment_match] def tokenize(path, tokens \\ []) diff --git a/grpc_server/lib/grpc/server/stream.ex b/grpc_server/lib/grpc/server/stream.ex index c5f83f4da..c0330c5a5 100644 --- a/grpc_server/lib/grpc/server/stream.ex +++ b/grpc_server/lib/grpc/server/stream.ex @@ -18,37 +18,6 @@ defmodule GRPC.Server.Stream do * `:deadline` - absolute monotonic-time (ms) by which the inbound request must complete, or `nil` when the caller set no deadline """ - @type access_mode :: :grpc | :grpcweb | :http_transcoding - - @type t :: %__MODULE__{ - server: atom(), - service_name: String.t(), - method_name: String.t(), - grpc_type: atom(), - endpoint: atom(), - rpc: tuple(), - request_mod: atom(), - request_id: String.t() | nil, - response_mod: atom(), - codec: atom(), - payload: any(), - adapter: atom(), - local: any(), - access_mode: access_mode, - # Absolute monotonic-time (ms) by which the inbound request must complete, - # derived from the inbound `grpc-timeout` header. `nil` when the caller set no deadline. - deadline: integer() | nil, - # compressor mainly is used in client decompressing, responses compressing should be set by - # `GRPC.Server.set_compressor` - compressor: module() | nil, - # notes that this is a preflight request, and not an actual request for data (e.g. in grpcweb) - is_preflight?: boolean(), - # For http transcoding - http_method: GRPC.Server.Router.http_method(), - http_request_headers: map(), - http_transcode: boolean(), - __interface__: map() - } defstruct server: nil, service_name: nil, diff --git a/grpc_server/lib/grpc/server/supervisor.ex b/grpc_server/lib/grpc/server/supervisor.ex index 44a3f9510..914f28ea5 100644 --- a/grpc_server/lib/grpc/server/supervisor.ex +++ b/grpc_server/lib/grpc/server/supervisor.ex @@ -20,14 +20,6 @@ defmodule GRPC.Server.Supervisor do use Supervisor - # TODO: remove this type after support Elixir 1.14 exclusively. - @type sup_flags() :: %{ - strategy: Supervisor.strategy(), - intensity: non_neg_integer(), - period: pos_integer(), - auto_shutdown: Supervisor.auto_shutdown() - } - @default_adapter GRPC.Server.Adapters.Cowboy require Logger diff --git a/grpc_server/lib/grpc/server/transcode.ex b/grpc_server/lib/grpc/server/transcode.ex index 943c7845d..d6efa8c61 100644 --- a/grpc_server/lib/grpc/server/transcode.ex +++ b/grpc_server/lib/grpc/server/transcode.ex @@ -3,7 +3,6 @@ defmodule GRPC.Server.Transcode do alias GRPC.Server.Router.Query alias GRPC.Server.Router.FieldPath - @type t :: map() # The request mapping follow the following rules: # # 1. Fields referred by the path template. They are passed via the URL path. diff --git a/grpc_server/lib/grpc/stream.ex b/grpc_server/lib/grpc/stream.ex index 470afa7e0..5bd4ba5f1 100644 --- a/grpc_server/lib/grpc/stream.ex +++ b/grpc_server/lib/grpc/stream.ex @@ -52,12 +52,6 @@ defmodule GRPC.Stream do defstruct flow: nil, options: [], metadata: %{} - @type t :: %__MODULE__{flow: Flow.t(), options: Keyword.t(), metadata: map()} - - @type item :: any() - - @type reason :: any() - @doc """ Converts a gRPC input into a `Flow` pipeline with backpressure support. diff --git a/grpc_server/lib/grpc/stream/operators.ex b/grpc_server/lib/grpc/stream/operators.ex index 03251c005..91af3da57 100644 --- a/grpc_server/lib/grpc/stream/operators.ex +++ b/grpc_server/lib/grpc/stream/operators.ex @@ -4,10 +4,6 @@ defmodule GRPC.Stream.Operators do """ alias GRPC.Stream, as: GRPCStream - @type item :: any() - - @type reason :: any() - def ask(%GRPCStream{flow: flow} = stream, target, timeout \\ 5000) do mapper = fn item -> safe_invoke(&do_ask(&1, target, timeout, raise_on_error: false), item) end %GRPCStream{stream | flow: Flow.map(flow, mapper)} diff --git a/grpc_server/mix.exs b/grpc_server/mix.exs index 195c7b175..0d64f463e 100644 --- a/grpc_server/mix.exs +++ b/grpc_server/mix.exs @@ -2,7 +2,7 @@ defmodule GRPC.Server.MixProject do use Mix.Project @source_url "https://github.com/elixir-grpc/grpc_server" - @version "1.0.3" + @version "1.0.4" def project do [ @@ -33,8 +33,8 @@ defmodule GRPC.Server.MixProject do defp deps do [ - # {:grpc_core, path: "../grpc_core"}, - {:grpc_core, "~> 1.0.3"}, + {:grpc_core, path: "../grpc_core"}, + # {:grpc_core, "~> 1.0.3"}, {:protobuf, "~> 0.17"}, {:cowboy, "~> 2.14"}, {:cowlib, "~> 2.14"}, diff --git a/mix.lock b/mix.lock index 9f1d8c985..b188ad268 100644 --- a/mix.lock +++ b/mix.lock @@ -4,7 +4,7 @@ "flow": {:hex, :flow, "1.2.4", "1dd58918287eb286656008777cb32714b5123d3855956f29aa141ebae456922d", [:mix], [{:gen_stage, "~> 1.0", [hex: :gen_stage, repo: "hexpm", optional: false]}], "hexpm", "874adde96368e71870f3510b91e35bc31652291858c86c0e75359cbdd35eb211"}, "gen_stage": {:hex, :gen_stage, "1.3.2", "7c77e5d1e97de2c6c2f78f306f463bca64bf2f4c3cdd606affc0100b89743b7b", [:mix], [], "hexpm", "0ffae547fa777b3ed889a6b9e1e64566217413d018cabd825f786e843ffe63e7"}, "googleapis": {:hex, :googleapis, "0.1.0", "13770f3f75f5b863fb9acf41633c7bc71bad788f3f553b66481a096d083ee20e", [:mix], [{:protobuf, "~> 0.12", [hex: :protobuf, repo: "hexpm", optional: false]}], "hexpm", "1989a7244fd17d3eb5f3de311a022b656c3736b39740db46506157c4604bd212"}, - "grpc_core": {:hex, :grpc_core, "1.0.2", "217a0bee1a266dd4f8378629d344f6a555db209011ab37355bfa61a0b9f62eea", [:mix], [{:googleapis, "~> 0.1.0", [hex: :googleapis, repo: "hexpm", optional: false]}, {:jason, ">= 0.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:protobuf, "~> 0.17", [hex: :protobuf, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "73b916dc3f2767bd68f95a35507a9c2b389fb71997fad16558184f40b6fa148a"}, + "grpc_core": {:hex, :grpc_core, "1.0.3", "f638ad846b432c8e1b4c28613001ce5a18cbc95d760b0c662091b37e5ddf97e6", [:mix], [{:googleapis, "~> 0.1.0", [hex: :googleapis, repo: "hexpm", optional: false]}, {:jason, ">= 0.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:protobuf, "~> 0.17", [hex: :protobuf, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "8167fa6e06190d229df25b2386173b385add6682f87c27960699439083145f78"}, "gun": {:hex, :gun, "2.2.0", "b8f6b7d417e277d4c2b0dc3c07dfdf892447b087f1cc1caff9c0f556b884e33d", [:make, :rebar3], [{:cowlib, ">= 2.15.0 and < 3.0.0", [hex: :cowlib, repo: "hexpm", optional: false]}], "hexpm", "76022700c64287feb4df93a1795cff6741b83fb37415c40c34c38d2a4645261a"}, "hpax": {:hex, :hpax, "1.0.3", "ed67ef51ad4df91e75cc6a1494f851850c0bd98ebc0be6e81b026e765ee535aa", [:mix], [], "hexpm", "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"}, "jason": {:hex, :jason, "1.4.5", "2e3a008590b0b8d7388c20293e9dcc9cf3e5d642fd2a114e4cbbb52e595d940a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0 or ~> 3.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "b0c823996102bcd0239b3c2444eb00409b72f6a140c1950bc8b457d836b30684"},