UUID.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /**
  2. * UUID operations.
  3. *
  4. * @author n1474335 [n1474335@gmail.com]
  5. * @copyright Crown Copyright 2016
  6. * @license Apache-2.0
  7. *
  8. * @namespace
  9. */
  10. const UUID = {
  11. /**
  12. * Generate UUID operation.
  13. *
  14. * @param {string} input
  15. * @param {Object[]} args
  16. * @returns {string}
  17. */
  18. runGenerateV4: function(input, args) {
  19. if (window && typeof(window.crypto) !== "undefined" && typeof(window.crypto.getRandomValues) !== "undefined") {
  20. var buf = new Uint32Array(4),
  21. i = 0;
  22. window.crypto.getRandomValues(buf);
  23. return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
  24. var r = (buf[i >> 3] >> ((i % 8) * 4)) & 0xf,
  25. v = c === "x" ? r : (r & 0x3 | 0x8);
  26. i++;
  27. return v.toString(16);
  28. });
  29. } else {
  30. return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
  31. var r = Math.random() * 16 | 0,
  32. v = c === "x" ? r : (r & 0x3 | 0x8);
  33. return v.toString(16);
  34. });
  35. }
  36. },
  37. };
  38. export default UUID;