Files
EpicNext-Cms/src/lib/furni/classname.ts
T
openhands df38dccbf1
Local Build and Deploy / deploy (push) Failing after 46s
style: format code biome
2026-07-13 21:57:41 +02:00

46 lines
1.3 KiB
TypeScript

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`;
}