34 lines
1.1 KiB
JavaScript
34 lines
1.1 KiB
JavaScript
import { v4, v5, validate } from "uuid";
|
|
|
|
//#region src/utils/random-id.ts
|
|
function randomId() {
|
|
return "ck-" + v4();
|
|
}
|
|
function randomUUID() {
|
|
return v4();
|
|
}
|
|
/**
|
|
* Recursively converts an object to a serializable form by converting functions to their string representation.
|
|
*/
|
|
function toSerializable(value) {
|
|
if (typeof value === "function") return value.toString();
|
|
if (Array.isArray(value)) return value.map(toSerializable);
|
|
if (value !== null && typeof value === "object") {
|
|
const result = {};
|
|
for (const key of Object.keys(value)) result[key] = toSerializable(value[key]);
|
|
return result;
|
|
}
|
|
return value;
|
|
}
|
|
function dataToUUID(input, namespace) {
|
|
const BASE_NAMESPACE = "e4b01160-ff74-4c6e-9b27-d53cd930fe8e";
|
|
const boundNamespace = namespace ? v5(namespace, BASE_NAMESPACE) : BASE_NAMESPACE;
|
|
return v5(typeof input === "string" ? input : JSON.stringify(toSerializable(input)), boundNamespace);
|
|
}
|
|
function isValidUUID(uuid) {
|
|
return validate(uuid);
|
|
}
|
|
|
|
//#endregion
|
|
export { dataToUUID, isValidUUID, randomId, randomUUID };
|
|
//# sourceMappingURL=random-id.mjs.map
|