/uuid62

Base-62 UUID generator

Primary LanguageJavaScriptMIT LicenseMIT

uuid62

npm version CircleCI Dependency Status Known Vulnerabilities

Base-62 UUID generator

Overview

uuid62 makes it easy to generate short base-62 (or any other base) UUIDs. ID generation is done by uuid which follows RFC4122. The encoded UUIDs are alphanumeric [0-9a-zA-Z] and always have a length of 22 chars.

uuid62 began as a fork of dmarcelino's uuid-base62. It provides updated dependencies and more features above that package. uuid62 is designed to be a drop-in replacement for uuid-base62, however, so migration should be trivial.

Installation

npm i uuid62

Usage

const uuid62 = require('uuid62');

const uuid = uuid62.v4();
// -> 2qY9COoAhfMrsH7mCyh86T

// decode a base-62 uuid
const originalUUID = uuid62.decode(uuid);
// -> 9af099b2-6244-4fc1-b72b-1d69a24481b7

// base-62 encode an existing traditional uuid
const encoded = uuid62.encode('8fc60e7c-3b3c-48e9-a6a7-a5fe4f1fbc31');
// -> 2fNwVYePN8WqqDFvVf7XMN

API

uuid62 is essentially a wrapper around uuid. All optional parameters specified in uuid's API can also be provided here. Note that any buffer that would be returned by uuid will be converted into a base-62 string representation by this library.

v1 (timestamp-based)

uuid62.v1()

Returns a string. See uuid for optional parameters to specify timestamp and node id.

v4 (random)

uuid62.v4()

Returns a string.

v5 (namespace)

uuid62.v5(<name>, <namespace>)

Returns a string. Requires:

  • name - a string or array
  • namespace - a string or buffer representing a uuid. String representation may be conventional or base-62. Two pre-defined namespaces are exposed at uuid62.DNS and uuid62.URL.

Examples:

let id = uuid62.v5('https://google.com', uuid62.URL);

id = uuid62.v5('google.com' uuid62.DNS);

const myNS = uuid62.v4();
id = uuid62.v5('foobar', myNS);

Encoding/decoding

uuid62.encode(<id>, <encoding>)

Returns a string representing a base-62 id. Takes:

  • id - a string or array representing a conventional uuid
  • encoding - an optional string specifying the encoding of the input id. Defaults to hex.

If the input id is of the incorrect length, the output will be padded with 0 on the left or trimmed from the left.

uuid62.decode(<id>, <encoding>)

Returns a string representing a conventional uuid, including dashes. Takes:

  • id - a string representing a base-62 uuid
  • encoding - an optional string specifying the encoding of the output id. Defaults to hex.

If the input id is of the incorrect length, it will be padded with 0 on the left or trimmed from the left before decoding.

Other bases

uuid62 can support other bases by assigning a new baseX charset to customBase:

uuid62.customBase = new uuid62.baseX("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_");
const uuid = uuid62.v4();
// -> 31LoSI_BVeQpXtwu_-GEbL

License

MIT