Skip to content

Commit a4050fd

Browse files
authored
Merge pull request #323 from twlite/patch-1
fix: use native uuid generator when possible
2 parents 9d24854 + a279e55 commit a4050fd

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

chatgpt.js

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1872,14 +1872,19 @@ const chatgpt = { // eslint-disable-line no-redeclare
18721872
unminify() { chatgpt.code.unminify(); },
18731873

18741874
uuidv4() {
1875-
let d = new Date().getTime(); // get current timestamp in ms (to ensure UUID uniqueness)
1876-
const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
1877-
const r = ( // generate random nibble
1878-
( d + (window.crypto.getRandomValues(new Uint32Array(1))[0] / (Math.pow(2, 32) - 1))*16)%16 | 0 );
1879-
d = Math.floor(d/16); // correspond each UUID digit to unique 4-bit chunks of timestamp
1880-
return ( c == 'x' ? r : (r&0x3|0x8) ).toString(16); // generate random hexadecimal digit
1881-
});
1882-
return uuid;
1875+
try {
1876+
// use native secure uuid generator when available
1877+
return crypto.randomUUID();
1878+
} catch(_e) {
1879+
let d = new Date().getTime(); // get current timestamp in ms (to ensure UUID uniqueness)
1880+
const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
1881+
const r = ( // generate random nibble
1882+
( d + (window.crypto.getRandomValues(new Uint32Array(1))[0] / (Math.pow(2, 32) - 1))*16)%16 | 0 );
1883+
d = Math.floor(d/16); // correspond each UUID digit to unique 4-bit chunks of timestamp
1884+
return ( c == 'x' ? r : (r&0x3|0x8) ).toString(16); // generate random hexadecimal digit
1885+
});
1886+
return uuid;
1887+
}
18831888
},
18841889

18851890
writeCode() { chatgpt.code.write(); }

0 commit comments

Comments
 (0)