[BUG][typescript-fetch] runtime.ts does not compile with noUncheckedIndexedAccess since 7.26.0 (TS2345/TS2532)
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 80/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- typescript
- Domaine
- backend
Piste de recherche
Commence par modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache, le modèle mentionné dans l’issue, et examine les trois accès indexés aux groupes capturés par regex dans decodeExtValue et parseHeaderParameters. Génère la spec minimale décrite dans l’issue et lance sa vérification TypeScript avec --noUncheckedIndexedAccess. Le travail est terminé lorsque le runtime.ts généré compile avec cette option et conserve le comportement d’analyse décrit.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Bug Report Checklist
- Have you provided a full/minimal spec to reproduce the issue?
- Have you validated the input using an OpenAPI validator?
- Have you tested with the latest master to confirm the issue still exists?
- Have you searched for related issues/PRs?
- What's the actual output vs expected output?
- [Optional] Sponsorship to speed up the bug fix or feature request (example)
Description
Since 7.26.0 the generated runtime.ts no longer compiles in a project that enables the TypeScript compiler option noUncheckedIndexedAccess. The Content-Disposition parsing added in #24957 and #24974 reads regex capture groups by index without a guard, and under this option every indexed access has the type string | undefined.
runtime.ts(536,43): error TS2345: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
Type 'undefined' is not assignable to type 'string'.
runtime.ts(552,22): error TS2532: Object is possibly 'undefined'.
runtime.ts(554,90): error TS2532: Object is possibly 'undefined'.
The three lines are:
return match ? decodeURIComponent(match[1]) : undefined; // decodeExtValue
const name = match[1].toLowerCase(); // parseHeaderParameters
params.set(name, match[2] !== undefined ? match[2].replace(/\\(.)/g, '$1') : match[3].trim()); // parseHeaderParameters
The generated client is compiled as part of the consuming project, so the project's compiler options apply to it. The runtime compiled cleanly under this option up to 7.25.0, so the update breaks the build of such projects.
openapi-generator version
Regression. 7.25.0 compiles. 7.26.0, 7.27.0 and 7.28.0-SNAPSHOT (build 20261111.130840-62) fail.
OpenAPI declaration file content or url
Any spec reproduces it, because the code is in the static runtime.
openapi: 3.0.3
info:
title: runtime strictness
version: 1.0.0
paths:
/ping:
get:
operationId: ping
responses:
'204':
description: No content
Generation Details
java -jar openapi-generator-cli.jar generate -i spec.yaml -g typescript-fetch -o out
npx -p [email protected] tsc --ignoreConfig --noEmit --strict --noUncheckedIndexedAccess \
--target es2020 --module esnext --moduleResolution bundler --lib es2020,dom out/runtime.ts
Steps to reproduce
- Generate with the spec and command above.
- Type-check
out/runtime.tswith thetsccommand above.
Expected: no errors, as with 7.25.0. Actual: the three errors above. Without --noUncheckedIndexedAccess the file compiles.
Related issues/PRs
- #24957 and #24974 added the code (feature request #24956). I found no existing report.
Suggest a fix
Guard the three accesses in typescript-fetch/runtime.mustache. The following compiles with and without the option and keeps the behaviour, because the groups in question always participate in a successful match:
return match?.[1] !== undefined ? decodeURIComponent(match[1]) : undefined;
const name = (match[1] ?? '').toLowerCase();
if (!params.has(name)) {
params.set(name, match[2] !== undefined ? match[2].replace(/\\(.)/g, '$1') : (match[3] ?? '').trim());
}
It may also be worth enabling noUncheckedIndexedAccess in the tsconfig.json of one typescript-fetch sample, so that CI catches this class of error.
- Langage dominant
- Java
- Étoiles
- 26.9k
- Forks
- 7.8k
- Merge moyen
- 2 j 10 h
- PR mergées (30 j)
- 180
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Fournit un Dockerfile ou un fichier Docker Compose
- Propose un 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 OpenAPITools/openapi-generator
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
OpenAPITools/openapi-generator#25640 ·
Les mainteneurs répondent en général sous 1 jour
-
[BUG][JAVA] Deprecated properties only get @Deprecated on the getter (base, feign, native, microprofile)Peut-être pris @Inf1mum l’a pris il y a 2 jours. OuverteIssue: Bug
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
OpenAPITools/openapi-generator#25567 ·
Les mainteneurs répondent en général sous 1 jour
-
[BUG][KOTLIN-SERVER] typeInfoAnnotation.mustache uses As.PROPERTY → discriminator property serialized twicePeut-être pris @Inf1mum l’a pris il y a 9 jours. OuverteIssue: Bug
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
OpenAPITools/openapi-generator#25524 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
[REQ][JAVA][resteasy] Support for Jackson 3 / useJackson3Peut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. OuverteEnhancement: Feature
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
OpenAPITools/openapi-generator#25364 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
OpenAPITools/openapi-generator#25237 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de OpenAPITools/openapi-generator
Issues similaires
-
bug emitter:client:csharp
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
microsoft/typespec#12572 · 1 commentaire · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
GCC 15.2: -Wcast-qual warning - cast discards const qualifier from pointer target type (H5trace.c)Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 73/100
Les mainteneurs répondent en général sous 1 jour
-
[Bug] RemotingHelper.connect swaps the socket send and receive buffer configurationPeut-être pris @amalsaidov l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour
-
needs-area-label
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 2 jours
-
area/ai area/backend component/zeebe kind/task
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour