chore: strict Subdomain Validation with Detailed Error Messages (#42)
Co-authored-by: userAdityaa <aditya.chaudhary1558@gmail.com> Co-committed-by: userAdityaa <aditya.chaudhary1558@gmail.com>
This commit was merged in pull request #42.
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
const SUBDOMAIN_LABEL_MAX_LEN = 63
|
||||
const RESERVED_SUBDOMAIN_LABELS = new Set(["api", "admin"])
|
||||
|
||||
export function validateSubdomainLabel(subdomain: string): string | null {
|
||||
if (subdomain.length === 0) {
|
||||
return "subdomain is required"
|
||||
}
|
||||
if (subdomain.length > SUBDOMAIN_LABEL_MAX_LEN) {
|
||||
return "subdomain must be 63 characters or fewer"
|
||||
}
|
||||
if (subdomain.startsWith("-") || subdomain.endsWith("-")) {
|
||||
return "subdomain cannot start or end with a hyphen"
|
||||
}
|
||||
if (RESERVED_SUBDOMAIN_LABELS.has(subdomain)) {
|
||||
return "subdomain is reserved"
|
||||
}
|
||||
if (!/^[a-z0-9-]+$/.test(subdomain)) {
|
||||
return "subdomain may only contain lowercase letters, numbers, and hyphens"
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
Reference in New Issue
Block a user