conversão para typescript 7
This commit is contained in:
parent
a3738c5e3f
commit
32df6cab5f
16 changed files with 1976 additions and 475 deletions
|
|
@ -1,123 +1,154 @@
|
|||
"use strict";
|
||||
var __defProp = Object.defineProperty;
|
||||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||
var __export = (target, all) => {
|
||||
for (var name in all)
|
||||
__defProp(target, name, { get: all[name], enumerable: true });
|
||||
};
|
||||
var __copyProps = (to, from, except, desc) => {
|
||||
if (from && typeof from === "object" || typeof from === "function") {
|
||||
for (let key of __getOwnPropNames(from))
|
||||
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||
}
|
||||
return to;
|
||||
};
|
||||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||
var converter_resposta_e_licencie_para_p_resposta_exports = {};
|
||||
__export(converter_resposta_e_licencie_para_p_resposta_exports, {
|
||||
codigosErros: () => codigosErros,
|
||||
converterRespostaELicencieParaPResposta: () => converterRespostaELicencieParaPResposta
|
||||
});
|
||||
module.exports = __toCommonJS(converter_resposta_e_licencie_para_p_resposta_exports);
|
||||
var import_respostas = require("./respostas");
|
||||
const codigosErros = {
|
||||
400: "Erro de requisi\xE7\xE3o",
|
||||
403: "N\xE3o autenticado",
|
||||
500: "Erro interno",
|
||||
504: "Tempo de resposta excedido"
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.converterRespostaELicencieParaPResposta = exports.codigosErros = void 0;
|
||||
const respostas_1 = require("./respostas");
|
||||
// ─── Tipagem ELicencie ──────────────────────────────────────────────
|
||||
/**
|
||||
* Mapa de códigos HTTP de erro usados pelo sistema ELicencie.
|
||||
*
|
||||
* Single source of truth para derivar `codigoErroELicencie`.
|
||||
*/
|
||||
exports.codigosErros = {
|
||||
400: "Erro de requisição",
|
||||
403: "Não autenticado",
|
||||
500: "Erro interno",
|
||||
504: "Tempo de resposta excedido",
|
||||
};
|
||||
// ─── Mapeamento bidirecional de códigos ─────────────────────────────
|
||||
/** ELicencie → P-Resposta (403 → 401) */
|
||||
const mapaCodigoELicencieParaPResposta = {
|
||||
400: import_respostas.codigosResposta.erroConhecido,
|
||||
403: import_respostas.codigosResposta.erroPermissao,
|
||||
500: import_respostas.codigosResposta.erroDesconhecido,
|
||||
504: import_respostas.codigosResposta.tempoEsgotado
|
||||
400: respostas_1.codigosResposta.erroConhecido,
|
||||
403: respostas_1.codigosResposta.erroPermissao,
|
||||
500: respostas_1.codigosResposta.erroDesconhecido,
|
||||
504: respostas_1.codigosResposta.tempoEsgotado,
|
||||
};
|
||||
/** P-Resposta → ELicencie (401 → 403, 404 → 400) */
|
||||
const mapaCodigoPRespostaParaELicencie = {
|
||||
[import_respostas.codigosResposta.erroConhecido]: 400,
|
||||
[import_respostas.codigosResposta.erroPermissao]: 403,
|
||||
[import_respostas.codigosResposta.erroDesconhecido]: 500,
|
||||
[import_respostas.codigosResposta.erroNaoEncontrado]: 400,
|
||||
[import_respostas.codigosResposta.tempoEsgotado]: 504
|
||||
[respostas_1.codigosResposta.erroConhecido]: 400,
|
||||
[respostas_1.codigosResposta.erroPermissao]: 403,
|
||||
[respostas_1.codigosResposta.erroDesconhecido]: 500,
|
||||
[respostas_1.codigosResposta.erroNaoEncontrado]: 400,
|
||||
[respostas_1.codigosResposta.tempoEsgotado]: 504,
|
||||
};
|
||||
// ─── Type guard ─────────────────────────────────────────────────────
|
||||
/** Detecta se a entrada já está no formato P-Resposta (possui campo `cod`). */
|
||||
function eRespostaPadrao(entrada) {
|
||||
return "cod" in entrada;
|
||||
return "cod" in entrada;
|
||||
}
|
||||
// ─── Conversores de detalhes ────────────────────────────────────────
|
||||
/** `Record<string, any>` → `string[]` (passthrough se já for array). */
|
||||
function detalhesParaArray(detalhes) {
|
||||
if (!detalhes) return void 0;
|
||||
if (Array.isArray(detalhes)) return detalhes;
|
||||
const entries = Object.entries(detalhes);
|
||||
if (entries.length === 0) return void 0;
|
||||
return entries.map(([chave, valor]) => {
|
||||
const valorStr = typeof valor === "string" ? valor : JSON.stringify(valor);
|
||||
return `${chave}: ${valorStr}`;
|
||||
});
|
||||
if (!detalhes)
|
||||
return undefined;
|
||||
if (Array.isArray(detalhes))
|
||||
return detalhes;
|
||||
const entries = Object.entries(detalhes);
|
||||
if (entries.length === 0)
|
||||
return undefined;
|
||||
return entries.map(([chave, valor]) => {
|
||||
const valorStr = typeof valor === "string" ? valor : JSON.stringify(valor);
|
||||
return `${chave}: ${valorStr}`;
|
||||
});
|
||||
}
|
||||
// ─── Builder de resposta dual ───────────────────────────────────────
|
||||
/**
|
||||
* Monta um objeto compatível com **ambos** os formatos em runtime.
|
||||
*
|
||||
* Tipado como `tipoResposta<T>`, mas em runtime também contém
|
||||
* `codigo`, `erro` e `detalhes` (Record) do formato ELicencie.
|
||||
*/
|
||||
function montarRespostaDual(op) {
|
||||
const detalhesArray = detalhesParaArray(op.detalhesOriginal);
|
||||
const detalhesRecord = op.detalhesOriginal && !Array.isArray(op.detalhesOriginal) ? op.detalhesOriginal : void 0;
|
||||
return {
|
||||
// P-Resposta
|
||||
cod: op.cod,
|
||||
valor: op.valor,
|
||||
mensagem: op.mensagem,
|
||||
eErro: op.eErro,
|
||||
eCerto: !op.eErro,
|
||||
detalhes: detalhesArray,
|
||||
// ELicencie (runtime)
|
||||
codigo: op.codigoELicencie,
|
||||
erro: op.erroELicencie,
|
||||
...detalhesRecord ? { detalhes: detalhesRecord } : {}
|
||||
};
|
||||
const detalhesArray = detalhesParaArray(op.detalhesOriginal);
|
||||
const detalhesRecord = op.detalhesOriginal && !Array.isArray(op.detalhesOriginal) ? op.detalhesOriginal : undefined;
|
||||
return {
|
||||
// P-Resposta
|
||||
cod: op.cod,
|
||||
valor: op.valor,
|
||||
mensagem: op.mensagem,
|
||||
eErro: op.eErro,
|
||||
eCerto: !op.eErro,
|
||||
detalhes: detalhesArray,
|
||||
// ELicencie (runtime)
|
||||
codigo: op.codigoELicencie,
|
||||
erro: op.erroELicencie,
|
||||
...(detalhesRecord ? { detalhes: detalhesRecord } : {}),
|
||||
};
|
||||
}
|
||||
// ─── Conversor principal ────────────────────────────────────────────
|
||||
/**
|
||||
* Converte uma resposta para o formato **P-Resposta** (padrão do pacote),
|
||||
* mantendo em runtime os campos de **ambos** os formatos para
|
||||
* compatibilidade durante a transição de sistema.
|
||||
*
|
||||
* **Tipo de retorno:** `tipoResposta<T>`
|
||||
*
|
||||
* **Conteúdo em runtime:** campos P-Resposta + campos ELicencie
|
||||
*
|
||||
* | P-Resposta | ELicencie | Relação |
|
||||
* |-------------|-------------|----------------------|
|
||||
* | `cod` | `codigo` | mapeamento de código |
|
||||
* | `mensagem` | `erro` | mesmo conteúdo |
|
||||
* | `valor` | `valor` | direto |
|
||||
* | `eErro` | `eErro` | direto |
|
||||
* | `eCerto` | — | derivado |
|
||||
* | `detalhes` | `detalhes` | string[] / Record |
|
||||
*
|
||||
* @example
|
||||
* ```ts
|
||||
* const res = converterRespostaELicencieParaPResposta(respostaQualquer)
|
||||
*
|
||||
* // Consumidor P-Resposta
|
||||
* if (res.eCerto) console.log(res.valor)
|
||||
*
|
||||
* // Consumidor ELicencie (lê campo extra em runtime)
|
||||
* const resAny = res as any
|
||||
* if (!resAny.eErro) console.log(resAny.valor)
|
||||
* ```
|
||||
*/
|
||||
const converterRespostaELicencieParaPResposta = (entrada) => {
|
||||
if (eRespostaPadrao(entrada)) {
|
||||
// ── Entrada já é P-Resposta: enriquecer com campos ELicencie ──
|
||||
if (eRespostaPadrao(entrada)) {
|
||||
if (!entrada.eErro) {
|
||||
return montarRespostaDual({
|
||||
cod: respostas_1.codigosResposta.sucesso,
|
||||
valor: entrada.valor,
|
||||
mensagem: undefined,
|
||||
eErro: false,
|
||||
codigoELicencie: 200,
|
||||
erroELicencie: undefined,
|
||||
detalhesOriginal: entrada.detalhes,
|
||||
});
|
||||
}
|
||||
return montarRespostaDual({
|
||||
cod: entrada.cod,
|
||||
valor: undefined,
|
||||
mensagem: entrada.mensagem,
|
||||
eErro: true,
|
||||
codigoELicencie: mapaCodigoPRespostaParaELicencie[entrada.cod],
|
||||
erroELicencie: entrada.mensagem,
|
||||
detalhesOriginal: entrada.detalhes,
|
||||
});
|
||||
}
|
||||
// ── Entrada é ELicencie: construir P-Resposta + preservar campos ──
|
||||
if (!entrada.eErro) {
|
||||
return montarRespostaDual({
|
||||
cod: import_respostas.codigosResposta.sucesso,
|
||||
valor: entrada.valor,
|
||||
mensagem: void 0,
|
||||
eErro: false,
|
||||
codigoELicencie: 200,
|
||||
erroELicencie: void 0,
|
||||
detalhesOriginal: entrada.detalhes
|
||||
});
|
||||
return montarRespostaDual({
|
||||
cod: respostas_1.codigosResposta.sucesso,
|
||||
valor: entrada.valor,
|
||||
mensagem: undefined,
|
||||
eErro: false,
|
||||
codigoELicencie: entrada.codigo,
|
||||
erroELicencie: undefined,
|
||||
detalhesOriginal: entrada.detalhes,
|
||||
});
|
||||
}
|
||||
return montarRespostaDual({
|
||||
cod: entrada.cod,
|
||||
valor: void 0,
|
||||
mensagem: entrada.mensagem,
|
||||
eErro: true,
|
||||
codigoELicencie: mapaCodigoPRespostaParaELicencie[entrada.cod],
|
||||
erroELicencie: entrada.mensagem,
|
||||
detalhesOriginal: entrada.detalhes
|
||||
cod: mapaCodigoELicencieParaPResposta[entrada.codigo],
|
||||
valor: undefined,
|
||||
mensagem: entrada.erro,
|
||||
eErro: true,
|
||||
codigoELicencie: entrada.codigo,
|
||||
erroELicencie: entrada.erro,
|
||||
detalhesOriginal: entrada.detalhes,
|
||||
});
|
||||
}
|
||||
if (!entrada.eErro) {
|
||||
return montarRespostaDual({
|
||||
cod: import_respostas.codigosResposta.sucesso,
|
||||
valor: entrada.valor,
|
||||
mensagem: void 0,
|
||||
eErro: false,
|
||||
codigoELicencie: entrada.codigo,
|
||||
erroELicencie: void 0,
|
||||
detalhesOriginal: entrada.detalhes
|
||||
});
|
||||
}
|
||||
return montarRespostaDual({
|
||||
cod: mapaCodigoELicencieParaPResposta[entrada.codigo],
|
||||
valor: void 0,
|
||||
mensagem: entrada.erro,
|
||||
eErro: true,
|
||||
codigoELicencie: entrada.codigo,
|
||||
erroELicencie: entrada.erro,
|
||||
detalhesOriginal: entrada.detalhes
|
||||
});
|
||||
};
|
||||
// Annotate the CommonJS export names for ESM import in node:
|
||||
0 && (module.exports = {
|
||||
codigosErros,
|
||||
converterRespostaELicencieParaPResposta
|
||||
});
|
||||
exports.converterRespostaELicencieParaPResposta = converterRespostaELicencieParaPResposta;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue