Created
June 18, 2019 19:09
-
-
Save MJGTwo/a4f819a48f8e59de59e55bf39b651916 to your computer and use it in GitHub Desktop.
Useful uuid script. Made by Jeff Ward, updated to TypeScript by me.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const lut: string[] = []; | |
for (let i = 0; i < 256; i++) { | |
lut[i] = (i < 16 ? '0' : '') + i.toString(16); | |
} | |
/* | |
* Fast UUID generator, RFC4122 version 4 compliant. | |
* @author Jeff Ward (jcward.com). | |
* @license MIT license | |
* @link http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136 | |
*/ | |
export function v4() { | |
const d0 = (Math.random() * 0xffffffff) | 0; | |
const d1 = (Math.random() * 0xffffffff) | 0; | |
const d2 = (Math.random() * 0xffffffff) | 0; | |
const d3 = (Math.random() * 0xffffffff) | 0; | |
return ( | |
lut[d0 & 0xff] + | |
lut[(d0 >> 8) & 0xff] + | |
lut[(d0 >> 16) & 0xff] + | |
lut[(d0 >> 24) & 0xff] + | |
'-' + | |
lut[d1 & 0xff] + | |
lut[(d1 >> 8) & 0xff] + | |
'-' + | |
lut[((d1 >> 16) & 0x0f) | 0x40] + | |
lut[(d1 >> 24) & 0xff] + | |
'-' + | |
lut[(d2 & 0x3f) | 0x80] + | |
lut[(d2 >> 8) & 0xff] + | |
'-' + | |
lut[(d2 >> 16) & 0xff] + | |
lut[(d2 >> 24) & 0xff] + | |
lut[d3 & 0xff] + | |
lut[(d3 >> 8) & 0xff] + | |
lut[(d3 >> 16) & 0xff] + | |
lut[(d3 >> 24) & 0xff] | |
); | |
} | |
export function token(isShort: boolean) { | |
const d0 = (Math.random() * 0xffffffff) | 0; | |
const d1 = (Math.random() * 0xffffffff) | 0; | |
const short = | |
lut[(d0 >> 16) & 0xff] + | |
lut[(d0 >> 24) & 0xff] + | |
lut[d1 & 0xff] + | |
lut[(d1 >> 8) & 0xff]; | |
return isShort | |
? short | |
: short + lut[(d1 >> 16) & 0xff] + lut[(d1 >> 24) & 0xff]; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment