owtlab-tracking
Version:
A simple Tracking system
19 lines (18 loc) • 556 B
JavaScript
export function getUniqueId() {
// uuidv4
if (typeof crypto !== 'undefined' && crypto.getRandomValues) {
// browser
return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
(
c ^
(crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))
).toString(16));
}
// node & older browsers
const str = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';
return str.replace(/[xy]/g, (c) => {
const r = (Math.random() * 16) | 0;
const v = c == 'x' ? r : (r & 0x3) | 0x8;
return v.toString(16);
});
}