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