From 32df6cab5fb2cbbf04e5cb9002161578844d009c Mon Sep 17 00:00:00 2001 From: Luiz Silva Date: Mon, 3 Aug 2026 20:56:42 -0300 Subject: [PATCH] =?UTF-8?q?convers=C3=A3o=20para=20typescript=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ter-resposta-e-licencie-para-p-resposta.js | 241 +-- dist-back/index.js | 39 +- dist-back/respostas.js | 296 ++-- ...ter-resposta-e-licencie-para-p-resposta.js | 150 ++ dist-front/index.d.mts | 136 -- dist-front/index.js | 3 + dist-front/index.mjs | 1 - dist-front/respostas.js | 152 ++ package.json | 19 +- pacote.tgz | Bin 96583 -> 0 bytes pnpm-lock.yaml | 1344 +++++++++++++++++ ...ter-resposta-e-licencie-para-p-resposta.ts | 32 +- src/respostas.ts | 27 +- tsconfig-back.json | 3 +- tsconfig-front.json | 6 +- tsconfig.json | 2 +- 16 files changed, 1976 insertions(+), 475 deletions(-) create mode 100644 dist-front/converter-resposta-e-licencie-para-p-resposta.js delete mode 100644 dist-front/index.d.mts create mode 100644 dist-front/index.js delete mode 100644 dist-front/index.mjs create mode 100644 dist-front/respostas.js delete mode 100644 pacote.tgz create mode 100644 pnpm-lock.yaml diff --git a/dist-back/converter-resposta-e-licencie-para-p-resposta.js b/dist-back/converter-resposta-e-licencie-para-p-resposta.js index f6f462d..1362e22 100644 --- a/dist-back/converter-resposta-e-licencie-para-p-resposta.js +++ b/dist-back/converter-resposta-e-licencie-para-p-resposta.js @@ -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[]` (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`, 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` + * + * **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; diff --git a/dist-back/index.js b/dist-back/index.js index 5042b75..fa9c4c8 100644 --- a/dist-back/index.js +++ b/dist-back/index.js @@ -1,24 +1,19 @@ "use strict"; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -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; +// Re-export da API pública do pacote. +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; -var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -var index_exports = {}; -module.exports = __toCommonJS(index_exports); -__reExport(index_exports, require("./converter-resposta-e-licencie-para-p-resposta"), module.exports); -__reExport(index_exports, require("./respostas"), module.exports); -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - ...require("./converter-resposta-e-licencie-para-p-resposta"), - ...require("./respostas") -}); +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./converter-resposta-e-licencie-para-p-resposta"), exports); +__exportStar(require("./respostas"), exports); diff --git a/dist-back/respostas.js b/dist-back/respostas.js index 69e4cd8..8220c97 100644 --- a/dist-back/respostas.js +++ b/dist-back/respostas.js @@ -1,162 +1,156 @@ "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 respostas_exports = {}; -__export(respostas_exports, { - IniciarRespostas: () => IniciarRespostas, - codigosResposta: () => codigosResposta, - gerarRespostas: () => gerarRespostas, - respostaComuns: () => respostaComuns -}); -module.exports = __toCommonJS(respostas_exports); -var codigosResposta = /* @__PURE__ */ ((codigosResposta2) => { - codigosResposta2[codigosResposta2["sucesso"] = 200] = "sucesso"; - codigosResposta2[codigosResposta2["erroConhecido"] = 400] = "erroConhecido"; - codigosResposta2[codigosResposta2["erroPermissao"] = 401] = "erroPermissao"; - codigosResposta2[codigosResposta2["erroNaoEncontrado"] = 404] = "erroNaoEncontrado"; - codigosResposta2[codigosResposta2["erroDesconhecido"] = 500] = "erroDesconhecido"; - codigosResposta2[codigosResposta2["tempoEsgotado"] = 504] = "tempoEsgotado"; - return codigosResposta2; -})(codigosResposta || {}); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.respostaComuns = exports.gerarRespostas = exports.IniciarRespostas = exports.codigosResposta = void 0; +/** + * Códigos padrão usados pelo contrato de respostas. + * + * Observação: este enum é parte da API pública do pacote. + */ +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 || (exports.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 ao subtipo + * concreto (ex.: tipoRespostaSucesso), então o cast é inevitável + * e está isolado neste único ponto. + */ function aplicarCallback(resposta, callback) { - if (!callback) return resposta; - return callback(resposta); + if (!callback) + return resposta; + return callback(resposta); } -const IniciarRespostas = (callback) => { - const valor = (valor2, detalhes) => { - const resposta = { - cod: 200 /* sucesso */, - valor: valor2, - mensagem: void 0, - eErro: false, - eCerto: true, - detalhes +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); }; - return aplicarCallback(resposta, callback); - }; - const valorTrue = (detalhes) => { - const resposta = { - cod: 200 /* sucesso */, - valor: true, - mensagem: void 0, - eErro: false, - eCerto: true, - detalhes + const valorTrue = (detalhes) => { + const resposta = { + cod: codigosResposta.sucesso, + valor: true, + mensagem: undefined, + eErro: false, + eCerto: true, + detalhes, + }; + return aplicarCallback(resposta, callback); }; - return aplicarCallback(resposta, callback); - }; - const erro = (mensagem, detalhes) => { - const resposta = { - cod: 400 /* erroConhecido */, - valor: void 0, - mensagem, - eErro: true, - eCerto: false, - detalhes + const erro = (mensagem, detalhes) => { + const resposta = { + cod: codigosResposta.erroConhecido, + valor: undefined, + mensagem, + eErro: true, + eCerto: false, + detalhes, + }; + return aplicarCallback(resposta, callback); }; - return aplicarCallback(resposta, callback); - }; - const erroPermissao = (mensagem, detalhes) => { - const resposta = { - cod: 401 /* erroPermissao */, - valor: void 0, - mensagem: mensagem || "Sem permiss\xE3o para esse recurso.", - eErro: true, - eCerto: false, - detalhes + 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); }; - return aplicarCallback(resposta, callback); - }; - const naoEncontrado = (mensagem, detalhes) => { - const resposta = { - cod: 404 /* erroNaoEncontrado */, - valor: void 0, - mensagem: mensagem || "Registro n\xE3o encontrado ou a execu\xE7\xE3o dessa a\xE7\xE3o depende de um registro existente.", - eErro: true, - eCerto: false, - detalhes + 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); }; - return aplicarCallback(resposta, callback); - }; - const erroInterno = (op) => { - const mensagemFim = `${op.mensagem || "Erro interno"}`; - const resposta = { - cod: 500 /* erroDesconhecido */, - valor: void 0, - mensagem: mensagemFim, - eErro: true, - eCerto: false + 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); }; - return aplicarCallback(resposta, callback); - }; - const tempoEsgotado = (mensagem, detalhes) => { - const resposta = { - cod: 504 /* tempoEsgotado */, - valor: void 0, - mensagem: mensagem || "Tempo de resposta esgotado ao tentar acessar o recurso.", - eErro: true, - eCerto: false, - detalhes + 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, }; - 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 - }; }; -const gerarRespostas = IniciarRespostas; -const respostaComuns = IniciarRespostas(); -// Annotate the CommonJS export names for ESM import in node: -0 && (module.exports = { - IniciarRespostas, - codigosResposta, - gerarRespostas, - respostaComuns -}); +exports.IniciarRespostas = IniciarRespostas; +/** + * @deprecated Use IniciarRespostas em seu lugar + */ +exports.gerarRespostas = exports.IniciarRespostas; +/** + * Instância default (sem handler de interceptação). + */ +exports.respostaComuns = (0, exports.IniciarRespostas)(); diff --git a/dist-front/converter-resposta-e-licencie-para-p-resposta.js b/dist-front/converter-resposta-e-licencie-para-p-resposta.js new file mode 100644 index 0000000..81a0620 --- /dev/null +++ b/dist-front/converter-resposta-e-licencie-para-p-resposta.js @@ -0,0 +1,150 @@ +import { codigosResposta } from "./respostas"; +// ─── Tipagem ELicencie ────────────────────────────────────────────── +/** + * Mapa de códigos HTTP de erro usados pelo sistema ELicencie. + * + * Single source of truth para derivar `codigoErroELicencie`. + */ +export const 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: codigosResposta.erroConhecido, + 403: codigosResposta.erroPermissao, + 500: codigosResposta.erroDesconhecido, + 504: codigosResposta.tempoEsgotado, +}; +/** P-Resposta → ELicencie (401 → 403, 404 → 400) */ +const mapaCodigoPRespostaParaELicencie = { + [codigosResposta.erroConhecido]: 400, + [codigosResposta.erroPermissao]: 403, + [codigosResposta.erroDesconhecido]: 500, + [codigosResposta.erroNaoEncontrado]: 400, + [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; +} +// ─── Conversores de detalhes ──────────────────────────────────────── +/** `Record` → `string[]` (passthrough se já for array). */ +function detalhesParaArray(detalhes) { + 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`, 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 : 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` + * + * **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) + * ``` + */ +export const converterRespostaELicencieParaPResposta = (entrada) => { + // ── Entrada já é P-Resposta: enriquecer com campos ELicencie ── + if (eRespostaPadrao(entrada)) { + if (!entrada.eErro) { + return montarRespostaDual({ + cod: 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: codigosResposta.sucesso, + valor: entrada.valor, + mensagem: undefined, + eErro: false, + codigoELicencie: entrada.codigo, + erroELicencie: undefined, + detalhesOriginal: entrada.detalhes, + }); + } + return montarRespostaDual({ + cod: mapaCodigoELicencieParaPResposta[entrada.codigo], + valor: undefined, + mensagem: entrada.erro, + eErro: true, + codigoELicencie: entrada.codigo, + erroELicencie: entrada.erro, + detalhesOriginal: entrada.detalhes, + }); +}; diff --git a/dist-front/index.d.mts b/dist-front/index.d.mts deleted file mode 100644 index b21d47f..0000000 --- a/dist-front/index.d.mts +++ /dev/null @@ -1,136 +0,0 @@ -/** - * Códigos padrão usados pelo contrato de respostas. - * - * Observação: este enum é parte da API pública do pacote. - */ -declare enum codigosResposta { - sucesso = 200, - erroConhecido = 400, - erroPermissao = 401, - erroNaoEncontrado = 404, - erroDesconhecido = 500, - tempoEsgotado = 504 -} -type tipoRespostaSucesso = { - cod: codigosResposta.sucesso; - valor: T; - mensagem: undefined; - eErro: false; - eCerto: true; - detalhes?: string[]; -}; -type tipoRespostaErro = { - cod: codigosResposta.erroConhecido | codigosResposta.erroDesconhecido | codigosResposta.erroPermissao | codigosResposta.erroNaoEncontrado | codigosResposta.tempoEsgotado; - valor: undefined; - mensagem: string; - eErro: true; - eCerto: false; - detalhes?: string[]; -}; -type tipoResposta = tipoRespostaSucesso | tipoRespostaErro; -type tipoPrErroInterno = { - erro: any; - mensagem?: string; - local: string; - __filename?: string; -}; -/** - * Tipo do callback opcional de interceptação de respostas. - * - * Quando fornecido, é invocado após a construção de toda resposta, - * permitindo side-effects (ex.: logging, telemetria) sem alterar o tipo. - */ -type tipoCallbackResposta = (resposta: tipoResposta) => tipoResposta; -/** - * Cria um conjunto de geradores de respostas. - * - * @param registrarErroInterno callback para registrar/normalizar erros internos. - */ -interface InterfaceRespostas { - valor: (valor: T, detalhes?: string[]) => tipoRespostaSucesso; - valorTrue: (detalhes?: string[]) => tipoRespostaSucesso; - erro: (mensagem: string, detalhes?: string[]) => tipoRespostaErro; - erroPermissao: (mensagem?: string | undefined | null, detalhes?: string[]) => tipoRespostaErro; - erroInterno: (op: tipoPrErroInterno) => tipoRespostaErro; - naoEncontrado: (mensagem?: string | undefined | null, detalhes?: string[]) => tipoRespostaErro; - tempoEsgotado: (mensagem?: string | undefined | null, detalhes?: string[]) => tipoRespostaErro; - erroEspera: (mensagem?: string | undefined | null, detalhes?: string[]) => tipoRespostaErro; -} -declare const IniciarRespostas: ( -/** Callback opcional de interceptação — invocado após a construção de cada resposta */ -callback?: tipoCallbackResposta) => InterfaceRespostas; -/** - * @deprecated Use IniciarRespostas em seu lugar - */ -declare const gerarRespostas: (callback?: tipoCallbackResposta) => InterfaceRespostas; -/** - * Instância default (sem handler de interceptação). - */ -declare const respostaComuns: InterfaceRespostas; - -/** - * Mapa de códigos HTTP de erro usados pelo sistema ELicencie. - * - * Single source of truth para derivar `codigoErroELicencie`. - */ -declare const codigosErros: { - readonly 400: "Erro de requisição"; - readonly 403: "Não autenticado"; - readonly 500: "Erro interno"; - readonly 504: "Tempo de resposta excedido"; -}; -/** Códigos HTTP de erro reconhecidos pelo ELicencie. */ -type codigoErroELicencie = keyof typeof codigosErros; -interface tipoRespostaSucessoELicencie { - codigo: 200; - eErro: false; - valor: T; - erro: undefined; - detalhes?: Record; -} -interface tipoRespostaErroELicencie { - codigo: codigoErroELicencie; - eErro: true; - erro: string; - valor: undefined; - detalhes?: Record; -} -type tipoRespostaELicencie = tipoRespostaSucessoELicencie | tipoRespostaErroELicencie; -/** - * Durante a transição de sistema, a entrada pode chegar em qualquer um - * dos dois formatos. O conversor detecta e normaliza para P-Resposta. - */ -type tipoEntradaTransicao = tipoRespostaELicencie | tipoResposta; -/** - * 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` - * - * **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) - * ``` - */ -declare const converterRespostaELicencieParaPResposta: (entrada: tipoEntradaTransicao) => tipoResposta; - -export { IniciarRespostas, type InterfaceRespostas, type codigoErroELicencie, codigosErros, codigosResposta, converterRespostaELicencieParaPResposta, gerarRespostas, respostaComuns, type tipoCallbackResposta, type tipoEntradaTransicao, type tipoPrErroInterno, type tipoResposta, type tipoRespostaELicencie, type tipoRespostaErro, type tipoRespostaErroELicencie, type tipoRespostaSucesso, type tipoRespostaSucessoELicencie }; diff --git a/dist-front/index.js b/dist-front/index.js new file mode 100644 index 0000000..1192c29 --- /dev/null +++ b/dist-front/index.js @@ -0,0 +1,3 @@ +// Re-export da API pública do pacote. +export * from "./converter-resposta-e-licencie-para-p-resposta"; +export * from "./respostas"; diff --git a/dist-front/index.mjs b/dist-front/index.mjs deleted file mode 100644 index 985850d..0000000 --- a/dist-front/index.mjs +++ /dev/null @@ -1 +0,0 @@ -var l=(o=>(o[o.sucesso=200]="sucesso",o[o.erroConhecido=400]="erroConhecido",o[o.erroPermissao=401]="erroPermissao",o[o.erroNaoEncontrado=404]="erroNaoEncontrado",o[o.erroDesconhecido=500]="erroDesconhecido",o[o.tempoEsgotado=504]="tempoEsgotado",o))(l||{});function n(e,t){return t?t(e):e}var u=e=>{let t=(r,s)=>n({cod:200,valor:r,mensagem:void 0,eErro:!1,eCerto:!0,detalhes:s},e),i=r=>n({cod:200,valor:!0,mensagem:void 0,eErro:!1,eCerto:!0,detalhes:r},e),c=(r,s)=>n({cod:400,valor:void 0,mensagem:r,eErro:!0,eCerto:!1,detalhes:s},e),d=(r,s)=>n({cod:401,valor:void 0,mensagem:r||"Sem permiss\xE3o para esse recurso.",eErro:!0,eCerto:!1,detalhes:s},e),E=(r,s)=>n({cod:404,valor:void 0,mensagem:r||"Registro n\xE3o encontrado ou a execu\xE7\xE3o dessa a\xE7\xE3o depende de um registro existente.",eErro:!0,eCerto:!1,detalhes:s},e),o=r=>{let a={cod:500,valor:void 0,mensagem:`${r.mensagem||"Erro interno"}`,eErro:!0,eCerto:!1};return n(a,e)},g=(r,s)=>n({cod:504,valor:void 0,mensagem:r||"Tempo de resposta esgotado ao tentar acessar o recurso.",eErro:!0,eCerto:!1,detalhes:s},e);return{valor:t,valorTrue:i,erro:c,erroPermissao:d,erroInterno:o,naoEncontrado:E,tempoEsgotado:g,erroEspera:g}},L=u,y=u();var x={400:"Erro de requisi\xE7\xE3o",403:"N\xE3o autenticado",500:"Erro interno",504:"Tempo de resposta excedido"},m={400:400,403:401,500:500,504:504},R={400:400,401:403,500:500,404:400,504:504};function f(e){return"cod"in e}function T(e){if(!e)return;if(Array.isArray(e))return e;let t=Object.entries(e);if(t.length!==0)return t.map(([i,c])=>{let d=typeof c=="string"?c:JSON.stringify(c);return`${i}: ${d}`})}function p(e){let t=T(e.detalhesOriginal),i=e.detalhesOriginal&&!Array.isArray(e.detalhesOriginal)?e.detalhesOriginal:void 0;return{cod:e.cod,valor:e.valor,mensagem:e.mensagem,eErro:e.eErro,eCerto:!e.eErro,detalhes:t,codigo:e.codigoELicencie,erro:e.erroELicencie,...i?{detalhes:i}:{}}}var C=e=>f(e)?e.eErro?p({cod:e.cod,valor:void 0,mensagem:e.mensagem,eErro:!0,codigoELicencie:R[e.cod],erroELicencie:e.mensagem,detalhesOriginal:e.detalhes}):p({cod:200,valor:e.valor,mensagem:void 0,eErro:!1,codigoELicencie:200,erroELicencie:void 0,detalhesOriginal:e.detalhes}):e.eErro?p({cod:m[e.codigo],valor:void 0,mensagem:e.erro,eErro:!0,codigoELicencie:e.codigo,erroELicencie:e.erro,detalhesOriginal:e.detalhes}):p({cod:200,valor:e.valor,mensagem:void 0,eErro:!1,codigoELicencie:e.codigo,erroELicencie:void 0,detalhesOriginal:e.detalhes});export{u as IniciarRespostas,x as codigosErros,l as codigosResposta,C as converterRespostaELicencieParaPResposta,L as gerarRespostas,y as respostaComuns}; diff --git a/dist-front/respostas.js b/dist-front/respostas.js new file mode 100644 index 0000000..0ddcf95 --- /dev/null +++ b/dist-front/respostas.js @@ -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 ao subtipo + * concreto (ex.: tipoRespostaSucesso), 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(); diff --git a/package.json b/package.json index c9c5087..040df92 100644 --- a/package.json +++ b/package.json @@ -1,26 +1,26 @@ { "name": "p-respostas", - "version": "0.69.0", + "version": "0.70.0", "description": "Contrato simples de respostas (sucesso/erro) para APIs e serviços.", "main": "./dist-back/index.js", - "module": "./dist-front/index.mjs", + "module": "./dist-front/index.js", "exports": { ".": { - "types": "./dist-front/index.d.mts", - "import": "./dist-front/index.mjs", + "types": "./src/index.ts", + "import": "./dist-front/index.js", "require": "./dist-back/index.js" } }, - "types": "./dist-front/index.d.mts", + "types": "./src/index.ts", "engines": { "node": ">=20" }, "sideEffects": false, "scripts": { "biome": "npx @biomejs/biome check --write ./src", - "build": "npm --no-git-tag-version version minor && pnpm run biome && tsup --config ./node_modules/p-comuns/tsup/tsup.config.ts && pnpm run pacote", - "nodev": "check-node-version --node '= 22'", - "pacote": "npm pack && npm pack && mv $(npm pack --silent) pacote.tgz" + "build": "npm --no-git-tag-version version minor && pnpm run biome && tsc -p tsconfig-back.json && tsc -p tsconfig-front.json", + "check": "pnpm run biome && npx tsc --noEmit", + "nodev": "check-node-version --node '= 22'" }, "peerDependencies": { "p-comuns": "git+https://git2.idz.one/publico/_comuns.git#bun", @@ -31,8 +31,7 @@ "@types/node": "^22.19.15", "check-node-version": "^4.2.1", "p-comuns": "git+https://git2.idz.one/publico/_comuns.git#bun", - "tsup": "^8.5.1", - "typescript": "^6", + "typescript": "^7", "zod": "4.4.3" }, "keywords": [], diff --git a/pacote.tgz b/pacote.tgz deleted file mode 100644 index 0ca8ea15bf669101d891bbecb55123a0b2c56b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96583 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 C$*(;C diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..e3363f1 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,1344 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@biomejs/biome': + specifier: 2.4.12 + version: 2.4.12 + '@types/node': + specifier: ^22.19.15 + version: 22.20.1 + check-node-version: + specifier: ^4.2.1 + version: 4.2.1 + p-comuns: + specifier: git+https://git2.idz.one/publico/_comuns.git#bun + version: git+https://git2.idz.one/publico/_comuns.git#e9a323f18c9b82bde0e320f6c45f7d55a67f65b4(dayjs@1.11.21)(uuid@11.1.1)(zod@4.4.3) + tsup: + specifier: ^8.5.1 + version: 8.5.1(typescript@7.0.2) + typescript: + specifier: ^7 + version: 7.0.2 + zod: + specifier: 4.4.3 + version: 4.4.3 + +packages: + + '@biomejs/biome@2.4.12': + resolution: {integrity: sha512-Rro7adQl3NLq/zJCIL98eElXKI8eEiBtoeu5TbXF/U3qbjuSc7Jb5rjUbeHHcquDWeSf3HnGP7XI5qGrlRk/pA==} + engines: {node: '>=14.21.3'} + hasBin: true + + '@biomejs/cli-darwin-arm64@2.4.12': + resolution: {integrity: sha512-BnMU4Pc3ciEVteVpZ0BK33MLr7X57F5w1dwDLDn+/iy/yTrA4Q/N2yftidFtsA4vrDh0FMXDpacNV/Tl3fbmng==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [darwin] + + '@biomejs/cli-darwin-x64@2.4.12': + resolution: {integrity: sha512-x9uJ0bI1rJsWICp3VH8w/5PnAVD3A7SqzDpbrfoUQX1QyWrK5jSU4fRLo/wSgGeplCivbxBRKmt5Xq4/nWvq8A==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [darwin] + + '@biomejs/cli-linux-arm64-musl@2.4.12': + resolution: {integrity: sha512-FhfpkAAlKL6kwvcVap0Hgp4AhZmtd3YImg0kK1jd7C/aSoh4SfsB2f++yG1rU0lr8Y5MCFJrcSkmssiL9Xnnig==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-arm64@2.4.12': + resolution: {integrity: sha512-tOwuCuZZtKi1jVzbk/5nXmIsziOB6yqN8c9r9QM0EJYPU6DpQWf11uBOSCfFKKM4H3d9ZoarvlgMfbcuD051Pw==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-x64-musl@2.4.12': + resolution: {integrity: sha512-dwTIgZrGutzhkQCuvHynCkyW6hJxUuyZqKKO0YNfaS2GUoRO+tOvxXZqZB6SkWAOdfZTzwaw8IEdUnIkHKHoew==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-linux-x64@2.4.12': + resolution: {integrity: sha512-8pFeAnLU9QdW9jCIslB/v82bI0lhBmz2ZAKc8pVMFPO0t0wAHsoEkrUQUbMkIorTRIjbqyNZHA3lEXavsPWYSw==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-win32-arm64@2.4.12': + resolution: {integrity: sha512-B0DLnx0vA9ya/3v7XyCaP+/lCpnbWbMOfUFFve+xb5OxyYvdHaS55YsSddr228Y+JAFk58agCuZTsqNiw2a6ig==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [win32] + + '@biomejs/cli-win32-x64@2.4.12': + resolution: {integrity: sha512-yMckRzTyZ83hkk8iDFWswqSdU8tvZxspJKnYNh7JZr/zhZNOlzH13k4ecboU6MurKExCe2HUkH75pGI/O2JwGA==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [win32] + + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==} + engines: {node: ^22.20 || ^24.12 || >=25} + cpu: [x64] + os: [linux] + + '@rollup/rollup-android-arm-eabi@4.62.4': + resolution: {integrity: sha512-RrPokAb7dmbxFoeO3TloqHyOjgye8RkBhSqmp4aJMIex4c9r46ZstPnleDQOq1t46VOVjwIuwNogIqbodV1Vvg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.62.4': + resolution: {integrity: sha512-JKuJc+pnpks2pjy7L/N3v/cAkZxYlnmuZoD840ldbMI5KDbC4iO9NKwPKYdjYFCMAIIlBzYSFHxIJVYzRo2/8A==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.62.4': + resolution: {integrity: sha512-krw5uS2STmvJ02x0uTXHbqQNuz+9eZ1iw+qXk9dmW2gvV4jV7O2hEoOnuhFrpOPiel1mBFtqbxYZZtC46hXLOw==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.62.4': + resolution: {integrity: sha512-wsTxtgApb4PrOsNJIm0FZ1h3WvCC+k9uxLJ4ad75hgoS4NiRes2SoJFlDAyMwiUY8IssDqGcHbXuN0sx1tfF1A==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.62.4': + resolution: {integrity: sha512-GUOnQlyZe3yAXhWOtOMsn5Qkrv5E5mZXa0thbARWi5Ei2szlVXJFQhddZ4HbAzh8q92w5twp+CQvs/eFanz9YQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.62.4': + resolution: {integrity: sha512-/Y7f3QuxjzPKsjA/rfEDa3+0vXqyjmJ50Ln8dPpCmWkKTrUoWHG1cWhTqaAMLob2m2nESWuC7yGrREz019Ztqg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.62.4': + resolution: {integrity: sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.62.4': + resolution: {integrity: sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.62.4': + resolution: {integrity: sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.62.4': + resolution: {integrity: sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.62.4': + resolution: {integrity: sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.62.4': + resolution: {integrity: sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.62.4': + resolution: {integrity: sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.62.4': + resolution: {integrity: sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.62.4': + resolution: {integrity: sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.62.4': + resolution: {integrity: sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.62.4': + resolution: {integrity: sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.62.4': + resolution: {integrity: sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.62.4': + resolution: {integrity: sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.62.4': + resolution: {integrity: sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.62.4': + resolution: {integrity: sha512-s62SQ/vgsRSvMwDkOEfTqfgASF0f26ZNaQuTA6Aok5lrikf89yI2W0gFHvZb2Jpgc6N8JnOKZgCK2iciO3CsxQ==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.62.4': + resolution: {integrity: sha512-J6wGf8TVGbXJq+HH+ttTvrcfNKPbuZecV6KT1B8I18BC5IURUh5kl4Yl5OEP5eFIUoI5BWxCsyYMhFsDx8kekw==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.62.4': + resolution: {integrity: sha512-zmfrQd/0wu6oJs8Vq8KwY/YtsKSsLtKe/HwAP4Wqy8LhWjeT55fHRAkOhYQ12wI3ayS4Tt12d5CDRD7N96SAYQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.62.4': + resolution: {integrity: sha512-qPzHqdj9rfUD+w79dtE07zi/kFwKyCJqplp5K5ygeLTp7jLpAoc16OAH39HSmRC9UpozaecsleI8uAdEj6v2yw==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.62.4': + resolution: {integrity: sha512-zD6NdeWEByGE9QF9vCrlJ5YQB4oq9q91kPZS37Jwj5hOkvR1lTBSpsKhKDw4IJtbQ35LsTS1HD9DZYGKIshU1Q==} + cpu: [x64] + os: [win32] + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/node@22.20.1': + resolution: {integrity: sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==} + + '@typescript/typescript-aix-ppc64@7.0.2': + resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [aix] + + '@typescript/typescript-darwin-arm64@7.0.2': + resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [darwin] + + '@typescript/typescript-darwin-x64@7.0.2': + resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [darwin] + + '@typescript/typescript-freebsd-arm64@7.0.2': + resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [freebsd] + + '@typescript/typescript-freebsd-x64@7.0.2': + resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [freebsd] + + '@typescript/typescript-linux-arm64@7.0.2': + resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [linux] + + '@typescript/typescript-linux-arm@7.0.2': + resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==} + engines: {node: '>=16.20.0'} + cpu: [arm] + os: [linux] + + '@typescript/typescript-linux-loong64@7.0.2': + resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==} + engines: {node: '>=16.20.0'} + cpu: [loong64] + os: [linux] + + '@typescript/typescript-linux-mips64el@7.0.2': + resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==} + engines: {node: '>=16.20.0'} + cpu: [mips64el] + os: [linux] + + '@typescript/typescript-linux-ppc64@7.0.2': + resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [linux] + + '@typescript/typescript-linux-riscv64@7.0.2': + resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==} + engines: {node: '>=16.20.0'} + cpu: [riscv64] + os: [linux] + + '@typescript/typescript-linux-s390x@7.0.2': + resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==} + engines: {node: '>=16.20.0'} + cpu: [s390x] + os: [linux] + + '@typescript/typescript-linux-x64@7.0.2': + resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [linux] + + '@typescript/typescript-netbsd-arm64@7.0.2': + resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [netbsd] + + '@typescript/typescript-netbsd-x64@7.0.2': + resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [netbsd] + + '@typescript/typescript-openbsd-arm64@7.0.2': + resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [openbsd] + + '@typescript/typescript-openbsd-x64@7.0.2': + resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [openbsd] + + '@typescript/typescript-sunos-x64@7.0.2': + resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [sunos] + + '@typescript/typescript-win32-arm64@7.0.2': + resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [win32] + + '@typescript/typescript-win32-x64@7.0.2': + resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [win32] + + acorn@8.18.0: + resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} + engines: {node: '>=0.4.0'} + hasBin: true + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + bundle-require@5.1.0: + resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.18' + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + check-node-version@4.2.1: + resolution: {integrity: sha512-YYmFYHV/X7kSJhuN/QYHUu998n/TRuDe8UenM3+m5NrkiH670lb9ILqHIvBencvJc4SDh+XcbXMR4b+TtubJiw==} + engines: {node: '>=8.3.0'} + hasBin: true + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + + dayjs@1.11.21: + resolution: {integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} + hasBin: true + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fix-dts-default-cjs-exports@1.0.1: + resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + map-values@1.0.1: + resolution: {integrity: sha512-BbShUnr5OartXJe1GeccAWtfro11hhgNJg6G9/UtWKjVGvV5U4C09cg5nk8JUevhXODaXY+hQ3xxMUKSs62ONQ==} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + mlly@1.8.2: + resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-filter@1.0.2: + resolution: {integrity: sha512-NahvP2vZcy1ZiiYah30CEPw0FpDcSkSePJBMpzl5EQgCmISijiGuJm3SPYp7U+Lf2TljyaIw3E5EgkEx/TNEVA==} + + p-comuns@git+https://git2.idz.one/publico/_comuns.git#e9a323f18c9b82bde0e320f6c45f7d55a67f65b4: + resolution: {commit: e9a323f18c9b82bde0e320f6c45f7d55a67f65b4, repo: https://git2.idz.one/publico/_comuns.git, type: git} + version: 0.357.0 + peerDependencies: + dayjs: ^1.11.18 + uuid: ^11.1.0 + zod: 4.4.3 + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.5: + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + engines: {node: '>=12'} + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + rollup@4.62.4: + resolution: {integrity: sha512-RXOqwaPsBGjMNMa4sQjDjHieHEZDFoj/Rdr46l2MU5DfEs16wHJPC2RPTPHWhNl+M3aI472LLqFkFKut4SblOg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + tsup@8.5.1: + resolution: {integrity: sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + + typescript@7.0.2: + resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} + engines: {node: '>=16.20.0'} + hasBin: true + + ufo@1.6.4: + resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + uuid@11.1.1: + resolution: {integrity: sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==} + hasBin: true + + zod@4.4.3: + resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + +snapshots: + + '@biomejs/biome@2.4.12': + optionalDependencies: + '@biomejs/cli-darwin-arm64': 2.4.12 + '@biomejs/cli-darwin-x64': 2.4.12 + '@biomejs/cli-linux-arm64': 2.4.12 + '@biomejs/cli-linux-arm64-musl': 2.4.12 + '@biomejs/cli-linux-x64': 2.4.12 + '@biomejs/cli-linux-x64-musl': 2.4.12 + '@biomejs/cli-win32-arm64': 2.4.12 + '@biomejs/cli-win32-x64': 2.4.12 + + '@biomejs/cli-darwin-arm64@2.4.12': + optional: true + + '@biomejs/cli-darwin-x64@2.4.12': + optional: true + + '@biomejs/cli-linux-arm64-musl@2.4.12': + optional: true + + '@biomejs/cli-linux-arm64@2.4.12': + optional: true + + '@biomejs/cli-linux-x64-musl@2.4.12': + optional: true + + '@biomejs/cli-linux-x64@2.4.12': + optional: true + + '@biomejs/cli-win32-arm64@2.4.12': + optional: true + + '@biomejs/cli-win32-x64@2.4.12': + optional: true + + '@esbuild/aix-ppc64@0.27.7': + optional: true + + '@esbuild/android-arm64@0.27.7': + optional: true + + '@esbuild/android-arm@0.27.7': + optional: true + + '@esbuild/android-x64@0.27.7': + optional: true + + '@esbuild/darwin-arm64@0.27.7': + optional: true + + '@esbuild/darwin-x64@0.27.7': + optional: true + + '@esbuild/freebsd-arm64@0.27.7': + optional: true + + '@esbuild/freebsd-x64@0.27.7': + optional: true + + '@esbuild/linux-arm64@0.27.7': + optional: true + + '@esbuild/linux-arm@0.27.7': + optional: true + + '@esbuild/linux-ia32@0.27.7': + optional: true + + '@esbuild/linux-loong64@0.27.7': + optional: true + + '@esbuild/linux-mips64el@0.27.7': + optional: true + + '@esbuild/linux-ppc64@0.27.7': + optional: true + + '@esbuild/linux-riscv64@0.27.7': + optional: true + + '@esbuild/linux-s390x@0.27.7': + optional: true + + '@esbuild/linux-x64@0.27.7': + optional: true + + '@esbuild/netbsd-arm64@0.27.7': + optional: true + + '@esbuild/netbsd-x64@0.27.7': + optional: true + + '@esbuild/openbsd-arm64@0.27.7': + optional: true + + '@esbuild/openbsd-x64@0.27.7': + optional: true + + '@esbuild/openharmony-arm64@0.27.7': + optional: true + + '@esbuild/sunos-x64@0.27.7': + optional: true + + '@esbuild/win32-arm64@0.27.7': + optional: true + + '@esbuild/win32-ia32@0.27.7': + optional: true + + '@esbuild/win32-x64@0.27.7': + optional: true + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + optional: true + + '@rollup/rollup-android-arm-eabi@4.62.4': + optional: true + + '@rollup/rollup-android-arm64@4.62.4': + optional: true + + '@rollup/rollup-darwin-arm64@4.62.4': + optional: true + + '@rollup/rollup-darwin-x64@4.62.4': + optional: true + + '@rollup/rollup-freebsd-arm64@4.62.4': + optional: true + + '@rollup/rollup-freebsd-x64@4.62.4': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.62.4': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.62.4': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.62.4': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.62.4': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.62.4': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.62.4': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.62.4': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.62.4': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.62.4': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.62.4': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.62.4': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.62.4': + optional: true + + '@rollup/rollup-linux-x64-musl@4.62.4': + optional: true + + '@rollup/rollup-openbsd-x64@4.62.4': + optional: true + + '@rollup/rollup-openharmony-arm64@4.62.4': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.62.4': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.62.4': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.62.4': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.62.4': + optional: true + + '@types/estree@1.0.9': {} + + '@types/node@22.20.1': + dependencies: + undici-types: 6.21.0 + + '@typescript/typescript-aix-ppc64@7.0.2': + optional: true + + '@typescript/typescript-darwin-arm64@7.0.2': + optional: true + + '@typescript/typescript-darwin-x64@7.0.2': + optional: true + + '@typescript/typescript-freebsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-freebsd-x64@7.0.2': + optional: true + + '@typescript/typescript-linux-arm64@7.0.2': + optional: true + + '@typescript/typescript-linux-arm@7.0.2': + optional: true + + '@typescript/typescript-linux-loong64@7.0.2': + optional: true + + '@typescript/typescript-linux-mips64el@7.0.2': + optional: true + + '@typescript/typescript-linux-ppc64@7.0.2': + optional: true + + '@typescript/typescript-linux-riscv64@7.0.2': + optional: true + + '@typescript/typescript-linux-s390x@7.0.2': + optional: true + + '@typescript/typescript-linux-x64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-sunos-x64@7.0.2': + optional: true + + '@typescript/typescript-win32-arm64@7.0.2': + optional: true + + '@typescript/typescript-win32-x64@7.0.2': + optional: true + + acorn@8.18.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + any-promise@1.3.0: {} + + bundle-require@5.1.0(esbuild@0.27.7): + dependencies: + esbuild: 0.27.7 + load-tsconfig: 0.2.5 + + cac@6.7.14: {} + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + check-node-version@4.2.1: + dependencies: + chalk: 3.0.0 + map-values: 1.0.1 + minimist: 1.2.8 + object-filter: 1.0.2 + run-parallel: 1.2.0 + semver: 6.3.1 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + commander@4.1.1: {} + + confbox@0.1.8: {} + + consola@3.4.2: {} + + dayjs@1.11.21: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + esbuild@0.27.7: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 + + fdir@6.5.0(picomatch@4.0.5): + optionalDependencies: + picomatch: 4.0.5 + + fix-dts-default-cjs-exports@1.0.1: + dependencies: + magic-string: 0.30.21 + mlly: 1.8.2 + rollup: 4.62.4 + + fsevents@2.3.3: + optional: true + + has-flag@4.0.0: {} + + joycon@3.1.1: {} + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + load-tsconfig@0.2.5: {} + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + map-values@1.0.1: {} + + minimist@1.2.8: {} + + mlly@1.8.2: + dependencies: + acorn: 8.18.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.4 + + ms@2.1.3: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + object-assign@4.1.1: {} + + object-filter@1.0.2: {} + + p-comuns@git+https://git2.idz.one/publico/_comuns.git#e9a323f18c9b82bde0e320f6c45f7d55a67f65b4(dayjs@1.11.21)(uuid@11.1.1)(zod@4.4.3): + dependencies: + dayjs: 1.11.21 + uuid: 11.1.1 + zod: 4.4.3 + + pathe@2.0.3: {} + + picocolors@1.1.1: {} + + picomatch@4.0.5: {} + + pirates@4.0.7: {} + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.2 + pathe: 2.0.3 + + postcss-load-config@6.0.1: + dependencies: + lilconfig: 3.1.3 + + queue-microtask@1.2.3: {} + + readdirp@4.1.2: {} + + resolve-from@5.0.0: {} + + rollup@4.62.4: + dependencies: + '@types/estree': 1.0.9 + optionalDependencies: + '@napi-rs/lzma-linux-x64-gnu': 1.5.1 + '@rollup/rollup-android-arm-eabi': 4.62.4 + '@rollup/rollup-android-arm64': 4.62.4 + '@rollup/rollup-darwin-arm64': 4.62.4 + '@rollup/rollup-darwin-x64': 4.62.4 + '@rollup/rollup-freebsd-arm64': 4.62.4 + '@rollup/rollup-freebsd-x64': 4.62.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.62.4 + '@rollup/rollup-linux-arm-musleabihf': 4.62.4 + '@rollup/rollup-linux-arm64-gnu': 4.62.4 + '@rollup/rollup-linux-arm64-musl': 4.62.4 + '@rollup/rollup-linux-loong64-gnu': 4.62.4 + '@rollup/rollup-linux-loong64-musl': 4.62.4 + '@rollup/rollup-linux-ppc64-gnu': 4.62.4 + '@rollup/rollup-linux-ppc64-musl': 4.62.4 + '@rollup/rollup-linux-riscv64-gnu': 4.62.4 + '@rollup/rollup-linux-riscv64-musl': 4.62.4 + '@rollup/rollup-linux-s390x-gnu': 4.62.4 + '@rollup/rollup-linux-x64-gnu': 4.62.4 + '@rollup/rollup-linux-x64-musl': 4.62.4 + '@rollup/rollup-openbsd-x64': 4.62.4 + '@rollup/rollup-openharmony-arm64': 4.62.4 + '@rollup/rollup-win32-arm64-msvc': 4.62.4 + '@rollup/rollup-win32-ia32-msvc': 4.62.4 + '@rollup/rollup-win32-x64-gnu': 4.62.4 + '@rollup/rollup-win32-x64-msvc': 4.62.4 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + semver@6.3.1: {} + + source-map@0.7.6: {} + + sucrase@3.35.1: + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + commander: 4.1.1 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + tinyglobby: 0.2.17 + ts-interface-checker: 0.1.13 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + tinyexec@0.3.2: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 + + tree-kill@1.2.2: {} + + ts-interface-checker@0.1.13: {} + + tsup@8.5.1(typescript@7.0.2): + dependencies: + bundle-require: 5.1.0(esbuild@0.27.7) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.3 + esbuild: 0.27.7 + fix-dts-default-cjs-exports: 1.0.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1 + resolve-from: 5.0.0 + rollup: 4.62.4 + source-map: 0.7.6 + sucrase: 3.35.1 + tinyexec: 0.3.2 + tinyglobby: 0.2.17 + tree-kill: 1.2.2 + optionalDependencies: + typescript: 7.0.2 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + + typescript@7.0.2: + optionalDependencies: + '@typescript/typescript-aix-ppc64': 7.0.2 + '@typescript/typescript-darwin-arm64': 7.0.2 + '@typescript/typescript-darwin-x64': 7.0.2 + '@typescript/typescript-freebsd-arm64': 7.0.2 + '@typescript/typescript-freebsd-x64': 7.0.2 + '@typescript/typescript-linux-arm': 7.0.2 + '@typescript/typescript-linux-arm64': 7.0.2 + '@typescript/typescript-linux-loong64': 7.0.2 + '@typescript/typescript-linux-mips64el': 7.0.2 + '@typescript/typescript-linux-ppc64': 7.0.2 + '@typescript/typescript-linux-riscv64': 7.0.2 + '@typescript/typescript-linux-s390x': 7.0.2 + '@typescript/typescript-linux-x64': 7.0.2 + '@typescript/typescript-netbsd-arm64': 7.0.2 + '@typescript/typescript-netbsd-x64': 7.0.2 + '@typescript/typescript-openbsd-arm64': 7.0.2 + '@typescript/typescript-openbsd-x64': 7.0.2 + '@typescript/typescript-sunos-x64': 7.0.2 + '@typescript/typescript-win32-arm64': 7.0.2 + '@typescript/typescript-win32-x64': 7.0.2 + + ufo@1.6.4: {} + + undici-types@6.21.0: {} + + uuid@11.1.1: {} + + zod@4.4.3: {} diff --git a/src/converter-resposta-e-licencie-para-p-resposta.ts b/src/converter-resposta-e-licencie-para-p-resposta.ts index 7fffd02..58bfb9d 100644 --- a/src/converter-resposta-e-licencie-para-p-resposta.ts +++ b/src/converter-resposta-e-licencie-para-p-resposta.ts @@ -1,8 +1,4 @@ -import { - codigosResposta, - type tipoResposta, - type tipoRespostaErro, -} from "./respostas" +import { codigosResposta, type tipoResposta, type tipoRespostaErro } from "./respostas" // ─── Tipagem ELicencie ────────────────────────────────────────────── @@ -37,9 +33,7 @@ export interface tipoRespostaErroELicencie { detalhes?: Record } -export type tipoRespostaELicencie = - | tipoRespostaSucessoELicencie - | tipoRespostaErroELicencie +export type tipoRespostaELicencie = tipoRespostaSucessoELicencie | tipoRespostaErroELicencie // ─── Tipo de entrada (transição) ──────────────────────────────────── @@ -52,10 +46,7 @@ export type tipoEntradaTransicao = tipoRespostaELicencie | tipoResposta // ─── Mapeamento bidirecional de códigos ───────────────────────────── /** ELicencie → P-Resposta (403 → 401) */ -const mapaCodigoELicencieParaPResposta: Record< - codigoErroELicencie, - tipoRespostaErro["cod"] -> = { +const mapaCodigoELicencieParaPResposta: Record = { 400: codigosResposta.erroConhecido, 403: codigosResposta.erroPermissao, 500: codigosResposta.erroDesconhecido, @@ -63,10 +54,7 @@ const mapaCodigoELicencieParaPResposta: Record< } /** P-Resposta → ELicencie (401 → 403, 404 → 400) */ -const mapaCodigoPRespostaParaELicencie: Record< - tipoRespostaErro["cod"], - codigoErroELicencie -> = { +const mapaCodigoPRespostaParaELicencie: Record = { [codigosResposta.erroConhecido]: 400, [codigosResposta.erroPermissao]: 403, [codigosResposta.erroDesconhecido]: 500, @@ -77,18 +65,14 @@ const mapaCodigoPRespostaParaELicencie: Record< // ─── Type guard ───────────────────────────────────────────────────── /** Detecta se a entrada já está no formato P-Resposta (possui campo `cod`). */ -function eRespostaPadrao( - entrada: tipoEntradaTransicao, -): entrada is tipoResposta { +function eRespostaPadrao(entrada: tipoEntradaTransicao): entrada is tipoResposta { return "cod" in entrada } // ─── Conversores de detalhes ──────────────────────────────────────── /** `Record` → `string[]` (passthrough se já for array). */ -function detalhesParaArray( - detalhes?: Record | string[], -): string[] | undefined { +function detalhesParaArray(detalhes?: Record | string[]): string[] | undefined { if (!detalhes) return undefined if (Array.isArray(detalhes)) return detalhes @@ -120,9 +104,7 @@ function montarRespostaDual(op: { }): tipoResposta { const detalhesArray = detalhesParaArray(op.detalhesOriginal) const detalhesRecord = - op.detalhesOriginal && !Array.isArray(op.detalhesOriginal) - ? op.detalhesOriginal - : undefined + op.detalhesOriginal && !Array.isArray(op.detalhesOriginal) ? op.detalhesOriginal : undefined return { // P-Resposta diff --git a/src/respostas.ts b/src/respostas.ts index 8d2104b..cc2d5ab 100644 --- a/src/respostas.ts +++ b/src/respostas.ts @@ -50,9 +50,7 @@ export type tipoPrErroInterno = { * Quando fornecido, é invocado após a construção de toda resposta, * permitindo side-effects (ex.: logging, telemetria) sem alterar o tipo. */ -export type tipoCallbackResposta = ( - resposta: tipoResposta, -) => tipoResposta +export type tipoCallbackResposta = (resposta: tipoResposta) => tipoResposta /** * Cria um conjunto de geradores de respostas. @@ -63,23 +61,11 @@ export interface InterfaceRespostas { valor: (valor: T, detalhes?: string[]) => tipoRespostaSucesso valorTrue: (detalhes?: string[]) => tipoRespostaSucesso erro: (mensagem: string, detalhes?: string[]) => tipoRespostaErro - erroPermissao: ( - mensagem?: string | undefined | null, - detalhes?: string[], - ) => tipoRespostaErro + erroPermissao: (mensagem?: string | undefined | null, detalhes?: string[]) => tipoRespostaErro erroInterno: (op: tipoPrErroInterno) => tipoRespostaErro - naoEncontrado: ( - mensagem?: string | undefined | null, - detalhes?: string[], - ) => tipoRespostaErro - tempoEsgotado: ( - mensagem?: string | undefined | null, - detalhes?: string[], - ) => tipoRespostaErro - erroEspera: ( - mensagem?: string | undefined | null, - detalhes?: string[], - ) => tipoRespostaErro + naoEncontrado: (mensagem?: string | undefined | null, detalhes?: string[]) => tipoRespostaErro + tempoEsgotado: (mensagem?: string | undefined | null, detalhes?: string[]) => tipoRespostaErro + erroEspera: (mensagem?: string | undefined | null, detalhes?: string[]) => tipoRespostaErro } // ─── Helper interno ───────────────────────────────────────────────── @@ -190,8 +176,7 @@ export const IniciarRespostas = ( const resposta: tipoRespostaErro = { cod: codigosResposta.tempoEsgotado, valor: undefined, - mensagem: - mensagem || "Tempo de resposta esgotado ao tentar acessar o recurso.", + mensagem: mensagem || "Tempo de resposta esgotado ao tentar acessar o recurso.", eErro: true, eCerto: false, detalhes, diff --git a/tsconfig-back.json b/tsconfig-back.json index c9cde5d..ccf6329 100644 --- a/tsconfig-back.json +++ b/tsconfig-back.json @@ -1,7 +1,8 @@ { "extends": "./tsconfig", "compilerOptions": { - "outDir": "./dist-require", + "outDir": "./dist-back", "module": "commonjs" } } + diff --git a/tsconfig-front.json b/tsconfig-front.json index ae18c06..d12f7d1 100644 --- a/tsconfig-front.json +++ b/tsconfig-front.json @@ -1,7 +1,9 @@ { "extends": "./tsconfig", "compilerOptions": { - "outDir": "./dist-import", - "module": "ES6" + "outDir": "./dist-front", + "module": "ESNext", + "moduleResolution": "bundler" } } + diff --git a/tsconfig.json b/tsconfig.json index b83149f..a4bc3b8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,7 +13,7 @@ "rootDir": "./src", /* Define a pasta raiz para os arquivos de origem. */ /* Emissão */ - "declaration": true, /* Gera arquivos .d.ts para os arquivos TypeScript. */ + "declaration": false, /* Não gera arquivos .d.ts. */ /* Interoperabilidade de Módulos */ "esModuleInterop": true, /* Habilita a compatibilidade com módulos CommonJS ao importar. */