All files / src/internal UUID.ts

100% Statements 7/7
100% Branches 4/4
100% Functions 2/2
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24            9x         80x   80x   80x 2480x 2480x   2480x        
// http://stackoverflow.com/a/8809472
 
/**
 * A utility class for generating UUIDs.
 * @module UUID
 */
export class UUID {
  /**
   * Generates a UUID.  Attempts to use the high-precision timer if possible.
   */
  public static generate() {
    let d = new Date().getTime();
    if (typeof performance !== 'undefined' && typeof performance.now === 'function') {
      d += performance.now(); // use high-precision timer if available
    }
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
      const r = (d + Math.random() * 16) % 16 | 0;
      d = Math.floor(d / 16);
      // eslint-disable-next-line prettier/prettier
      return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
    });
  }
}