Option to control behaviour of `allOf`?
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 30/100
Línea de trabajo
Empieza rastreando las rutas de generación de allOf y anyOf que producen PullRequestClosedPullRequest y, a continuación, revisa el código repetitivo de extracción de PullRequestEvent descrito en el issue. Compara los tipos generados con el esquema enlazado y define un comportamiento configurable concreto con pruebas que muestren cómo los consumidores acceden a los campos compartidos de pull_request; para darlo por terminado se requiere una API acordada y cobertura de regresión.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Consider the following schema:
https://unpkg.com/@octokit/webhooks-schemas@7.3.1/schema.json
it contains a definition:
"pull_request$closed": {
"$schema": "http://json-schema.org/draft-07/schema",
"type": "object",
"required": ["action", "number", "pull_request", "repository", "sender"],
"properties": {
"action": { "type": "string", "enum": ["closed"] },
"number": {
"type": "integer",
"description": "The pull request number."
},
"pull_request": {
"allOf": [
{ "$ref": "#/definitions/pull-request" },
{
"type": "object",
"required": ["state", "closed_at", "merged"],
"properties": {
"state": {
"type": "string",
"enum": ["closed"],
"description": "State of this Pull Request. Either `open` or `closed`."
},
"closed_at": { "type": "string", "format": "date-time" },
"merged": { "type": "boolean" }
},
"tsAdditionalProperties": false
}
]
},
"repository": { "$ref": "#/definitions/repository" },
"installation": { "$ref": "#/definitions/installation-lite" },
"organization": { "$ref": "#/definitions/organization" },
"sender": { "$ref": "#/definitions/user" }
},
"additionalProperties": false,
"title": "pull_request closed event"
},
allOf inside pull_request would result of generation of type PullRequestClosedPullRequest which is almost the same as normal PullRequest but has one extra field. This creates a problem for consuming those types: let's say you need a field from inside pull_request -- you would have to account for all of the variations of it.
In languages like TS this would be solved by structural subtyping; in rust, while there's nothing like that built-in, perhaps there's a way to adjust behaviour of anyOf to generate some code that would be able to return common parts? e. g. via a generated trait for example. Right now this needs a lot of boilerplate code, for example to extract any pull_request field form PullRequestEvent
- Lenguaje dominante
- Rust
- Estrellas
- 898
- Forks
- 114
- Merge medio
- 4 h 18 min
- 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 oxidecomputer/typify
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
oxidecomputer/typify#1077 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
oxidecomputer/typify#1075 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 50/100
oxidecomputer/typify#1060 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 48/100
oxidecomputer/typify#1059 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 65/100
oxidecomputer/typify#1022 · 1 comentario ·
Todos los issues de oxidecomputer/typify
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
TheLarkInn/aipm#2413 ·
-
documentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
alexgorbatchev/simple-ptt#15 ·
-
tooling
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
todo:ticket
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
taikoxyz/taiko-mono#22168 · 1 comentario ·