Там немного документации, как преобразовать ULID в UUID, но не так много, когда вам нужно преобразовать UUID в ULID.
Я смотрю на этот генератор/конвертер UUID/ULID https://www.ulidtools.com/
но я не совсем уверен, как мне воспроизвести преобразование UUID в ULID, источник слишком запутан, чтобы я мог его понять.
Я не уверен, с чего даже начать, безопасно ли это преобразование? будет ли это гарантировать уникальное преобразование?
Внешний API, который я использую, принимает только ULID для дедупликации событий.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Чистый метод Javascript для преобразования:
Преобразование UUID в ULID гарантирует уникальный код. ULID — это уникальные 128-битные идентификаторы, которые генерируются на основе комбинации текущей метки времени.
function convertUUIDtoULID(uuid) {
const uuidBinary = uuid.split("-").map((hex) => parseInt(hex, 16));
return uuidBinary
.slice(0, 8)
.map((byte) => byte.toString(32))
.concat(uuidBinary.slice(8).map((byte) => byte.toString(32)))
.join("");
}
const uuid = "454391df-b950-42ea-a2c0-92d62c215d67";
const ulid = convertUUIDtoULID(uuid);
console.info(ulid);
Вы также можете использовать [https://www.npmjs.com/package/ulid] для преобразования UUID в ULID.
Спасибо, я попробовал пакет npm, но не смог заставить его работать. ULID.ulid({uuid}) генерирует разные ulid каждый раз, когда он вызывается.
Затем вы должны каждый раз передавать другой UUID.
Это не должен быть принятый ответ. Я попытался с 20227cf5-89cf-5215-964b-d65dc7829965, и он выводит G24V7L12EFKGL15IB6MBN3O56B5, что является недопустимым ULID.
Это всего лишь два представления одного и того же битового шаблона. Каждый из них хранит 128 бит информации. Нет вопроса "безопасности". Зачем нужен ULID?