defmodule Triple.MixProject do use Mix.Project @version "1.0.0" @source_url "https://github.com/iamkanishka/triple" @description "Elixir client for the Triple transaction data enrichment API" def project do [ app: :triple, version: @version, elixir: "~> 1.18", elixirc_paths: elixirc_paths(Mix.env()), start_permanent: Mix.env() == :prod, deps: deps(), description: @description, package: package(), docs: docs(), aliases: aliases(), dialyzer: dialyzer(), test_coverage: [tool: ExCoveralls], preferred_cli_env: [ "test.ci": :test, coveralls: :test, "coveralls.detail": :test, "coveralls.post": :test, "coveralls.html": :test ] ] end def application do [extra_applications: [:logger, :crypto]] end defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_), do: ["lib"] defp deps do [ # HTTP client {:req, "~> 0.5"}, # JSON (Req auto-detects and uses this for encode/decode) {:jason, "~> 1.4"}, # Observability {:telemetry, "~> 1.2"}, # Dev / docs / static analysis {:ex_doc, "~> 0.34", only: :dev, runtime: false}, {:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:excoveralls, "~> 0.18", only: :test} ] end defp package do [ name: "triple", licenses: ["MIT"], links: %{ "GitHub" => @source_url, "Triple" => "https://jointriple.com", "Changelog" => "#{@source_url}/blob/main/CHANGELOG.md" }, maintainers: ["iamkanishka"], files: ~w(lib .formatter.exs mix.exs README.md CHANGELOG.md LICENSE) ] end defp docs do [ main: "readme", name: "Triple", source_ref: "v#{@version}", source_url: @source_url, extras: ["README.md", "CHANGELOG.md", "LICENSE"], groups_for_modules: [ "API Contexts": [ Triple, Triple.Enrich, Triple.Brands, Triple.Feedback, Triple.Stocks, Triple.Cryptos, Triple.TLS ], "Enrichment Types (v1 — structured)": [ Triple.Types.Enrich.V1.Request, Triple.Types.Enrich.V1.Response ], "Enrichment Types (v2 — unstructured)": [ Triple.Types.Enrich.V2.Request, Triple.Types.Enrich.V2.Response ], "Brokerage Types": [ Triple.Types.Stock, Triple.Types.Crypto, Triple.Types.Resource ], "Other Types": [ Triple.Types.Brand, Triple.Types.FeedbackRequest, Triple.Types.TLSCertificate, Triple.Types.TLSCertificateRequest ], Infrastructure: [ Triple.Config, Triple.Client, Triple.Error, Triple.Telemetry, Triple.RateLimiter, Triple.Util ] ] ] end defp dialyzer do [ plt_add_apps: [:ex_unit], plt_core_path: "priv/plts", plt_local_path: "priv/plts", flags: [:error_handling, :unmatched_returns] ] end defp aliases do [ "test.ci": ["test --cover"], lint: ["credo --strict", "dialyzer"], "lint.format": ["format --check-formatted"] ] end end