`InferProps` keeps `Promise` and `Response` for a `withValidator` loader
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 82/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- typescript
- Domínio
- backend-api-design
Direção de pesquisa
Comece lendo o tipo de retorno de defineHandler.withValidator e como InferProps lê __output. Adicione um teste de tipo para um loader que retorna { book } ou um Response e verifique se InferProps<typeof loader> é resolvido como { book: Book }, em vez de uma união de promise ou response.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
InferProps gives the props of a defineHandler loader, but not of a defineHandler.withValidator one:
export const loader = defineHandler.withValidator({
params: z.object({ id: z.string() }),
})(async (c, { params }) => {
const book = await findBook(params.id);
if (!book) return c.notFound();
return { book };
});
type Props = InferProps<typeof loader>;
// expected: { book: Book }
// actual: Promise<Response | { book: Book }>
defineHandler returns TypedHandler<{}, Exclude<Awaited<R>, Response>>, but withValidator returns TypedHandler<V, R> with the raw R. Routes don't notice, because the generated types wrap the output in Serialize<Awaited<…>>. InferProps reads __output directly, so it breaks.
Returning Exclude<Awaited<R>, Response> from withValidator too fixes it. Fix and a type test: https://github.com/ashunar0/void/commit/07c5352d58f880a0c77b78ce38aa5fb6fc832d5f
Happy to open a PR if that works for you.
- Linguagem predominante
- TypeScript
- Estrelas
- 402
- Forks
- 32
- Merge médio
- 12h 28min
- PRs com merge (30d)
- 77
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
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 voidzero-dev/void
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
voidzero-dev/void#463 ·
Mantenedores costumam responder em até 1 dia
-
Deploy after a secret change fails for Workers over ~750 KB: source read-back capped at 1 MiBAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
voidzero-dev/void#459 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 78/100
voidzero-dev/void#428 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 68/100
voidzero-dev/void#480 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 56/100
voidzero-dev/void#477 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de voidzero-dev/void
Issues semelhantes
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 65/100
521xueweihan/HelloGitHub#4025 ·
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 69/100
Small-tailqwq/dsh-deep-whale#207 ·
Mantenedores costumam responder em até 1 dia
-
The inspector never shows the instances field, so scaling out is unreachableTalvez já em andamento @Mrkewl assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
xevrion/breakscale#96 ·
Mantenedores costumam responder em até 4 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
Flux159/mcp-server-kubernetes#384 ·
-
Object parameters lose their structure when resources is enabledTalvez já em andamento @asts-top assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
Mantenedores costumam responder em até 2 dias