Packages
ash
3.27.7
3.29.3
3.29.2
3.29.1
3.29.0
3.28.0
3.27.8
3.27.7
3.27.6
3.27.5
3.27.4
3.27.3
3.27.2
3.27.1
3.27.0
3.26.0
3.25.2
3.25.1
3.25.0
retired
3.24.7
3.24.6
3.24.5
3.24.4
3.24.3
3.24.2
3.24.1
3.24.0
3.23.1
3.23.0
3.22.2
3.22.1
3.22.0
3.21.3
3.21.2
3.21.1
3.21.0
3.20.0
3.19.3
3.19.2
3.19.1
3.19.0
3.18.0
3.17.1
3.17.0
3.16.0
3.15.0
3.14.1
3.14.0
retired
3.13.2
3.13.1
3.13.0
3.12.0
3.11.3
3.11.2
3.11.1
3.11.0
3.10.1
3.10.0
3.9.0
3.8.0
3.7.6
3.7.5
3.7.4
3.7.3
3.7.2
3.7.1
3.7.0
retired
3.6.3
retired
3.6.2
3.6.1
3.6.0
3.5.43
3.5.42
3.5.41
3.5.40
3.5.39
3.5.38
3.5.37
3.5.36
3.5.35
3.5.34
3.5.33
3.5.32
3.5.31
3.5.30
3.5.29
3.5.28
3.5.27
3.5.26
3.5.25
3.5.24
3.5.23
3.5.22
3.5.21
3.5.20
3.5.19
3.5.18
3.5.17
3.5.16
3.5.15
3.5.14
3.5.13
3.5.12
3.5.11
3.5.10
3.5.9
3.5.8
3.5.7
3.5.6
3.5.5
3.5.4
3.5.3
3.5.2
3.5.1
3.5.0
3.4.74
retired
3.4.73
3.4.72
3.4.71
3.4.70
3.4.69
3.4.68
3.4.67
3.4.66
3.4.65
3.4.64
3.4.63
3.4.62
3.4.61
3.4.60
3.4.59
3.4.58
3.4.57
3.4.56
3.4.55
3.4.54
3.4.53
3.4.52
3.4.51
3.4.50
3.4.49
3.4.48
3.4.47
3.4.46
3.4.45
3.4.44
3.4.43
3.4.42
3.4.41
3.4.40
3.4.39
3.4.38
3.4.37
3.4.36
3.4.35
3.4.34
3.4.33
3.4.32
3.4.31
3.4.30
3.4.29
3.4.28
3.4.27
3.4.26
3.4.25
3.4.24
3.4.23
3.4.22
3.4.21
3.4.20
3.4.19
3.4.18
3.4.17
3.4.16
3.4.15
3.4.14
3.4.13
3.4.12
3.4.11
3.4.10
3.4.9
3.4.8
3.4.7
3.4.6
3.4.5
3.4.4
3.4.3
3.4.2
3.4.1
3.4.0
3.3.3
3.3.2
3.3.1
3.3.0
3.2.6
3.2.5
3.2.4
3.2.3
3.2.2
3.2.1
3.2.0
3.1.8
3.1.7
3.1.6
3.1.5
3.1.4
3.1.3
3.1.2
3.1.1
3.1.0
3.0.16
3.0.15
3.0.14
3.0.13
3.0.12
3.0.11
3.0.10
3.0.9
3.0.8
3.0.7
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
3.0.0-rc.46
3.0.0-rc.45
3.0.0-rc.44
3.0.0-rc.43
3.0.0-rc.42
3.0.0-rc.41
3.0.0-rc.40
3.0.0-rc.39
3.0.0-rc.38
3.0.0-rc.37
3.0.0-rc.36
3.0.0-rc.35
3.0.0-rc.34
3.0.0-rc.33
3.0.0-rc.32
3.0.0-rc.31
3.0.0-rc.29
3.0.0-rc.28
3.0.0-rc.27
3.0.0-rc.26
3.0.0-rc.25
3.0.0-rc.24
3.0.0-rc.23
3.0.0-rc.22
3.0.0-rc.21
3.0.0-rc.20
3.0.0-rc.19
3.0.0-rc.18
3.0.0-rc.17
3.0.0-rc.16
3.0.0-rc.15
3.0.0-rc.14
3.0.0-rc.13
3.0.0-rc.12
3.0.0-rc.11
3.0.0-rc.10
3.0.0-rc.9
3.0.0-rc.8
3.0.0-rc.7
3.0.0-rc.6
3.0.0-rc.5
3.0.0-rc.4
3.0.0-rc.3
3.0.0-rc.1
3.0.0-rc.0
2.21.15
2.21.14
2.21.13
2.21.12
2.21.11
2.21.10
2.21.9
2.21.8
2.21.7
2.21.6
2.21.5
2.21.4
2.21.3
2.21.2
2.21.1
2.21.0
2.20.3
2.20.2
2.20.1
2.20.0
2.19.14
2.19.13
2.19.12
2.19.11
2.19.10
2.19.9
2.19.8
2.19.7
2.19.6
2.19.5
2.19.4
2.19.3
retired
2.19.2
retired
2.19.1
retired
2.19.0
retired
2.18.2
2.18.1
2.18.0
2.17.24
2.17.23
2.17.22
2.17.21
2.17.20
2.17.19
2.17.18
2.17.17
2.17.16
2.17.15
2.17.14
2.17.13
2.17.12
2.17.11
2.17.10
2.17.9
2.17.8
2.17.7
2.17.6
2.17.5
2.17.4
2.17.3
2.17.2
2.17.1
2.17.0
2.16.1
2.16.0
2.15.20
2.15.19
2.15.18
2.15.17
2.15.16
2.15.15
2.15.14
2.15.13
2.15.12
2.15.11
2.15.10
2.15.9
2.15.8
2.15.7
2.15.6
2.15.5
2.15.4
2.15.2
2.15.1
2.15.0
2.14.21
2.14.20
2.14.19
2.14.18
2.14.17
2.14.16
2.14.15
2.14.14
2.14.13
2.14.12
2.14.11
2.14.10
2.14.9
2.14.8
2.14.7
2.14.6
2.14.5
2.14.4
2.14.3
2.14.2
2.14.1
2.14.0
2.13.4
retired
2.13.3
2.13.2
2.13.1
2.13.0
2.12.1
2.12.0
2.11.11
2.11.10
2.11.9
2.11.8
2.11.7
2.11.6
2.11.5
2.11.4
2.11.3
2.11.2
2.11.1
2.11.0
2.11.0-rc.3
2.11.0-rc.2
2.11.0-rc.1
2.11.0-rc.0
2.10.2
2.10.1
2.10.0
2.9.29
2.9.28
2.9.27
2.9.26
2.9.25
2.9.24
2.9.23
2.9.22
2.9.21
2.9.20
2.9.19
2.9.18
2.9.17
2.9.16
2.9.15
2.9.14
2.9.13
2.9.12
2.9.11
2.9.10
2.9.9
2.9.8
2.9.7
2.9.6
2.9.5
2.9.4
2.9.3
2.9.2
2.9.1
2.9.0
2.8.1
2.8.0
2.7.1
2.7.0
2.6.31
2.6.30
2.6.29
2.6.28
2.6.27
2.6.26
2.6.25
2.6.24
2.6.23
2.6.22
2.6.21
2.6.20
2.6.19
2.6.18
2.6.17
2.6.16
2.6.15
2.6.14
2.6.13
2.6.11
2.6.10
2.6.9
2.6.8
2.6.7
2.6.6
2.6.5
2.6.4
2.6.3
2.6.2
2.6.1
2.6.0
2.5.16
2.5.15
2.5.14
2.5.13
2.5.12
2.5.11
2.5.10
2.5.9
2.5.8
2.5.7
2.5.6
2.5.5
2.5.4
2.5.3
2.5.2
2.5.1
2.5.0
2.5.0-rc.6
2.5.0-rc.5
2.5.0-rc.4
2.5.0-rc.3
2.5.0-rc.2
2.5.0-rc.1
2.5.0-rc.0
2.4.30
2.4.29
2.4.28
2.4.27
2.4.26
2.4.25
2.4.24
2.4.23
2.4.22
2.4.21
2.4.20
2.4.19
2.4.18
2.4.17
2.4.16
2.4.15
2.4.14
2.4.13
2.4.12
2.4.11
2.4.10
2.4.9
2.4.8
2.4.7
2.4.6
2.4.5
2.4.4
2.4.3
2.4.2
2.4.1
2.4.0
2.3.0
2.2.0
2.1.0
2.0.0
2.0.0-rc.15
2.0.0-rc.14
2.0.0-rc.13
2.0.0-rc.12
2.0.0-rc.11
2.0.0-rc.10
2.0.0-rc.9
2.0.0-rc.8
2.0.0-rc.7
2.0.0-rc.6
2.0.0-rc.5
2.0.0-rc.4
2.0.0-rc.3
2.0.0-rc.2
2.0.0-rc.1
2.0.0-rc.0
2.0.0-pre.8
2.0.0-pre.7
2.0.0-pre.6
2.0.0-pre.5
2.0.0-pre.4
2.0.0-pre.3
2.0.0-pre.2
2.0.0-pre.1
2.0.0-pre.0
1.53.3
1.53.2
1.53.0
1.52.0-rc.22
1.52.0-rc.21
1.52.0-rc.20
1.52.0-rc.19
1.52.0-rc.18
1.52.0-rc.17
1.52.0-rc.16
1.52.0-rc.15
1.52.0-rc.14
1.52.0-rc.13
1.52.0-rc.12
1.52.0-rc.11
1.52.0-rc.10
1.52.0-rc.9
1.52.0-rc.8
1.52.0-rc.7
1.52.0-rc.6
1.52.0-rc.5
1.52.0-rc.4
1.52.0-rc.3
1.52.0-rc.2
1.52.0-rc.1
1.52.0-rc.0
1.51.2
1.51.1
retired
1.51.0
1.50.21
1.50.20
1.50.19
1.50.18
1.50.17
1.50.16
1.50.15
1.50.14
1.50.13
1.50.12
1.50.11
1.50.10
1.50.9
1.50.8
1.50.7
1.50.6
1.50.5
1.50.4
1.50.3
1.50.2
1.50.1
1.50.0
1.49.0
1.48.0-rc.30
1.48.0-rc.29
1.48.0-rc.28
1.48.0-rc.27
1.48.0-rc.26
1.48.0-rc.25
1.48.0-rc.24
1.48.0-rc.23
1.48.0-rc.22
1.48.0-rc.21
1.48.0-rc.20
1.48.0-rc.19
1.48.0-rc.18
1.48.0-rc.17
1.48.0-rc.16
1.48.0-rc.15
1.48.0-rc.14
1.48.0-rc.13
1.48.0-rc.12
1.48.0-rc.11
1.48.0-rc.10
1.48.0-rc.9
1.48.0-rc.8
1.48.0-rc.7
1.48.0-rc.6
1.48.0-rc.5
1.48.0-rc.4
1.48.0-rc.3
1.48.0-rc.2
1.48.0-rc.1
1.48.0-rc.0
1.47.12
1.47.11
1.47.10
1.47.9
1.47.8
1.47.7
1.47.6
1.47.5
1.47.4
1.47.3
1.47.2
1.47.1
1.47.0
1.46.13
1.46.12
1.46.11
1.46.10
1.46.9
1.46.8
1.46.7
1.46.6
1.46.5
1.46.4
1.46.3
1.46.2
1.46.1
1.46.0
1.45.0-rc9
1.45.0-rc8
1.45.0-rc7
1.45.0-rc6
1.45.0-rc5
1.45.0-rc4
1.45.0-rc3
1.45.0-rc20
1.45.0-rc2
1.45.0-rc19
1.45.0-rc18
1.45.0-rc17
1.45.0-rc16
1.45.0-rc15
1.45.0-rc14
1.45.0-rc13
1.45.0-rc12
1.45.0-rc11
1.45.0-rc10
1.45.0-rc1
1.45.0-rc0
1.44.13
1.44.12
1.44.11
1.44.10
1.44.9
1.44.8
1.44.7
1.44.6
1.44.5
1.44.4
1.44.3
1.44.2
1.44.1
1.44.0
1.43.12
1.43.11
1.43.10
1.43.9
1.43.8
1.43.7
1.43.6
1.43.5
1.43.4
1.43.3
1.43.2
1.43.1
1.43.0
1.42.0
1.41.12
1.41.11
1.41.10
1.41.9
1.41.8
1.41.7
1.41.6
1.41.5
1.41.4
1.41.3
1.41.2
1.41.1
1.41.0
1.40.0
1.39.7
1.39.6
1.39.5
1.39.4
1.39.3
1.39.2
1.39.1
1.39.0
1.38.0
1.37.2
1.37.1
1.37.0
1.36.22
1.36.21
1.36.19
1.36.18
1.36.17
1.36.16
1.36.15
1.36.14
1.36.13
1.36.12
1.36.11
1.36.10
1.36.9
1.36.8
1.36.7
1.36.6
1.36.5
1.36.4
1.36.3
1.36.2
1.36.0
1.35.1
1.35.0
1.34.9
1.34.8
1.34.7
1.34.6
1.34.5
1.34.4
1.34.3
1.34.2
1.34.1
1.34.0
1.33.0
1.32.2
1.32.1
1.32.0
1.31.1
1.31.0
1.30.2
1.30.1
1.29.0-rc1
1.29.0-rc0
1.28.1
1.28.0
1.27.1
1.27.0
1.26.13
1.26.12
1.26.11
1.26.10
1.26.9
1.26.8
1.26.7
1.26.6
1.26.5
1.26.4
1.26.2
1.26.1
1.26.0
1.25.8
1.25.7
1.25.6
1.25.5
1.25.4
1.25.3
1.25.2
1.25.1
1.25.0
1.24.2
1.24.1
1.24.0
1.23.3
1.23.2
1.23.1
1.23.0
1.22.1
1.22.0
1.20.1
1.20.0
1.19.1
1.19.0
1.18.1
1.18.0
1.17.1
1.17.0
1.16.2
1.15.1
1.15.0
1.14.0
1.13.4
1.13.3
1.13.2
1.13.1
1.13.0
1.12.0
1.11.1
1.11.0
1.10.0
1.9.0
1.8.0
1.7.0
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.1
1.5.0
1.4.1
1.4.0
1.3.1
1.3.0
1.2.1
1.2.0
1.1.3
1.1.2
1.1.0
1.0.3
1.0.2
1.0.1
1.0.0
0.13.1
0.13.0
0.12.0
0.10.0
0.9.1
0.9.0
0.8.0
0.7.0
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.0
0.3.0
0.2.0
0.1.9
0.1.8
0.1.3
0.1.1
0.1.0
A declarative, extensible framework for building Elixir applications.
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
mix.exs
# SPDX-FileCopyrightText: 2019 ash contributors <https://github.com/ash-project/ash/graphs/contributors>
#
# SPDX-License-Identifier: MIT
defmodule Ash.MixProject do
@moduledoc false
use Mix.Project
@description """
A declarative, extensible framework for building Elixir applications.
"""
@version "3.27.7"
def project do
[
app: :ash,
version: @version,
elixir: "~> 1.11",
consolidate_protocols: Mix.env() == :prod,
start_permanent: Mix.env() == :prod,
elixirc_paths: elixirc_paths(Mix.env()),
package: package(),
deps: deps(),
# Workaround for Elixir dialyzer opaque type bug: https://github.com/elixir-lang/elixir/issues/14837#issuecomment-3452772021
dialyzer: [
plt_add_apps: [:mix, :mnesia, :plug, :ex_unit, :stream_data],
flags: [:no_opaque, :no_match]
],
docs: &docs/0,
aliases: aliases(),
description: @description,
source_url: "https://github.com/ash-project/ash",
homepage_url: "https://github.com/ash-project/ash"
]
end
def application do
[
extra_applications: [:mnesia]
]
end
defp docs do
[
main: "readme",
source_ref: "v#{@version}",
logo: "logos/small-logo.png",
extra_section: "GUIDES",
extras: [
{"README.md", title: "Home"},
{"documentation/dsls/DSL-Ash.Resource.md",
search_data: Spark.Docs.search_data_for(Ash.Resource.Dsl)},
{"documentation/dsls/DSL-Ash.Domain.md",
search_data: Spark.Docs.search_data_for(Ash.Domain.Dsl)},
{"documentation/dsls/DSL-Ash.Notifier.PubSub.md",
search_data: Spark.Docs.search_data_for(Ash.Notifier.PubSub)},
{"documentation/dsls/DSL-Ash.Policy.Authorizer.md",
search_data: Spark.Docs.search_data_for(Ash.Policy.Authorizer)},
{"documentation/dsls/DSL-Ash.DataLayer.Ets.md",
search_data: Spark.Docs.search_data_for(Ash.DataLayer.Ets)},
{"documentation/dsls/DSL-Ash.DataLayer.Mnesia.md",
search_data: Spark.Docs.search_data_for(Ash.DataLayer.Mnesia)},
{"documentation/dsls/DSL-Ash.Reactor.md",
search_data: Spark.Docs.search_data_for(Ash.Reactor)},
{"documentation/dsls/DSL-Ash.TypedStruct.md",
search_data: Spark.Docs.search_data_for(Ash.TypedStruct.Dsl)},
"documentation/tutorials/get-started.md",
"documentation/topics/about_ash/what-is-ash.md",
"documentation/topics/about_ash/design-principles.md",
{".github/CONTRIBUTING.md", title: "Contributing to Ash"},
"documentation/topics/about_ash/alternatives.md",
"documentation/topics/development/project-structure.md",
"documentation/topics/development/working-with-llms.md",
"documentation/topics/development/generators.md",
"documentation/topics/development/error-handling.md",
"documentation/topics/development/testing.md",
"documentation/topics/development/development-utilities.md",
"documentation/topics/development/backwards-compatibility-config.md",
"documentation/topics/development/upgrading-to-3.0.md",
"documentation/topics/resources/domains.md",
"documentation/topics/resources/attributes.md",
"documentation/topics/resources/relationships.md",
"documentation/topics/resources/calculations.md",
"documentation/topics/resources/aggregates.md",
"documentation/topics/resources/validations.md",
"documentation/topics/resources/changes.md",
"documentation/topics/resources/preparations.md",
"documentation/topics/resources/code-interfaces.md",
"documentation/topics/resources/embedded-resources.md",
"documentation/topics/resources/identities.md",
"documentation/topics/resources/notifiers.md",
"documentation/topics/actions/actions.md",
"documentation/topics/actions/read-actions.md",
"documentation/topics/actions/create-actions.md",
"documentation/topics/actions/update-actions.md",
"documentation/topics/actions/destroy-actions.md",
"documentation/topics/actions/generic-actions.md",
"documentation/topics/actions/manual-actions.md",
"documentation/topics/advanced/manual-installation.md",
"documentation/topics/advanced/multi-step-actions.md",
"documentation/topics/advanced/reactor.md",
"documentation/topics/advanced/monitoring.md",
"documentation/topics/advanced/pagination.livemd",
"documentation/topics/advanced/combination-queries.md",
"documentation/topics/advanced/timeouts.md",
"documentation/topics/advanced/multitenancy.md",
"documentation/topics/advanced/writing-extensions.md",
"documentation/topics/advanced/code-generation.md",
"documentation/moved/upgrade.md",
"documentation/topics/security/actors-and-authorization.md",
"documentation/topics/security/sensitive-data.md",
"documentation/topics/security/policies.md",
"documentation/topics/reference/glossary.md",
"documentation/topics/reference/expressions.md",
"documentation/how-to/write-queries.livemd",
"documentation/how-to/polymorphic-relationships.livemd",
"documentation/how-to/test-resources.livemd",
"documentation/how-to/authorize-access-to-resources.livemd",
"documentation/how-to/encrypt-attributes.livemd",
"documentation/how-to/prevent-concurrent-writes.livemd",
"documentation/how-to/wrap-external-apis.livemd",
"CHANGELOG.md"
],
groups_for_extras: [
"Start Here": [
"readme.md",
"documentation/tutorials/get-started.md"
],
Tutorials: ~r"documentation/tutorials",
"About Ash": [
~r"documentation/topics/about_ash",
".github/CONTRIBUTING.md",
"CHANGELOG.md"
],
Development: ~r"documentation/topics/development",
Reference: [
~r"documentation/topics/reference",
~r"documentation/dsls"
],
Resources: ~r"documentation/topics/resources",
Actions: ~r"documentation/topics/actions",
Security: ~r"documentation/topics/security",
Advanced: ~r"documentation/topics/advanced",
"How To": ~r"documentation/how-to",
Moved: [
~r"documentation/moved"
]
],
skip_undefined_reference_warnings_on: [
"CHANGELOG.md",
".github/CONTRIBUTING.md",
"documentation/topics/reference/glossary.md",
"documentation/topics/development/upgrading-to-3.0.md"
],
nest_modules_by_prefix: [
Ash.Error,
Ash.Policy.Authorizer,
Ash.Domain.Transformers,
Ash.Domain.Verifiers,
Ash.Resource.Transformers,
Ash.Resource.Verifiers,
Ash.Query.Function,
Ash.Query.Operator,
Ash.Resource.Validation,
Ash.Resource.Change,
Ash.Policy.Check,
Ash.Type
],
before_closing_head_tag: fn type ->
if type == :html do
"""
<meta name="exdoc:autocomplete-limit" content="25">
<style>
.livebook-badge-container + pre {
display: none;
}
.livebook-badge-container + pre + pre {
display: none;
}
</style>
<script>
if (location.hostname === "hexdocs.pm") {
var script = document.createElement("script");
script.src = "https://plausible.io/js/script.js";
script.setAttribute("defer", "defer")
script.setAttribute("data-domain", "ashhexdocs")
document.head.appendChild(script);
}
</script>
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
<script>mermaid.initialize({startOnLoad: true})</script>
"""
end
end,
redirects: %{"contributing-to-ash" => "contributing"},
groups_for_modules: [
"Core API": [
Ash,
Ash.Query,
Ash.Changeset,
Ash.ActionInput
],
Resources: [
Ash.Resource.Calculation,
Ash.Resource.Calculation.Builtins,
Ash.CodeInterface,
Ash.Notifier,
Ash.Notifier.Notification,
Ash.Resource.ManualRead,
Ash.Resource.ManualCreate,
Ash.Resource.ManualUpdate,
Ash.Resource.ManualDestroy,
Ash.Resource.ManualRelationship,
Ash.Domain
],
Queries: [
Ash.Query,
Ash.Resource.Preparation,
Ash.Resource.Preparation.Builtins,
Ash.Query.Calculation,
Ash.Query.Aggregate
],
Changes: [
Ash.Changeset,
Ash.Resource.Change,
Ash.Resource.Change.Builtins
],
Validations: [
Ash.Resource.Validation,
Ash.Resource.Validation.Builtins
],
Authorization: [
Ash.Authorizer,
Ash.Policy.Check,
Ash.Policy.Check.Builtins,
Ash.Policy.FilterCheck,
Ash.Policy.SimpleCheck
],
Extensions: [
Ash.Resource,
Ash.DataLayer.Ets,
Ash.DataLayer.Mnesia,
Ash.DataLayer.Simple,
Ash.Notifier.PubSub,
Ash.Policy.Authorizer,
Ash.Reactor
],
Introspection: [
Ash.Domain.Info,
Ash.Resource.Info,
Ash.Policy.Info,
Ash.DataLayer.Ets.Info,
Ash.DataLayer.Mnesia.Info,
Ash.Notifier.PubSub.Info,
Ash.TypedStruct.Info
],
Visualizations: [
Ash.Domain.Info.Diagram,
Ash.Domain.Info.Livebook,
Ash.Policy.Chart.Mermaid
],
Testing: [
Ash.Generator,
Ash.Seed,
Ash.Test
],
Builtins: [
~r/Ash.Resource.Validation/,
~r/Ash.Resource.Change/,
~r/Ash.Policy.Check/
],
Tracing: [
Ash.Tracer,
Ash.Tracer.Simple,
Ash.Tracer.Simple.Span
],
Utilities: [
Ash.BulkResult,
Ash.Expr,
Ash.Page,
Ash.Page.Keyset,
Ash.Page.Offset,
Ash.Filter,
Ash.Filter.Runtime,
Ash.Sort,
Ash.CiString,
Ash.Vector,
Ash.Union,
Ash.UUID,
Ash.UUIDv7,
Ash.NotLoaded,
Ash.ForbiddenField,
Ash.Changeset.ManagedRelationshipHelpers,
Ash.DataLayer.Simple,
Ash.Filter.Simple,
Ash.Filter.Simple.Not,
Ash.OptionsHelpers,
Ash.Resource.Builder,
Ash.ProcessHelpers,
Ash.Mix.Tasks.Helpers,
Ash.PlugHelpers,
~r/^Ash.SatSolver(\.|$)/
],
Types: [
"Ash.Type",
~r/Ash.Type\./
],
Errors: [
Ash.Error,
~r/Ash.Error\./
],
"DSL Transformers": [
~r/\.Transformers\./,
~r/\.Verifiers\./
],
Expressions: [
Ash.Filter.Predicate,
Ash.Filter.Simple,
Ash.Filter.Simple.Not,
~r/Ash.Query.Operator/,
~r/Ash.Query.Function/,
~r/Ash.Query.Ref/,
Ash.Query.Not,
Ash.Query.Call,
Ash.Query.BooleanExpression,
Ash.Query.Exists,
Ash.Query.Parent
],
"DSL Structs": [
~r/Ash.Resource.Relationships/,
~r/Ash.Resource.Calculation/,
~r/Ash.Resource.Interface/,
~r/Ash.Resource.Identity/,
~r/Ash.Resource.Attribute/,
~r/Ash.Resource.Attribute/,
~r/Ash.Resource.Attribute/,
~r/Ash.Resource.Aggregate/,
~r/Ash.Resource.Actions/,
Ash.Mix.Tasks.Helpers,
Ash.Policy.FieldPolicy,
Ash.Policy.Policy,
Ash.Notifier.PubSub.Publication
],
"Data Layers": [
Ash.DataLayer.Ets,
Ash.DataLayer.Mnesia,
Ash.DataLayer.Simple
],
Other: ~r/.*/
]
]
end
defp package do
[
maintainers: [
"Zach Daniel <zach@zachdaniel.dev>"
],
licenses: ["MIT"],
files: ~w(lib priv .formatter.exs mix.exs README* LICENSE*
CHANGELOG* usage-rules.md usage-rules documentation .github/CONTRIBUTING.md),
links: %{
"GitHub" => "https://github.com/ash-project/ash",
"Changelog" => "https://github.com/ash-project/ash/blob/main/CHANGELOG.md",
"Discord" => "https://discord.gg/HTHRaaVPUc",
"Website" => "https://ash-hq.org",
"Forum" => "https://elixirforum.com/c/elixir-framework-forums/ash-framework-forum",
"REUSE Compliance" => "https://api.reuse.software/info/github.com/ash-project/ash"
}
]
end
defp elixirc_paths(:test) do
["lib", "test/support"]
end
defp elixirc_paths(_), do: ["lib"]
# Run "mix help deps" to learn about dependencies.
defp deps do
[
{:usage_rules, "~> 1.1", only: [:dev]},
# DSLs
{:spark, ">= 2.6.0"},
# Ash resources are backed by ecto scheams
{:ecto, "~> 3.7"},
# Used by the ETS data layer
{:ets, "~> 0.8"},
# Data & types
{:decimal, "~> 2.0 or ~> 3.0"},
{:jason, ">= 1.0.0"},
# Observability
{:telemetry, "~> 1.1"},
# Used for providing Ash.Reactor, will be used more in the future
{:reactor, "~> 1.0"},
# Used for Ash.PlugHelpers
{:plug, ">= 0.0.0", optional: true},
# Used for aggregatable and standardized exceptions
{:splode, "~> 0.3"},
# Testing Utilities
{:stream_data, "~> 1.0"},
# SAT Solvers
{:crux, "~> 0.1 and >= 0.1.2"},
{:picosat_elixir, "~> 0.2", optional: true},
{:simple_sat, "~> 0.1 and >= 0.1.1", optional: true},
# Code Generators
{:igniter, "~> 0.6 and >= 0.6.29", optional: true},
# Dev/Test dependencies
{:eflame, "~> 1.0", only: [:dev, :test]},
{:ex_doc, "~> 0.37", only: [:dev, :test], runtime: false},
{:makeup_diff, "~> 0.1.0", only: [:dev, :test], runtime: false},
{:ex_check, "~> 0.12", only: [:dev, :test]},
{:credo, ">= 0.0.0", only: [:dev, :test], runtime: false},
{:dialyxir, ">= 0.0.0", only: [:dev, :test], runtime: false},
{:mimic, "~> 2.0", only: [:test]},
{:sobelow, ">= 0.0.0", only: [:dev, :test], runtime: false},
{:git_ops, "~> 2.5", only: [:dev, :test]},
{:mix_audit, ">= 0.0.0", only: [:dev, :test], runtime: false},
{:mix_test_watch, "~> 1.0", only: [:dev, :test], runtime: false},
{:benchee, "~> 1.1", only: [:dev, :test]},
{:tz, "~> 0.28", only: [:test]}
]
end
defp aliases do
[
sobelow: "sobelow --skip",
credo: "credo --strict",
docs: [
"ash.install --scribe documentation/topics/advanced/manual-installation.md",
"spark.cheat_sheets",
fn _argv ->
File.mkdir_p!("doc/documentation/assets/images")
File.cp_r!("documentation/assets/images", "doc/documentation/assets/images")
end,
"docs",
"spark.replace_doc_links"
],
format: "format --migrate",
"spark.formatter":
"spark.formatter --extensions Ash.Resource.Dsl,Ash.Domain.Dsl,Ash.TypedStruct.Dsl,Ash.DataLayer.Ets,Ash.DataLayer.Mnesia,Ash.Notifier.PubSub,Ash.Policy.Authorizer,Ash.Reactor",
"spark.cheat_sheets":
"spark.cheat_sheets --extensions Ash.Resource.Dsl,Ash.Domain.Dsl,Ash.TypedStruct.Dsl,Ash.DataLayer.Ets,Ash.DataLayer.Mnesia,Ash.Notifier.PubSub,Ash.Policy.Authorizer,Ash.Reactor"
]
end
end