import { random } from "es-toolkit/compat" import { uuid as uuids } from "./uuid" import { uuidToShort, uuidFromShort, validateShortUUID } from "./uuidShort" /** * 一个 UID 生成和校验工具 * - UID 是一个短形式的 UUID.v7,使用 base58 编码,长度约为 22 个字符 * @example * uid.new() // "3neAo7bG44mcTkraf2puyx" */ const UID = { /** 生成一个新的 UID * - UID 是一个短形式的 UUID.v7,使用 base58 编码,长度约为 22 个字符\ * - UUID.v7 是一种基于时间排序的有序 ID * * @example * uid.new() // "3neAo7bG44mcTkraf2puyx" */ new: () => { let uuid = uuids.v7() let uuid_min = uuidToShort(uuid) return uuid_min }, /** 生成一个基于 UUID.v4 的无序随机 UID(不保证全局唯一性) */ random: () => { let uuid = uuids.v4() let uuid_min = uuidToShort(uuid) return uuid_min }, /** 校验一个 UID 是否合法 */ validate: (uid: string) => { return validateShortUUID(uid) }, /** UID 还原为常规 UUID */ toUUID: (uid: string) => { return uuidFromShort(uid) }, /** 常规 UUID 转换为 UID */ fromUUID: (uuid: string) => { return uuidToShort(uuid) }, /** UID 转换为 ArrayBuffer */ toArrayBuffer(uid: string) { let uuid = UID.toUUID(uid) return uuids.toArrayBuffer(uuid) }, /** 把 ArrayBuffer 形式的 UID 转换为字符串形式 */ fromArrayBuffer(buffer: ArrayBuffer) { let uuid = uuids.fromArrayBuffer(buffer) return UID.fromUUID(uuid) }, } export { UID }