diff --git a/public/src/utils.js b/public/src/utils.js index 4eb2db22a4..64d58467a1 100644 --- a/public/src/utils.js +++ b/public/src/utils.js @@ -290,13 +290,11 @@ const utils = { generateUUID: function () { - /* eslint-disable no-bitwise */ - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - const r = Math.random() * 16 | 0; - const v = c === 'x' ? r : ((r & 0x3) | 0x8); - return v.toString(16); - }); - /* eslint-enable no-bitwise */ + // from https://github.com/tracker1/node-uuid4/blob/master/browser.js + const temp_url = URL.createObjectURL(new Blob()); + const uuid = temp_url.toString(); + URL.revokeObjectURL(temp_url); + return uuid.split(/[:\/]/g).pop().toLowerCase(); // remove prefixes }, // https://github.com/substack/node-ent/blob/master/index.js decodeHTMLEntities: function (html) { diff --git a/src/utils.js b/src/utils.js index 8913909584..e122d798aa 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,3 +1,17 @@ 'use strict'; +const crypto = require('crypto'); + module.exports = require('../public/src/utils'); + +module.exports.generateUUID = function () { + // from https://github.com/tracker1/node-uuid4/blob/master/index.js + let rnd = crypto.randomBytes(16); + /* eslint-disable no-bitwise */ + rnd[6] = (rnd[6] & 0x0f) | 0x40; + rnd[8] = (rnd[8] & 0x3f) | 0x80; + /* eslint-enable no-bitwise */ + rnd = rnd.toString('hex').match(/(.{8})(.{4})(.{4})(.{4})(.{12})/); + rnd.shift(); + return rnd.join('-'); +}; \ No newline at end of file