From b60bd3eef6fe6670317ff30b3fd60a7f55da31df Mon Sep 17 00:00:00 2001 From: MarcioJRGodoi Date: Mon, 13 Apr 2026 15:55:48 -0300 Subject: [PATCH] tipagem audioria --- dist-back/auditoria.js | 16 ++++++++++++++++ dist-back/index.js | 2 ++ dist-front/index.d.mts | 23 ++++++++++++++++++++++- package.json | 2 +- pacote.tgz | Bin 24706 -> 25293 bytes src/auditoria.ts | 28 ++++++++++++++++++++++++++++ src/index.ts | 1 + 7 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 dist-back/auditoria.js create mode 100644 src/auditoria.ts diff --git a/dist-back/auditoria.js b/dist-back/auditoria.js new file mode 100644 index 0000000..afc970d --- /dev/null +++ b/dist-back/auditoria.js @@ -0,0 +1,16 @@ +"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; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var auditoria_exports = {}; +module.exports = __toCommonJS(auditoria_exports); diff --git a/dist-back/index.js b/dist-back/index.js index 984f76c..23f287a 100644 --- a/dist-back/index.js +++ b/dist-back/index.js @@ -16,6 +16,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru var index_exports = {}; module.exports = __toCommonJS(index_exports); __reExport(index_exports, require("./aleatorio"), module.exports); +__reExport(index_exports, require("./auditoria"), module.exports); __reExport(index_exports, require("./cacheMemoria"), module.exports); __reExport(index_exports, require("./constantes"), module.exports); __reExport(index_exports, require("./consulta"), module.exports); @@ -38,6 +39,7 @@ __reExport(index_exports, require("./variaveisComuns"), module.exports); // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { ...require("./aleatorio"), + ...require("./auditoria"), ...require("./cacheMemoria"), ...require("./constantes"), ...require("./consulta"), diff --git a/dist-front/index.d.mts b/dist-front/index.d.mts index 586d1c0..3a20f9b 100644 --- a/dist-front/index.d.mts +++ b/dist-front/index.d.mts @@ -5,6 +5,27 @@ import { v4 } from 'uuid'; declare const aleatorio: (tamanho?: number) => string; +type TipoPayloadAuditoria = { + /** UUID do usuario da acao (pode ser null se for processo do sistema que não registrou) */ + usuario_criacao: string | null; + /** Timestamp ou data de criacao / execucao */ + data_criacao: string | Date; + /** Nome exato da tabela no banco que originou o registro */ + tabela_origem: string; + /** Código único (UUID) do registro na tabela original */ + codigo_origem: string; + /** JSON contendo o snapshot das colunas novas / editadas */ + novo: Record; + /** JSON contendo o snapshot das colunas antes da edição */ + anterior: Record; + /** Hash ou controle de versao do item, usualmente preenchido por new.ver_seg */ + __versao: string; + /** Tipo de operação que gerou a auditoria */ + acao: "criar" | "atualizar" | "deletar" | string; + /** Versão do sistema no momento em que a ação ocorreu */ + versao_sistema: string; +}; + /** gerar uma função de cache para uso em memoria */ declare const cacheM: (chave: any, valor?: T, validadeSeg?: number) => T | undefined; declare const verCacheM: () => { @@ -312,4 +333,4 @@ declare const nomeVariavel: (v: { [key: string]: any; }) => string; -export { Produtos, TipagemRotas, type TipoLoggerSessao, aleatorio, cacheM, cacheMFixo, cacheMemoria, camposComuns, dayjsbr, defineCwd, erUuid, esperar, extensoes, type interfaceConsulta, link_paiol, localValor, logger, nomeVariavel, objetoPg, operadores, paraObjetoRegistroPg, pgObjeto, postLogger, siglas_unidades_medida, texto_busca, tipoArquivo, type tipoFiltro, type tipoLogger, type tipoLoggerLog, type tipoLokiObjeto, tipoUsuarioResiduos, tx, umaFuncao, umaVariavel, unidades_medida, uuid, uuidV3, uuidV4, uuid_null, validarUuid, verCacheM, zFiltro, zOperadores }; +export { Produtos, TipagemRotas, type TipoLoggerSessao, type TipoPayloadAuditoria, aleatorio, cacheM, cacheMFixo, cacheMemoria, camposComuns, dayjsbr, defineCwd, erUuid, esperar, extensoes, type interfaceConsulta, link_paiol, localValor, logger, nomeVariavel, objetoPg, operadores, paraObjetoRegistroPg, pgObjeto, postLogger, siglas_unidades_medida, texto_busca, tipoArquivo, type tipoFiltro, type tipoLogger, type tipoLoggerLog, type tipoLokiObjeto, tipoUsuarioResiduos, tx, umaFuncao, umaVariavel, unidades_medida, uuid, uuidV3, uuidV4, uuid_null, validarUuid, verCacheM, zFiltro, zOperadores }; diff --git a/package.json b/package.json index 166149b..fc3ca86 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "p-comuns", - "version": "0.297.0", + "version": "0.298.0", "description": "", "main": "./dist-front/index.mjs", "module": "./dist-front/index.mjs", diff --git a/pacote.tgz b/pacote.tgz index 10a1e9e46bf54ed27383bb599bbf42fb6412fab2..cd70992ec9e2eee42de3bd372ee1abc316665e45 100644 GIT binary patch delta 21668 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 delta 21088 zcmYhCRZt#H7p;*1!QBZC!JXicgy8P(?(Q-KcY?bG3r=u%cb5crcb9igzQ4|?Iu~8j zH5XI6yJq&R-OpYV1JHpz&^2hVKo%%`7q@JJcf(bf8w$q@z8ZA6oyfnv8t7=Z35kFQ z2jJ^#ZZ2r>`pU!8uf_D4IC>YxH1-_(X%FuRy;ntlA}EQ&z_{Y;FjoL!oojhur)2ZH zuo-dZ9>!CXD(gMA?JzEHCmf_|Wy!u_vesYkzJIxlJ4|btt`i&(G5QP(H1>rK)Th$a z&M^m2`w4aUJ*|AiJCz-orX*&lTzV&U{rIB@sy3**Ry*wWy^JquP3jbx{gr1wc8cje zx`0BiCzcg2uSyN)& z8}{0$d`_!nUVdWjXCkr*NE6+#K|v&|G*|rE%JA=TkYPd7sbsQne324wddXUJm#sNt zY9!TG^YQh|$icN{3YjE&57rf7xjOCdwG<6zT8r>L5Y?$DWBcCuA5nE?>%*mD&&PEc zh&Bajn&DsF%YO4RBu+j>GnxODuB!e!O7!Mc`;+;V%#~M;gH|{hfI9SrIM`Xa6;XgK z9o`m`;KWlGAINh6b_#+Tw&9#DUGTyCZ`+voI)anfO4p8NL|N!syxXi|@^e2#EGSW& z^#dABjUwh?HgP&{1X1o21tVRZ;~fcEYQA{)z~Whco~)2e2H|p{mll#K229Rtmcd!_gRECPTay$dJ>@rj)>I8R&kjyE23Q0}R}M89 zY5}_sho|)<>!+?}OQVnMGNyjlB}#hk42&c4<-anc@;ZPj+AJk6nfZZ5=L z!Lz+0c(4n}$^`)M#xF2aJ0!X> z8LKf^5P<<~(wZSbLzeggx&irXo})hQ@4gEkhiM&fY=%A^Q0t3-CPiFAyZJgxQTUez z9l>*VOf}=pFBdopMfMC zDcuWZNzdWHy*g zF1nWQAW7jB0jQRwW_a_uMphLJ1;$&lHlLP)R&;NLqjxl>myWA7u!7d~4XniO1{cr} z>di{OD{A4LU_c%7PTuJaRiZK{K zKC$4!)2-7)cg}0P_p;y_OuCKfxtjOx_L~OQ&oB-p)9|OQ9v^a^3xqGqM2@kEgS&da zy(NEhzaMSgv$d(#$PsGvy^XjIzW}}r0PUXPtIqcPM zX)HiW)?*|=_4mkk@kQh0x}tK3)%&mYH3%)_!z}#a2A}`|o4b4KY|x;kgX;i1cm=>L zF!u&@fdG>r2=fF8npv=e$+9C)CbLFmOTo|W?>6*%)Xe^{m&e!*MF%=9O?ycjg{5ib z2}E8SrMYtFE%jqYejutVIogLZe-;a8m_9IkNkR1-Wr>jwY}$Ak; znC*EtD=TqZRI3(qh*qoCE<=whUq}9Gth|oY?71eqFxvO$18(^qAYq~a{bPv=*t!Yv zu-KCq1%bQ8>s5$D70A5=W^DZJY=>z4rkFHdB8EyZV@+@i!$H)>HsSP33^TDm_9-ot zVY`pfj#6nHrtpLLsn5s0Y_&+W$VQ^6TtH%dg2@P-uS)6H-E)jqb(3sB~Es-h)oo7cUzr0oCL~cu*z(k_!t&7o!8bM&tD$?)y z_;-%iS`7R7wboJ|Uo`jQSrGO-5ssrsoL0gW10_F^Sbp58G5%=%7E&`{ru&Ew%FLDGwCfFVt+U^Xx(-ET!L93HC4)GJOh z@%5Qcn^v5@;5)A|Qxp|C*ckUj_cHw{<`GdwLQvM+7(#+dTqIjVEqcjY=G(|RH#f%3 zW>TW%fiqL{0To@iB9|98znd19IUvJ)oV*-My(m`P zVwvQiNVfe3x+Z`+#EU|30pm!F#gE1sx9iG|_gJ2tvvZZKIK#BJoz}RstFtHZQoJC2Hso}#n4e3Ro;vpN-0{+)MjE|_~b-PI1+sML{r>(cSqKL8V-kx77>yZJ60q&eaV z2}AmCegCl2_LNktF(r1F?j7VMXmoFLV@=NU5m7n|NjXj?)(vCs`I~_$*H7Tc+?Sx1+9X#8yjVQW#{2hb*xcNJ zGTERDDB>b)d=6Ng0|zoM8%n~I0gZ28$_t20KfN(-^o=QQDplu5T?49asjIL7jWO1s%9 zF0gYf?z98{BrU#&0taarlBa+BYV97^V^;WcV^NBQ5dWGM4{=f5+*UGcv>_Zye4f@j zE%XQ-W(^Vmf{F;J*{Zv)auFJCmq-#6hEn(B(aV!s+cv%|zprg;9vf)(Tq>`tN9uq0 zm;N@?!lM=a4QgW{OyeQ<@9B;upTL+d1#qMJbzC8A?+!sPBGe!~!jW=jmm zAb;;)ctl<==A~R$gRuYu?VcEleGgri=!XMf&HsA-tmEdP8l$b%x?7r3`goj(hISm6AkF$j&bERpB_ogJVqdgDGld+I9=sk*z4 z;Q9zWy~9m3?|pmB27+I%+HSV=1=Zef4Ym9bH5>95p5Mup@6t>DaedG-9mj$AOvj13 zZ4pr5^%^a_ICvddWD^a=E3K^01O1(4qYo_s>G!eF;e!{!m65bb*{s?3?E&oKI4wz< zAd^FmSYAj1#-?PWL9i$9A=?R%F1!F6!3jTkzyZCLGxQsT*<*c z!psd_dBP3dxUxSQGyE$Jg5`LDpgH~ziW1k5grQ4EiAH~ZzZx%sXEHez8BjN}Hnri( zo8D!TVu;RZghjbwBu~gE_lm>yDEsxmS?!-{8b6@KA&j!(QJ}h7c>XHCZt8hFlAI9h`5tipfu)or?U zE$_!tz&)c&sWlP3UC_s_$O!DHZEWTG|H@3r>r|iN{*%M*$W3k$>rGAg3{BT1#G-It z{7<(>$cfy)KMj@<;KjJQ#P#j>pYooIwj&xLqA!!?%vuWTMux#5XOys{FhYnoeF1Hz z!^%kMtOmmE3WMchw+2Ke6(6R3L<$4rgT+w3KGI%*qdl9cf?kjBXJjgf%ZTk3ygH;U zq%=#`k8I4yO;<{6%s*)!0TlBVySn9L)w<4ml;zCj03UqQ2)H0>;OG7{b*w!HPMtOU zua?|@-N*u8u3ru8M6(8vCZSYx^9g<@;jwEjd?XPzH~o@rSF9IUo~h(A(lPR<#vr&N zAlnjXJ|t80LXVG|Ve-Koj6O(bE}f|o%d^Qd37(@@%uIrTumdTI$hT?Ph(4!DXhy;Z zQXA_9F5eeurog@*Lz{P*A9Finkzax8RsFJDaE#H$~3ec@YWYi2V~X$W(~_=uag z>tz-aLAD1CB<_7X_HbA~UB9KR4#`A(XyA3@bmAA2F}uWLH~5`v@z#X4d^Zeeq@-qC z0ru77OJJ%dn6va2&P={1Sm$l}nd*Cd1qCxwVsz1-w*{i3%XbW{tCHMPib3z$x zsI8#yh(C}U{k*@q#D|!;=f(smhR0HJRonwAip;fj;R{E8v}Xret@Ph`WwotF;Qr$1 zblce>^(dR(TXe6bQXC*x#QhpJ@3H^r^~#1=htVNWVvM(n76q?^iEqTQ8cSe{S@)&S zlmPk!aLawdl(QO~bCKADi;}>cST0~Qp^q`o_X|{JZ*PnKHD#XXn}(tpi64S*LFICo zNfjTZbQmV+Ae;Mg$`%GS#0;Br`64J1y?mdUCH@oF@C8SgKX}F5c`>7lkErOCE1G^h z{i97itB!!+?+2ALW7z`(N z!2PkEh}JP^39Tl*_;vSt=a2hvx36=B!eUl~IhTp*NI3cE%KWM~6&HIP3=m19Wt%d?ljw%F{&s6J;ViDu+Wy7^xg5#X`(NT&Dk-Tvn zbp1?ydh4!}5q??_g|{~*o^IsbE*l$E;ALY^r)mFs<75Z?d<-MwQh!+RPKv|j-)TsL zd1`yI!?~vnhmazcUh+q56Qb?Zj|N!q^a`~swss}@ui6wzf_q|$>B8T&17KJugFEf4 z@8!;7a#}v>qeZL&@#yUV3f=+3IzMAI$&P`O3U8cW51ZXkA z@TVbDrz>jIx^3O=ei;4L^M6(rjY!2kH@_eb>ym`77>kER zSu;gIh{F&Spw+OwXs&l{Sn?6q6bOorzjKeY zY6#F|C{*ME$8=F3j zOwJ*<a9TGX=e!02P&PVfi zihG@T;WsKQ{o4U%!k5sC8BG;vTvDi?%%M9#PR^XVhTw|L0o~^E{=fX>0UF3*-A#SUxQVLkl*NTdGQ63-3JWtJR^hran{ z-GTaclE9%*MP;gv;7enb^>jFO|p>mgy4I{`#ak`^WU}gwWePXamiwTj$>6|!N~jPnY0Ey zP*?@^M1T;oFTA_K14i)q7Q+)&l&nbTUy3A=9bicTpT__%g3{Cyp5XCEAKu&*=q|N5!!G3Q}Opt5-lgJHu{Mwh8rDO!mDq{-!@m?6${@!NE(1 zW7U9x^O>_>SYTuk?-osGz?VGgAWJipX$~b$Qbp*o;J8RF*z&pV!8}*-C@Bk+dR{a@ zBCfZO`K}`Ww+IO>iOE#ViRp;e*!F06YMnX^A>(4A+>b!`A~nrZs1S3CiZ>y?Q2(T` zX*w2j6#nn2PdFy*qY-qlWy0$cebaJ{YX~Q1o;?9Bwu4~ggbXH+Xnfv07ptqd2#x% zVP*Z2y5{EPqu1x9F50mi{^5M*QdlV4FJBT(aSSsf1+tkHb3X(-I5*N^oXSm(8Y6fM z2#|l8LY&$8u^ZuzxIU;yy7iyHml^+2CAxxD-3Ww|cXNADn731!~ z=Z^wK{^Dh$F7z^$`ptQ#6_q=>;=| zw1URtc;;vYgL_ezX{>=q1ls%}E{&rxbzOERR}X zfAIL5XV9078vB$>#;SUihu9-U-U30K4u^@kZ0QAN{qH6qToszKe7N(a9Skd*h3-3y zE@HEoU*+^};s0PED|VVJABNXAZaiD2G2lDp$WBdFs7k5N6te0_1L-=8bzy!5ud^5adJtUzjAJfu)&Ep9 z8k+peBCy}2^Uy@*`|#FB=I?v^I5KC^1$5qQ@0E+ZUMT>Lg6xsK-Na0+Q6NC!epTZN+^DPr_VLV9mX0id6>F0F)OZ79w^Ai%;evt@N63(|qe z+xGrtloS5sp`pA8b&(S**`Ww^Pb-2?D5cx|_WG%hnKaI`H(|W0MawvLr}*u35cM(@ zDn+IdR$jVWDDdp{Q(Mcp`qGoe8ze0ZTC3Hm56!)=1M==o;h~xF4GFFyRX*D-kK+gy z==SEV>8edcRXEsaj>qY`XjI$d9o-3G>Ypnmt`&B5+AOXB_Gx+9+JOs{)`1?DNUaTJ ztj3~&6!2DL%x|V?2O=a8dd5d`-AMy#+n@ecY1V;jcQ`Wmfy9dTfBDx}l%386$+F%V zCJBi(ZcQq}O|y=dmSHQRYb-Co$6F>sn!D~Mk6Kp+N*dCzy6kj{f3YrC9NRY6Hb-L!?{oIgz@z)`L!9L>tZA~&0hg1-U!+7*i(@0 zLO#;RA+76#1N$`6ZY$Y(4E_Tzelq_ensz$XQaxmvna1{H`&4PFB2aPJ^je?Q%v*t%%tjqeQ&Fl69pRg>6XxhddC*RP* z__HKE8dD9a5c}-MWkB*Y_NOla?b>I(IYHQSBV=8=?y@thR=#0PYnU!Ugh!oEoAjLd zxecF(jIPsiG88kJ6_4Qu4I?sZ{xaA6kAReRzfHrWT67{_7sKra|K2GH5@EOgr2YNd z|6?BMjDqQ=I%(#7C%uUpk}n854~R&B zGlJTt=QeEjjJpaW-WpxkJBJWFK3{Ew8+430uqV+A-L;1Q#O; zogmV|f}79(t~oV*E=KGIuohdJtNz`-s7!+gvy6j%8##kY(6P{z=0UkEp~4EIlkbtf z!Y~7m({P9HS%1}tw?UPRy<6>4P1nr2@-0hXp{PpkM9cdVd$l-_{!#Ou&E)roR&K}h;lE0MB=CP=4MShg`gfu4 zs!GC+9}{E7STdw#^Q+{VL*gf;OBNjH__M7C4<$wj(u;$ZJ>r~dWG_71f$D9HY9Q{f z0W%+qE@~K*?Q^S1akW6VN7t?ar7%-7{==7zWARts(^;kE53C*%Exfg>7tc6=p#L(q zVLs=&iAqTt-)(Rx;nR$;X4+~li!7-u`l{4;Efwi)g@uBLzUDb*0kn*mgRxytkVFD= zFKmX|n%m`q(J|@uX2lXgL+OrDZqFJmqdDorZ-;76NlY9i;+?Iw@@c{YNlws`&iV$zN=KqPsNYs&7H7CGA6N@viEL&NE|q z9rx6->${uefe&9b^vbs=$<>}2A)6Do8Z*PawZdCUp;YzCHF@pL)$ z#Xh$oASdPvDW#Q6);loEUYELUdgtJG_%yXO9W+y6&r{3y#Fbq(zrX)Z+6?+2iu}$l zZ7(2ej(eU7#mclLVUpdZ_xiU+%u(&wmj`PTuhYYH$#u*hRky|uZUE)yLz1ZVs^^8i zD_*C+K7z)Z2?;PEg!e%5fma0N3ddho?>2+pyRGfzyr84wXkB%Rh>yOLasT?Hl&YzO zDhqRvQXTm{-mZH>5e0UmwDEBwef%toN1ad!fDXC;hdj^qXn7($E^h7B?KP6QXrRjq zOJzzL;ulgy_hFPh23B0=7mZyk52HaT%+#1}ns`H| z>}?CeKFbeO4E_DAek3c{caW7GmSJDg;*N1SuM~-Pe0d{k(XF#SPGM{vtlF-&CYD6A z@BaIZUsjZ_36WlHTr7ef+@ErGP``SL*L5YkNX!4J2LOdT(PQ3q@}Dav=^4iboi=_oEAw2BQ}>?A5PgU-L|5RbxIdb8n*^R2I&+W*Ke?LGsLitjf=Cg9o2v1)t! zfv4B_ePa1u>dlWHm8*Y#h{X4NJ{nURg%=Why*$0Ka_txUm;Up4ey(7i2EEBfdd6e$ z+`cRLCqL$!m_0)l5>gJBzpY7eLlyTU=Cd+F z>t;H!;u>OJCEQ)GyTQggNtW1uxKlKNoHIzaVGQ2*_Sas8x1v;g^PTdr4#sAO4y)D7 zJYsZnc)M6-mC*c}N3IHb8ng z723Vp;lo4Rn@9`A1?Z&5a4E0<<>oTshtn2mZ|V{E@E%HnWq&t3?e00D@95B1fX8TW zDCjb&tu&rI7i$flgND>;k8@4v3pq{@S@C)C>sQ94%EazBQeic=_@T6tw-|>lgz#!O zi(bFrbhB>3hX~n#?0ekMqBV8IO^ewNy$*8*Eo~ty30D4}TyrH|knIe1Nii9;S7aVg z@kmh3LSH`kJH-nna0`W95YAY20Yg6>eRf{LS}sf5s8o6}H?i3sVv-R|<=7l)?=eyjU&SUj>{&S+ z6!MyRCohrV%#M3jzC7-OQB6}kg1K>s=@mWPjN|EA;laO_$-`cuhSY|v+m39)wz^Yf zZ_T3U!j(cS3|&xZ?RO0b9>%w^o{ufEx8`--XXW$#|E>?#94H+kdn2n=fndScQL3X+xGD6S86dvYL;<-*xSOp`b+Dn zzE~s9!D{6s@%W0BJgMx4?PQ)e0+&F3B~?cD%p%2vywyqC{iKzEIE$(e`x9s_Qp2zl1>Z5_ zqo)w+f_SRJ}-YPaJZ%d`aa z1e_5UYG|=9qy(PyJUE)532qPNw}bdT75>+pn(}w|7KL1oDlY9#_ZrQzo>x?DSc3~8 zx1^D<8_O6nQs3g1v1v9OM^shv^$~3GY$1mT9~aVgSR?d9_4bWw>|F&DuP!Rs2#5DV@>w^-P`(;>3x7E4 zrZVLFws&Gvv~eeDOY_?oX_*bdaeq^8%tiBlrRJBq$Pb5G$sCf8uhcW5n!;*JlWO#* z!!ZhSGe3$FSadphQ-zKb(r7OAiEKz%whH{z>_w-7wh-j8sJF$wB%%xA0RgFZ(tR>T zVGKG~6d&k30*LlbVkX3@niBe*bA94xQ9L+Sv>1MJ_c?C1I9I*1aZlqgIvsP&E`aVZ zRImpijcQx^e?thKCXXskoPU2Pi?vyqW0!J{o|uq86zif!)&A+z!KGTwtevOt`M|&p zcZp_Ahb9@2!4D0!kT6~z541YiAlBdkIL?{yS(v;yNvPLFMXjySv{E6kD(8JgHAHV< zKzl|Z)4qwImtTf5S+rJBIH~RcHU>&a2~LHs6*7X-Xot_cTS7MIFk_Eudaq|R`p;hQ zUy5L@h~(hsQ}q+*2sz^EBXFd)I$)S*doVOQjq+Zhq>C(Sd=0ttfxdD@Z?)r6F1xO^ zkLnskch5;46q~FZIoI)$J;xFz6O0+vZ5<0mMMcQ$Nq;f2Fs|Q@5m?s2i465r-ujkn zB9{j^CG$P+$xf?rOQG!YKL~d(ss5@%VwA+Hd~P;hS&Jr=SfaFrQI=>w3VRa;sAOIC zVKfOG=}E`J^|4c40HFA0Cu{#pSAeVGJBP$lBQcSmrDU^`=Tkfm#{mt_XahO}n%~)~ zX9W^@grqiabL?;n3|rLgNK_5YXdcQfYb_~tDFuerR za?zu|P(O3bG+9wh*aeF@0!Tkp+HB(}s%y|_B~Ml#{#6};=1B5rl~GixCS2mUPF%2N zRdBE|5^F3yFMtRq)-@9Jl;0Lz`vtztKe-;ipZOOya!+Nc3C3C{MX5E<`mI^~=zAP# zwzM#1%S)L?V88?-gey^WS!Cv^KcmROmb7a%PZGseiJ=Wue>6J2t}sO-B8%Lcozu$1 z#jl^{W3Ncl*pP`TL|)(%)2M36mUqMTCq-7`cXJl07d(rtrRxKnBs0>aqt5$Cim43{ zF4p|}5cSQKVIs$cUyIRELDWa+MAk7{wj9s2vTprIK=-_Y5H^mG9kty5-CbLa%=+%3 zrpf1xp9Lf-(V|sreuG*J7BKm>w+4Li34bu$N%5Tg9AH?pRUHE-SvXQiD3;11i82VX zL&IC%l67U`a=VkD_E2A6uLK_7apS-GUg6X!35lOm4|7`iA76nt=%znOVNGr-(ZX)% zg6bvG0s205LFMFk9ZMQ_a%C`o+_(2m`$Rixbu+x_HG0(Psxfq=pkkURRQwsm#HBY7 z_7s&p;Qf26sQhw9qv{s@l_;r&m<_hr5jjzKS=~B2Kw@1Z{Z3!c+~|L6S8WMLz2Y`*A@4|8D$6KW5#sn@1YsnU@>RrnFVAlS)n8dzX*c zJ~x(#HKYh$G;Wy>!Y+UQER#$BMsNS4%x5~Yl$I`Fxq1`(_JR_2E3s1Ou!_H#1-;bp zk{3yc-e7aOWR`70V)KJIf;Mxa=Vx+0ek6uHA9if^RO-?<0%b=BUKH#z8DzxA$_hQB zKY<}*xL;;B%Xh!1_CNO zZToVQ-U<4H57fa_pS`^&cKzSuMjp#1)!8L4H$b~#~6vrDvW z7q|6Il(_g-MH1>gkW7f>*x`22eV(teilia;r~Ykn80 zUq6{ly7$>S(S-1(L2p8;U4jy~<|(&#A@+W_RtC+-6pqCm_l%SH!mmUn%oS)G;BRD` z;Aomg-W8#h<|USvLJ+V?b;IE~{n}Be2q|ZP#H*)g+x&vD=Kib#TT}L`q4vt?3PEub zsXW%Od?F<|UCra_s=8xuq|^P4728;T4>ILI%r`y8Z&VWuE{ogrF0l@z;qZu;B<)m_Iwv zNrTtnSQgE%W-V|7i|3BqrH<6JXz&HTU%&hN&9v`K0U-3cA3k^3{Pl%6aU<`=hU}e| znIS!uwnBQ^HQlI0h_p6|xsJ$b(uztGr`vwii^&vllk!Uc5P-bh#a#WbfjnEl=H?Fg z01D5i6;q-6A0?@=$f~HpEgiKfSRKq7@Bd6FE~~|IMRKmPDyg$i?Tni?= zw3dh|2jYJe#+9Yls3iZKM`K4ZesbjA(4QW!{EqddO0-^o^eCl5 zVI=+KnqDlD&@A0Q*YZSX0iT#d!tX9)bCjj&a02xwlPhLF{jATfv4}!#_#D0DV#nua z^ROSpJb%Is?t;4V!je71iZvbIoa{A{cmkOr<1x0UI8tDk5GFYmdS5^iLjT z?h|*d7Fs+@wwVHMefyJ4<@@q$g)J^QLM|l}X)T<86aJ0p7AI`>jir~}%19)Ng8))L z?o;pX1<4ck!LET{$I#3}PSudu%SM91CNYwTSSwH6{)9sU^&yU&Z)T>bf7oGxO838% zvajVbXcKQ_+(yE8`#{7S(9i?2ZfIwZfz>V`dLd74#OnNXQ(OvIp2oOf=fKf-r2t)V zRc6U#Zm&~_hiVWpI;;K*v$05DInDK1aiQ2FQ=IN+S$kWpbY6xy9!6Wmw9q z%v2?e#A##gnHA8)m}gGUv{Q2Q?>NPeUgA4n)pD1t&pjY;58&64EA2ZGd)CSdt~(L+ zgA0+R>kE^&uz5U<3BT|y!NR$HzCsl@Vi;PoLWO`KuB^D>OZj4oh*;pW>Ej3XuR^8x zTMTH?FRpwf9H%M*SoerEhK0YzC}#3dNeI3kJM(f`!iGgNyYW%O*}_Jl@VoIb{hJ_* z7qpUKeMm3EMQ^?CAR)!AE%OTx)Xt2q5u`2lW-3=VC0IU=99I2NuJtHi9eru?)1X25 zdwz{@KsY7SB2z_ffgNCXRr?3QKgrLsJo>YCogxrhoQ-c(?$?u}Ulk#KSg9^Z5OyM( z!AV8C6fNCfQr3^MxS)+Me%@-V*D4E37<$`k%WAU;j~9JsW~_wZ2q#8(SB{Gi3e`pu z%R!(iz&*6XXgJH>`$y?Yrhq{-tRdI0Z8unxC$zHT5gP}|Na9(mBn^{k8TY9m+ zLQw*d{^Z@7i45PCWz;w==jf&FHL*$k$e*p#@tIMzStS}+<9A{dtshK?Hi4h6E2ddj zPu1+%+N zG7mPF_J`^J>y1wd7S;*iq0rBr-dXH6O~@ zwjIW}bt!d)+RP(2;Gr>#GDhHfl+7IcrC)pR0bQcpEu3aUu&ZHl9_;Ag*Z`~dHr$?s zs&yeU4|Lo+8LcNSbK~NOut?=Zr6s-!^uD;3ZdA{v;;SxpJNfgSWg(w$)S`%(!U%f$ zWd35B0kU&!Ln}iso^4+y{SP9|xnE|hXl167WJ~_iY;3U&vtv|T`V19~_1wgmOBUse zvALU-DiwStvgaLj6xTpc{PL#)2Tgj!Gvu~BEsWN@gxU_yM}nWN+^u|N{HwUpyC;%r zUIJ)EG45W=TsY6B^0koC5v^uqSd>3}I=By>Vu1Kh(dq;EWBCt$O)`xpM-mwQpGvt3 z^Do7F5i40>=PnU+;NJuH+c++ugOQx@h?V2a8z{f?1}^@&_65PO55QS>X$&iq5dTDa zm%;Y`i~;}o0)E!D*~EjDRjXE)K)FZC{`0?&QsL+wnrfB=;}-M@sV$jAG1=bB$4PO8W0B{^AQQYr)qRbd34|ESRbwH*1%~RabOaR2365$(9{z9q86rp}USrwRPj2T3sIc*vuZ;Tv!aV5s- zdFF$Hj1d7Q(KwW50clWK+GX@c0p_n$#GX`bn>W1Av{Rlu>H}{^Z%F##XH}#|P7Hlt zl3;okqHiC9=^wco8SnV>N~)W*X*)Ip=9oTLy35d3pL%}@%BMd{MF!eJ6~3ePzU#TY z4;olKCUWKfyeCCuUeVc3Q#+`K^}F@@SYDl^1<@B($mqFQc>6|3f8&gB;s^l;K5)ZEw4fx)Su<_HJH! zOcAu1heOX6fzg5Z1-56~et`-xfeHzJTg2i8dZG6dv9`-SHKC}mBeTSuwpH6qSBM#m zWrv|3aI;E;NcAj`D0r&~>Z(S2ie;lcDL*etDOg&@{`9K>*h+69s(vS=Ii$^HI>sp< zuJR=Q2Q+_~T>Z0>6~V+EGw<2sj<;82JX4WcUz^hI{y?zkc)qXJ-P!qq)R`LaDO0*S zHa4N(zleDIY9|9BTkiw?wIOk^19Bpa>iFmKErlOOrq!S9)VhYyIg_Eq54iVU*GVoL? ztGQ#NiM7gP?6u^@!(bw)naX z^$0wx{>amMxPL=D!ggb#nDeKo`>_Js9kBUhc4qDymZ(I5-+oGAGd#4=P7@w(eCai` znZhXj(Q!I&dHu1pp1NJW68CKh;q~16==UcY7bknB^OIe-6>bwl=x;OfD3dr|W9P(b z(h;ABJa6&}Fpm<0LZoH{OoKG>jxbLk_vK4cPnes9j5V8AiqEMom?6y@;MnDhTBsk+wDz%M6UHpC1z>+--TK(bnLNJq9g$>? zE&fIFcOpI5J%GH{)B8=K@qauPAX086Pr3SObD+J+JNldLbaqomQ{>W0l@^oA8_$Vo z{vk_GhMj3~y~-8Y$h*#F(5ko~-sT(2(pZJ$>{w;ASJlI4ZKlp*Rg%{Pj7rq4Z=P{J z4u(n}dah~t=yap_=8-Xz9+gr|dQ^2R`9+XMQ#iUBb;|zis03F<2E=IT?V({f6n`#R%p6z|37Oj{(t8F->y~v;}ge& zu3nQ`g4$GM^>yd5=%)v+M~#fD1V9Eaurp-UN{A2F*KH-pR~t!9yst=fu{M|gU#I+kqMhAOXBc}FaE4`q0bH?HfQLv> z79l|>vc*H{AFHVqzZR8OKkJo>Wf?*!&IHv&67cS8)&ehu(yjP1JbeB@eOd_4i^$^+ zT*oS?WncnJ$9}Yzo%x&Lh3kL6==5vU|6jV@;{Wx|+T8!&b>07p7{@sNAZn4TJ7qB+ zqguaDQ|f07)UzNWsvp7+;?wYy5(+*~As|TAyx-U*`o#7;e3X&OSi5^p8Po#gzL;gi z{K`(VBBB5xnKE>j7rl4IcQY~wNMVft7RtsSuvKn6o{n73Z0pH``&NG~SIb?yyFcYi zt4m9Z@aOhmuRAQouub5f#BULR)FHr?K;cB7ys;E<$)Lc`>HHU6GvKZVX&<{8Tp<6s z1F^np`roU|^Ywqd=YN2jWry(Sb2?&v=8`Zg4)}2h^T6N&%sEoB0d>>Ejz(%*W&z7p zkxlRcGqWv>V;zG>;*@{vk7$}Pu_g6=P)91w!W6cpGT=G|^-0k0lnWVyjvqo|6?Y-e zU51BOc2Xhx?u5K4A0hAA6H@3pS`?qSeagGQmRLF@q3jtuUG@~H<7NC?W?S7_0jDBO zUb#%|YS$=e*e!{$Tw)UE1v)cDr4_+vtCX)n?7z!>*58pcIe8 z=)O{#yFe{KBVcgX)? zd??~aR0xLtp2&duVH9TI(rCy;rsBfkG{#UQgwSFYKrj+0m7c*106YlX2ktDCs+>KQ zrdArNcU9LKx?{&>WGPs^Mzr2oB|!D+($dm}7%EE$-==?i)(>2~|C=@KR9IGMb9Hxk zA$=qT0+d$XRG%iuRBlPtld5#T50B!gA_Js71lv_xx22*JWHPWR&+^FhdsSw3WbnLA zPGs$u zit%Zl5O05alDO$T+dP`ATHoW2i9!7kXPWyNPu20J4FT{&_Ky55n~zFj`n|i@l~eK4YDujeYKN9A3sMjP~+?UUxs0#UYc)`hY8rQkawV>oTWTc0rphv zLP@=;_B1WuMMB}Ji2$$3_@iTFRk@u$v8xs$`h0%{J7NXXBfIM7p1x{$5K4lj_P6rE zr%1-zlvK7;mm%tuWg?nAE&-_aZPvA%bMYeGvdM5V;SU{L4?D5&Kc*@6c|3}6wo;s; zYU-Kd8a?w0hC;zuU6o)J(`v{HJ$&1#vUw~6jgaobq@{1wb*o$GY83DGnNku2;_pix zzzctAuhWY=8mji0GnM~C(#sKSqwXp<_zx;Kzfy6_A z%5DF=25TwZWHmW@(fM7KBkCggpNhUVxM|K8BR_!qwvs4uo+cb9ON-Z0-P%AK$>RM%e&)`TD zVE%8b9pRXrIc*LAa#nQ!0631QFewJ@Fth8c6)NC^UoT9``U^d&dKVZq>EM}wBV~UB zb4tFVq0~j7kX>JkVOp7CD!X+I`&XQIgoJ4^;Y@o!bAvD2Z>CC+V%DO$Az~s^r`4>_ za86N7%&J?8QX_0eTzbV;strYXIhHr0yjf^{vcY zt|eHZtfyCSndKC!ceT}h;R>%QMznu*W=&UO*2*u%dd4!A4XCWVLUk1Zo*up~m$|8p zg1N=Qcbvip$A}GSN?>Ujm8q4c7hN$ok1A`jgq>M!(G=B@I|k*5%@gpt3vVeUak>Na zFc>W>C*IS;*Qjl(tDl-)H|jf@bg&X81uA1<8ID5As&;)H3D~egtz{Myzvh2Ggj6Q= z!S2EY;ivBwCN&JxJ?UKJ{og=Q3N2EVcM$(4Ti8<<-Ahv0S`BzRhUqct66--LW zx70sgWJ%z349PJXzhEg>is^rzVtlnyG7MG7cVQ_Nh&je%=Obn5$zqf~6b=MsU0{XE z-clFXOisq!fBzq3z}|X*XB+RWG**Wd3M@uk2pXf>V#@L?1j#VSC3sH41mCTA0tsI2 ztxDvhecAqfnDxDae5s2KXX6v-iJ19EEG6_!9!j17_P{d`)q?cw=FNZZO)mohwE1~z z?V%d8_JR;_0;#HjJRZ?3JPcK&a`5VeS8I3^kE9ENn4&xR*MJyohgnKV{Qe(79&tgo zcpUTOhaE7m2vV(IN1pHiVoAZ%8cl}`5Wsu<%96wZo~Ob{4Jap6>w&9c7>E{dtt=6n z=S1YRNTQMSGtKktewcrPTYLS)FHzqI1?~6$0Kr2c$5r(R?T1=G?D0eZ3Fyax_`t18 zJ7%Tw9gl#ppbZ)NmxOO0=Hy`>Mj$^q%#$EuJu;w?kVv+7cDA2vJ=}cMgHUDJ`@g|W zg@HgK125g+#z~XIq=Ami)(yu3LW0dyCd^{b zx3``?-hOg_^ZwJG9KfP#P?BIU&(&fBBfA~6@F%txc$rX6y(2cH{@K$!18rOe-M@`K zE-|zk2UT2rtqnntJ}SLnr7SjuLD1RK;60`zO(DkMNy5RINit9w$w)5h#Mhc|gH!*eIeI%xN_tEg74!Y)el`{Ot*O zEqcU)xMT!u3Z@-n(G%P$%sooa{#@XQm^+eQ>&n$YCC{!e{eL|bk(uZJAmvHsVR+Mo ze;gxlf&Ry><%a&}t=n_`|6ktuU+Rz<%MRz6sYzC!gJ6IBT8H-_TmV>X1i)+TSy#LCjjip29YC%*wM^)&lU!FNkvL0o`c zC4K>4CmMfTyxeVn7HoWhXMX;F z63+i}{C`vaw{~kD|M#Er{J#vx4;Sqj3_l8zKJb5@pl7W0d3KiFdK26xd3*nSyUon? ze{K4IOShI=^#5+n?Z4*h|Eh9=`MUoE_8(RM|AjmFkJu0{^#9*j|F>6`=j;Dk{#9{oiibf8M?|*Z==A z>%V{S?%J=d{joCDj^>O1m%9FIfdN0+72tySA4^U9@6}t&^ZWnx@c+{P*R~K4SxhZ) zkXQRWVLmd_89ihX-Iua#ZQa8YkmZKMh?>A?6ojb??4`)1lr>}N`@cv5bRqQ*7|~PC z)neEIeapaFg(c&VYYmk+OQn)Gp|bQ}c@cm8jFJ(HxOROgTp6tk#ibcbj?g!mDq5I} zqQ|n*{s*1kAk|{OwgyoC|MCg!hA*F3F6j0B_#J%x_#FyHU;O{=T}yA{HW0r1R}6$6 zs8&uK+YMR++ij6;iv^qn+l}{9Y`cm@8*KD&DalCC`X}Yo+aBvbR?G}ZJ=V!4Mb>`> z3h827qR3Cwkmh6N`_Adw#rYZiToMfqr}Iw#{)=dF@DndiF*?DU7DSBG+=6J8$}up6 z$O4+cmAuIo)}M7Z+8#85B3&M}2Y+}z<`z9Mx^gzQlE#IGVhxC0aROd~QAR|Cxz6Ge zB_I9-54So z*#K{}9`3@lY(o0+Dbc_o91RA8$AhwV=U`oAsf@$u>5zT?FOf})Ca|e0baoG_TKY%6 zJ!5bm!DAbt19Xax=y0-qf2rnA25eV#Jq+Kh^&)4ct=tW)cE=-YtgPj|33`8TyYXB% z{=@NKrMG=p>Nwxi_-`;c9)39f8+GeH`=9^CD!ux36{;+*i*?Y6O0J`8GymK9U#X%` zK>znq{YTvEZSnt&j=T7ey&P_@vQY#6fth~|8rEnYD)r$zn+ZB^AUaa2Yf#oZazCytw|eWHTi?U%Bm4K z7$TZBGd0Rzw?up}>JnGn87eVu+2CBv6FJX3j>)e=*6|jj?1(i*&Pji^G9p<>ov3ts zn-{3TE^P3|$fpVVWtdCnaYvzc_(ox=%T)#fgO>AEIG66N^j|XW z_leY5P-CMq8b=4UA{l!h&R5KhaR6r)oaI)>4`e<{wzsK5mol}GT3WX_EHH1j0=D!K zh}H}CKeT$Zn>QoU@5E;}a;OCAxfMip418paRvCRHY^do8R|vL1ff`0lip)RzCfv|Tp%=H*V7|W2IAp&nTjN-9lhxgk^ zuC$zog^b{P6uqji31U-0Mz<_2R9d1-fK0fL$JM+Axn#1<&d}ktB7J|yMG60%QSfm3 zz&jveBr_%NMw)vb|FvZN_BH=I9`Bg{b^P!D!Tb-&T{V9TX``#ISwyO23elbT8)jxj zh5&O~2*d9(0ioIFm=~Th6*(T)ToxB9ky%*?_AIcRFqAxiB=@=RG#wFle)N~4aiuN| z3&_v|KH}l0>z4u`_DFR4FX^5L-Stg6^Vdw&WAuc$x^|6j{ow?T0=S&O5V^phDO^RV zHa`B3*x@&fN9VlyDE5BUlZI60GZ1Umzmqp@GBHy{hK}J%-sEEKS8PRHFW4R3(H)=Y N_y=`vh$H}10suoR(YF8q diff --git a/src/auditoria.ts b/src/auditoria.ts new file mode 100644 index 0000000..7640e61 --- /dev/null +++ b/src/auditoria.ts @@ -0,0 +1,28 @@ +export type TipoPayloadAuditoria = { + /** UUID do usuario da acao (pode ser null se for processo do sistema que não registrou) */ + usuario_criacao: string | null + + /** Timestamp ou data de criacao / execucao */ + data_criacao: string | Date + + /** Nome exato da tabela no banco que originou o registro */ + tabela_origem: string + + /** Código único (UUID) do registro na tabela original */ + codigo_origem: string + + /** JSON contendo o snapshot das colunas novas / editadas */ + novo: Record + + /** JSON contendo o snapshot das colunas antes da edição */ + anterior: Record + + /** Hash ou controle de versao do item, usualmente preenchido por new.ver_seg */ + __versao: string + + /** Tipo de operação que gerou a auditoria */ + acao: "criar" | "atualizar" | "deletar" | string + + /** Versão do sistema no momento em que a ação ocorreu */ + versao_sistema: string +} diff --git a/src/index.ts b/src/index.ts index cd207f7..6c1aeb1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,5 @@ export * from "./aleatorio" +export * from "./auditoria" export * from "./cacheMemoria" export * from "./constantes" export * from "./consulta"