@velastack/kit
Fontanería de SvelteKit agnóstica del backend, compartida por las vinculaciones de backend de Vela. Nada en este paquete conoce ninguna base de datos concreta — @velastack/pocketbase y sus hermanos se construyen sobre él.
npm install @velastack/kit Match<RouteId>
Convierte un id de ruta de SvelteKit en la forma de las URLs que coinciden con él — los grupos de rutas se eliminan y los segmentos [param] se ensanchan a string. Útil para mantener honestas las URLs de las pruebas:
import type { Match } from '@velastack/kit';
import type { RouteId } from './$types';
const res = await context.request.get('/dashboard' satisfies Match<RouteId>); Los segmentos que pueden no coincidir con nada — [[optional]] y [...rest] — se ensanchan a una unión que incluye la variante en la que el segmento está ausente, así que ambas se cumplen para /[[lang]]/blog:
'/blog' satisfies Match<'/[[lang]]/blog'>;
'/en/blog' satisfies Match<'/[[lang]]/blog'>; El ensanchamiento es deliberadamente laxo — string también abarca /, así que una URL con segmentos adicionales aún puede satisfacer un único [param].
proxy
proxy(url, event) reenvía la petición actual a url y devuelve la respuesta del servidor de destino. Las cabeceras salto a salto se eliminan y se fija accept-encoding: identity para que el cuerpo fluya sin tocar. Las event.request.headers entrantes se copian, nunca se modifican.
protectedRouteRedirect
Devuelve un 302 a loginPath, con el destino original en un parámetro de consulta redirect, cuando una petición no autenticada coincide con uno de los protectedRoutes por prefijo de id de ruta — o null cuando la petición puede continuar. Esto es lo que sustenta el grupo (app) del módulo de autenticación.
protectedRouteRedirect({
routeId: event.route.id,
url: event.url,
protectedRoutes: ['/(app)'],
loginPath: '/login',
authenticated: pb.authStore.isValid,
clearCookies: ['pb_auth']
}); errorPage
errorPage(status, message) renderiza una página de error HTML autónoma con estilo para ambos esquemas de color. message se interpola como HTML de confianza y no se escapa — nunca le pases entrada del usuario.
handleStatic
El hook de servidor completo para un proyecto sin backend. En desarrollo responde con un 404 en una página que un comando vela aún no ha generado, indicando el comando que la crea, y no hace nada en otro caso. No acepta opciones — no hay backend al que apuntar.
// src/hooks.server.ts
import { handleStatic } from '@velastack/kit';
export const handle = handleStatic(); LEGAL_PAGES y AUTH_PAGES asocian esas rutas con el comando que las crea, y generatedPageResponse(pathname, pages) convierte una de ellas en un 404 que lo indica, o devuelve null y deja tu propio 404 en paz. Un proyecto con backend obtiene el mismo comportamiento, más las páginas de autenticación, de handlePocketbase.