UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

27 lines (26 loc) 749 B
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);