Valibot — це популярна бібліотека для TypeScript, яка дозволяє створювати схеми з відкритим кодом. Тепер Kitbag Router підтримує використання Valibot для перевірки ваших параметрів маршруту!
import * as v from 'valibot'
import { createRoute, withParams } from "@kitbag/router"
const route = createRoute({
name: "user",
path: withParams("/users/[id]", {
id: v.pipe(v.string(), v.uuid())
})
})
З цим параметром Kitbag Router не тільки перевіряє, що після "user/" йде значення типу рядок, але й перевіряє відповідність схемі Valibot для uuid.
❌ users/123
❌ users/9491d71031854e06bea06a2f275345e0
✅ users/9491d710–3185–4e06-bea0–6a2f275345e0
Підтримувані схеми
✅ boolean
✅ date
✅ number
✅ literal
✅ object
✅ enum
✅ array
✅ tuple
✅ union
✅ variant
✅ record
✅ map
✅ set
❌ intersection
❌ promise
❌ function
Визначення параметрів за допомогою схем Valibot не тільки перевіряє їх відповідність схемі під час виконання, а й надає TypeScript правильні типи при доступі до значень параметрів. Тепер давайте створимо більш складний параметр із Valibot.
import * as v from 'valibot'
import { createRoute, withParams } from "@kitbag/router"
const route = createRoute({
name: "complex",
path: withParams('/[myParam]', {
myParam: v.object({
foo: v.string(),
bar: v.number(),
baz: v.date()
})
}
})
Далі, в компоненті можна викликати useRoute
, щоб отримати поточний маршрут з правильними типами для параметрів, використовуючи схему Valibot.
import { useRoute } from "@kitbag/router"
const route = useRoute("complex")
route.params.myParam
// ^? { foo: string, bar: number, baz: Date }
Без Valibot
Додавання підтримки Valibot — це просто зручна функція для реалізації можливості, яка завжди була доступна. Для таких схем, як UUID, ви могли б легко використати регулярний вираз.
const route = createRoute({
name: "user",
path: withParams("/users/[id]", {
id: /^[0-9A-Fa-f]{8}-.../
})
})
З Custom params можна також легко створити будь-який складний тип.
Експериментально
Підтримка Valibot є експериментальною. Ми не рекомендуємо встановлювати Valibot виключно для перевірки параметрів — це просто зручна функція. Також, інтеграція Valibot може бути переглянута або навіть вилучена в майбутньому, якщо підтримка цієї функції стане надто обтяжливою.
TLDR
Параметри — це надзвичайно потужний інструмент, а Valibot — дуже зручний. Разом вони роблять ваш маршрутизатор більш безпечним з точки зору типів і значно спрощують роботу.
Перекладено з: Kitbag ❤️ Valibot