sanity
Version:
Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches
36 lines (26 loc) • 888 B
text/typescript
const MAX_DATASET_NAME_LENGTH = 64
export function validateDatasetName(datasetName: string): false | string {
if (!datasetName) {
return 'Dataset name is missing'
}
const name = `${datasetName}`
if (name.toLowerCase() !== name) {
return 'Dataset name must be all lowercase characters'
}
if (name.length < 2) {
return 'Dataset name must be at least two characters long'
}
if (name.length > MAX_DATASET_NAME_LENGTH) {
return `Dataset name must be at most ${MAX_DATASET_NAME_LENGTH} characters`
}
if (!/^[a-z0-9]/.test(name)) {
return 'Dataset name must start with a letter or a number'
}
if (!/^[a-z0-9][-_a-z0-9]+$/.test(name)) {
return 'Dataset name must only contain letters, numbers, dashes and underscores'
}
if (/[-_]$/.test(name)) {
return 'Dataset name must not end with a dash or an underscore'
}
return false
}