Packages
jsv
0.3.0
0.21.2
0.21.1
0.21.0
0.20.0
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.3
0.18.2
0.18.1
0.18.0
0.17.1
0.17.0
0.16.0
0.15.2
0.15.1
0.15.0
0.14.0
0.13.1
0.13.0
0.12.0
0.11.5
0.11.4
0.11.3
retired
0.11.2
0.11.1
0.11.0
0.10.1
0.10.0
0.9.0
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
A JSON Schema Validator with complete support for the latest specifications.
Current section
Files
Jump to
Current section
Files
mix.exs
defmodule JSV.MixProject do
use Mix.Project
@source_url "https://github.com/lud/jsv"
def project do
[
app: :jsv,
description: "A JSON Schema Validator with complete support for the latest specifications.",
version: "0.3.0",
elixir: "~> 1.15",
# no protocol consolidation for the generation of the test suite
consolidate_protocols: false,
elixirc_paths: elixirc_paths(Mix.env()),
start_permanent: Mix.env() == :prod,
deps: deps(),
source_url: @source_url,
docs: docs(),
test_coverage: [tool: ExCoveralls],
package: package(),
modkit: modkit(),
dialyzer: dialyzer()
]
end
def application do
[
extra_applications: [:logger]
]
end
defp elixirc_paths(:test) do
["lib", "test/support"]
end
defp elixirc_paths(_) do
["lib"]
end
defp deps do
[
# Actual dependencies
{:nimble_options, "~> 1.0"},
# Optional JSON support
{:jason, "~> 1.0", optional: true},
{:poison, "~> 6.0 or ~> 5.0", optional: true},
# Optional Formats
{:mail_address, "~> 1.0", optional: true},
{:abnf_parsec, "~> 1.2.3 or ~> 1.3", optional: true},
# Dev
{:credo, "~> 1.7", only: [:dev, :test]},
{:ex_doc, ">= 0.0.0", only: :dev, runtime: false},
{:dialyxir, "~> 1.4", only: :test, runtime: false},
{:modkit, "~> 0.6.1", only: :dev, runtime: false},
# Test
{:excoveralls, "~> 0.18", only: :test},
json_schema_test_suite()
]
end
defp json_schema_test_suite do
{:json_schema_test_suite,
git: "https://github.com/json-schema-org/JSON-Schema-Test-Suite.git",
ref: "82a077498cc761d69e8530c721702be980926c89",
only: [:dev, :test],
compile: false,
app: false}
end
defp docs do
[
main: "JSV",
groups_for_modules: [
Resolvers: [
JSV.Resolver,
JSV.Resolver.Embedded,
JSV.Resolver.Httpc
],
Build: [
JSV.Builder,
JSV.BuildError,
JSV.Codec,
JSV.Key,
JSV.RNS,
JSV.Ref,
JSV.Resolver.Resolved
],
Validation: [
JSV.Validator,
JSV.ValidationError,
JSV.BooleanSchema,
JSV.Root,
JSV.Subschema,
JSV.ErrorFormatter,
JSV.Validator.Error,
JSV.Validator.ValidationContext
],
"Format Validation": [~r/^JSV\.Format.*/],
Vocabulary: [~r/^JSV\.Vocabulary.*/]
]
]
end
defp package do
[
licenses: ["MIT"],
links: %{
"Github" => @source_url,
"Changelog" => "https://github.com/lud/jsv/blob/main/CHANGELOG.md"
}
]
end
def cli do
[
preferred_envs: [
"coveralls.html": :test,
dialyzer: :test
]
]
end
defp dialyzer do
[
flags: [:unmatched_returns, :error_handling, :unknown, :extra_return],
list_unused_filters: true,
plt_add_deps: :app_tree,
plt_add_apps: [:ex_unit, :mix],
plt_local_path: "_build/plts"
]
end
defp modkit do
[
mount: [
{JSV, "lib/jsv"}
]
]
end
end