@terminus/ngx-tools
Version:
[![CircleCI][circle-badge]][circle-link] [![codecov][codecov-badge]][codecov-project] [![semantic-release][semantic-release-badge]][semantic-release] [![MIT License][license-image]][license-url] <br> [![NPM version][npm-version-image]][npm-url] [![Github
22 lines • 2.9 kB
JavaScript
/* eslint-disable @typescript-eslint/no-magic-numbers */
/**
* Generate a canonically formatted UUID that is Version 1 through 5 and is the appropriate Variant as per RFC4122.
*
* @returns The UUID
*
* @example
* generateUUID() // Returns a UUID such as: `f4ee5eed-ed19-3681-713e-907a23ed7858`
*/
export function generateUUID() {
var buf = new Uint16Array(8);
window.crypto.getRandomValues(buf);
var S4 = function (num) {
var ret = num.toString(16);
while (ret.length < 4) {
ret = "0" + ret;
}
return ret;
};
return (S4(buf[0]) + S4(buf[1]) + "-" + S4(buf[2]) + "-" + S4(buf[3]) + "-" + S4(buf[4]) + "-" + S4(buf[5]) + S4(buf[6]) + S4(buf[7]));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtdXVpZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0ZXJtaW51cy9uZ3gtdG9vbHMvdXRpbGl0aWVzLyIsInNvdXJjZXMiOlsiZ2VuZXJhdGUtdXVpZC9nZW5lcmF0ZS11dWlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdEQUF3RDtBQUN4RDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLFlBQVk7SUFDMUIsSUFBTSxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFbkMsSUFBTSxFQUFFLEdBQUcsVUFBUyxHQUFXO1FBQzdCLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0IsT0FBTyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNyQixHQUFHLEdBQUcsTUFBSSxHQUFLLENBQUM7U0FDakI7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsQ0FBQztJQUVGLE9BQU8sQ0FBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBRyxDQUFDLENBQUM7QUFDMUgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1tYWdpYy1udW1iZXJzICovXG4vKipcbiAqIEdlbmVyYXRlIGEgY2Fub25pY2FsbHkgZm9ybWF0dGVkIFVVSUQgdGhhdCBpcyBWZXJzaW9uIDEgdGhyb3VnaCA1IGFuZCBpcyB0aGUgYXBwcm9wcmlhdGUgVmFyaWFudCBhcyBwZXIgUkZDNDEyMi5cbiAqXG4gKiBAcmV0dXJucyBUaGUgVVVJRFxuICpcbiAqIEBleGFtcGxlXG4gKiBnZW5lcmF0ZVVVSUQoKSAvLyBSZXR1cm5zIGEgVVVJRCBzdWNoIGFzOiBgZjRlZTVlZWQtZWQxOS0zNjgxLTcxM2UtOTA3YTIzZWQ3ODU4YFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVVVUlEKCk6IHN0cmluZyB7XG4gIGNvbnN0IGJ1ZiA9IG5ldyBVaW50MTZBcnJheSg4KTtcbiAgd2luZG93LmNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYnVmKTtcblxuICBjb25zdCBTNCA9IGZ1bmN0aW9uKG51bTogbnVtYmVyKSB7XG4gICAgbGV0IHJldCA9IG51bS50b1N0cmluZygxNik7XG4gICAgd2hpbGUgKHJldC5sZW5ndGggPCA0KSB7XG4gICAgICByZXQgPSBgMCR7cmV0fWA7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH07XG5cbiAgcmV0dXJuIChgJHtTNChidWZbMF0pICsgUzQoYnVmWzFdKX0tJHtTNChidWZbMl0pfS0ke1M0KGJ1ZlszXSl9LSR7UzQoYnVmWzRdKX0tJHtTNChidWZbNV0pfSR7UzQoYnVmWzZdKX0ke1M0KGJ1Zls3XSl9YCk7XG59XG4iXX0=