Skip to content

Instantly share code, notes, and snippets.

@JoshBarr
Created March 25, 2019 02:04
Show Gist options
  • Save JoshBarr/75778b4ef13adcb2a82c689d32afeac6 to your computer and use it in GitHub Desktop.
Save JoshBarr/75778b4ef13adcb2a82c689d32afeac6 to your computer and use it in GitHub Desktop.
quick uuid
const cryptoLib = window.crypto || window.msCrypto;
const uuidv4 = () => {
if (!cryptoLib || !Uint8Array) {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
const r = Math.random() * 16 | 0;
const v = c === 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
return (`${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`)
.replace(/[018]/g, (c: string) => {
const intValue = parseInt(c, 10);
const randomValue = cryptoLib.getRandomValues(new Uint8Array(1))[0];
return (intValue ^ randomValue & 15 >> intValue / 4).toString(16);
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment