26 lines
1.3 KiB
JavaScript
26 lines
1.3 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
Object.defineProperty(exports, "__esModule", {
|
||
|
value: true
|
||
|
});
|
||
|
exports.default = v6ToV1;
|
||
|
var _parse = _interopRequireDefault(require("./parse.js"));
|
||
|
var _stringify = require("./stringify.js");
|
||
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
||
|
/**
|
||
|
* Convert a v6 UUID to a v1 UUID
|
||
|
*
|
||
|
* @param {string|Uint8Array} uuid - The v6 UUID to convert to v6
|
||
|
* @returns {string|Uint8Array} The v1 UUID as the same type as the `uuid` arg
|
||
|
* (string or Uint8Array)
|
||
|
*/
|
||
|
function v6ToV1(uuid) {
|
||
|
var v6Bytes = typeof uuid === 'string' ? (0, _parse.default)(uuid) : uuid;
|
||
|
var v1Bytes = _v6ToV1(v6Bytes);
|
||
|
return typeof uuid === 'string' ? (0, _stringify.unsafeStringify)(v1Bytes) : v1Bytes;
|
||
|
}
|
||
|
|
||
|
// Do the field transformation needed for v6 -> v1
|
||
|
function _v6ToV1(v6Bytes) {
|
||
|
return Uint8Array.of((v6Bytes[3] & 0x0f) << 4 | v6Bytes[4] >> 4 & 0x0f, (v6Bytes[4] & 0x0f) << 4 | (v6Bytes[5] & 0xf0) >> 4, (v6Bytes[5] & 0x0f) << 4 | v6Bytes[6] & 0x0f, v6Bytes[7], (v6Bytes[1] & 0x0f) << 4 | (v6Bytes[2] & 0xf0) >> 4, (v6Bytes[2] & 0x0f) << 4 | (v6Bytes[3] & 0xf0) >> 4, 0x10 | (v6Bytes[0] & 0xf0) >> 4, (v6Bytes[0] & 0x0f) << 4 | (v6Bytes[1] & 0xf0) >> 4, v6Bytes[8], v6Bytes[9], v6Bytes[10], v6Bytes[11], v6Bytes[12], v6Bytes[13], v6Bytes[14], v6Bytes[15]);
|
||
|
}
|