shelving
Version:
Toolkit for using data in JavaScript.
27 lines (26 loc) • 747 B
JavaScript
import { getSlug } from "../util/string.js";
import { NULLABLE } from "./NullableSchema.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: 1,
max: 32,
});
}
sanitize(str) {
return getSlug(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 NULLABLE_SLUG = NULLABLE(SLUG);