Short UUID
Generate short UUIDs or translate standard UUIDs into shorter formats and back.
This is as direct a conversion as is possible in Dart from the node package short-uuid.
Examples
The API is very similar to the npm package with only some minor changes required in Dart.
Quick Start
const short = ShortUuid();
// Quick start with flickrBase58 format
short.generate(); // 73WakrfVbNJBaAmhQtEeDv
Detailed
Short UUID starts with RFC4122 v4-compliant UUIDs and translates them into other, usually shorter formats. It also provides translators to convert back and forth from RFC compliant UUIDs to the shorter formats.
Formats return consistent-length values unless specifically requested
otherwise. This is done by padding the start with the first (0)
character in the alphabet. Previous versions can translate padded
formats back to UUID.
In short, it works exactly like its node counterpart.
// ShortUuid is better initiated through a call to `init` than by
// creating a new instance.
final translator = ShortUuid.init(); // Defaults to flickrBase58
final decimalTranslator = ShortUuid.init("0123456789"); // Provide a specific alphabet for translation
final cookieTranslator = ShortUuid.init(ShortUuid.constants.cookieBase90); // Use a constant for translation
// Generate a shortened v4 UUID
translator.generate(); // mhvXdrZT4jP5T8vBxuvm75
// Translate UUIDs to and from the shortened format
translator.toUUID(shortId); // a44521d0-0fb8-4ade-8002-3385545c3318
translator.fromUUID(regularUUID); // mhvXdrZT4jP5T8vBxuvm75
// Generate plain UUIDs
// - From the library without creating a translator
ShortUuid.uuid(); // fd5c084c-ff7c-4651-9a52-37096242d81c
// - Each translator provides the uuid.v4() function, too
translator.uuid(); // 3023b0f5-ec55-4e75-9cd8-104700698052
// See the alphabet used by a translator
translator.alphabet;
// View the constants
short.constants.flickrBase58; // Avoids similar characters (0/O, 1/I/l, etc.)
short.constants.cookieBase90; // Safe for HTTP cookies values for smaller IDs.
Differences
There are some slight differences between this project and the node version (short-uuid) by oculus42.
- Most notable is that you have to call an init function to get a
translator. This is because
ShortUuidis a class and not a function. - There is no
translator.new(). This is becausenewis a reserved word in Dart. Instead,translator.generate()can be used. Thegeneratealias exists in the node version as well.
Attributions
This is a direct conversion of Samuel Rouse's (aka oculus42) npm package
short-uuid to Dart. A copy of
the project's license can be found in the LICENSE file under
the section short-uuid.