# NAME
UUID.js - RFC-compliant UUID Generator for JavaScript
# SYNOPSIS
```html
```
```javascript
// Node.js
let UUID = require("uuidjs");
let uuid = UUID.generate();
```
```typescript
// TypeScript
import * as UUID from "uuidjs";
let str: string = UUID.generate();
let obj: UUID.UUID = UUID.genV4();
```
# DESCRIPTION
UUID.js is a JavaScript/ECMAScript library to generate RFC 4122 compliant Universally Unique IDentifiers (UUIDs). This library supports both version 4 UUIDs (UUIDs from random numbers) and version 1 UUIDs (time-based UUIDs), and provides an object-oriented interface to print a generated or parsed UUID in a variety of forms.
# FEATURES
* Generates version 4 UUIDs (UUIDs from random numbers) and version 1 UUIDs (time-based UUIDs)
* Provides an object-oriented interface to print various string representations of a generated or parsed UUID
* Utilizes a cryptographically secure pseudo-random number generator if available, whereas falling back to `Math.random()` otherwise
* Appends extra random bits to compensate for the lower timestamp resolution of JavaScript than that required for version 1 UUIDs
* Comes with a lot of test cases including format checks and statistical tests to maintain a high-quality code base
* Supports old browsers as well as modern browser and server environments, as kept compatible with ECMAScript 3rd edition
# INSTALL
Download `src/uuid.js` or call `npm install uuidjs`.
Then, load `src/uuid.js`.
```html
```
Or, import `uuidjs`.
```javascript
const UUID = require("uuidjs");
```
# USAGE EXAMPLES
`UUID.generate()` returns a version 4 UUID as a hexadecimal string.
```javascript
// Create a version 4 UUID as a hexadecimal string
console.log(UUID.generate()); // fa84cf42-ffdf-4975-b42b-31ab5fb983eb
```
`UUID.genV4()`, `UUID.genV1()`, and `UUID.parse()` return a UUID object that has various fields and methods.
```javascript
// Create a version 4 (random number-based) UUID object
var objV4 = UUID.genV4();
// Create a version 1 (time-based) UUID object
var objV1 = UUID.genV1();
// Create a UUID object from a hexadecimal string
var uuid = UUID.parse("a0e0f130-8c21-11df-92d9-95795a3bcd40");
// Get string representations of a UUID object
console.log(uuid.toString()); // "a0e0f130-8c21-11df-92d9-95795a3bcd40"
console.log(uuid.hexString); // "a0e0f130-8c21-11df-92d9-95795a3bcd40"
console.log(uuid.hexNoDelim); // "a0e0f1308c2111df92d995795a3bcd40"
console.log(uuid.bitString); // "101000001110000 ... 1100110101000000"
console.log(uuid.urn); // "urn:uuid:a0e0f130-8c21-11df-92d9-95795a3bcd40"
// Compare UUID objects
console.log(objV4.equals(objV1)); // false
// Get UUID version numbers
console.log(objV4.version); // 4
console.log(objV1.version); // 1
// Get internal field values in 3 different forms via 2 different accessors
console.log(uuid.intFields.timeLow); // 2699096368
console.log(uuid.bitFields.timeMid); // "1000110000100001"
console.log(uuid.hexFields.timeHiAndVersion); // "11df"
console.log(uuid.intFields.clockSeqHiAndReserved); // 146
console.log(uuid.bitFields.clockSeqLow); // "11011001"
console.log(uuid.hexFields.node); // "95795a3bcd40"
console.log(uuid.intFields[0]); // 2699096368
console.log(uuid.bitFields[1]); // "1000110000100001"
console.log(uuid.hexFields[2]); // "11df"
console.log(uuid.intFields[3]); // 146
console.log(uuid.bitFields[4]); // "11011001"
console.log(uuid.hexFields[5]); // "95795a3bcd40"
```
UUID.js supports the so-called noConflict mode to work around namespace conflicts.
```javascript
// Avoid namespace conflicts with other libraries
var arbitraryVarName = UUID;
UUID = UUID.overwrittenUUID; // Restore the original value
console.log(arbitraryVarName.generate()); // "cb9a0283-a44c-4e7a-a5b0-9cd2876e952b"
```
# LICENSE
UUID.js is licensed under [the MIT license](https://opensource.org/licenses/MIT).
# AUTHOR
LiosK
# SEE ALSO
* [RFC 4122](https://www.ietf.org/rfc/rfc4122.txt)
* [GitHub Repository](https://github.com/LiosK/UUID.js)
* [npm Package](https://www.npmjs.com/package/uuidjs)
* [API Documentation](https://liosk.github.io/UUID.js/doc/)
* [Run test cases on your browser](https://liosk.github.io/UUID.js/test/test.uuid.js.html)