Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

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

Ouverte Adaptée aux débutants
#2,920 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@takagibit18 y travaille déjà.

Depuis le 2/10/2026.

  • #2923 par @takagibit18 — ouverte

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
84/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
typescript
Domaine
api

Piste de recherche

Commencez par packages/core-internal/src/shared/uriTemplate.ts et exécutez le fichier repro.mjs fourni avec Node.js 24 ou une version ultérieure. Mettez à jour UriTemplate.expand() afin que les expansions réservées et de fragment conservent les séquences %HH valides existantes tout en encodant les autres signes de pourcentage ; repro devrait produire les deux sorties attendues.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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

Langage dominant
TypeScript
Étoiles
13.7k
Forks
2.3k
Merge moyen
1 j 2 h
PR mergées (30 j)
61

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de modelcontextprotocol/typescript-sdk

Toutes les issues de modelcontextprotocol/typescript-sdk

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.