2.1 KiB
2.1 KiB
AI / LLM usage notes (p-respostas)
Este pacote fornece um contrato estável de respostas para operações (principalmente APIs), representando:
- sucesso (
cod: 200,eCerto: true,eErro: false,mensagem: undefined,valor: T) - erro conhecido/permissão/não encontrado/timeout/erro interno (
coddiferente de 200,eErro: true,eCerto: false,valor: undefined,mensagem: string)
Imports
TypeScript / ESM
import {
codigosResposta,
gerarRespostas,
respostaComuns,
type tipoResposta,
type tipoRespostaErro,
type tipoRespostaSucesso,
type tipoPrErroInterno,
} from "p-respostas"
CommonJS
const { respostaComuns, gerarRespostas, codigosResposta } = require("p-respostas")
Como interpretar uma tipoResposta<T>
Regras úteis para checagem:
-
Se
res.eCerto === trueentão:res.cod === codigosResposta.sucessores.valorexiste (tipoT)res.mensageméundefined
-
Se
res.eErro === trueentão:res.valoré sempreundefinedres.mensagemé semprestringres.codé um dos códigos de erro
Exemplo:
function handle<T>(res: tipoResposta<T>) {
if (res.eErro) {
// aqui o TS entende tipoRespostaErro
return { ok: false as const, status: res.cod, message: res.mensagem }
}
// aqui o TS entende tipoRespostaSucesso<T>
return { ok: true as const, value: res.valor }
}
Como gerar respostas com log de erro interno
const respostas = gerarRespostas((op) => {
// op.erro: qualquer coisa lançada
// op.local: string (obrigatória)
// op.mensagem: string opcional
// op.__filename: opcional
console.error("Erro interno", op)
// Pode retornar complementos não-destrutivos
return { detalhes: ["id de rastreio: ..."] }
})
const r = respostas.erroInterno({ erro: new Error("boom"), local: "user.service" })
Garantias / restrições
- Este pacote é amplamente importado por outros projetos.
- Os arquivos em
dist-*são gerados automaticamente. - Mudanças aqui devem focar em melhorar o consumo (exports/tipos/docs) sem alterar comportamento.