# NoNoncense v2.0.0 - Table of Contents

> Generate locally unique nonces in distributed Elixir

## Pages

- [NoNoncense](readme.md)
- [Changelog](changelog.md)
- [Migration Guide](migration.md)
- [LICENSE](license.md)

## Modules

- [NoNoncense](NoNoncense.md): Generate locally unique nonces (number-only-used-once) in distributed Elixir.
- [NoNoncense.MachineId](NoNoncense.MachineId.md): Supervised machine ID lease management for `NoNoncense`.
- [NoNoncense.MachineId.ConflictGuard](NoNoncense.MachineId.ConflictGuard.md): Guards against machine ID conflicts between nodes by broadcasting each node's machine ID to
newly connected peers and calling `on_conflict` whenever a duplicate is detected.
- [NoNoncense.MachineId.LeaseCache](NoNoncense.MachineId.LeaseCache.md): In-memory cache of a machine ID and its lease.
- [NoNoncense.MachineId.LeaseManager](NoNoncense.MachineId.LeaseManager.md): Acquires and renews a machine ID lease through a pluggable `NoNoncense.MachineId.Strategy`,
directly managing the configured `NoNoncense` factories.
- [NoNoncense.MachineId.Strategy](NoNoncense.MachineId.Strategy.md): Behaviour for pluggable machine ID lease strategies, used by `NoNoncense.MachineId.LeaseManager`
to coordinate unique machine ID assignment across nodes (e.g. through SQL or Redis).
- [NoNoncense.MachineId.Strategy.EnvironmentVariable](NoNoncense.MachineId.Strategy.EnvironmentVariable.md): Strategy to acquire the machine ID from the last digits in an environment variable value.
Useful for using Kubernetes StatefulSets for determining the machine ID.
- [NoNoncense.MachineId.Strategy.HostIdentifiers](NoNoncense.MachineId.Strategy.HostIdentifiers.md): Strategy to assign machine IDs based on the current node's network identifiers (hostname,
FQDN, IP addresses, or OTP node name), matched against a fixed list of all possible nodes.
- [NoNoncense.MachineId.Strategy.RedisLease](NoNoncense.MachineId.Strategy.RedisLease.md): Strategy to acquire a machine ID lease from Redis, coordinating uniqueness across nodes
through a single Redis hash.
- [NoNoncense.MachineId.Strategy.SqlLease](NoNoncense.MachineId.Strategy.SqlLease.md): Strategy to acquire a machine ID lease from a SQL database (Postgres or MySQL), coordinating
uniqueness across nodes through a single table.
- [NoNoncense.Telemetry](NoNoncense.Telemetry.md): Events emitted while managing machine IDs. Nonce generation is never instrumented.

- Exceptions
  - [NoNoncense.Errors.DisabledError](NoNoncense.Errors.DisabledError.md): Exception raised when a NoNoncense instance is called while disabled,
for example because its machine ID lease was lost.

  - [NoNoncense.Errors.UninitializedError](NoNoncense.Errors.UninitializedError.md): Exception raised when a NoNoncense instance is not initialized.

