v6.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = v6;
  6. var _stringify = require("./stringify.js");
  7. var _v = _interopRequireDefault(require("./v1.js"));
  8. var _v1ToV = _interopRequireDefault(require("./v1ToV6.js"));
  9. function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
  10. /**
  11. *
  12. * @param {object} options
  13. * @param {Uint8Array=} buf
  14. * @param {number=} offset
  15. * @returns
  16. */
  17. function v6(options = {}, buf, offset = 0) {
  18. // v6 is v1 with different field layout, so we start with a v1 UUID, albeit
  19. // with slightly different behavior around how the clock_seq and node fields
  20. // are randomized, which is why we call v1 with _v6: true.
  21. let bytes = (0, _v.default)({
  22. ...options,
  23. _v6: true
  24. }, new Uint8Array(16));
  25. // Reorder the fields to v6 layout.
  26. bytes = (0, _v1ToV.default)(bytes);
  27. // Return as a byte array if requested
  28. if (buf) {
  29. for (let i = 0; i < 16; i++) {
  30. buf[offset + i] = bytes[i];
  31. }
  32. return buf;
  33. }
  34. return (0, _stringify.unsafeStringify)(bytes);
  35. }