This commit is contained in:
Luiz H. R. Silva 2024-06-04 13:24:16 -03:00
parent 0482d3c102
commit 8ec9d76b6f
289 changed files with 5 additions and 23898 deletions

View file

@ -1,4 +1,3 @@
export * from "./respostas"
export * from "./autorizacoes"
export * from "./constantes"
export * from "./consulta"

View file

@ -1,111 +0,0 @@
import { esperar } from "./variaveisComuns"
export const codigosErros = {
400: "Erro de requisição",
403: "Não autenticado",
500: "Erro interno",
504: "Tempo de resposta excedido",
}
export interface tipoRespostaSucesso<T> {
codigo: 200
eErro: false
valor: T
erro: undefined
detalhes?: any[]
}
export interface tipoRespostaErro {
codigo: keyof typeof codigosErros
eErro: true
erro: string
valor: undefined
detalhes?: any[]
}
export type tipoResposta<T> = tipoRespostaSucesso<T> | tipoRespostaErro
export class Resposta<opcoesErroInterno extends any[]> {
funcaoErroInterno: (...opcoes: opcoesErroInterno) => void | Promise<void>
detalhesErroInterno: boolean
constructor(
funcaoErroInterno: (...arg1: opcoesErroInterno) => void | Promise<void>,
opcoes?: {
detalhesErroInterno?: boolean
},
) {
this.funcaoErroInterno = funcaoErroInterno
this.detalhesErroInterno = opcoes?.detalhesErroInterno || false
}
addResultado<T>(resultado: T): tipoResposta<T> {
return {
codigo: 200,
eErro: false,
valor: resultado,
erro: undefined,
}
}
addSucesso(resultado: string): tipoResposta<string> {
return this.addResultado<string>(resultado)
}
addTrue(): tipoResposta<true> {
return this.addResultado<true>(true)
}
addErro(erro: string, codigo?: keyof typeof codigosErros): tipoRespostaErro {
return {
codigo: codigo || 400,
eErro: true,
erro: erro,
valor: undefined,
}
}
addErroEspera(erro?: string): tipoRespostaErro {
return {
codigo: 504,
eErro: true,
erro: erro || codigosErros[504],
valor: undefined,
}
}
addErroInterno(...opcoes: opcoesErroInterno): tipoRespostaErro {
//comunica o suporte sobre o erro
this.funcaoErroInterno(...opcoes)
return {
codigo: 500,
eErro: true,
erro: "Erro interno: Contate o suporte técnico.",
valor: undefined,
detalhes: this.detalhesErroInterno ? opcoes : undefined,
}
}
async addPromise<T>(
promise: () => Promise<T> | T,
limiteEspera?: number,
): Promise<tipoResposta<T>> {
try {
const resultado = await Promise.race([
Promise.resolve(promise())
.then((re) => this.addResultado(re))
.catch((er) => this.addErro(er.message || er)),
...(limiteEspera
? [esperar(limiteEspera).then(() => this.addErroEspera())]
: []),
])
return resultado
} catch (error) {
return this.addErro("Erro na resolução da Promessa.")
}
}
}
export const respostaCM = new Resposta(() => {
//
})

View file

@ -1,113 +0,0 @@
export type tipoRespostaSucesso<T> = {
cod: 200
valor: T
mensagem: undefined
eErro: false
eCerto: true
detalhe?: undefined
}
export type tipoRespostaErro = {
//400 é um erro conhecido,
//500 é um erro desconhecido, geralmente tem origem de um exception
cod: 400 | 403 | 500
valor: undefined
mensagem: string
eErro: true
eCerto: false
detalhes?: string[]
}
export type tipoResposta<T> = tipoRespostaSucesso<T> | tipoRespostaErro
export const gerarRespostas = <T>(
registrarErroInterno: (erro: T) => Partial<tipoRespostaErro>,
) => {
/**
* Gera uma resposta de sucesso
*/
const valor = <T>(valor: T): tipoRespostaSucesso<T> => {
return {
cod: 200,
valor,
mensagem: undefined,
eErro: false,
eCerto: true,
}
}
/**
* Gera uma resposta de sucesso com valor true
*/
const valorTrue = (): tipoRespostaSucesso<true> => {
return {
cod: 200,
valor: true,
mensagem: undefined,
eErro: false,
eCerto: true,
}
}
/**
* Gera uma resposta de erro conhecido
*/
const erro = (mensagem: string, detalhes?: string[]): tipoRespostaErro => {
return {
cod: 400,
valor: undefined,
mensagem,
eErro: true,
eCerto: false,
detalhes,
}
}
/**
* Gera uma resposta de erro de permissão,será necessário fazer o login novamente
*/
const erroPermissao = (
mensagem?: string,
detalhes?: string[],
): tipoRespostaErro => {
return {
cod: 403,
valor: undefined,
mensagem: mensagem || "Sem permissão para esse recurso.",
eErro: true,
eCerto: false,
detalhes,
}
}
/**
* Gera uma resposta de erro desconhecido, geralmente tem origem de um exception
*/
const erroInterno = (parametros: T, mensagem?: string): tipoRespostaErro => {
const resRegistro = registrarErroInterno(parametros)
const mensagemFim = `${mensagem || "Erro interno"}`
return {
cod: 500,
valor: undefined,
mensagem: mensagemFim,
eErro: true,
eCerto: false,
...resRegistro,
}
}
return {
valor,
valorTrue,
erro,
erroPermissao,
erroInterno,
}
}
/**
* Uso de respostas em comuns
*/
export const respostaComuns = gerarRespostas(() => ({}))