uuid-token-generator

Generates random tokens with custom size and base-encoding using the RFC 4122 v4 UUID algorithm

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
uuid-token-generator
1501.0.07 years ago8 years agoMinified + gzip package size for uuid-token-generator in KB

Readme

UUID Token Generator
NPM Version Build Status Coverage Status Dependency Status devDependency Status
Provides a class that generates random tokens with custom size and base-encoding using the RFC 4122 v4 UUID algorithm. Generated tokens are strings that are guaranteed to always be the same length, depending on the bit-size specified for the token.
Great for generating things like API keys and compact UIDs.

WARNING

This package is no longer being maintained because a better one exists—uid-generator—which is better for the following reasons:
  • It has more flexible token generation options
+
i.e. You can specify the length of the token that you'd like to generate
  • It has both a synchronous and asynchronous interface
  • It is less likely to produce colliding tokens
  • It's more performant

Installation

npm install uuid-token-generator --save

Usage

const TokenGenerator = require('uuid-token-generator');

const tokgen = new TokenGenerator(); // Default is a 128-bit token encoded in base58
tokgen.generate();
// -> '4QhmRwHwwrgFqXULXNtx4d'

const tokgen2 = new TokenGenerator(256, TokenGenerator.BASE62);
tokgen2.generate();
// -> 'x6GCX3aq9hIT8gjhvO96ObYj0W5HBVTsj64eqCuVc5X'

API

new TokenGenerator(bitSize, baseEncoding) ⇒ Object

Creates a new TokenGenerator instance that generates bitSize-bit tokens encoded using the characters in baseEncoding.
| Param | Default | Type | Description | |:------|:--------|:-----|:------------| | bitSize
| 128 | number | The size of the token to generate in bits. Must be a multiple of 128. | | baseEncoding | TokenGenerator.BASE58 | string | One of the TokenGenerator.BASE## constants or a custom string of characters to use to encode the token. |
Example
new TokenGenerator();
new TokenGenerator(256);
new TokenGenerator(TokenGenerator.BASE36);
new TokenGenerator(512, TokenGenerator.BASE62);
new TokenGenerator('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/'); // Custom encoding (base64)

TokenGenerator.BASE16 : String

0123456789abcdef

TokenGenerator.BASE36 : String

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ

TokenGenerator.BASE58 : String

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

TokenGenerator.BASE62 : String

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

TokenGenerator.BASE66 : String

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-._~
(all ASCII characters that do not need to be encoded in a URI as specified by RFC 3986)

TokenGenerator.BASE71 : String

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!'()*-._~
(all ASCII characters that are not encoded by encodeURIComponent())

tokgen.generate() ⇒ String

Generates a random token.
Returns: String - A random token that is always tokgen.tokenLength characters long.
Example
const tokgen = new TokenGenerator();
tokgen.generate();
// -> 'vf5NrETkUKCa6FhkyRSazD'

(readonly) tokgen.bitSize : Number

The size of the token that will be generated in bits (the bitSize value passed to the TokenGenerator constructor).
Example
new TokenGenerator().bitSize // -> 128
new TokenGenerator(256).bitSize // -> 256

(readonly) tokgen.baseEncoding : String

The set of characters used to encode the token (the baseEncoding value passed to the TokenGenerator constructor).
Example
new TokenGenerator().baseEncoding // -> '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
new TokenGenerator('abc').baseEncoding // -> 'abc'

(readonly) tokgen.base : Number

The base of the token that will be generated (which is the number of characters in the baseEncoding).
Example
new TokenGenerator().base // -> 58
new TokenGenerator(TokenGenerator.BASE62).base // -> 62
new TokenGenerator('abc').base // -> 3

(readonly) tokgen.tokenLength : Number

The length of the token that will be generated. The generated token will always be this length.
Calculated as such: tokenLength = Math.ceil(bitSize / Math.log2(base))
Example
new TokenGenerator().tokenLength // -> 22
new TokenGenerator(256, TokenGenerator.BASE62).tokenLength // -> 43