diff --git a/public/src/utils.common.js b/public/src/utils.common.js index 3860861ee0..da1c24c010 100644 --- a/public/src/utils.common.js +++ b/public/src/utils.common.js @@ -274,15 +274,6 @@ const HTMLEntities = Object.freeze({ /* eslint-disable no-redeclare */ 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 */ - }, // https://github.com/substack/node-ent/blob/master/index.js decodeHTMLEntities: function (html) { return String(html) diff --git a/public/src/utils.js b/public/src/utils.js index f57d68c354..50ed3960c2 100644 --- a/public/src/utils.js +++ b/public/src/utils.js @@ -73,4 +73,12 @@ utils.assertPasswordValidity = (password) => { } }; +utils.generateUUID = function () { + // 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 +}; + module.exports = utils; diff --git a/src/utils.js b/src/utils.js index 524730f221..3607f9b2d3 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,5 +1,7 @@ 'use strict'; +const crypto = require('crypto'); + process.profile = function (operation, start) { console.log('%s took %d milliseconds', operation, process.elapsedTimeSince(start)); }; @@ -14,4 +16,17 @@ utils.getLanguage = function () { const meta = require('./meta'); return meta.config && meta.config.defaultLang ? meta.config.defaultLang : 'en-GB'; }; + +utils.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('-'); +}; + module.exports = utils;