From 5bfc913d6550e924dc69744181e039ee48c52e04 Mon Sep 17 00:00:00 2001 From: Luiz Silva Date: Wed, 17 Jun 2026 09:33:58 -0300 Subject: [PATCH] criado eLog --- dist-back/eLog.js | 90 +++++++++++++++++++++++++++ dist-back/index.js | 2 + dist-front/index.d.mts | 97 ++++++++++++++++++++++++++++- dist-front/index.mjs | 2 +- package.json | 2 +- pacote.tgz | Bin 42018 -> 46713 bytes src/eLog.ts | 135 +++++++++++++++++++++++++++++++++++++++++ src/index.ts | 1 + 8 files changed, 326 insertions(+), 3 deletions(-) create mode 100644 dist-back/eLog.js create mode 100644 src/eLog.ts diff --git a/dist-back/eLog.js b/dist-back/eLog.js new file mode 100644 index 0000000..f8ba1f3 --- /dev/null +++ b/dist-back/eLog.js @@ -0,0 +1,90 @@ +"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 eLog_exports = {}; +__export(eLog_exports, { + NivelLog: () => NivelLog, + NivelLogDetalhes: () => NivelLogDetalhes, + iniciarELog: () => iniciarELog +}); +module.exports = __toCommonJS(eLog_exports); +var NivelLog = /* @__PURE__ */ ((NivelLog2) => { + NivelLog2["RASTREAMENTO"] = "RASTREAMENTO"; + NivelLog2["DEPURACAO"] = "DEPURACAO"; + NivelLog2["INFORMACAO"] = "INFORMACAO"; + NivelLog2["AVISO"] = "AVISO"; + NivelLog2["ERRO"] = "ERRO"; + NivelLog2["CRITICO"] = "CRITICO"; + return NivelLog2; +})(NivelLog || {}); +const NivelLogDetalhes = { + ["RASTREAMENTO" /* RASTREAMENTO */]: { peso: 1, rotulo: "Rastreamento", emoji: "\u{1F50D}", metodo: "debug" }, + ["DEPURACAO" /* DEPURACAO */]: { peso: 2, rotulo: "Depura\xE7\xE3o", emoji: "\u{1F41B}", metodo: "debug" }, + ["INFORMACAO" /* INFORMACAO */]: { peso: 3, rotulo: "Informa\xE7\xE3o", emoji: "\u2139\uFE0F", metodo: "info" }, + ["AVISO" /* AVISO */]: { peso: 4, rotulo: "Aviso", emoji: "\u26A0\uFE0F", metodo: "warn" }, + ["ERRO" /* ERRO */]: { peso: 5, rotulo: "Erro", emoji: "\u274C", metodo: "error" }, + ["CRITICO" /* CRITICO */]: { peso: 6, rotulo: "Cr\xEDtico", emoji: "\u{1F525}", metodo: "error" } +}; +const iniciarELog = (opcoes) => { + const nivel = opcoes.nivelMinimo ?? "INFORMACAO" /* INFORMACAO */; + const pesoMinimo = NivelLogDetalhes[nivel].peso; + const emitir = (nivelLog, pr) => { + const config = NivelLogDetalhes[nivelLog]; + if (config.peso < pesoMinimo) return; + const entrada = { + timestamp: (/* @__PURE__ */ new Date()).toISOString(), + nivel: nivelLog, + app: opcoes.app, + origem: pr.origem, + mensagem: pr.mensagem, + ...pr.dados !== void 0 ? { dados: pr.dados } : {} + }; + console[config.metodo]( + `${config.emoji} [${config.rotulo}] [${opcoes.app}] [${pr.origem}] ${pr.mensagem}`, + pr.dados !== void 0 ? pr.dados : "" + ); + if (opcoes.arquivamento) { + opcoes.arquivamento(entrada, { app: opcoes.app, nivelMinimo: nivel }); + } + }; + return { + rastreamento: (pr) => emitir("RASTREAMENTO" /* RASTREAMENTO */, pr), + depuracao: (pr) => emitir("DEPURACAO" /* DEPURACAO */, pr), + info: (pr) => emitir("INFORMACAO" /* INFORMACAO */, pr), + aviso: (pr) => emitir("AVISO" /* AVISO */, pr), + erro: (pr) => emitir("ERRO" /* ERRO */, pr), + critico: (pr) => emitir("CRITICO" /* CRITICO */, pr) + }; +}; +const log = iniciarELog({ + app: "testando", + nivelMinimo: "INFORMACAO" /* INFORMACAO */, + arquivamento: (entrada, opcoes) => { + fetch("https://localhost:3334/debug/log", { + method: "POST", + body: JSON.stringify({ ...entrada, _opcoes: opcoes }) + }); + } +}); +log.aviso({ origem: "teste", mensagem: "teste" }); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + NivelLog, + NivelLogDetalhes, + iniciarELog +}); diff --git a/dist-back/index.js b/dist-back/index.js index a6c6ab0..0526ae9 100644 --- a/dist-back/index.js +++ b/dist-back/index.js @@ -22,6 +22,7 @@ __reExport(index_exports, require("./constantes"), module.exports); __reExport(index_exports, require("./consulta"), module.exports); __reExport(index_exports, require("./dayjs26"), module.exports); __reExport(index_exports, require("./ecosistema"), module.exports); +__reExport(index_exports, require("./eLog"), module.exports); __reExport(index_exports, require("./extensoes"), module.exports); __reExport(index_exports, require("./extensoes"), module.exports); __reExport(index_exports, require("./filtroDelta"), module.exports); @@ -48,6 +49,7 @@ __reExport(index_exports, require("./zodCustomizados"), module.exports); ...require("./consulta"), ...require("./dayjs26"), ...require("./ecosistema"), + ...require("./eLog"), ...require("./extensoes"), ...require("./extensoes"), ...require("./filtroDelta"), diff --git a/dist-front/index.d.mts b/dist-front/index.d.mts index d5f0b46..70c0eac 100644 --- a/dist-front/index.d.mts +++ b/dist-front/index.d.mts @@ -204,6 +204,101 @@ declare const defineDayjsBr: ({ dayjs, duration, isSameOrAfter, isSameOrBefore, declare const link_paiol = "https://paiol.idz.one"; +/** Níveis de severidade para o sistema de log estruturado. */ +declare enum NivelLog { + /** O mais baixo nível, ideal para rastreamento detalhado de fluxo e execução. */ + RASTREAMENTO = "RASTREAMENTO", + /** Usado para informações que ajudam a entender o estado do sistema durante a execução. */ + DEPURACAO = "DEPURACAO", + /** Informações gerais e eventos do sistema. */ + INFORMACAO = "INFORMACAO", + /** Eventos inesperados, mas que não impedem o funcionamento do sistema. */ + AVISO = "AVISO", + /** Erros que impactam o funcionamento do sistema, mas que podem ser recuperados. */ + ERRO = "ERRO", + /** O nível mais alto de severidade, indicando falhas que requerem atenção imediata. */ + CRITICO = "CRITICO" +} +type DetalheNivel = { + peso: number; + rotulo: string; + emoji: string; + metodo: "debug" | "info" | "warn" | "error"; +}; +/** Detalhes de cada nível de log — peso para filtragem, emoji e método do console. */ +declare const NivelLogDetalhes: Record; +/** Estrutura de uma entrada de log emitida pelo sistema. */ +type EntradaLog = { + timestamp: string; + nivel: keyof typeof NivelLog; + /** Identificador da aplicação/instância (ex: "front:e-licencie:12345"). */ + app: string; + /** Local no código de onde o log foi emitido (ex: "criarUsuario()"). */ + origem: string; + mensagem: string; + dados?: unknown; +}; +/** Interface pública do logger retornado por `iniciarELog`. */ +type ELogger = { + rastreamento: (pr: { + origem: string; + mensagem: string; + dados?: unknown; + }) => void; + depuracao: (pr: { + origem: string; + mensagem: string; + dados?: unknown; + }) => void; + info: (pr: { + origem: string; + mensagem: string; + dados?: unknown; + }) => void; + aviso: (pr: { + origem: string; + mensagem: string; + dados?: unknown; + }) => void; + erro: (pr: { + origem: string; + mensagem: string; + dados?: unknown; + }) => void; + critico: (pr: { + origem: string; + mensagem: string; + dados?: unknown; + }) => void; +}; +/** Opções de configuração do logger, disponíveis no callback de arquivamento. */ +type OpoesELogger = { + app: string; + nivelMinimo: keyof typeof NivelLog; +}; +/** Tipo do callback de arquivamento de logs. */ +type ArquivamentoLog = (entrada: EntradaLog, opcoes: OpoesELogger) => void; +/** + * Inicializa o sistema de log estruturado. + * + * @param opcoes.app - Identificador da aplicação/instância (ex: `"front:e-licencie:12345"`) + * @param opcoes.nivelMinimo - Nível mínimo para exibição no console (padrão: INFORMACAO) + * @param opcoes.arquivamento - Callback opcional para persistir/enviar as entradas de log + * + * @example + * ```ts + * const log = iniciarELog({ app: "front:e-licencie:12345" }) + * + * log.info({ origem: "criarUsuario()", mensagem: "Usuário criado", dados: { id: "abc-123" } }) + * // → ℹ️ [Informação] [front:e-licencie:12345] [criarUsuario()] Usuário criado + * ``` + */ +declare const iniciarELog: (opcoes: { + app: string; + nivelMinimo?: keyof typeof NivelLog; + arquivamento?: ArquivamentoLog; +}) => ELogger; + type tiposArquivo = "imagem" | "documento" | "vídeo" | "outros"; declare const extensoes: { ext: string; @@ -597,4 +692,4 @@ declare const zNumero: z.ZodPipe, z.ZodNumber>; declare const zNumeroPositivo: z.ZodPipe, z.ZodNumber>; declare const zNumeroInteiro: z.ZodPipe, z.ZodNumber>; -export { Produtos, TipagemRotas, type TipoPayloadAuditoria, aleatorio, cacheM, cacheMFixo, cacheMemoria, camposComuns, criarFiltroDelta, defineDayjsBr, erUuid, esperar, extensoes, iniciarDayjsBr, iniciarFiltroDelta, type interfaceConsulta, link_paiol, localValor, nomeVariavel, objetoPg, operadorFiltroDeltaDetalhes, operadores, paraObjetoRegistroPg, pgObjeto, siglas_unidades_medida, texto_busca, tipoArquivo, type tipoColunaFiltroDelta, type tipoCondicaoFiltroDelta, type tipoCondicaoFiltroDeltaTipado, type tipoFiltro, type tipoFiltroDelta, type tipoFiltroDeltaColunaTipada, type tipoOperadorFiltroDelta, tipoUsuarioResiduos, tiposSituacoesElicencie, tx, umaFuncao, umaVariavel, unidades_medida, uuid, uuidV3, uuidV4, uuid_null, validarUuid, verCacheM, zColunaFiltroDelta, zCondicaoFiltroDelta, zCoordenadas, zDocCnpj, zDocCpf, zDocumento, zFiltro, zFiltroDelta, zNumero, zNumeroInteiro, zNumeroPositivo, zOperadorFiltroDelta, zOperadores }; +export { type ArquivamentoLog, type ELogger, type EntradaLog, NivelLog, NivelLogDetalhes, type OpoesELogger, Produtos, TipagemRotas, type TipoPayloadAuditoria, aleatorio, cacheM, cacheMFixo, cacheMemoria, camposComuns, criarFiltroDelta, defineDayjsBr, erUuid, esperar, extensoes, iniciarDayjsBr, iniciarELog, iniciarFiltroDelta, type interfaceConsulta, link_paiol, localValor, nomeVariavel, objetoPg, operadorFiltroDeltaDetalhes, operadores, paraObjetoRegistroPg, pgObjeto, siglas_unidades_medida, texto_busca, tipoArquivo, type tipoColunaFiltroDelta, type tipoCondicaoFiltroDelta, type tipoCondicaoFiltroDeltaTipado, type tipoFiltro, type tipoFiltroDelta, type tipoFiltroDeltaColunaTipada, type tipoOperadorFiltroDelta, tipoUsuarioResiduos, tiposSituacoesElicencie, tx, umaFuncao, umaVariavel, unidades_medida, uuid, uuidV3, uuidV4, uuid_null, validarUuid, verCacheM, zColunaFiltroDelta, zCondicaoFiltroDelta, zCoordenadas, zDocCnpj, zDocCpf, zDocumento, zFiltro, zFiltroDelta, zNumero, zNumeroInteiro, zNumeroPositivo, zOperadorFiltroDelta, zOperadores }; diff --git a/dist-front/index.mjs b/dist-front/index.mjs index ef97ac5..a40362b 100644 --- a/dist-front/index.mjs +++ b/dist-front/index.mjs @@ -1 +1 @@ -var g="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),H=e=>`eli-${Array.from({length:e||8}).map(()=>g[(999*Math.random()|0)%g.length]).join("")}`;var f={};globalThis.cacheMemoria_cache=f;var x=(e,o,a)=>{let n=typeof e=="string"?e:typeof e=="number"?String(e):encodeURIComponent(JSON.stringify(e)),t=a&&new Date().getTime()+a*1e3;o!==void 0&&(f[n]={valor:o,validade:t});let i=f[n];if(!(i?.validade&&i.validadef,E=x,ee=e=>o=>x(e,o);var re="00000000-0000-0000-0000-000000000000",h=(d=>(d.codigo="codigo",d.excluido="excluido",d.data_hora_criacao="data_hora_criacao",d.data_hora_atualizacao="data_hora_atualizacao",d.codigo_usuario_criacao="codigo_usuario_criacao",d.codigo_usuario_atualizacao="codigo_usuario_atualizacao",d.versao="versao",d))(h||{}),z=(o=>(o.token="token",o))(z||{}),O=(a=>(a.Usuario="usuario",a.Fornecedor="fornecedor",a))(O||{});import s from"zod";var T=(n=>(n["="]="=",n["!="]="!=",n[">"]=">",n[">="]=">=",n["<"]="<",n["<="]="<=",n.like="like",n.in="in",n.isNull="isNull",n))(T||{}),w=s.enum(["=","!=",">",">=","<","<=","like","in","isNull"]),ne=s.object({coluna:s.string(),valor:s.any(),operador:w,ou:s.boolean().optional()});var D=({dayjs:e,duration:o,isSameOrAfter:a,isSameOrBefore:n,minMax:t,relativeTime:i,timezone:m,utc:d,weekOfYear:b})=>(e.extend(d),e.extend(m),e.extend(b),e.extend(n),e.extend(a),e.extend(t),e.extend(i),e.extend(o),e.locale("pt-br"),e),de=D;var le="https://paiol.idz.one";var j=[{ext:"gif",tipo:"imagem",mime:"image/gif"},{ext:"jpg",tipo:"imagem",mime:"image/jpeg"},{ext:"jpeg",tipo:"imagem",mime:"image/jpeg"},{ext:"png",tipo:"imagem",mime:"image/png"},{ext:"bmp",tipo:"imagem",mime:"image/bmp"},{ext:"webp",tipo:"imagem",mime:"image/webp"},{ext:"tiff",tipo:"imagem",mime:"image/tiff"},{ext:"svg",tipo:"imagem",mime:"image/svg+xml"},{ext:"ico",tipo:"imagem",mime:"image/x-icon"},{ext:"pdf",tipo:"documento",mime:"application/pdf"},{ext:"doc",tipo:"documento",mime:"application/msword"},{ext:"docx",tipo:"documento",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"},{ext:"xls",tipo:"documento",mime:"application/vnd.ms-excel"},{ext:"xlsx",tipo:"documento",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},{ext:"ppt",tipo:"documento",mime:"application/vnd.ms-powerpoint"},{ext:"pptx",tipo:"documento",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"},{ext:"txt",tipo:"documento",mime:"text/plain"},{ext:"odt",tipo:"documento",mime:"application/vnd.oasis.opendocument.text"},{ext:"ods",tipo:"documento",mime:"application/vnd.oasis.opendocument.spreadsheet"},{ext:"rtf",tipo:"documento",mime:"application/rtf"},{ext:"csv",tipo:"documento",mime:"text/csv"},{ext:"mp4",tipo:"v\xEDdeo",mime:"video/mp4"},{ext:"avi",tipo:"v\xEDdeo",mime:"video/x-msvideo"},{ext:"mkv",tipo:"v\xEDdeo",mime:"video/x-matroska"},{ext:"mov",tipo:"v\xEDdeo",mime:"video/quicktime"},{ext:"wmv",tipo:"v\xEDdeo",mime:"video/x-ms-wmv"},{ext:"flv",tipo:"v\xEDdeo",mime:"video/x-flv"},{ext:"webm",tipo:"v\xEDdeo",mime:"video/webm"},{ext:"3gp",tipo:"v\xEDdeo",mime:"video/3gpp"},{ext:"mpeg",tipo:"v\xEDdeo",mime:"video/mpeg"}],fe=e=>{let o=String(e||"").toLocaleLowerCase().split(".").pop();return j.find(n=>n.ext===o)?.tipo||"outros"};import l from"zod";var F=l.enum([">","<",">=","<=","=","!=","in","like","\u2229"]),xe={">":{rotulo:"Maior que",descricao:"O valor de A deve ser maior que o valor de B"},"<":{rotulo:"Menor que",descricao:"O valor de A deve ser menor que o valor de B"},">=":{rotulo:"Maior ou igual a",descricao:"O valor de A deve ser maior ou igual ao valor de B"},"<=":{rotulo:"Menor ou igual a",descricao:"O valor de A deve ser menor ou igual ao valor de B"},"=":{rotulo:"Igual a",descricao:"O valor de A deve ser igual ao valor de B"},"!=":{rotulo:"Diferente de",descricao:"O valor de A deve ser diferente do valor de B"},in:{rotulo:"Est\xE1 em",descricao:"O valor de A deve estar presente na cole\xE7\xE3o ou lista definida em B"},like:{rotulo:"Cont\xE9m",descricao:"O valor de A deve conter o texto informado em B"},"\u2229":{rotulo:"Interse\xE7\xE3o",descricao:"A e B devem possuir pelo menos um elemento em comum"}},C=/^\{[\w:]+\}$/,N=/^\w+(\.\w+)*$/,A=l.string().regex(N,"Coluna inv\xE1lida").describe("nome da coluna ou caminho aninhado do jsonb"),k=l.object({id:l.string().describe("id da condi\xE7\xE3o do filtro").regex(C,"O id deve seguir o formato {identificador}"),coluna:A,operador:F,valor:l.any().describe("valor de compara\xE7\xE3o")}),X=e=>{let a=(e.match(/\{[\w:]+\}|\bNAO\b|\bE\b|\bOU\b|\(|\)/g)||[]).join(""),n=e.replace(/\s+/g,""),t=a.replace(/\s+/g,"");if(n!==t)return!1;let i=e.replace(/\{[\w:]+\}/g,"true").replace(/\bNAO\b/g,"!").replace(/\bE\b/g,"&&").replace(/\bOU\b/g,"||");try{return new Function(`return (${i})`)(),!0}catch{return!1}},M=l.object({condicoes:l.array(k),formula:l.string().refine(X,{message:"F\xF3rmula inv\xE1lida. Use apenas refer\xEAncias de condi\xE7\xF5es {id} ou {id:sufixo}, operadores E/OU/NAO e par\xEAnteses."})}).superRefine((e,o)=>{let a=new Set(e.condicoes.map(t=>t.id)),n=e.formula.match(/\{[\w:]+\}/g)||[];for(let t of n)a.has(t)||o.addIssue({code:"custom",path:["formula"],message:`A refer\xEAncia ${t} n\xE3o existe em condicoes.`})}),B=e=>M.parse(e),_e=()=>({criarFiltroDelta:B});var ve=(e,o)=>{let a="localStorage"in globalThis?globalThis.localStorage:void 0;if(typeof a>"u")return null;let n=typeof e=="string"?e:encodeURIComponent(JSON.stringify(e));try{o!==void 0&&a.setItem(n,JSON.stringify(o));let t=a.getItem(n);if(t===null)return null;try{return JSON.parse(t)}catch{return t}}catch{return null}};var _=e=>{try{return Object.fromEntries(Object.entries(e).map(([o,a])=>[o,a===void 0||a==null||typeof a=="string"||typeof a=="number"||typeof a=="boolean"?a:JSON.stringify(a,null,2)]))}catch(o){throw new Error(`Erro na fun\xE7\xE3o paraObjetoRegistroPg: ${o.message} ${o.stack}`)}},he=_,ze=_;var P=(e=>(e["e-licencie"]="e-licencie",e["gov.e-licencie"]="gov.e-licencie",e))(P||{});var q=(r=>(r.modelo="000_modelo",r.vencida="100_vencida",r.expirado="200_expirado",r.alerta="300_alerta",r.protocoladafora="350_protocoladafora",r.protocolada="400_protocolada",r.protocoladaApenas="430_protocolada",r.protocolada_alteracao="450_protocolada",r.prazo="500_prazo",r.emitida="515_emitida",r.valida="518_valida",r.novo="520_novo",r.recebido="521_recebido",r.em_andamento="530_em_andamento",r.aguardando="530_aguardando",r.aguardandoresposta="540_aguardandoresposta",r.suspensaotemporaria="540_suspensaotemporaria",r.cancelada="550_cancelada",r.execucao="560_execucao",r.pendente="570_pendente",r.executadafora="600_executadafora",r.executada="700_executada",r.naoexecutada="701_naoexecutada",r.concluida="730_concluida",r.respondido_negado="740_respondido_negado",r.respondido_aceito="741_respondido_aceito",r.atendidoparcial="742_atendidoparcial",r.naoatendido="743_naoatendido",r.atendido="744_atendido",r.renovada="760_renovada",r.finalizada="800_finalizada",r.emitirnota="101_emitirnota",r.faturaatrasada="301_faturaatrasada",r.pagarfatura="302_pagarfatura",r.aguardandoconfirmacao="531_aguardandoconfirmacao",r.agendado="701_agendado",r.faturapaga="801_faturapaga",r.excluida="999_excluida",r.requerida="401_requerida",r.vigente="516_vigente",r.emrenovacao="402_emrenovacao",r.arquivada="801_arquivada",r.aguardando_sincronizacao="999_aguardando_sincronizacao",r.nao_conforme="710_nao_conforme",r.conforme="720_conforme",r.nao_aplicavel="730_nao_aplicavel",r.parcial="715_parcial",r))(q||{});var De=()=>"Ol\xE1 Mundo! (fun\xE7\xE3o)";var Fe="Ol\xE1 Mundo! (vari\xE1vel)";var Xe=(...e)=>e.map(o=>o==null?"":String(o).normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g," ").toLowerCase()).join(" ");var y=class{constructor({caminho:o,acaoIr:a,rotulo:n}){this._partesCaminho=[];this._acaoIr=a,this._partesCaminho=(Array.isArray(o)?o:[o]).filter(Boolean).map(t=>String(t)).flatMap(t=>t.split("/")).filter(Boolean),this.rotulo=n}get caminho(){return`/${this._partesCaminho.join("/")}`}set caminho(o){this._partesCaminho=o.split("/").filter(a=>a)}endereco(o,a){let n=typeof globalThis<"u"&&globalThis.window||void 0,t=new URL(n?n.location.href:"http://localhost");t.pathname=this.caminho,t.search="";let i=Object.entries(o);for(let[m,d]of i)t.searchParams.set(String(m),JSON.stringify(d));return t.hash="",a&&(t.hash=`#${t.search}`,t.search=""),t.href}ir(o){if(this._acaoIr)this._acaoIr(this.endereco({...o}));else{let a=typeof globalThis<"u"&&globalThis.window||void 0;a&&(a.location.href=this.endereco({...o}))}}parametros(o){let a=o?new URL(o):new URL(typeof globalThis<"u"&&globalThis.window?globalThis.window.location.href:"http://localhost"),n=a.searchParams,t=Object.fromEntries(n.entries()),i=a.hash;if(i){let m=Object.fromEntries(new URLSearchParams(i.slice(1)).entries());t={...t,...m}}for(let m in t)try{t[m]=JSON.parse(t[m])}catch{console.log(`[${m}|${t[m]}] n\xE3o \xE9 um json v\xE1lido.`)}return t}};var I=(i=>(i.UN="UN",i.KG="KG",i.TON="TON",i.g="g",i["M\xB3"]="M\xB3",i.Lt="Lt",i))(I||{}),Pe=[{sigla_unidade:"KG",nome:"Quilograma",sigla_normalizada:"KG",normalizar:e=>e,tipo:"massa"},{sigla_unidade:"g",nome:"Grama",sigla_normalizada:"KG",normalizar:e=>e/1e3,tipo:"massa"},{sigla_unidade:"TON",nome:"Tonelada",sigla_normalizada:"KG",normalizar:e=>e*1e3,tipo:"massa"},{sigla_unidade:"Lt",nome:"Litro",sigla_normalizada:"Lt",normalizar:e=>e,tipo:"volume"},{sigla_unidade:"M\xB3",nome:"Metro C\xFAbico",sigla_normalizada:"Lt",normalizar:e=>e*1e3,tipo:"volume"},{sigla_unidade:"UN",nome:"Unidade",sigla_normalizada:"UN",normalizar:e=>e,tipo:"unidade"}];import{NIL as U,v3 as L,v4 as $}from"uuid";var J=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Ue=e=>J.test(String(e||"")),G=(e,o)=>L(typeof e=="string"?e:typeof e=="number"?String(e):JSON.stringify(e),o?G(o):U),R=$,Le=R;var Je=e=>new Promise(o=>setTimeout(()=>o(!0),e)),Ge=e=>Object.keys(e).join("/");import u from"zod";var Ve=u.object({formato:u.literal("decimal").default("decimal"),datum:u.literal("EPSG:4326").default("EPSG:4326"),latitude:u.number(),longitude:u.number()});import v from"zod";var K=/^\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}$/,V=/^[A-Z0-9]{2}\.[A-Z0-9]{3}\.[A-Z0-9]{3}\/[A-Z0-9]{4}-\d{2}$/i,Y=Number(new Date().toISOString().slice(0,7).replace("-","")),Z=v.string().regex(Y<202407?K:V).describe("Documento (CNPJ) no formato XX.XXX.XXX/XXXX-XX"),Q=v.string().regex(/^\d{3}\.\d{3}\.\d{3}-\d{2}$/).describe("Documento (CPF) no formato XXX.XXX.XXX-XX"),Qe=Q.or(Z).describe("CPF ou CNPJ");import p from"zod";var c=e=>{if(typeof e=="number"||typeof e!="string")return e;let o=e;return o.includes(",")&&(o=o.replace(/\./g,"").replace(",",".")),o=o.replace(/[^0-9.]/g,""),o==""?null:Number(o)},Se=p.preprocess(c,p.number()),Ee=p.preprocess(c,p.number().positive()),eo=p.preprocess(c,p.number().int());export{P as Produtos,y as TipagemRotas,H as aleatorio,x as cacheM,ee as cacheMFixo,E as cacheMemoria,h as camposComuns,B as criarFiltroDelta,de as defineDayjsBr,J as erUuid,Je as esperar,j as extensoes,D as iniciarDayjsBr,_e as iniciarFiltroDelta,le as link_paiol,ve as localValor,Ge as nomeVariavel,ze as objetoPg,xe as operadorFiltroDeltaDetalhes,T as operadores,_ as paraObjetoRegistroPg,he as pgObjeto,I as siglas_unidades_medida,Xe as texto_busca,fe as tipoArquivo,O as tipoUsuarioResiduos,q as tiposSituacoesElicencie,z as tx,De as umaFuncao,Fe as umaVariavel,Pe as unidades_medida,Le as uuid,G as uuidV3,R as uuidV4,re as uuid_null,Ue as validarUuid,S as verCacheM,A as zColunaFiltroDelta,k as zCondicaoFiltroDelta,Ve as zCoordenadas,Z as zDocCnpj,Q as zDocCpf,Qe as zDocumento,ne as zFiltro,M as zFiltroDelta,Se as zNumero,eo as zNumeroInteiro,Ee as zNumeroPositivo,F as zOperadorFiltroDelta,w as zOperadores}; +var c="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),oo=o=>`eli-${Array.from({length:o||8}).map(()=>c[(999*Math.random()|0)%c.length]).join("")}`;var g={};globalThis.cacheMemoria_cache=g;var x=(o,e,a)=>{let n=typeof o=="string"?o:typeof o=="number"?String(o):encodeURIComponent(JSON.stringify(o)),r=a&&new Date().getTime()+a*1e3;e!==void 0&&(g[n]={valor:e,validade:r});let i=g[n];if(!(i?.validade&&i.validadeg,to=x,ao=o=>e=>x(o,e);var io="00000000-0000-0000-0000-000000000000",h=(d=>(d.codigo="codigo",d.excluido="excluido",d.data_hora_criacao="data_hora_criacao",d.data_hora_atualizacao="data_hora_atualizacao",d.codigo_usuario_criacao="codigo_usuario_criacao",d.codigo_usuario_atualizacao="codigo_usuario_atualizacao",d.versao="versao",d))(h||{}),A=(e=>(e.token="token",e))(A||{}),T=(a=>(a.Usuario="usuario",a.Fornecedor="fornecedor",a))(T||{});import p from"zod";var N=(n=>(n["="]="=",n["!="]="!=",n[">"]=">",n[">="]=">=",n["<"]="<",n["<="]="<=",n.like="like",n.in="in",n.isNull="isNull",n))(N||{}),z=p.enum(["=","!=",">",">=","<","<=","like","in","isNull"]),lo=p.object({coluna:p.string(),valor:p.any(),operador:z,ou:p.boolean().optional()});var w=({dayjs:o,duration:e,isSameOrAfter:a,isSameOrBefore:n,minMax:r,relativeTime:i,timezone:m,utc:d,weekOfYear:O})=>(o.extend(d),o.extend(m),o.extend(O),o.extend(n),o.extend(a),o.extend(r),o.extend(i),o.extend(e),o.locale("pt-br"),o),uo=w;var fo="https://paiol.idz.one";var C=(m=>(m.RASTREAMENTO="RASTREAMENTO",m.DEPURACAO="DEPURACAO",m.INFORMACAO="INFORMACAO",m.AVISO="AVISO",m.ERRO="ERRO",m.CRITICO="CRITICO",m))(C||{}),v={RASTREAMENTO:{peso:1,rotulo:"Rastreamento",emoji:"\u{1F50D}",metodo:"debug"},DEPURACAO:{peso:2,rotulo:"Depura\xE7\xE3o",emoji:"\u{1F41B}",metodo:"debug"},INFORMACAO:{peso:3,rotulo:"Informa\xE7\xE3o",emoji:"\u2139\uFE0F",metodo:"info"},AVISO:{peso:4,rotulo:"Aviso",emoji:"\u26A0\uFE0F",metodo:"warn"},ERRO:{peso:5,rotulo:"Erro",emoji:"\u274C",metodo:"error"},CRITICO:{peso:6,rotulo:"Cr\xEDtico",emoji:"\u{1F525}",metodo:"error"}},D=o=>{let e=o.nivelMinimo??"INFORMACAO",a=v[e].peso,n=(r,i)=>{let m=v[r];if(m.peson("RASTREAMENTO",r),depuracao:r=>n("DEPURACAO",r),info:r=>n("INFORMACAO",r),aviso:r=>n("AVISO",r),erro:r=>n("ERRO",r),critico:r=>n("CRITICO",r)}},j=D({app:"testando",nivelMinimo:"INFORMACAO",arquivamento:(o,e)=>{fetch("https://localhost:3334/debug/log",{method:"POST",body:JSON.stringify({...o,_opcoes:e})})}});j.aviso({origem:"teste",mensagem:"teste"});var F=[{ext:"gif",tipo:"imagem",mime:"image/gif"},{ext:"jpg",tipo:"imagem",mime:"image/jpeg"},{ext:"jpeg",tipo:"imagem",mime:"image/jpeg"},{ext:"png",tipo:"imagem",mime:"image/png"},{ext:"bmp",tipo:"imagem",mime:"image/bmp"},{ext:"webp",tipo:"imagem",mime:"image/webp"},{ext:"tiff",tipo:"imagem",mime:"image/tiff"},{ext:"svg",tipo:"imagem",mime:"image/svg+xml"},{ext:"ico",tipo:"imagem",mime:"image/x-icon"},{ext:"pdf",tipo:"documento",mime:"application/pdf"},{ext:"doc",tipo:"documento",mime:"application/msword"},{ext:"docx",tipo:"documento",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"},{ext:"xls",tipo:"documento",mime:"application/vnd.ms-excel"},{ext:"xlsx",tipo:"documento",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},{ext:"ppt",tipo:"documento",mime:"application/vnd.ms-powerpoint"},{ext:"pptx",tipo:"documento",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"},{ext:"txt",tipo:"documento",mime:"text/plain"},{ext:"odt",tipo:"documento",mime:"application/vnd.oasis.opendocument.text"},{ext:"ods",tipo:"documento",mime:"application/vnd.oasis.opendocument.spreadsheet"},{ext:"rtf",tipo:"documento",mime:"application/rtf"},{ext:"csv",tipo:"documento",mime:"text/csv"},{ext:"mp4",tipo:"v\xEDdeo",mime:"video/mp4"},{ext:"avi",tipo:"v\xEDdeo",mime:"video/x-msvideo"},{ext:"mkv",tipo:"v\xEDdeo",mime:"video/x-matroska"},{ext:"mov",tipo:"v\xEDdeo",mime:"video/quicktime"},{ext:"wmv",tipo:"v\xEDdeo",mime:"video/x-ms-wmv"},{ext:"flv",tipo:"v\xEDdeo",mime:"video/x-flv"},{ext:"webm",tipo:"v\xEDdeo",mime:"video/webm"},{ext:"3gp",tipo:"v\xEDdeo",mime:"video/3gpp"},{ext:"mpeg",tipo:"v\xEDdeo",mime:"video/mpeg"}],_o=o=>{let e=String(o||"").toLocaleLowerCase().split(".").pop();return F.find(n=>n.ext===e)?.tipo||"outros"};import s from"zod";var k=s.enum([">","<",">=","<=","=","!=","in","like","\u2229"]),ho={">":{rotulo:"Maior que",descricao:"O valor de A deve ser maior que o valor de B"},"<":{rotulo:"Menor que",descricao:"O valor de A deve ser menor que o valor de B"},">=":{rotulo:"Maior ou igual a",descricao:"O valor de A deve ser maior ou igual ao valor de B"},"<=":{rotulo:"Menor ou igual a",descricao:"O valor de A deve ser menor ou igual ao valor de B"},"=":{rotulo:"Igual a",descricao:"O valor de A deve ser igual ao valor de B"},"!=":{rotulo:"Diferente de",descricao:"O valor de A deve ser diferente do valor de B"},in:{rotulo:"Est\xE1 em",descricao:"O valor de A deve estar presente na cole\xE7\xE3o ou lista definida em B"},like:{rotulo:"Cont\xE9m",descricao:"O valor de A deve conter o texto informado em B"},"\u2229":{rotulo:"Interse\xE7\xE3o",descricao:"A e B devem possuir pelo menos um elemento em comum"}},R=/^\{[\w:]+\}$/,L=/^\w+(\.\w+)*$/,M=s.string().regex(L,"Coluna inv\xE1lida").describe("nome da coluna ou caminho aninhado do jsonb"),I=s.object({id:s.string().describe("id da condi\xE7\xE3o do filtro").regex(R,"O id deve seguir o formato {identificador}"),coluna:M,operador:k,valor:s.any().describe("valor de compara\xE7\xE3o")}),X=o=>{let a=(o.match(/\{[\w:]+\}|\bNAO\b|\bE\b|\bOU\b|\(|\)/g)||[]).join(""),n=o.replace(/\s+/g,""),r=a.replace(/\s+/g,"");if(n!==r)return!1;let i=o.replace(/\{[\w:]+\}/g,"true").replace(/\bNAO\b/g,"!").replace(/\bE\b/g,"&&").replace(/\bOU\b/g,"||");try{return new Function(`return (${i})`)(),!0}catch{return!1}},q=s.object({condicoes:s.array(I),formula:s.string().refine(X,{message:"F\xF3rmula inv\xE1lida. Use apenas refer\xEAncias de condi\xE7\xF5es {id} ou {id:sufixo}, operadores E/OU/NAO e par\xEAnteses."})}).superRefine((o,e)=>{let a=new Set(o.condicoes.map(r=>r.id)),n=o.formula.match(/\{[\w:]+\}/g)||[];for(let r of n)a.has(r)||e.addIssue({code:"custom",path:["formula"],message:`A refer\xEAncia ${r} n\xE3o existe em condicoes.`})}),P=o=>q.parse(o),Ao=()=>({criarFiltroDelta:P});var No=(o,e)=>{let a="localStorage"in globalThis?globalThis.localStorage:void 0;if(typeof a>"u")return null;let n=typeof o=="string"?o:encodeURIComponent(JSON.stringify(o));try{e!==void 0&&a.setItem(n,JSON.stringify(e));let r=a.getItem(n);if(r===null)return null;try{return JSON.parse(r)}catch{return r}}catch{return null}};var y=o=>{try{return Object.fromEntries(Object.entries(o).map(([e,a])=>[e,a===void 0||a==null||typeof a=="string"||typeof a=="number"||typeof a=="boolean"?a:JSON.stringify(a,null,2)]))}catch(e){throw new Error(`Erro na fun\xE7\xE3o paraObjetoRegistroPg: ${e.message} ${e.stack}`)}},wo=y,Co=y;var U=(o=>(o["e-licencie"]="e-licencie",o["gov.e-licencie"]="gov.e-licencie",o))(U||{});var $=(t=>(t.modelo="000_modelo",t.vencida="100_vencida",t.expirado="200_expirado",t.alerta="300_alerta",t.protocoladafora="350_protocoladafora",t.protocolada="400_protocolada",t.protocoladaApenas="430_protocolada",t.protocolada_alteracao="450_protocolada",t.prazo="500_prazo",t.emitida="515_emitida",t.valida="518_valida",t.novo="520_novo",t.recebido="521_recebido",t.em_andamento="530_em_andamento",t.aguardando="530_aguardando",t.aguardandoresposta="540_aguardandoresposta",t.suspensaotemporaria="540_suspensaotemporaria",t.cancelada="550_cancelada",t.execucao="560_execucao",t.pendente="570_pendente",t.executadafora="600_executadafora",t.executada="700_executada",t.naoexecutada="701_naoexecutada",t.concluida="730_concluida",t.respondido_negado="740_respondido_negado",t.respondido_aceito="741_respondido_aceito",t.atendidoparcial="742_atendidoparcial",t.naoatendido="743_naoatendido",t.atendido="744_atendido",t.renovada="760_renovada",t.finalizada="800_finalizada",t.emitirnota="101_emitirnota",t.faturaatrasada="301_faturaatrasada",t.pagarfatura="302_pagarfatura",t.aguardandoconfirmacao="531_aguardandoconfirmacao",t.agendado="701_agendado",t.faturapaga="801_faturapaga",t.excluida="999_excluida",t.requerida="401_requerida",t.vigente="516_vigente",t.emrenovacao="402_emrenovacao",t.arquivada="801_arquivada",t.aguardando_sincronizacao="999_aguardando_sincronizacao",t.nao_conforme="710_nao_conforme",t.conforme="720_conforme",t.nao_aplicavel="730_nao_aplicavel",t.parcial="715_parcial",t))($||{});var ko=()=>"Ol\xE1 Mundo! (fun\xE7\xE3o)";var Lo="Ol\xE1 Mundo! (vari\xE1vel)";var Po=(...o)=>o.map(e=>e==null?"":String(e).normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g," ").toLowerCase()).join(" ");var _=class{constructor({caminho:e,acaoIr:a,rotulo:n}){this._partesCaminho=[];this._acaoIr=a,this._partesCaminho=(Array.isArray(e)?e:[e]).filter(Boolean).map(r=>String(r)).flatMap(r=>r.split("/")).filter(Boolean),this.rotulo=n}get caminho(){return`/${this._partesCaminho.join("/")}`}set caminho(e){this._partesCaminho=e.split("/").filter(a=>a)}endereco(e,a){let n=typeof globalThis<"u"&&globalThis.window||void 0,r=new URL(n?n.location.href:"http://localhost");r.pathname=this.caminho,r.search="";let i=Object.entries(e);for(let[m,d]of i)r.searchParams.set(String(m),JSON.stringify(d));return r.hash="",a&&(r.hash=`#${r.search}`,r.search=""),r.href}ir(e){if(this._acaoIr)this._acaoIr(this.endereco({...e}));else{let a=typeof globalThis<"u"&&globalThis.window||void 0;a&&(a.location.href=this.endereco({...e}))}}parametros(e){let a=e?new URL(e):new URL(typeof globalThis<"u"&&globalThis.window?globalThis.window.location.href:"http://localhost"),n=a.searchParams,r=Object.fromEntries(n.entries()),i=a.hash;if(i){let m=Object.fromEntries(new URLSearchParams(i.slice(1)).entries());r={...r,...m}}for(let m in r)try{r[m]=JSON.parse(r[m])}catch{console.log(`[${m}|${r[m]}] n\xE3o \xE9 um json v\xE1lido.`)}return r}};var B=(i=>(i.UN="UN",i.KG="KG",i.TON="TON",i.g="g",i["M\xB3"]="M\xB3",i.Lt="Lt",i))(B||{}),Bo=[{sigla_unidade:"KG",nome:"Quilograma",sigla_normalizada:"KG",normalizar:o=>o,tipo:"massa"},{sigla_unidade:"g",nome:"Grama",sigla_normalizada:"KG",normalizar:o=>o/1e3,tipo:"massa"},{sigla_unidade:"TON",nome:"Tonelada",sigla_normalizada:"KG",normalizar:o=>o*1e3,tipo:"massa"},{sigla_unidade:"Lt",nome:"Litro",sigla_normalizada:"Lt",normalizar:o=>o,tipo:"volume"},{sigla_unidade:"M\xB3",nome:"Metro C\xFAbico",sigla_normalizada:"Lt",normalizar:o=>o*1e3,tipo:"volume"},{sigla_unidade:"UN",nome:"Unidade",sigla_normalizada:"UN",normalizar:o=>o,tipo:"unidade"}];import{NIL as J,v3 as V,v4 as G}from"uuid";var K=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Go=o=>K.test(String(o||"")),Y=(o,e)=>V(typeof o=="string"?o:typeof o=="number"?String(o):JSON.stringify(o),e?Y(e):J),Z=G,Ko=Z;var Zo=o=>new Promise(e=>setTimeout(()=>e(!0),o)),Qo=o=>Object.keys(o).join("/");import u from"zod";var So=u.object({formato:u.literal("decimal").default("decimal"),datum:u.literal("EPSG:4326").default("EPSG:4326"),latitude:u.number(),longitude:u.number()});import b from"zod";var Q=/^\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}$/,H=/^[A-Z0-9]{2}\.[A-Z0-9]{3}\.[A-Z0-9]{3}\/[A-Z0-9]{4}-\d{2}$/i,W=Number(new Date().toISOString().slice(0,7).replace("-","")),S=b.string().regex(W<202407?Q:H).describe("Documento (CNPJ) no formato XX.XXX.XXX/XXXX-XX"),E=b.string().regex(/^\d{3}\.\d{3}\.\d{3}-\d{2}$/).describe("Documento (CPF) no formato XXX.XXX.XXX-XX"),ee=E.or(S).describe("CPF ou CNPJ");import l from"zod";var f=o=>{if(typeof o=="number"||typeof o!="string")return o;let e=o;return e.includes(",")&&(e=e.replace(/\./g,"").replace(",",".")),e=e.replace(/[^0-9.]/g,""),e==""?null:Number(e)},ae=l.preprocess(f,l.number()),ne=l.preprocess(f,l.number().positive()),ie=l.preprocess(f,l.number().int());export{C as NivelLog,v as NivelLogDetalhes,U as Produtos,_ as TipagemRotas,oo as aleatorio,x as cacheM,ao as cacheMFixo,to as cacheMemoria,h as camposComuns,P as criarFiltroDelta,uo as defineDayjsBr,K as erUuid,Zo as esperar,F as extensoes,w as iniciarDayjsBr,D as iniciarELog,Ao as iniciarFiltroDelta,fo as link_paiol,No as localValor,Qo as nomeVariavel,Co as objetoPg,ho as operadorFiltroDeltaDetalhes,N as operadores,y as paraObjetoRegistroPg,wo as pgObjeto,B as siglas_unidades_medida,Po as texto_busca,_o as tipoArquivo,T as tipoUsuarioResiduos,$ as tiposSituacoesElicencie,A as tx,ko as umaFuncao,Lo as umaVariavel,Bo as unidades_medida,Ko as uuid,Y as uuidV3,Z as uuidV4,io as uuid_null,Go as validarUuid,ro as verCacheM,M as zColunaFiltroDelta,I as zCondicaoFiltroDelta,So as zCoordenadas,S as zDocCnpj,E as zDocCpf,ee as zDocumento,lo as zFiltro,q as zFiltroDelta,ae as zNumero,ie as zNumeroInteiro,ne as zNumeroPositivo,k as zOperadorFiltroDelta,z as zOperadores}; diff --git a/package.json b/package.json index 1d2dfa1..006a661 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "p-comuns", - "version": "0.348.0", + "version": "0.349.0", "description": "", "main": "./dist-front/index.mjs", "module": "./dist-front/index.mjs", diff --git a/pacote.tgz b/pacote.tgz index a18073a0256eca272b1b544d0541955713973f33..e4666c061dd1becfbc98163d44ffec9439eadcce 100644 GIT binary patch literal 46713 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 z zlZiKwy3ZEGs|2k?M#Cr$(s3kSK3x&^&a*YK+*w?7nB{R-jwi9qnFSf%35&$W*WiL8 zf}#6MuPAp;i5Z)zKsjS`fSACZAE6{baMD&7j4aX*)I~3iHp*i`{6>#T9Dezj z8${t$#wiS4IaXbWWmdq5n3XM0x*|OP{aD74YhaNP$`Z8$XGvvW5L**MMrn#oRXD}0 z1b+bcYJC1v7=S`qa4ch~l;R-6q&Np?oG%Hx)WJ@5%)_|(atYZRq3%qEiG_Ns=rA?@ zA`V8yeZ6EW!`(G%6dC6awU! zR(O!*9iu`fjoDYA?wZp<9a2`db4aS7IXi4kk-#n-gWsMrZ~XkHU;WmiaTea#{qNpV zRsUz@mjCIGaQ_2v-0U6FQI^`IRiN;IFsLiWiQ}jxh?YIvY+{hmgik|;bX;-N6^noYhwkdh(?*E6lbHiMh&sqv=w_Lx*NfQ>%@m;_ zr@(g$a64rXIcy0AwfI)PP3)x;aG(KQ$A;s5`&lV|2d=t}49+|O_ImEyiJ9LO?HIydbDc>hg zBi|~{7IVmno;Yn1Svukca_U`i+8hNy$20<@;6X6w|Ad+ zmzNgrnQ;t9v@Q11Ak9Dyf7+x)&t{wBa9HCp`wL~g zCL6uRJ$SLbc+Y7xR>AT}0*34}>BEF%Jks+Yz>W*ap)mDCcxLi!)CV+0U>rD!WdfjA z^D=6RE!y#eDdHb_Rajm)Zbh)+u zY~|j<{ZAXe$>f;th2F7DJwJNfSXX`Z=KKe^k0vR}G*};lOOz$L(_xkNp;W8bp5ghw zz!`4@_L9ieXN-d&1TcB-yjXh5ymS7rpiM|g+J^FEEu6gB%*GOjFvtYI@y`}#-!#AR z&zAI`);B(g|Iq7Bi)RDC6^aq6rXT<>cDk)C5uHY3FB;=r9feVn+c+Cj$inCr$H5>y z|7j3J-A1Fc*j#cbxEL+2f@KDVlOxqb^r%n?0mXrfda1Ml2!3OCi=}7|)ruFCW&2sFD7q~3ijgT!PA*e3ifz@Bj*-jS_A?M3Lv8=4 z1Tcm3U*xZ4Ng9n|VU0eh{O5x6-{RtORsZwe;_dnGk9Yp#;k+HoNgRQ&*^6;Pqg}`Z z;MKnkqwm9NGSN@VD#FH#UK9Te`emQ2V#2uQ#^#tf^UfEna0t;LyLNhis?{piw2oflgXa) zMbd>uvT5Z2*)7gTq#4TTrSVq9yCh6-RX{93qb9HYziBUg*3|4$y2=6?C~q2gJ8a}H zHN4PI7R~2|-N9=)_VUdbOXbn=o0>X7+yOW=$y{xWHvB{CvP1O(u?48#lStgXd;a6y zyKs=ojCz5`V4tud?!tx`3;{e0^oAn>L_plIa2j~iynM9OViD~p zJJ5pTD3mF_cIelUXNKHCQOXcwE;3Ds1##GEAF9_P=yraO#rKCu2WfT=^B|?3;vlXW zq%xxHCp(S`3WsJ24MBN4LK{%Rzq&B?&K=QdyKRV$Wr-yo*>v3_>bR&XZ#>mA^R$`w zid{2#T|`z8MU M|FzKy;sCY-0QEOe#{d8T literal 42018 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 x^6(IKz1-@3N+-u={M3)(;B(!4JwLW4yp5Be$ = { + [NivelLog.RASTREAMENTO]: { peso: 1, rotulo: "Rastreamento", emoji: "🔍", metodo: "debug" }, + [NivelLog.DEPURACAO]: { peso: 2, rotulo: "Depuração", emoji: "🐛", metodo: "debug" }, + [NivelLog.INFORMACAO]: { peso: 3, rotulo: "Informação", emoji: "ℹ️", metodo: "info" }, + [NivelLog.AVISO]: { peso: 4, rotulo: "Aviso", emoji: "⚠️", metodo: "warn" }, + [NivelLog.ERRO]: { peso: 5, rotulo: "Erro", emoji: "❌", metodo: "error" }, + [NivelLog.CRITICO]: { peso: 6, rotulo: "Crítico", emoji: "🔥", metodo: "error" }, +} + +/** Estrutura de uma entrada de log emitida pelo sistema. */ +export type EntradaLog = { + timestamp: string + nivel: keyof typeof NivelLog + /** Identificador da aplicação/instância (ex: "front:e-licencie:12345"). */ + app: string + /** Local no código de onde o log foi emitido (ex: "criarUsuario()"). */ + origem: string + mensagem: string + dados?: unknown +} + +/** Interface pública do logger retornado por `iniciarELog`. */ +export type ELogger = { + rastreamento: (pr: { origem: string; mensagem: string; dados?: unknown }) => void + depuracao: (pr: { origem: string; mensagem: string; dados?: unknown }) => void + info: (pr: { origem: string; mensagem: string; dados?: unknown }) => void + aviso: (pr: { origem: string; mensagem: string; dados?: unknown }) => void + erro: (pr: { origem: string; mensagem: string; dados?: unknown }) => void + critico: (pr: { origem: string; mensagem: string; dados?: unknown }) => void +} + +/** Opções de configuração do logger, disponíveis no callback de arquivamento. */ +export type OpoesELogger = { + app: string + nivelMinimo: keyof typeof NivelLog +} + +/** Tipo do callback de arquivamento de logs. */ +export type ArquivamentoLog = (entrada: EntradaLog, opcoes: OpoesELogger) => void + +/** + * Inicializa o sistema de log estruturado. + * + * @param opcoes.app - Identificador da aplicação/instância (ex: `"front:e-licencie:12345"`) + * @param opcoes.nivelMinimo - Nível mínimo para exibição no console (padrão: INFORMACAO) + * @param opcoes.arquivamento - Callback opcional para persistir/enviar as entradas de log + * + * @example + * ```ts + * const log = iniciarELog({ app: "front:e-licencie:12345" }) + * + * log.info({ origem: "criarUsuario()", mensagem: "Usuário criado", dados: { id: "abc-123" } }) + * // → ℹ️ [Informação] [front:e-licencie:12345] [criarUsuario()] Usuário criado + * ``` + */ +export const iniciarELog = (opcoes: { + app: string + nivelMinimo?: keyof typeof NivelLog + arquivamento?: ArquivamentoLog +}): ELogger => { + const nivel: keyof typeof NivelLog = opcoes.nivelMinimo ?? NivelLog.INFORMACAO + const pesoMinimo = NivelLogDetalhes[nivel].peso + + const emitir = ( + nivelLog: keyof typeof NivelLog, + pr: { origem: string; mensagem: string; dados?: unknown }, + ) => { + const config = NivelLogDetalhes[nivelLog] + if (config.peso < pesoMinimo) return + + const entrada: EntradaLog = { + timestamp: new Date().toISOString(), + nivel: nivelLog, + app: opcoes.app, + origem: pr.origem, + mensagem: pr.mensagem, + ...(pr.dados !== undefined ? { dados: pr.dados } : {}), + } + + console[config.metodo]( + `${config.emoji} [${config.rotulo}] [${opcoes.app}] [${pr.origem}] ${pr.mensagem}`, + pr.dados !== undefined ? pr.dados : "", + ) + + if (opcoes.arquivamento) { + opcoes.arquivamento(entrada, { app: opcoes.app, nivelMinimo: nivel }) + } + } + + return { + rastreamento: (pr) => emitir(NivelLog.RASTREAMENTO, pr), + depuracao: (pr) => emitir(NivelLog.DEPURACAO, pr), + info: (pr) => emitir(NivelLog.INFORMACAO, pr), + aviso: (pr) => emitir(NivelLog.AVISO, pr), + erro: (pr) => emitir(NivelLog.ERRO, pr), + critico: (pr) => emitir(NivelLog.CRITICO, pr), + } +} + +const log = iniciarELog({ + app: "testando", + nivelMinimo: NivelLog.INFORMACAO, + arquivamento: (entrada, opcoes) => { + fetch("https://localhost:3334/debug/log", { + method: "POST", + body: JSON.stringify({ ...entrada, _opcoes: opcoes }), + }) + }, +}) + +log.aviso({ origem: "teste", mensagem: "teste" }) diff --git a/src/index.ts b/src/index.ts index cadd713..28e224f 100755 --- a/src/index.ts +++ b/src/index.ts @@ -5,6 +5,7 @@ export * from "./constantes" export * from "./consulta" export * from "./dayjs26" export * from "./ecosistema" +export * from "./eLog" export * from "./extensoes" export * from "./extensoes" export * from "./filtroDelta"