I've been working with Node.js for a long time and I've always used the uuid package to generate UUIDs in my projects. It's a great package and it works well, but I always felt that it could be improved in some aspects.

Problems

Simple API

One of the things that always bothered me about the uuid package is that it is limited to a simple UUID generation in the default format. You have to know how to convert it to different formats, which can be a bit confusing for beginners.

Long UUID strings

Although the UUID string is a standard format, it is not very suitable for URLs or other contexts where you need a more compact representation, such as base64. This forces you to parse the UUID string and convert it to a different format, which can be a bit cumbersome.

Storage efficiency

Also, the string form of UUIDs is not very efficient in terms of storage space. It uses 36 characters to represent a 16-byte value, which is not very efficient for storage or transmission over the network neither for database storage.

Solution

To solve these problems, I decided to create a new package called @uuid-ts/uuid that provides a more user-friendly API and automatic parsing of UUIDs from different formats. It also includes utility functions to convert UUIDs to different formats and to validate UUIDs.

It is a simple TypeScript class with UUID version 7 support that can be used in both Node.js and browser environments. It is isomorphic and can be used with modern JavaScript and TypeScript without any additional configuration.

Features

Usage

Parsing an existent UUID as string:

const uuidString = '01932c07-209c-7401-9658-4e7a759e7bf7';

const uuid = new Uuid(uuidString);

// methods
uuid.toHex(); // '01932c07-209c-7401-9658-4e7a759e7bf7';
uuid.toBase64(); // 'AZMsByCcdAGWWAAATnp1ng';
uuid.toBuffer(); // [Buffer]
uuid.toInstance<Binary>(Binary); // [Binary]

Generating a new UUID: