defmodule Hibana.Plugins.MixProject do
use Mix.Project
@version "0.1.0"
@source_url "https://github.com/greentornado/hibana"
def project do
base = [
app: :hibana_plugins,
version: @version,
elixir: "~> 1.16",
start_permanent: Mix.env() == :prod,
deps: deps(),
description: description(),
package: package(),
docs: docs(),
name: "Hibana Plugins",
source_url: @source_url
]
if System.get_env("HEX_PUBLISH") do
base
else
Keyword.merge(base,
build_path: "../../_build",
config_path: "../../config/config.exs",
deps_path: "../../deps",
lockfile: "../../mix.lock"
)
end
end
def application do
[
extra_applications: [:logger]
]
end
defp description do
"35 built-in plugins for the Hibana web framework: " <>
"JWT, OAuth, CORS, rate limiting, GraphQL, admin dashboard, i18n, and more."
end
defp package do
[
name: "hibana_plugins",
licenses: ["MIT"],
links: %{"GitHub" => @source_url},
files: ~w(lib .formatter.exs mix.exs LICENSE)
]
end
defp docs do
[
main: "Hibana.Plugins.JWT",
source_ref: "v#{@version}",
source_url: @source_url,
groups_for_modules: [
"Security & Auth": [
Hibana.Plugins.JWT,
Hibana.Plugins.OAuth,
Hibana.Plugins.Auth,
Hibana.Plugins.APIKey,
Hibana.Plugins.TOTP,
Hibana.Plugins.RequestSigning,
Hibana.Plugins.CORS,
Hibana.Plugins.ScopedCORS,
Hibana.Plugins.RateLimiter,
Hibana.Plugins.DistributedRateLimiter
],
"Request Processing": [
Hibana.Plugins.BodyParser,
Hibana.Plugins.Session,
Hibana.Plugins.RequestId,
Hibana.Plugins.Compression,
Hibana.Plugins.ContentNegotiation,
Hibana.Plugins.APIVersioning,
Hibana.Plugins.I18n
],
"Monitoring & Ops": [
Hibana.Plugins.Logger,
Hibana.Plugins.ColorLogger,
Hibana.Plugins.Metrics,
Hibana.Plugins.HealthCheck,
Hibana.Plugins.GracefulShutdown,
Hibana.Plugins.TelemetryDashboard,
Hibana.Plugins.LiveDashboard
],
"Data & Content": [
Hibana.Plugins.Cache,
Hibana.Plugins.OTPCache,
Hibana.Plugins.Static,
Hibana.Plugins.Upload,
Hibana.Plugins.GraphQL,
Hibana.Plugins.Search,
Hibana.Plugins.SEO
],
"Development & Admin": [
Hibana.Plugins.ErrorHandler,
Hibana.Plugins.DevErrorPage,
Hibana.Plugins.Admin,
Hibana.Plugins.LiveViewChannel
]
]
]
end
defp deps do
[
hibana_dep(),
{:plug, "~> 1.16"},
{:jose, "~> 1.11"},
{:hackney, "~> 3.2"},
{:jason, "~> 1.4"},
{:telemetry, "~> 1.3"},
{:cowboy, "~> 2.14"},
{:plug_cowboy, "~> 2.7"},
{:mime, "~> 2.0"},
{:ex_doc, "~> 0.34", only: :dev, runtime: false}
]
end
defp hibana_dep do
if System.get_env("HEX_PUBLISH") do
{:hibana, "~> #{@version}"}
else
{:hibana, in_umbrella: true}
end
end
end