Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

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

Abierto Apto para principiantes
#2,920 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@takagibit18 ya está trabajando en esto.

Desde el 2/10/2026.

  • #2923 de @takagibit18 — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
84/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
typescript
Área
api

Línea de trabajo

Comienza por packages/core-internal/src/shared/uriTemplate.ts y ejecuta la repro.mjs proporcionada con Node.js 24 o posterior. Actualiza UriTemplate.expand() para que las expansiones reservadas y de fragmento conserven las secuencias %HH válidas existentes y sigan codificando los demás signos de porcentaje; repro debería producir las dos salidas esperadas.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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

Lenguaje dominante
TypeScript
Estrellas
13.5k
Forks
2.3k
Merge medio
2 d 18 h
PR fusionados (30 d)
55

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de modelcontextprotocol/typescript-sdk

Todos los issues de modelcontextprotocol/typescript-sdk

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.