# lamina v0.4.4 - Table of Contents

> Dynamic, runtime configuration for your Elixir app

## Pages

- [README](readme.md)
- [Change Log](changelog.md)

## Modules

- [Lamina](Lamina.md): Lamina allows you to define a run-time configuration pipeline that can merge
configuration from several sources.  This allows the system to be reactive to
changes in its environment.
- [Lamina.Cast](Lamina.Cast.md): A helpful library of casts.
- [Lamina.DSL](Lamina.DSL.md): Defines the macros used for building a configuration module.

- [Lamina.DSL.Config](Lamina.DSL.Config.md): Defines the macros used inside the `config` macro.

- [Lamina.Provider](Lamina.Provider.md): The `Provider` behaviour is used to declare configuration providers.
- [Lamina.Provider.ApplicationEnv](Lamina.Provider.ApplicationEnv.md): Configuration provider for the OTP application environment.
- [Lamina.Provider.Default](Lamina.Provider.Default.md): Configuration provider for static default configuration values.
- [Lamina.Provider.Env](Lamina.Provider.Env.md): A configuration provider for retrieving information from the UNIX process
environment.
- [Lamina.Registry.PubSubRegistry](Lamina.Registry.PubSubRegistry.md): An Elixir Registry which keeps track of configuration subscribers.

- [Lamina.Registry.ServerRegistry](Lamina.Registry.ServerRegistry.md): An Elixir Registry which keeps track of `Lamina.Server` processes.

- [Lamina.Server](Lamina.Server.md): The Lamina configuration server.
- [Lamina.Server.ConfigModule](Lamina.Server.ConfigModule.md): Wrapper around access to a Lamina configuration module
- [Lamina.Server.ConfigValue](Lamina.Server.ConfigValue.md): A wrapper around an individual configuration value.
- [Lamina.Server.Impl](Lamina.Server.Impl.md): Separates the functional implementation from the stateful GenServer.

- [Lamina.Server.Provider](Lamina.Server.Provider.md): Helps the Lamina server deal with individual providers.

- [Lamina.Server.State](Lamina.Server.State.md): Defines the state of the Lamina server process.

- [Lamina.Server.Table](Lamina.Server.Table.md): A wrapper around ETS for our specific use cases.

- Exceptions
  - [Lamina.Error.AlreadyRegisteredError](Lamina.Error.AlreadyRegisteredError.md): Lamina is unable to register the configuration module.
  - [Lamina.Error.ConfigNotFoundError](Lamina.Error.ConfigNotFoundError.md): No configuration value was found.
  - [Lamina.Error.InvalidValueError](Lamina.Error.InvalidValueError.md): A configuration value returned by a provider has failed validation.

  - [Lamina.Error.NotALaminaModuleError](Lamina.Error.NotALaminaModuleError.md): The module does not implement the `Lamina` behaviour.
  - [Lamina.Error.NotAProviderModuleError](Lamina.Error.NotAProviderModuleError.md): The module does not implement the `Lamina.Provider` behaviour.
  - [Lamina.Error.NotRegisteredError](Lamina.Error.NotRegisteredError.md): Lamina is unable to locate the configuration module in the registry.
  - [Lamina.Error.StateError](Lamina.Error.StateError.md): The Lamina Server is in an invalid state.

