[v2] URI template reserved expansions encode existing %HH sequences again
Mantenedores costumam responder em até 1 dia
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 84/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- typescript
- Domínio
- api
Direção de pesquisa
Comece por packages/core-internal/src/shared/uriTemplate.ts e execute o repro.mjs fornecido com o Node.js 24 ou posterior. Atualize UriTemplate.expand() para que as expansões reservadas e de fragmento preservem as sequências %HH válidas existentes e ainda codifiquem os outros sinais de porcentagem; repro deve produzir as duas saídas esperadas.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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
- Linguagem predominante
- TypeScript
- Estrelas
- 13.7k
- Forks
- 2.4k
- Merge médio
- 1d 22h
- PRs com merge (30d)
- 18
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de modelcontextprotocol/typescript-sdk
-
[v2] createMcpHandler legacy fallback misses an abort that happens before it subscribesTalvez já em andamento @mariano-aguero assumiu há 6 dias. Abertav2
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
modelcontextprotocol/typescript-sdk#3136 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
[v2] requireBearerAuth: drop error="invalid_token" when no credentials were sent and resource_metadata is set (RFC 6750 §3.1)Talvez já em andamento @Anandumv assumiu há 6 dias. Abertav2
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
modelcontextprotocol/typescript-sdk#3124 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
The `maxToolInputElements` refusal lacks the `Input validation error:` prefix that the schema refusal carriesTalvez já em andamento @barry166 assumiu há 10 dias. Abertav1 v2
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
modelcontextprotocol/typescript-sdk#3111 · 3 comentários ·
Mantenedores costumam responder em até 1 dia
-
server: registeredResource.update and registeredResourceTemplate.update desync title and metadata.title when updating metadata aloneTalvez já em andamento @SameRainbows assumiu há 4 dias. Abertav1 v2
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
modelcontextprotocol/typescript-sdk#3103 · 6 comentários ·
Mantenedores costumam responder em até 1 dia
-
[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)Talvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Abertav1
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
modelcontextprotocol/typescript-sdk#3090 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de modelcontextprotocol/typescript-sdk
Issues semelhantes
-
Add: Upin & Ipin Channel HDAbertacheck:passed streams:add
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
S: triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Mantenedores costumam responder em até 1 dia
-
iot client
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
Open-Locker/Open-Locker#365 ·
Mantenedores costumam responder em até 1 dia
-
bug enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 69/100
inmanta/web-console#7787 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
shoelace-style/webawesome#2979 ·
Mantenedores costumam responder em até 1 dia