import { IActor } from "@/types/actor"; function convertToUsername(value: string | null): string { if (!value) return ""; // https://stackoverflow.com/a/37511463 return value .toLocaleLowerCase() .normalize("NFD") .replace(/[\u0300-\u036f]/g, "") .replace(/\s{2,}/, " ") .replace(/ /g, "_") .replace(/[^a-z0-9_]/g, "") .replace(/_{2,}/, ""); } function autoUpdateUsername( actor: IActor, newDisplayName: string | null ): IActor { const actor2 = { ...actor }; const oldUsername = convertToUsername(actor.name); if (actor.preferredUsername === oldUsername) { actor2.preferredUsername = convertToUsername(newDisplayName); } return actor2; } function validateUsername(actor: IActor): boolean { return actor.preferredUsername === convertToUsername(actor.preferredUsername); } export { autoUpdateUsername, convertToUsername, validateUsername };