v1ToV6.js 842 B

12345678910
  1. import parse from './parse.js';
  2. import { unsafeStringify } from './stringify.js';
  3. export default function v1ToV6(uuid) {
  4. const v1Bytes = typeof uuid === 'string' ? parse(uuid) : uuid;
  5. const v6Bytes = _v1ToV6(v1Bytes);
  6. return typeof uuid === 'string' ? unsafeStringify(v6Bytes) : v6Bytes;
  7. }
  8. function _v1ToV6(v1Bytes) {
  9. return Uint8Array.of(((v1Bytes[6] & 0x0f) << 4) | ((v1Bytes[7] >> 4) & 0x0f), ((v1Bytes[7] & 0x0f) << 4) | ((v1Bytes[4] & 0xf0) >> 4), ((v1Bytes[4] & 0x0f) << 4) | ((v1Bytes[5] & 0xf0) >> 4), ((v1Bytes[5] & 0x0f) << 4) | ((v1Bytes[0] & 0xf0) >> 4), ((v1Bytes[0] & 0x0f) << 4) | ((v1Bytes[1] & 0xf0) >> 4), ((v1Bytes[1] & 0x0f) << 4) | ((v1Bytes[2] & 0xf0) >> 4), 0x60 | (v1Bytes[2] & 0x0f), v1Bytes[3], v1Bytes[8], v1Bytes[9], v1Bytes[10], v1Bytes[11], v1Bytes[12], v1Bytes[13], v1Bytes[14], v1Bytes[15]);
  10. }