Kitbag ❤️ Valibot

pic

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