| "use strict"; |
| |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| exports.default = void 0; |
| |
| var _validate = _interopRequireDefault(require("./validate.js")); |
| |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } |
| |
| /** |
| * Convert array of 16 byte values to UUID string format of the form: |
| * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX |
| */ |
| const byteToHex = []; |
| |
| for (let i = 0; i < 256; ++i) { |
| byteToHex.push((i + 0x100).toString(16).substr(1)); |
| } |
| |
| function stringify(arr, offset = 0) { |
| // Note: Be careful editing this code! It's been tuned for performance |
| // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 |
| const uuid = (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(); // Consistency check for valid UUID. If this throws, it's likely due to one |
| // of the following: |
| // - One or more input array values don't map to a hex octet (leading to |
| // "undefined" in the uuid) |
| // - Invalid input values for the RFC `version` or `variant` fields |
| |
| if (!(0, _validate.default)(uuid)) { |
| throw TypeError('Stringified UUID is invalid'); |
| } |
| |
| return uuid; |
| } |
| |
| var _default = stringify; |
| exports.default = _default; |