2.0: Standard Schema validation for query/action input
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
- Type d'issue
- Fonctionnalité
- Clarté
- À clarifier
- Activité
- Calme
- Stack technique
- typescript
- Domaine
- api, backend-api-design
Piste de recherche
Commencez par lire le contexte pertinent pour l’implémentation dans #507 ainsi que la discussion liée sur les contraintes de server-function, puis examinez les API query et action existantes en parallèle du contrat Standard Schema. Les questions ouvertes concernant la forme des overloads, les fonctions à plusieurs arguments, les échecs de validation et les appels directs côté serveur doivent être résolues avant que l’implémentation soit terminée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Tracking the actionable part of #507 as a 2.0 improvement.
Problem
"use server" functions type their arguments as written (e.g. email: string), but the input actually crosses a serialization boundary and is attacker-controlled. Typing it honestly as unknown destroys caller-side DX. Users want "typed on the outside, validated on the inside."
Userland wrappers can't solve this: composing a validator around a "use server" function runs into server-function compilation constraints (Server Functions cannot be nested in other blocks or functions - see https://github.com/solidjs/solid-router/issues/507#issuecomment-2694797871), so first-class router support is the only clean path.
Proposal
Accept an optional Standard Schema validator in query and action:
const getUser = query(z.string().email(), async (email) => {
"use server";
// email: string, already validated at the boundary
}, "get-user");
- Caller-side argument types derive from the schema's input type.
- The function body receives the schema's output type, validated server-side before the body runs.
- Standard Schema keeps the router decoupled from any particular validation library (Zod, Valibot, ArkType all implement it), same approach TanStack Router took.
Open design questions:
- Overload shape (
query(schema, fn, name)vs options object) and how it interacts with multi-argument functions. - Validation failure behavior (throw a typed error? 400-style response for actions?).
- Whether validation also runs on direct server-side calls or only across the RPC boundary.
Refs #507
- Langage dominant
- TypeScript
- Étoiles
- 1.3k
- Forks
- 184
- Merge moyen
- 16 h 46 min
- PR mergées (30 j)
- 52
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de solidjs/solid-router
-
Difficulté 4/5 1-2 jours Accessibilité débutants 57/100
solidjs/solid-router#694 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
solidjs/solid-router#691 ·
Les mainteneurs répondent en général sous 1 jour
-
Forward pressed while a Back navigation is still loading is dropped; the URL and the rendered route get out of syncPeut-être pris @sean0407 l’a pris il y a 6 jours. Ouverte
Difficulté 4/5 1-2 jours Accessibilité débutants 54/100
solidjs/solid-router#687 ·
Les mainteneurs répondent en général sous 1 jour
-
<A> costs ~6us of server CPU per instance during SSR (20x a plain <a>), mostly mergeProps/splitPropsPeut-être pris @birkskyum l’a pris il y a 77 jours. Ouverte1.x
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
solidjs/solid-router#583 ·
Les mainteneurs répondent en général sous 1 jour
-
1.x enhancement
Difficulté 3/5 1-2 jours Accessibilité débutants 38/100
solidjs/solid-router#518 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de solidjs/solid-router
Issues similaires
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
juice-shop/juice-shop#3706 ·
Les mainteneurs répondent en général sous 1 jour
-
sbx up from a subfolder silently pushes the whole work treePeut-être pris @pdettori l’a pris aujourd’hui. Ouverteenhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
outline/outline#14348 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
bug needs-triage
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour