Hanny658's picture
refactor: centralize id generation
b349768
Raw
History Blame Contribute Delete
971 Bytes
export function makeClientUuid(): string {
const cryptoApi = globalThis.crypto
if (cryptoApi?.randomUUID) {
return cryptoApi.randomUUID()
}
const bytes = new Uint8Array(16)
if (cryptoApi?.getRandomValues) {
cryptoApi.getRandomValues(bytes)
} else {
for (let i = 0; i < bytes.length; i += 1) {
bytes[i] = Math.floor(Math.random() * 256)
}
}
bytes[6] = (bytes[6] & 0x0f) | 0x40
bytes[8] = (bytes[8] & 0x3f) | 0x80
const hex = Array.from(bytes, byte => byte.toString(16).padStart(2, '0'))
return [
hex.slice(0, 4).join(''),
hex.slice(4, 6).join(''),
hex.slice(6, 8).join(''),
hex.slice(8, 10).join(''),
hex.slice(10, 16).join(''),
].join('-')
}
export function makeClientMessageId(): string {
return `client-${makeClientUuid()}`
}
export function makeClientRequestId(): string {
return `request-${makeClientUuid()}`
}
export function makeDeviceId(): string {
return `device_${makeClientUuid()}`
}