Universally Unique Animal Formulas
I wonder how things work on different planets...
npm install uuaf --save
import { uuaf } from "uuaf";
console.log(uuaf());
// Formula 7e4486e0: chicken Sarah + ram Stephanie = macaw Alexandria (planet 0d7f4796cfe7 only)
- Glanceability
- UUAF main goal is to improve UUID glanceability - it is much easier to mentally parse and get at least some information out of UUAF in comparison to UUID.
- Partial memorability
- UUAF are not meant to be fully memorable - instead they are constructed in a way that it is easy to remember few parts that could help with narrowing down the candidates during lookup.
- UUID equivalence
- UUAF provides one-to-one mapping to UUID
- based on uuid npm library, but it can work with plain strings as well
- functions for direct UUAF generation supporting different UUID versions underneath
- functions for translating from UUID to UUAF and vice versa
- UUAF comes in two basic forms - short and long
- typescript support
Formula 7e4486e0: chicken Sarah + ram Stephanie = macaw Alexandria (planet 0d7f4796cfe7)
7e4486e0-chicken-Sarah-ram-Stephanie-macaw-Alexandria-0d7f4796cfe7
7e4486e0-d6e0-11ea-8108-0d7f4796cfe7
Formula 2692d4db: eel Kaitlyn + wasp Victor = badger Tiffany (planet 74fc56355e46 only)
2692d4db-eel-Kaitlyn-wasp-Victor-badger-Tiffany-74fc56355e46
2692d4db-0889-39f9-90f0-74fc56355e46
Formula 3a7c1b89: ferret Raymond + kite Jesus = mantis Miguel (planet 621fb5d309d2 only)
3a7c1b89-ferret-Raymond-kite-Jesus-mantis-Miguel-621fb5d309d2
3a7c1b89-99d3-4177-a1bd-621fb5d309d2
Formula 952383ad: caribou Corey + vole Molly = bonobo Taylor (planet a00af9c2a3c3 only)
952383ad-caribou-Corey-vole-Molly-bonobo-Taylor-a00af9c2a3c3
952383ad-d340-50bf-b3ee-a00af9c2a3c3
By default UUAF uses v4 version of UUID generation, but other options are availiable. Generator functions accepts input parameteres defined in uuid npm library plus additional parameter kind
which can be set to short
, long
or raw
import { uuaf } from "uuaf";
// Generate UUAF based on UUID v4
console.log(uuaf());
console.log(uuaf({ kind: "short" }));
// Generate UUAF based on UUID v1
console.log(uuaf.v1({ kind: "long" }));
// Generate UUAF based on UUID v3
console.log(uuaf.v3("name", namespaceUuid));
console.log(uuaf.v3("name", namespaceUuid, "raw"));
// Generate UUAF based on UUID v4
console.log(uuaf.v4());
// Generate UUAF based on UUID v5
console.log(uuaf.v5("name", namespaceUuid));
These two functions translate between UUID and UUAF
import { fromUuid, toUuid } from "uuaf";
const id = "952383ad-d340-50bf-b3ee-a00af9c2a3c3";
const uuaf = fromUuid(id);
console.log(uuaf);
// Formula 952383ad: caribou Corey + vole Molly = bonobo Taylor (planet a00af9c2a3c only)
const backToId = toUuid(uuaf);
console.log(id === backToId); // true
This function is used to translate between different UUAF formats
import { fromUuaf } from "uuaf";
const uuaf =
"Formula 3a7c1b89: ferret Raymond + kite Jesus = mantis Miguel (planet 621fb5d309d2 only)";
const shortUuaf = fromUuaf(uuaf, "short");
console.log(shortUuaf); // 3a7c1b89-ferret-Raymond-kite-Jesus-mantis-Miguel-621fb5d309d2