defmodule AshAuthentication.Supervisor do @moduledoc """ Starts and manages any processes required by AshAuthentication. Add to your application supervisor: ## Example ```elixir defmodule MyApp.Application do use Application def start(_type, _args) do children = [ {AshAuthentication.Supervisor, otp_app: :my_app} ] Supervisor.start_link(children, strategy: :one_for_one, name: MyApp.Supervisor) end end ``` """ use Supervisor @doc false @spec start_link(any) :: Supervisor.on_start() def start_link(opts), do: Supervisor.start_link(__MODULE__, opts) @doc false @impl true def init(opts) do opts |> Keyword.fetch(:otp_app) |> case do {:ok, otp_app} -> [{AshAuthentication.TokenResource.Expunger, otp_app: otp_app}] |> Supervisor.init(strategy: :one_for_one) :error -> raise """ No otp_app provided to AshAuthentication.Supervisor. In order to find your Ash APIs and resources you need to provide the name of your OTP application when starting AshAuthentication.Supervisor: Suggestion, try adding `{AshAuthentication.Supervisor, otp_app: :my_app}` to your application's supervision tree (replacing `:my_app` with the name of your application). """ end end end