mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-30 18:46:01 +01:00 
			
		
		
		
	fix: get rid of math.random in utils.generateUUID
This commit is contained in:
		
				
					committed by
					
						 Julian Lam
						Julian Lam
					
				
			
			
				
	
			
			
			
						parent
						
							6e011b8ff5
						
					
				
				
					commit
					a4ab49c2e2
				
			| @@ -274,15 +274,6 @@ const HTMLEntities = Object.freeze({ | |||||||
|  |  | ||||||
| /* eslint-disable no-redeclare */ | /* eslint-disable no-redeclare */ | ||||||
| const utils = { | 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 | 	// https://github.com/substack/node-ent/blob/master/index.js | ||||||
| 	decodeHTMLEntities: function (html) { | 	decodeHTMLEntities: function (html) { | ||||||
| 		return String(html) | 		return String(html) | ||||||
|   | |||||||
| @@ -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; | module.exports = utils; | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								src/utils.js
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								src/utils.js
									
									
									
									
									
								
							| @@ -1,5 +1,7 @@ | |||||||
| 'use strict'; | 'use strict'; | ||||||
|  |  | ||||||
|  | const crypto = require('crypto'); | ||||||
|  |  | ||||||
| process.profile = function (operation, start) { | process.profile = function (operation, start) { | ||||||
| 	console.log('%s took %d milliseconds', operation, process.elapsedTimeSince(start)); | 	console.log('%s took %d milliseconds', operation, process.elapsedTimeSince(start)); | ||||||
| }; | }; | ||||||
| @@ -14,4 +16,17 @@ utils.getLanguage = function () { | |||||||
| 	const meta = require('./meta'); | 	const meta = require('./meta'); | ||||||
| 	return meta.config && meta.config.defaultLang ? meta.config.defaultLang : 'en-GB'; | 	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; | module.exports = utils; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user