shelving
Version:
Toolkit for using data in JavaScript.
27 lines (26 loc) • 749 B
JavaScript
import { requireSlug } from "../util/string.js";
import { OPTIONAL } from "./OptionalSchema.js";
import { StringSchema } from "./StringSchema.js";
/**
* Define a valid slug, e.g. `this-is-a-slug`
*
* - Useful for URL components, usernames, etc.
* - Minimum slug length is 2 characters.
* - Maximum slug length is 64 characters.
*/
export class SlugSchema extends StringSchema {
constructor(options) {
super({
...options,
min: 2,
max: 32,
});
}
sanitize(str) {
return requireSlug(str);
}
}
/** Valid slug, e.g. `this-is-a-slug` */
export const SLUG = new SlugSchema({});
/** Valid slug, e.g. `this-is-a-slug`, or `null` */
export const OPTIONAL_SLUG = OPTIONAL(SLUG);