koel/resources/assets/js/utils/crypto.ts
2024-07-06 17:44:45 +02:00

12 lines
405 B
TypeScript

export const uuid = () => {
if (typeof window === 'undefined') {
// @ts-ignore
return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
)
}
return typeof window.crypto?.randomUUID === 'function'
? window.crypto.randomUUID()
: URL.createObjectURL(new Blob([])).split(/[:\/]/g).pop()
}