hash.ts 1007 B

12345678910111213141516171819202122232425262728293031
  1. /**
  2. * 生成一个UUID(通用唯一标识符)。
  3. *
  4. * UUID是一种用于软件构建的标识符,其目的是能够生成一个唯一的ID,以便在全局范围内标识信息。
  5. * 此函数用于生成一个符合version 4的UUID,这种UUID是随机生成的。
  6. *
  7. * 生成的UUID的格式为:xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
  8. * 其中,x是任意16进制数字,y是一个16进制数字,取值范围为[8, b]。
  9. *
  10. * @returns {string} 生成的UUID。
  11. */
  12. function generateUUID(): string {
  13. let d = Date.now();
  14. if (
  15. typeof performance !== 'undefined' &&
  16. typeof performance.now === 'function'
  17. ) {
  18. d += performance.now(); // use high-precision timer if available
  19. }
  20. const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replaceAll(
  21. /[xy]/g,
  22. (c) => {
  23. const r = Math.trunc((d + Math.random() * 16) % 16);
  24. d = Math.floor(d / 16);
  25. return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);
  26. },
  27. );
  28. return uuid;
  29. }
  30. export { generateUUID };