nl_tokens: See https : // github . com / broofa / node - uuid for API details
pl_tokens: function v1 ( options , buf , offset ) { var i = buf && offset || 0 ; var b = buf || [ ] ; options = options || { } ; var clockseq = options . clockseq !== undefined ? options . clockseq : _clockseq ; // UUID timestamps are 100 nano-second units since the Gregorian epoch, // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. var msecs = options . msecs !== undefined ? options . msecs : new Date ( ) . getTime ( ) ; // Per 4.2.1.2, use count of uuid's generated during the current clock // cycle to simulate higher resolution clock var nsecs = options . nsecs !== undefined ? options . nsecs : _lastNSecs + 1 ; // Time since last uuid creation (in msecs) var dt = ( msecs - _lastMSecs ) + ( nsecs - _lastNSecs ) / 10000 ; // Per 4.2.1.2, Bump clockseq on clock regression if ( dt < 0 && options . clockseq === undefined ) { clockseq = clockseq + 1 & 0x3fff ; } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new // time interval if ( ( dt < 0 || msecs > _lastMSecs ) && options . nsecs === undefined ) { nsecs = 0 ; } // Per 4.2.1.2 Throw error if too many uuids are requested if ( nsecs >= 10000 ) { throw new <mask> ( 'uuid.v1(): Can\'t create more than 10M uuids/sec' ) ; } _lastMSecs = msecs ; _lastNSecs = nsecs ; _clockseq = clockseq ; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch msecs += 12219292800000 ; // `time_low` var tl = ( ( msecs & 0xfffffff ) * 10000 + nsecs ) % 0x100000000 ; b [ i ++ ] = tl >>> 24 & 0xff ; b [ i ++ ] = tl >>> 16 & 0xff ; b [ i ++ ] = tl >>> 8 & 0xff ; b [ i ++ ] = tl & 0xff ; // `time_mid` var tmh = ( msecs / 0x100000000 * 10000 ) & 0xfffffff ; b [ i ++ ] = tmh >>> 8 & 0xff ; b [ i ++ ] = tmh & 0xff ; // `time_high_and_version` b [ i ++ ] = tmh >>> 24 & 0xf | 0x10 ; // include version b [ i ++ ] = tmh >>> 16 & 0xff ; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) b [ i ++ ] = clockseq >>> 8 | 0x80 ; // `clock_seq_low` b [ i ++ ] = clockseq & 0xff ; // `node` var node = options . node || _nodeId ; for ( var n = 0 ; n < 6 ; n ++ ) { b [ i + n ] = node [ n ] ; } return buf ? buf : unparse ( b ) ; }