Files
2026-05-29 17:07:00 +02:00

31 lines
717 B
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
export const RESERVED_SUBDOMAINS = new Set([
'app',
'api',
'www',
'admin',
'auth',
'mail',
'static',
]);
const SUBDOMAIN_RE = /^[a-z0-9-]{3,32}$/;
export function validateSubdomain(input: unknown):
| { ok: true; value: string }
| { ok: false; error: string } {
if (typeof input !== 'string') {
return { ok: false, error: 'subdomain must be a string' };
}
const value = input.trim().toLowerCase();
if (!SUBDOMAIN_RE.test(value)) {
return {
ok: false,
error: 'subdomain must be 332 chars, lowercase az, 09, hyphen',
};
}
if (RESERVED_SUBDOMAINS.has(value)) {
return { ok: false, error: `'${value}' is reserved` };
}
return { ok: true, value };
}