[BUG][typescript-fetch] runtime.ts does not compile with noUncheckedIndexedAccess since 7.26.0 (TS2345/TS2532)
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 80/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- typescript
- Bereich
- backend
Rechercherichtung
Beginne mit modules/openapi-generator/src/main/resources/typescript-fetch/runtime.mustache, der im Issue genannten Vorlage, und prüfe die drei indizierten Zugriffe auf Regex-Erfassungsgruppen in decodeExtValue und parseHeaderParameters. Erzeuge die im Issue beschriebene minimale Spec und führe ihre TypeScript-Prüfung mit --noUncheckedIndexedAccess aus. Fertig ist die Arbeit, wenn das generierte runtime.ts mit dieser Option kompiliert und das beschriebene Parsing-Verhalten beibehält.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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.
- Vorherrschende Sprache
- Java
- Sterne
- 26.9k
- Forks
- 7.8k
- Ø Merge
- 2 T. 10 Std.
- Gemergte PRs (30 T.)
- 180
Entwicklungsumgebung
Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.
- Enthält ein Dockerfile oder eine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus OpenAPITools/openapi-generator
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
OpenAPITools/openapi-generator#25640 ·
Maintainer antworten meist innerhalb von 1 Tag
-
[BUG][JAVA] Deprecated properties only get @Deprecated on the getter (base, feign, native, microprofile)Evtl. vergeben @Inf1mum hat das vor 2 Tagen übernommen. OffenIssue: Bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
OpenAPITools/openapi-generator#25567 ·
Maintainer antworten meist innerhalb von 1 Tag
-
[BUG][KOTLIN-SERVER] typeInfoAnnotation.mustache uses As.PROPERTY → discriminator property serialized twiceEvtl. vergeben @Inf1mum hat das vor 9 Tagen übernommen. OffenIssue: Bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
OpenAPITools/openapi-generator#25524 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
[REQ][JAVA][resteasy] Support for Jackson 3 / useJackson3Evtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. OffenEnhancement: Feature
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
OpenAPITools/openapi-generator#25364 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
OpenAPITools/openapi-generator#25237 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in OpenAPITools/openapi-generator
Ähnliche Issues
-
bug emitter:client:csharp
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
microsoft/typespec#12572 · 1 Kommentar · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
GCC 15.2: -Wcast-qual warning - cast discards const qualifier from pointer target type (H5trace.c)Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 73/100
Maintainer antworten meist innerhalb von 1 Tag
-
[Bug] RemotingHelper.connect swaps the socket send and receive buffer configurationEvtl. vergeben @amalsaidov hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag
-
needs-area-label
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 2 Tagen
-
area/ai area/backend component/zeebe kind/task
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag