[v2] URI template reserved expansions encode existing %HH sequences again
Les mainteneurs répondent en général sous 1 jour
É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
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
- Aucun Dockerfile ni fichier Docker Compose
- Aucun 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 modelcontextprotocol/typescript-sdk
-
The `maxToolInputElements` refusal lacks the `Input validation error:` prefix that the schema refusal carriesPeut-être pris @barry166 l’a pris il y a 1 jour. Ouvertev1 v2
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
modelcontextprotocol/typescript-sdk#3111 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
server: registeredResource.update and registeredResourceTemplate.update desync title and metadata.title when updating metadata alonePeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouvertev1 v2
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
modelcontextprotocol/typescript-sdk#3103 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
[v1.x] Protocol.request keeps its abort listener after the request resolved, so a later abort sends notifications/cancelled for an answered request (1.30.0)Peut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouvertev1
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
modelcontextprotocol/typescript-sdk#3090 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
[v2] e2e `protocol:timeout:max-total` is flaky over SSE: fake timers advance before the request reaches the serverPeut-être pris @Singmin l’a pris il y a 10 jours. Ouvertev1 v2
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
modelcontextprotocol/typescript-sdk#3045 ·
Les mainteneurs répondent en général sous 1 jour
-
[v1.x] Backport #2654: `notifications/cancelled` with `requestId: 0` is ignored, so the first server→client request cannot be cancelled (still in 1.32.1)Peut-être pris @CloudCorpRecords l’a pris il y a 11 jours. Ouvertev1
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
modelcontextprotocol/typescript-sdk#3043 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de modelcontextprotocol/typescript-sdk
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
scaleway/ultraviolet#7089 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
tencent-connect/dsh-qqbot#81 ·
Les mainteneurs répondent en général sous 1 jour
-
[Bug]: Pen taps on sidebar rows start a drag and lose their clickPeut-être pris @makhnatkin l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
clangd/vscode-clangd#1009 ·