"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.respostaCM = exports.Resposta = exports.codigosErros = void 0; const variaveisComuns_1 = require("./variaveisComuns"); exports.codigosErros = { 400: "Erro de requisição", 403: "Não autenticado", 500: "Erro interno", 504: "Tempo de resposta excedido", }; class Resposta { constructor(funcaoErroInterno, opcoes) { this.funcaoErroInterno = funcaoErroInterno; this.detalhesErroInterno = (opcoes === null || opcoes === void 0 ? void 0 : opcoes.detalhesErroInterno) || false; } addResultado(resultado) { return { codigo: 200, eErro: false, valor: resultado, erro: undefined, }; } addSucesso(resultado) { return this.addResultado(resultado); } addTrue() { return this.addResultado(true); } addErro(erro, codigo) { return { codigo: codigo || 400, eErro: true, erro: erro, valor: undefined, }; } addErroEspera(erro) { return { codigo: 504, eErro: true, erro: erro || exports.codigosErros[504], valor: undefined, }; } addErroInterno(...opcoes) { //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(promise, limiteEspera) { try { const resultado = await Promise.race([ Promise.resolve(promise()) .then((re) => this.addResultado(re)) .catch((er) => this.addErro(er.message || er)), ...(limiteEspera ? [(0, variaveisComuns_1.esperar)(limiteEspera).then(() => this.addErroEspera())] : []), ]); return resultado; } catch (error) { return this.addErro("Erro na resolução da Promessa."); } } } exports.Resposta = Resposta; exports.respostaCM = new Resposta(() => { // });