UNPKG

angular2-uuid

Version:

Angular 2 / TypeScript crypto-secure UUID generator

37 lines 1.64 kB
"use strict"; var UUID = (function () { function UUID() { // no-op } UUID.UUID = function () { if (typeof (window) !== "undefined" && typeof (window.crypto) !== "undefined" && typeof (window.crypto.getRandomValues) !== "undefined") { // If we have a cryptographically secure PRNG, use that // http://stackoverflow.com/questions/6906916/collisions-when-generating-uuids-in-javascript var buf = new Uint16Array(8); window.crypto.getRandomValues(buf); return (this.pad4(buf[0]) + this.pad4(buf[1]) + "-" + this.pad4(buf[2]) + "-" + this.pad4(buf[3]) + "-" + this.pad4(buf[4]) + "-" + this.pad4(buf[5]) + this.pad4(buf[6]) + this.pad4(buf[7])); } else { // Otherwise, just use Math.random // https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript // https://stackoverflow.com/questions/11605068/why-does-jshint-argue-against-bitwise-operators-how-should-i-express-this-code return this.random4() + this.random4() + "-" + this.random4() + "-" + this.random4() + "-" + this.random4() + "-" + this.random4() + this.random4() + this.random4(); } }; UUID.pad4 = function (num) { var ret = num.toString(16); while (ret.length < 4) { ret = "0" + ret; } return ret; }; UUID.random4 = function () { return Math.floor((1 + Math.random()) * 0x10000) .toString(16) .substring(1); }; return UUID; }()); exports.UUID = UUID; //# sourceMappingURL=index.js.map