La variante con funciones remotas de vela enable auth. Genera los mismos flujos de inicio de sesión, registro, código de un solo uso, restablecimiento de contraseña, cambio de correo y ajustes, pero cada formulario envía a una función remota de SvelteKit en un form.remote.ts en lugar de a una acción de formulario gestionada con sveltekit-superforms.
Sintaxis
$ vela enable auth --remote--remote necesita vela 0.15.13 o posterior; las versiones anteriores lo ignoran y generan la versión con acciones de formulario. La página del patrón muestra todos los archivos que genera esta variante.
Igual que la versión con acciones de formulario, necesita un backend y shadcn-svelte.
Qué cambia
Cada página de autenticación conserva su +page.svelte y su +page.ts, y el manejador del formulario pasa a un form.remote.ts a su lado:
src/routes/(public)/(auth)/login/form.remote.ts
src/routes/(public)/(auth)/signup/form.remote.ts
src/routes/(public)/(auth)/reset/form.remote.ts
src/routes/(public)/(auth)/otp/[token]/form.remote.ts
src/routes/(public)/(auth)/welcome/form.remote.ts
src/routes/(public)/(auth)/confirm-reset/[token]/form.remote.ts
src/routes/(public)/(auth)/confirm-email-change/[token]/form.remote.ts
src/routes/(app)/settings/form.remote.tsCada uno exporta un form(). Un formulario con campos recibe como primer argumento el esquema Zod de la página, de src/lib/schemas/, así que el manejador solo se ejecuta con datos válidos y tipados. Los manejadores leen locals, cookies y url de getRequestEvent(), y un error de PocketBase, como una contraseña incorrecta, vuelve como un resultado { message } que la página muestra. Un +page.server.ts que se mantiene conserva solo su load; el de la página de inicio de sesión sigue pidiendo a PocketBase los métodos de inicio de sesión habilitados. La página de ajustes exporta cuatro funciones desde un archivo: updateProfileForm, changeEmailForm, changePasswordForm y resendVerificationForm.
Las páginas generadas no usan sveltekit-superforms ni formsnap, y el comando no los añade. Añade sveltekit-flash-message y Zod si el proyecto no los tiene.
Configuración
Las funciones remotas son experimentales en SvelteKit, así que el comando las activa en las opciones de sveltekit() en vite.config.ts, junto con el modo asíncrono de Svelte:
sveltekit({
experimental: { remoteFunctions: true },
compilerOptions: { experimental: { async: true } }
})Si tu configuración no tiene una forma que el comando pueda editar, estas son las líneas que hay que añadir a mano.
Qué se mantiene igual
El grupo protegido (app), el layout y la barra lateral del panel, la cookie pb_auth, OAuth, los códigos de un solo uso, las plantillas de correo, las reglas restringidas de users y la colección oauth_accounts son idénticos a vela enable auth. Las acciones de formulario y las funciones remotas pueden convivir, así que el resto de la aplicación puede usar cualquiera de las dos.