Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

[v2] URI template reserved expansions encode existing %HH sequences again

Offen Anfängerfreundlich
#2,920 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

@takagibit18 arbeitet bereits daran.

Seit 02.10.2026.

  • #2923 von @takagibit18 — offen

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
84/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
typescript
Bereich
api

Rechercherichtung

Beginne mit packages/core-internal/src/shared/uriTemplate.ts und führe die bereitgestellte repro.mjs mit Node.js 24 oder höher aus. Aktualisiere UriTemplate.expand() so, dass reservierte und Fragment-Erweiterungen bereits vorhandene gültige %HH-Sequenzen beibehalten und gleichzeitig andere Prozentzeichen codieren; repro sollte die beiden erwarteten Ausgaben erzeugen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

v1 v2
What happened?

UriTemplate.expand() encodes the percent sign in an existing escape during reserved (+) and fragment (#) expansion. A path containing My%20File.txt becomes My%2520File.txt.

What did you expect?

Expected output from the snippet below:

file:///docs/My%20File.txt
docs#Part%20One

RFC 6570 section 3.2.1 allows existing percent-encoded triplets in reserved and fragment values. An ordinary percent sign, or a percent sign without two following hex digits, still needs encoding.

Code to reproduce

Save this as repro.mjs at the SDK repository root and run node repro.mjs with Node.js 24 or later. It imports the source module directly.

import { UriTemplate } from './packages/core-internal/src/shared/uriTemplate.ts';

console.log(new UriTemplate('file://{+path}').expand({ path: '/docs/My%20File.txt' }));
console.log(new UriTemplate('docs{#section}').expand({ section: 'Part%20One' }));

Current output:

file:///docs/My%2520File.txt
docs#Part%2520One
SDK version

main at e16d27729ea2fae144a6d957fd0372d9eb0e6c58 (v2 source checkout). Tested with Node.js 24.12.0.

Area

Other

Vorherrschende Sprache
TypeScript
Sterne
13.7k
Forks
2.3k
Ø Merge
1 T. 2 Std.
Gemergte PRs (30 T.)
60

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus modelcontextprotocol/typescript-sdk

Alle Issues in modelcontextprotocol/typescript-sdk

Ähnliche Issues

Weitere Issues zu TypeScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.