conversão para typescript 7

This commit is contained in:
Luiz Silva 2026-08-03 20:56:42 -03:00
parent a3738c5e3f
commit 32df6cab5f
16 changed files with 1976 additions and 475 deletions

152
dist-front/respostas.js Normal file
View file

@ -0,0 +1,152 @@
/**
* Códigos padrão usados pelo contrato de respostas.
*
* Observação: este enum é parte da API pública do pacote.
*/
export var codigosResposta;
(function (codigosResposta) {
codigosResposta[codigosResposta["sucesso"] = 200] = "sucesso";
codigosResposta[codigosResposta["erroConhecido"] = 400] = "erroConhecido";
codigosResposta[codigosResposta["erroPermissao"] = 401] = "erroPermissao";
codigosResposta[codigosResposta["erroNaoEncontrado"] = 404] = "erroNaoEncontrado";
codigosResposta[codigosResposta["erroDesconhecido"] = 500] = "erroDesconhecido";
codigosResposta[codigosResposta["tempoEsgotado"] = 504] = "tempoEsgotado";
})(codigosResposta || (codigosResposta = {}));
// ─── Helper interno ─────────────────────────────────────────────────
/**
* Aplica o callback de interceptação quando fornecido.
* Retorno com cast seguro: o callback preserva a forma da resposta,
* mas o TypeScript não consegue estreitar o genérico <X> ao subtipo
* concreto (ex.: tipoRespostaSucesso<T>), então o cast é inevitável
* e está isolado neste único ponto.
*/
function aplicarCallback(resposta, callback) {
if (!callback)
return resposta;
return callback(resposta);
}
export const IniciarRespostas = (
/** Callback opcional de interceptação — invocado após a construção de cada resposta */
callback) => {
const valor = (valor, detalhes) => {
const resposta = {
cod: codigosResposta.sucesso,
valor,
mensagem: undefined,
eErro: false,
eCerto: true,
detalhes,
};
return aplicarCallback(resposta, callback);
};
const valorTrue = (detalhes) => {
const resposta = {
cod: codigosResposta.sucesso,
valor: true,
mensagem: undefined,
eErro: false,
eCerto: true,
detalhes,
};
return aplicarCallback(resposta, callback);
};
const erro = (mensagem, detalhes) => {
const resposta = {
cod: codigosResposta.erroConhecido,
valor: undefined,
mensagem,
eErro: true,
eCerto: false,
detalhes,
};
return aplicarCallback(resposta, callback);
};
const erroPermissao = (mensagem, detalhes) => {
const resposta = {
cod: codigosResposta.erroPermissao,
valor: undefined,
mensagem: mensagem || "Sem permissão para esse recurso.",
eErro: true,
eCerto: false,
detalhes,
};
return aplicarCallback(resposta, callback);
};
const naoEncontrado = (mensagem, detalhes) => {
const resposta = {
cod: codigosResposta.erroNaoEncontrado,
valor: undefined,
mensagem: mensagem ||
"Registro não encontrado ou a execução dessa ação depende de um registro existente.",
eErro: true,
eCerto: false,
detalhes,
};
return aplicarCallback(resposta, callback);
};
const erroInterno = (op) => {
const mensagemFim = `${op.mensagem || "Erro interno"}`;
const resposta = {
cod: codigosResposta.erroDesconhecido,
valor: undefined,
mensagem: mensagemFim,
eErro: true,
eCerto: false,
};
return aplicarCallback(resposta, callback);
};
const tempoEsgotado = (mensagem, detalhes) => {
const resposta = {
cod: codigosResposta.tempoEsgotado,
valor: undefined,
mensagem: mensagem || "Tempo de resposta esgotado ao tentar acessar o recurso.",
eErro: true,
eCerto: false,
detalhes,
};
return aplicarCallback(resposta, callback);
};
const erroEspera = tempoEsgotado;
return {
/**
* Gera uma resposta de sucesso
*/
valor,
/**
* Gera uma resposta de sucesso com valor true
*/
valorTrue,
/**
* Gera uma resposta de erro conhecido
*/
erro,
/**
* Gera uma resposta de erro de permissão,será necessário fazer o login novamente
*/
erroPermissao,
/**
* Gera uma resposta de erro desconhecido, geralmente tem origem de um exception
*/
erroInterno,
/**
* Gera uma resposta de erro quando um registro não é encontrado ou sua execução depende de um registro existente
*/
naoEncontrado,
/**
* Gera uma resposta de erro quando o tempo de resposta é esgotado
*/
tempoEsgotado,
/**
* Gera uma resposta de erro quando o tempo de resposta é esgotado
*/
erroEspera,
};
};
/**
* @deprecated Use IniciarRespostas em seu lugar
*/
export const gerarRespostas = IniciarRespostas;
/**
* Instância default (sem handler de interceptação).
*/
export const respostaComuns = IniciarRespostas();