Fix object-list filter preflight plan traversal and argument identification
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 52/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- fsharp, graphql
- Área
- api, backend-api-design
Línea de trabajo
Empieza con la comprobación previa de la solicitud de filtro ObjectListFilter y el recorrido del plan ejecutable; después, revisa la discusión del pull request enlazado para obtener contexto. Rastrea los planes de colección diferidos, transmitidos, en vivo y anidados, y verifica el manejo del estado de inclusión y la identificación del argumento nullable ObjectListFilter añadido por el middleware. Se considera terminado cuando los filtros envueltos y anidados se convierten, mientras que se aceptan los argumentos de filtro excluidos o no relacionados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
The object-list filter request preflight does not accurately follow the executable plan and can both miss invalid filters and reject valid requests.
The preflight should traverse deferred, streamed, live, and nested collection plans while only coercing the nullable ObjectListFilter argument added by the object-list filter middleware.
Source: https://github.com/fsprojects/FSharp.Data.GraphQL/pull/612#pullrequestreview-5253463363
Repro steps
-
Execute a query where an object-list filter is inside an
@defer,@stream, or@livewrapper, or inside a nested collection element plan. -
Observe that request-level filter coercion can be bypassed.
-
Execute a query containing an excluded subtree or an unrelated field with an argument such as
filter: String. -
Observe that the preflight can treat that argument as the middleware's object-list filter and reject an otherwise valid request.
Expected behavior
The preflight should:
- traverse
@defer,@stream, and@livewrappers transparently; - traverse collection element plans and nested filtered fields;
- skip nodes excluded by execution directives;
- coerce only fields whose definition contains the middleware-added nullable
ObjectListFilterargument.
Actual behavior
The traversal stops at wrappers and collection element plans, allowing wrapped or nested list filters to bypass request-level coercion. It also ignores inclusion state and identifies arguments by the name filter, which can incorrectly reject excluded subtrees or unrelated filter arguments.
Known workarounds
Avoid wrapping or nesting object-list-filtered fields and avoid unrelated arguments named filter. These are not practical general-purpose workarounds.
Related information
- Operating system: All
- Branch:
dev/ observed while reviewingtask-seq-field-streaming-fixes - .NET Runtime, CoreCLR or Mono Version: .NET 10
- Performance information, links to performance testing scripts: N/A
- Lenguaje dominante
- F#
- Estrellas
- 406
- Forks
- 74
- Merge medio
- 1 d 8 h
- PR fusionados (30 d)
- 14
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de fsprojects/FSharp.Data.GraphQL
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
-
fsprojects/FSharp.Data.GraphQL#573 · 1 reacción · 2 asignados ·
-
FR: Suave package Abierto
fsprojects/FSharp.Data.GraphQL#566 · 1 comentario · 1 reacción · 2 asignados ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
Todos los issues de fsprojects/FSharp.Data.GraphQL
Issues similares
-
Area: Excel support
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
orbeon/orbeon-forms#7893 ·
-
essnmx good first issue
Dificultad 1/5 Menos de una hora Aptitud para principiantes 95/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
yeti-platform/yeti#1380 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
modelcontextprotocol/python-sdk#3566 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
griptape-ai/griptape#2353 ·