From 504d6f25a1630a7aa56115382567f7993a8fb852 Mon Sep 17 00:00:00 2001 From: David Sehnal <david.sehnal@gmail.com> Date: Fri, 9 Nov 2018 00:57:03 +0100 Subject: [PATCH] uuid is now 22 char base64 encoded --- src/mol-util/uuid.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/mol-util/uuid.ts b/src/mol-util/uuid.ts index 7972eaf9f..983d88663 100644 --- a/src/mol-util/uuid.ts +++ b/src/mol-util/uuid.ts @@ -9,14 +9,20 @@ import { now } from 'mol-util/now'; type UUID = string & { '@type': 'uuid' } namespace UUID { + const chars: string[] = []; export function create(): UUID { let d = (+new Date()) + now(); - const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { - const r = (d + Math.random()*16)%16 | 0; - d = Math.floor(d/16); - return (c==='x' ? r : (r&0x3|0x8)).toString(16); - }); - return uuid as any; + for (let i = 0; i < 16; i++) { + chars[i] = String.fromCharCode((d + Math.random()*0xff)%0xff | 0); + d = Math.floor(d/0xff); + } + return btoa(chars.join('')).substr(0, 22) as UUID; + // const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + // const r = (d + Math.random()*16)%16 | 0; + // d = Math.floor(d/16); + // return (c==='x' ? r : (r&0x3|0x8)).toString(16); + // }); + // return uuid as any; } } -- GitLab