You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.1 KiB
35 lines
1.1 KiB
import validate from './validate.js'; |
|
const byteToHex = []; |
|
for (let i = 0; i < 256; ++i) { |
|
byteToHex.push((i + 0x100).toString(16).slice(1)); |
|
} |
|
export function unsafeStringify(arr, offset = 0) { |
|
return (byteToHex[arr[offset + 0]] + |
|
byteToHex[arr[offset + 1]] + |
|
byteToHex[arr[offset + 2]] + |
|
byteToHex[arr[offset + 3]] + |
|
'-' + |
|
byteToHex[arr[offset + 4]] + |
|
byteToHex[arr[offset + 5]] + |
|
'-' + |
|
byteToHex[arr[offset + 6]] + |
|
byteToHex[arr[offset + 7]] + |
|
'-' + |
|
byteToHex[arr[offset + 8]] + |
|
byteToHex[arr[offset + 9]] + |
|
'-' + |
|
byteToHex[arr[offset + 10]] + |
|
byteToHex[arr[offset + 11]] + |
|
byteToHex[arr[offset + 12]] + |
|
byteToHex[arr[offset + 13]] + |
|
byteToHex[arr[offset + 14]] + |
|
byteToHex[arr[offset + 15]]).toLowerCase(); |
|
} |
|
function stringify(arr, offset = 0) { |
|
const uuid = unsafeStringify(arr, offset); |
|
if (!validate(uuid)) { |
|
throw TypeError('Stringified UUID is invalid'); |
|
} |
|
return uuid; |
|
} |
|
export default stringify;
|
|
|