uuid.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. const hexList: string[] = [];
  2. for (let i = 0; i <= 15; i++) {
  3. hexList[i] = i.toString(16);
  4. }
  5. export function buildUUID(): string {
  6. let uuid = '';
  7. for (let i = 1; i <= 36; i++) {
  8. if (i === 9 || i === 14 || i === 19 || i === 24) {
  9. uuid += '-';
  10. } else if (i === 15) {
  11. uuid += 4;
  12. } else if (i === 20) {
  13. uuid += hexList[(Math.random() * 4) | 8];
  14. } else {
  15. uuid += hexList[(Math.random() * 16) | 0];
  16. }
  17. }
  18. return uuid.replace(/-/g, '');
  19. }
  20. let unique = 0;
  21. export function buildShortUUID(prefix = ''): string {
  22. const time = Date.now();
  23. const random = Math.floor(Math.random() * 1000000000);
  24. unique++;
  25. return prefix + '_' + random + unique + String(time);
  26. }
  27. export function getlowerCaseChars() {
  28. return Array.from({ length: 26 }).map((_, index) => String.fromCharCode(index + 97));
  29. }
  30. export function getUpperCaseChars() {
  31. return Array.from({ length: 26 }).map((_, index) => String.fromCharCode(index + 65));
  32. }
  33. export function randomString(length = 20) {
  34. const upperCaseChars = getUpperCaseChars();
  35. const lowerCaseChars = getlowerCaseChars();
  36. const numberChars = Array.from({ length: 10 }).map((_, index) => index);
  37. const allChars = [...numberChars, ...upperCaseChars, ...lowerCaseChars].sort(
  38. () => 0.5 - Math.random()
  39. );
  40. const rangeFn = () => (Math.random() * 63) | 0;
  41. return Array.from({ length })
  42. .map(() => allChars[rangeFn()])
  43. .join('');
  44. }