const CLASSNAME_CHAR_RE = /^[a-z0-9_*\-.]+$/; export function getBaseClassname(classname: string): string { const star = classname.indexOf("*"); return star >= 0 ? classname.substring(0, star) : classname; } export function getSafeClassnameStem(classname: string): string { return classname.replace(/\*/g, "_"); } export function getIconFileName(classname: string): string { return `${getSafeClassnameStem(classname)}_icon.png`; } export function getSwfFileName(classname: string): string { return `${getBaseClassname(classname)}.swf`; } export function getNitroFileName(classname: string): string { return `${getBaseClassname(classname)}.nitro`; } export function normalizeClassname(raw: string): string { return raw.trim().toLowerCase(); } export function isValidClassname(classname: string): boolean { if (!classname) return false; return CLASSNAME_CHAR_RE.test(classname); } export const LOCAL_ICON_URL_PREFIX = "/swf/dcr/hof_furni/icons/"; export function getLocalIconUrl(classname: string): string { return `${LOCAL_ICON_URL_PREFIX}${encodeURIComponent(getIconFileName(classname))}`; } export function getHabboCdnIconUrl( classname: string, revision: number, ): string { const base = getBaseClassname(classname); return `https://images.habbo.com/dcr/hof_furni/${revision}/${encodeURIComponent(base)}_icon.png`; }