Files
HexaHost-GameCloud/packages/dns/src/slug.ts
smueller b335f6a497
Some checks failed
CI / Node — lint, typecheck, test, build (push) Failing after 9s
CI / Go — node-agent tests (push) Failing after 9s
CI / Go — edge-gateway build (push) Successful in 17s
Phase8
2026-06-26 13:33:03 +02:00

35 lines
906 B
TypeScript

export function buildJoinSlug(serverName: string, serverId: string): string {
const base =
serverName
.toLowerCase()
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '')
.replace(/[^a-z0-9]+/g, '-')
.replace(/^-+|-+$/g, '')
.slice(0, 24) || 'server';
const suffix = serverId.replace(/-/g, '').slice(0, 6);
return `${base}-${suffix}`;
}
export function extractSlugFromHostname(hostname: string, playDomain: string): string | null {
const normalizedHost = hostname.split('\0')[0]?.toLowerCase() ?? '';
const normalizedDomain = playDomain.toLowerCase();
if (normalizedHost === normalizedDomain) {
return null;
}
const suffix = `.${normalizedDomain}`;
if (!normalizedHost.endsWith(suffix)) {
return null;
}
const slug = normalizedHost.slice(0, -suffix.length);
if (!slug || slug.includes('.')) {
return null;
}
return slug;
}