Packages
zoi
0.18.2
0.18.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.1
0.16.0
0.15.0
0.14.1
0.14.0
0.13.1
0.13.0
0.12.1
0.12.0
0.11.1
0.11.0
0.10.7
0.10.6
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.1
0.9.0
0.9.0-rc.1
0.9.0-rc.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.0
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.3
0.1.2
0.1.1
0.1.0
Zoi is a schema validation library for Elixir, designed to provide a simple and flexible way to define and validate data.
Current section
Files
Jump to
Current section
Files
mix.exs
defmodule Zoi.MixProject do
use Mix.Project
@source_url "https://github.com/phcurado/zoi"
@version "0.18.2"
def project do
[
app: :zoi,
version: @version,
elixir: "~> 1.14",
start_permanent: Mix.env() == :prod,
consolidate_protocols: Mix.env() != :test,
name: "Zoi",
description:
"Zoi is a schema validation library for Elixir, designed to provide a simple and flexible way to define and validate data.",
package: package(),
docs: docs(),
deps: deps(),
test_coverage: [tool: ExCoveralls],
dialyzer: [
plt_file: {:no_warn, "priv/plts/project.plt"}
]
]
end
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger]
]
end
def cli do
[
preferred_envs: [
coveralls: :test,
"coveralls.detail": :test,
"coveralls.post": :test,
"coveralls.html": :test,
"coveralls.cobertura": :test
]
]
end
# Run "mix help deps" to learn about dependencies.
defp deps do
[
{:decimal, "~> 2.0", optional: true},
{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.1", optional: true},
{:excoveralls, "~> 0.18", only: :test},
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false},
{:ex_doc, "~> 0.40", only: :dev, runtime: false, warn_if_outdated: true}
]
end
defp package do
[
maintainers: ["Paulo Curado"],
links: %{
"GitHub" => @source_url,
"Changelog" => "https://hexdocs.pm/zoi/changelog.html"
},
licenses: ["Apache-2.0"],
files: ~w(.formatter.exs lib mix.exs README.md CHANGELOG.md)
]
end
defp docs do
[
main: "readme",
source_ref: "v#{@version}",
logo: "guides/images/logo.png",
extra_section: "GUIDES",
source_url: @source_url,
groups_for_extras: groups_for_extras(),
groups_for_modules: groups_for_modules(),
skip_undefined_reference_warnings_on: ["CHANGELOG.md"],
extras: extras(),
before_closing_body_tag: &before_closing_body_tag/1
]
end
defp before_closing_body_tag(:html) do
"""
<script defer src="https://cdn.jsdelivr.net/npm/mermaid@11.6.0/dist/mermaid.min.js"></script>
<script>
let initialized = false;
window.addEventListener("exdoc:loaded", () => {
if (!initialized) {
mermaid.initialize({
startOnLoad: false,
theme: document.body.className.includes("dark") ? "dark" : "default"
});
initialized = true;
}
let id = 0;
for (const codeEl of document.querySelectorAll("pre code.mermaid")) {
const graphDefinition = codeEl.textContent;
const graphId = "mermaid-graph-" + id++;
mermaid.render(graphId, graphDefinition).then(({svg, bindFunctions}) => {
codeEl.innerHTML = svg;
bindFunctions?.(codeEl);
});
}
});
</script>
"""
end
defp before_closing_body_tag(_), do: ""
defp extras do
[
"CHANGELOG.md",
"README.md"
] ++ Enum.flat_map(groups_for_extras(), fn {_group, guides} -> guides end)
end
defp groups_for_extras do
[
Setup: [
"guides/quickstart_guide.md",
"guides/recipes.md"
],
Integrations: [
"guides/rendering_forms_with_phoenix.md",
"guides/using_zoi_to_generate_openapi_specs.md",
"guides/validating_controller_parameters.md"
],
Utilities: [
"guides/converting_keys_from_object.md",
"guides/generating_schemas_from_json_example.md",
"guides/localizing_errors_with_gettext.md"
]
]
end
defp groups_for_modules do
[
"Main API": [Zoi, Zoi.ISO],
Schema: [Zoi.Schema, Zoi.Struct, Zoi.TypeSpec, Zoi.Describe],
Integrations: [Zoi.JSONSchema, Zoi.Form],
Internals: [Zoi.Context, Zoi.Type]
]
end
end