```js import * as z from "zod"; /** * A slug derived from a string, using zod's own string-to-slug transform. * Both the API and the web client import this, so the two sides cannot drift. * * Slug.parse("Hello, World!") === "hello-world" */ export const Slug = z.string().slugify(); /** * An article: a title, plus the slug computed from the same text. * * Article.parse({ title: "Hello, World!", slug: "Hello, World!" }) * => { title: "Hello, World!", slug: "hello-world" } */ export const Article = z.object({ title: z.string().min(3), slug: Slug, }); ``` TOOLS_USED: none