Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Option to control behaviour of `allOf`?

Abierto
#670 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
30/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
rust
Área
compilers

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

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de oxidecomputer/typify

Todos los issues de oxidecomputer/typify

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.