Programação & Web
Cursor / Copilot
Gerador de Cliente TypeScript a partir de Spec OpenAPI
Script que lê uma spec OpenAPI (JSON/YAML) e gera um cliente TypeScript tipado com fetch, generics por endpoint e tratamento de erros.
0cópias
0joinhas
0favoritos
O prompt
Crie um gerador de SDK em TypeScript que lê uma especificação OpenAPI 3.x e produz um cliente tipado.
Parâmetros:
- Caminho da Spec (JSON ou YAML): {{caminho_spec}}
- Nome do Pacote Gerado: {{nome_pacote}}
- Base URL Default: {{base_url}}
Requisitos:
1. Ler a spec de {{caminho_spec}} (suporte a JSON e YAML) usando apenas dependências leves (ex.: yaml + openapi-types como tipos).
2. Para cada operação, gerar um método tipado no cliente: parâmetros path/query/header como argumentos, body tipado pelo schema, retorno Promise<T> com T derivado do response 200.
3. Agrupar métodos por tag da spec em namespaces (ex.: client.users.list(), client.orders.create()).
4. Cliente base com fetch: timeout configurável, headers padrão, serialização JSON e classe de erro ApiError { status, code, message } para respostas não-2xx.
5. Suporte a autenticação Bearer: construtor aceita token opcional injetado no header Authorization.
6. Gerar também um arquivo types.ts com todas as interfaces dos schemas reutilizados (sem duplicatas) e um README.md com exemplo de uso de 3 endpoints reais da spec.
Como usar
- Substitua {{caminho_spec}} (ex.: 'openapi.json'), {{nome_pacote}} (ex.: 'minha-api-client') e {{base_url}} (ex.: 'https://api.exemplo.com').
- Cole no Cursor/Copilot em uma pasta com package.json — o gerador + dependências são criados.
- Rode npm run generate: o SDK sai em src/generated/; importe { client } de lá e chame os métodos tipados.
- Quando a spec mudar, rode o generate novamente — o README gerado mostra 3 exemplos reais para conferir se a tipagem bateu.
Exemplo de saída
Pacote com generator.ts (~180 linhas) + saída em src/generated/: cliente agrupado por tag (client.users.list(), client.orders.create()), métodos com parâmetros path/query/header tipados e retorno Promise<T> derivado do schema 200, ApiError {status, code, message} para não-2xx, token Bearer opcional no construtor, types.ts sem duplicatas e README com 3 exemplos reais da spec.