Uniq provides generation, formatting, parsing, and analysis of RFC 4122 UUIDs, with
support for the draft UUIDv6 extension. It is a package for Elixir projects, and can
be found on Hex as :uniq.
- Follows the RFC 4122 specification, i.e. supports UUID versions 1, 3, 4, and 5 as described in the RFC
- Supports UUIDv6 and UUIDv7, which are described in a proposed extension for RFC 4122, and improve upon desirable traits of both UUIDv1 and UUIDv4 to provide the best of both, while removing their downsides. See here for more information on how it does so.
- Supports formatting UUIDs as canonical strings (e.g.
6ba7b810-9dad-11d1-80b4-00c04fd430c8, with or without the dashes), as URNs, e.g.urn:uuid:6ba7b810-9dad-11d1-80b4-00c04fd430c8, as well as a compact, 22-character, base64-encoded format using a URI-safe alphabet (e.g.a6e4EJ2tEdGAtADAT9QwyA). - Case-insensitive, i.e.
6ba7b810-9dad-11d1-80b4-00c04fd430c8and6BA7B810-9DAD-11D1-80B4-00C04FD430C8have the same encoding - Supports Ecto out of the box, just use
Uniq.UUIDas the type of a field where you would useEcto.UUID. See the docs for more info. - Can be used as a drop-in replacement for
elixir_uuid, see the docs for details on migrating
def deps do
[
{:uniq, "~> 0.1"}
]
endThe primary API is provided by the Uniq.UUID module.
To generate UUIDs, pick the version you want, and call the appropriate generator. For example:
uuid1/0, generates UUIDv1 and formats it as a human-readable string, i.e.6ba7b810-9dad-11d1-80b4-00c04fd430c8uuid1/1, generates UUIDv1 in the specified formatuuid3/2, generates UUIDv3 using the provided namespace and name, and formats it as a human-readable stringuuid3/3, generates UUIDv3 using the provided namespace and name, in the specified format
See the docs for the full set of functions available.
You can also convert UUID strings to/from the human-readable and binary formats; parse UUID strings/binaries; and determine their validity.