admin-vben5/packages/@core/shared/toolkit/src/hash.ts

32 lines
1007 B
TypeScript
Raw Normal View History

2024-05-19 21:20:42 +08:00
/**
* UUID
*
* UUID是一种用于软件构建的标识符ID便
* version 4UUIDUUID是随机生成的
*
* UUID的格式为xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
* x是任意16进制数字y是一个16进制数字[8, b]
*
* @returns {string} UUID
*/
function generateUUID(): string {
let d = Date.now();
if (
typeof performance !== 'undefined' &&
typeof performance.now === 'function'
) {
d += performance.now(); // use high-precision timer if available
}
const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replaceAll(
/[xy]/g,
(c) => {
const r = Math.trunc((d + Math.random() * 16) % 16);
d = Math.floor(d / 16);
return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);
},
);
return uuid;
}
export { generateUUID };