@designliquido/delegua-entidades 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/README.md +96 -0
  2. package/fontes/analisador-dicas.d.ts +49 -0
  3. package/fontes/analisador-dicas.d.ts.map +1 -0
  4. package/fontes/analisador-dicas.js +145 -0
  5. package/fontes/analisador-dicas.js.map +1 -0
  6. package/fontes/cache-consultas.d.ts +39 -0
  7. package/fontes/cache-consultas.d.ts.map +1 -0
  8. package/fontes/cache-consultas.js +98 -0
  9. package/fontes/cache-consultas.js.map +1 -0
  10. package/fontes/carregador-lotes.d.ts +64 -0
  11. package/fontes/carregador-lotes.d.ts.map +1 -0
  12. package/fontes/carregador-lotes.js +148 -0
  13. package/fontes/carregador-lotes.js.map +1 -0
  14. package/fontes/carregador-preguicoso.d.ts +34 -0
  15. package/fontes/carregador-preguicoso.d.ts.map +1 -0
  16. package/fontes/carregador-preguicoso.js +157 -0
  17. package/fontes/carregador-preguicoso.js.map +1 -0
  18. package/fontes/colecao.d.ts +74 -0
  19. package/fontes/colecao.d.ts.map +1 -0
  20. package/fontes/colecao.js +374 -0
  21. package/fontes/colecao.js.map +1 -0
  22. package/fontes/construtor-consulta.d.ts +129 -0
  23. package/fontes/construtor-consulta.d.ts.map +1 -0
  24. package/fontes/construtor-consulta.js +446 -0
  25. package/fontes/construtor-consulta.js.map +1 -0
  26. package/fontes/contexto-entidades.d.ts +119 -0
  27. package/fontes/contexto-entidades.d.ts.map +1 -0
  28. package/fontes/contexto-entidades.js +329 -0
  29. package/fontes/contexto-entidades.js.map +1 -0
  30. package/fontes/detector-n-mais-um.d.ts +87 -0
  31. package/fontes/detector-n-mais-um.d.ts.map +1 -0
  32. package/fontes/detector-n-mais-um.js +225 -0
  33. package/fontes/detector-n-mais-um.js.map +1 -0
  34. package/fontes/entidade.d.ts +82 -0
  35. package/fontes/entidade.d.ts.map +1 -0
  36. package/fontes/entidade.js +467 -0
  37. package/fontes/entidade.js.map +1 -0
  38. package/fontes/erros/erro-concorrencia.d.ts +11 -0
  39. package/fontes/erros/erro-concorrencia.d.ts.map +1 -0
  40. package/fontes/erros/erro-concorrencia.js +18 -0
  41. package/fontes/erros/erro-concorrencia.js.map +1 -0
  42. package/fontes/erros/erro-tabela-nao-encontrada.d.ts +4 -0
  43. package/fontes/erros/erro-tabela-nao-encontrada.d.ts.map +1 -0
  44. package/fontes/erros/erro-tabela-nao-encontrada.js +11 -0
  45. package/fontes/erros/erro-tabela-nao-encontrada.js.map +1 -0
  46. package/fontes/erros/erro-validacao.d.ts +9 -0
  47. package/fontes/erros/erro-validacao.d.ts.map +1 -0
  48. package/fontes/erros/erro-validacao.js +13 -0
  49. package/fontes/erros/erro-validacao.js.map +1 -0
  50. package/fontes/erros/index.d.ts +4 -0
  51. package/fontes/erros/index.d.ts.map +1 -0
  52. package/fontes/erros/index.js +20 -0
  53. package/fontes/erros/index.js.map +1 -0
  54. package/fontes/gerenciador-cache.d.ts +87 -0
  55. package/fontes/gerenciador-cache.d.ts.map +1 -0
  56. package/fontes/gerenciador-cache.js +147 -0
  57. package/fontes/gerenciador-cache.js.map +1 -0
  58. package/fontes/ilc/gerador-definicoes.d.ts +13 -0
  59. package/fontes/ilc/gerador-definicoes.d.ts.map +1 -0
  60. package/fontes/ilc/gerador-definicoes.js +96 -0
  61. package/fontes/ilc/gerador-definicoes.js.map +1 -0
  62. package/fontes/ilc/gerador-entidades.d.ts +10 -0
  63. package/fontes/ilc/gerador-entidades.d.ts.map +1 -0
  64. package/fontes/ilc/gerador-entidades.js +318 -0
  65. package/fontes/ilc/gerador-entidades.js.map +1 -0
  66. package/fontes/ilc/leitor-configuracao.d.ts +32 -0
  67. package/fontes/ilc/leitor-configuracao.d.ts.map +1 -0
  68. package/fontes/ilc/leitor-configuracao.js +124 -0
  69. package/fontes/ilc/leitor-configuracao.js.map +1 -0
  70. package/fontes/ilc/migracoes.d.ts +3 -0
  71. package/fontes/ilc/migracoes.d.ts.map +1 -0
  72. package/fontes/ilc/migracoes.js +215 -0
  73. package/fontes/ilc/migracoes.js.map +1 -0
  74. package/fontes/ilc/semeadura.d.ts +2 -0
  75. package/fontes/ilc/semeadura.d.ts.map +1 -0
  76. package/fontes/ilc/semeadura.js +50 -0
  77. package/fontes/ilc/semeadura.js.map +1 -0
  78. package/fontes/indicadores-performance/executor-analise-performance.d.ts +80 -0
  79. package/fontes/indicadores-performance/executor-analise-performance.d.ts.map +1 -0
  80. package/fontes/indicadores-performance/executor-analise-performance.js +212 -0
  81. package/fontes/indicadores-performance/executor-analise-performance.js.map +1 -0
  82. package/fontes/indicadores-performance/index.d.ts +26 -0
  83. package/fontes/indicadores-performance/index.d.ts.map +1 -0
  84. package/fontes/indicadores-performance/index.js +199 -0
  85. package/fontes/indicadores-performance/index.js.map +1 -0
  86. package/fontes/interfaces-tipos/analise-n1-interface.d.ts +13 -0
  87. package/fontes/interfaces-tipos/analise-n1-interface.d.ts.map +1 -0
  88. package/fontes/interfaces-tipos/analise-n1-interface.js +3 -0
  89. package/fontes/interfaces-tipos/analise-n1-interface.js.map +1 -0
  90. package/fontes/interfaces-tipos/atributo-interface.d.ts +30 -0
  91. package/fontes/interfaces-tipos/atributo-interface.d.ts.map +1 -0
  92. package/fontes/interfaces-tipos/atributo-interface.js +3 -0
  93. package/fontes/interfaces-tipos/atributo-interface.js.map +1 -0
  94. package/fontes/interfaces-tipos/coluna-computada-interface.d.ts +16 -0
  95. package/fontes/interfaces-tipos/coluna-computada-interface.d.ts.map +1 -0
  96. package/fontes/interfaces-tipos/coluna-computada-interface.js +3 -0
  97. package/fontes/interfaces-tipos/coluna-computada-interface.js.map +1 -0
  98. package/fontes/interfaces-tipos/configuracao-banco-dados-interface.d.ts +48 -0
  99. package/fontes/interfaces-tipos/configuracao-banco-dados-interface.d.ts.map +1 -0
  100. package/fontes/interfaces-tipos/configuracao-banco-dados-interface.js +3 -0
  101. package/fontes/interfaces-tipos/configuracao-banco-dados-interface.js.map +1 -0
  102. package/fontes/interfaces-tipos/entidade-interface.d.ts +37 -0
  103. package/fontes/interfaces-tipos/entidade-interface.d.ts.map +1 -0
  104. package/fontes/interfaces-tipos/entidade-interface.js +3 -0
  105. package/fontes/interfaces-tipos/entidade-interface.js.map +1 -0
  106. package/fontes/interfaces-tipos/ganchos.d.ts +12 -0
  107. package/fontes/interfaces-tipos/ganchos.d.ts.map +1 -0
  108. package/fontes/interfaces-tipos/ganchos.js +3 -0
  109. package/fontes/interfaces-tipos/ganchos.js.map +1 -0
  110. package/fontes/interfaces-tipos/index.d.ts +17 -0
  111. package/fontes/interfaces-tipos/index.d.ts.map +1 -0
  112. package/fontes/interfaces-tipos/index.js +33 -0
  113. package/fontes/interfaces-tipos/index.js.map +1 -0
  114. package/fontes/interfaces-tipos/indice-interface.d.ts +16 -0
  115. package/fontes/interfaces-tipos/indice-interface.d.ts.map +1 -0
  116. package/fontes/interfaces-tipos/indice-interface.js +3 -0
  117. package/fontes/interfaces-tipos/indice-interface.js.map +1 -0
  118. package/fontes/interfaces-tipos/informacao-consulta-interface.d.ts +12 -0
  119. package/fontes/interfaces-tipos/informacao-consulta-interface.d.ts.map +1 -0
  120. package/fontes/interfaces-tipos/informacao-consulta-interface.js +3 -0
  121. package/fontes/interfaces-tipos/informacao-consulta-interface.js.map +1 -0
  122. package/fontes/interfaces-tipos/muito-para-muitos-interface.d.ts +33 -0
  123. package/fontes/interfaces-tipos/muito-para-muitos-interface.d.ts.map +1 -0
  124. package/fontes/interfaces-tipos/muito-para-muitos-interface.js +3 -0
  125. package/fontes/interfaces-tipos/muito-para-muitos-interface.js.map +1 -0
  126. package/fontes/interfaces-tipos/opcoes-serializacao-interface.d.ts +14 -0
  127. package/fontes/interfaces-tipos/opcoes-serializacao-interface.d.ts.map +1 -0
  128. package/fontes/interfaces-tipos/opcoes-serializacao-interface.js +3 -0
  129. package/fontes/interfaces-tipos/opcoes-serializacao-interface.js.map +1 -0
  130. package/fontes/interfaces-tipos/polimorfico-interface.d.ts +32 -0
  131. package/fontes/interfaces-tipos/polimorfico-interface.d.ts.map +1 -0
  132. package/fontes/interfaces-tipos/polimorfico-interface.js +3 -0
  133. package/fontes/interfaces-tipos/polimorfico-interface.js.map +1 -0
  134. package/fontes/interfaces-tipos/relacionamento-interface.d.ts +23 -0
  135. package/fontes/interfaces-tipos/relacionamento-interface.d.ts.map +1 -0
  136. package/fontes/interfaces-tipos/relacionamento-interface.js +3 -0
  137. package/fontes/interfaces-tipos/relacionamento-interface.js.map +1 -0
  138. package/fontes/interfaces-tipos/restricao-interface.d.ts +14 -0
  139. package/fontes/interfaces-tipos/restricao-interface.d.ts.map +1 -0
  140. package/fontes/interfaces-tipos/restricao-interface.js +3 -0
  141. package/fontes/interfaces-tipos/restricao-interface.js.map +1 -0
  142. package/fontes/interfaces-tipos/semente-interface.d.ts +7 -0
  143. package/fontes/interfaces-tipos/semente-interface.d.ts.map +1 -0
  144. package/fontes/interfaces-tipos/semente-interface.js +3 -0
  145. package/fontes/interfaces-tipos/semente-interface.js.map +1 -0
  146. package/fontes/interfaces-tipos/tabela-interface.d.ts +12 -0
  147. package/fontes/interfaces-tipos/tabela-interface.d.ts.map +1 -0
  148. package/fontes/interfaces-tipos/tabela-interface.js +3 -0
  149. package/fontes/interfaces-tipos/tabela-interface.js.map +1 -0
  150. package/fontes/interfaces-tipos/transacao-interface.d.ts +35 -0
  151. package/fontes/interfaces-tipos/transacao-interface.d.ts.map +1 -0
  152. package/fontes/interfaces-tipos/transacao-interface.js +3 -0
  153. package/fontes/interfaces-tipos/transacao-interface.js.map +1 -0
  154. package/fontes/migracoes/executor-migracoes.d.ts +14 -0
  155. package/fontes/migracoes/executor-migracoes.d.ts.map +1 -0
  156. package/fontes/migracoes/executor-migracoes.js +177 -0
  157. package/fontes/migracoes/executor-migracoes.js.map +1 -0
  158. package/fontes/migracoes/gerador-migracoes.d.ts +15 -0
  159. package/fontes/migracoes/gerador-migracoes.d.ts.map +1 -0
  160. package/fontes/migracoes/gerador-migracoes.js +108 -0
  161. package/fontes/migracoes/gerador-migracoes.js.map +1 -0
  162. package/fontes/migracoes/migracao.d.ts +35 -0
  163. package/fontes/migracoes/migracao.d.ts.map +1 -0
  164. package/fontes/migracoes/migracao.js +66 -0
  165. package/fontes/migracoes/migracao.js.map +1 -0
  166. package/fontes/migracoes/semeador.d.ts +18 -0
  167. package/fontes/migracoes/semeador.d.ts.map +1 -0
  168. package/fontes/migracoes/semeador.js +109 -0
  169. package/fontes/migracoes/semeador.js.map +1 -0
  170. package/fontes/rastreador-mudancas.d.ts +27 -0
  171. package/fontes/rastreador-mudancas.d.ts.map +1 -0
  172. package/fontes/rastreador-mudancas.js +94 -0
  173. package/fontes/rastreador-mudancas.js.map +1 -0
  174. package/fontes/relacionamento.d.ts +11 -0
  175. package/fontes/relacionamento.d.ts.map +1 -0
  176. package/fontes/relacionamento.js +15 -0
  177. package/fontes/relacionamento.js.map +1 -0
  178. package/fontes/roteador-bancos.d.ts +50 -0
  179. package/fontes/roteador-bancos.d.ts.map +1 -0
  180. package/fontes/roteador-bancos.js +90 -0
  181. package/fontes/roteador-bancos.js.map +1 -0
  182. package/fontes/serializador.d.ts +46 -0
  183. package/fontes/serializador.d.ts.map +1 -0
  184. package/fontes/serializador.js +79 -0
  185. package/fontes/serializador.js.map +1 -0
  186. package/fontes/taquigrafia.d.ts +41 -0
  187. package/fontes/taquigrafia.d.ts.map +1 -0
  188. package/fontes/taquigrafia.js +96 -0
  189. package/fontes/taquigrafia.js.map +1 -0
  190. package/fontes/tipos.d.ts +3 -0
  191. package/fontes/tipos.d.ts.map +1 -0
  192. package/fontes/tipos.js +3 -0
  193. package/fontes/tipos.js.map +1 -0
  194. package/fontes/transacao.d.ts +81 -0
  195. package/fontes/transacao.d.ts.map +1 -0
  196. package/fontes/transacao.js +243 -0
  197. package/fontes/transacao.js.map +1 -0
  198. package/fontes/validacoes/validador.d.ts +19 -0
  199. package/fontes/validacoes/validador.d.ts.map +1 -0
  200. package/fontes/validacoes/validador.js +157 -0
  201. package/fontes/validacoes/validador.js.map +1 -0
  202. package/index.d.ts +36 -0
  203. package/index.d.ts.map +1 -0
  204. package/index.js +59 -0
  205. package/index.js.map +1 -0
  206. package/package.json +55 -0
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Serializador = void 0;
4
+ /**
5
+ * Classe responsável pela serialização de registros para JSON e dicionários.
6
+ * Fornece controle granular sobre quais campos incluir e como serializar relacionamentos.
7
+ */
8
+ class Serializador {
9
+ /**
10
+ * Converte um registro de entidade para dicionário (objeto JavaScript).
11
+ * @param registro Registro a serializar
12
+ * @param tipoEntidade Tipo da entidade
13
+ * @param opcoes Opções de serialização
14
+ * @returns Objeto JavaScript com os dados do registro
15
+ */
16
+ static paraDicionario(registro, tipoEntidade, opcoes = {}) {
17
+ const dicionario = {};
18
+ const profundidade = opcoes.profundidade ?? 1;
19
+ for (const propriedade of tipoEntidade.modelo.propriedades) {
20
+ const nomeCampo = propriedade.nome.lexema;
21
+ if (!this._deveIncluirCampo(nomeCampo, opcoes)) {
22
+ continue;
23
+ }
24
+ const valor = registro.propriedades[nomeCampo];
25
+ if (valor === null || valor === undefined) {
26
+ dicionario[nomeCampo] = valor;
27
+ continue;
28
+ }
29
+ dicionario[nomeCampo] = valor;
30
+ }
31
+ return dicionario;
32
+ }
33
+ /**
34
+ * Converte um registro de entidade para string JSON.
35
+ * @param registro Registro a serializar
36
+ * @param tipoEntidade Tipo da entidade
37
+ * @param opcoes Opções de serialização
38
+ * @returns String JSON com os dados do registro
39
+ */
40
+ static paraJson(registro, tipoEntidade, opcoes = {}) {
41
+ const dicionario = this.paraDicionario(registro, tipoEntidade, opcoes);
42
+ return JSON.stringify(dicionario);
43
+ }
44
+ /**
45
+ * Converte múltiplos registros para array de dicionários.
46
+ * @param registros Registros a serializar
47
+ * @param tipoEntidade Tipo da entidade
48
+ * @param opcoes Opções de serialização
49
+ * @returns Array de dicionários
50
+ */
51
+ static muitosParaDicionario(registros, tipoEntidade, opcoes = {}) {
52
+ return registros.map(registro => this.paraDicionario(registro, tipoEntidade, opcoes));
53
+ }
54
+ /**
55
+ * Converte múltiplos registros para string JSON com array.
56
+ * @param registros Registros a serializar
57
+ * @param tipoEntidade Tipo da entidade
58
+ * @param opcoes Opções de serialização
59
+ * @returns String JSON com array de registros
60
+ */
61
+ static muitosParaJson(registros, tipoEntidade, opcoes = {}) {
62
+ const dicionarios = this.muitosParaDicionario(registros, tipoEntidade, opcoes);
63
+ return JSON.stringify(dicionarios);
64
+ }
65
+ /**
66
+ * Verifica se um campo deve ser incluído na serialização.
67
+ */
68
+ static _deveIncluirCampo(nomeCampo, opcoes) {
69
+ if (opcoes.excluir && opcoes.excluir.includes(nomeCampo)) {
70
+ return false;
71
+ }
72
+ if (opcoes.incluir && !opcoes.incluir.includes(nomeCampo)) {
73
+ return false;
74
+ }
75
+ return true;
76
+ }
77
+ }
78
+ exports.Serializador = Serializador;
79
+ //# sourceMappingURL=serializador.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializador.js","sourceRoot":"","sources":["../../fontes/serializador.ts"],"names":[],"mappings":";;;AAIA;;;GAGG;AACH,MAAa,YAAY;IACrB;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CACjB,QAA6B,EAC7B,YAA+B,EAC/B,SAAsC,EAAE;QAExC,MAAM,UAAU,GAAwB,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;QAE9C,KAAK,MAAM,WAAW,IAAI,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACzD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;YAE1C,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;gBAC7C,SAAS;YACb,CAAC;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAE/C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxC,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;gBAC9B,SAAS;YACb,CAAC;YAED,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QAClC,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CACX,QAA6B,EAC7B,YAA+B,EAC/B,SAAsC,EAAE;QAExC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,oBAAoB,CACvB,SAAgC,EAChC,YAA+B,EAC/B,SAAsC,EAAE;QAExC,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CACjB,SAAgC,EAChC,YAA+B,EAC/B,SAAsC,EAAE;QAExC,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,iBAAiB,CAC5B,SAAiB,EACjB,MAAmC;QAEnC,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACvD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACxD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AApGD,oCAoGC"}
@@ -0,0 +1,41 @@
1
+ import { DetectorConsultasN1, type AnaliseN1 } from './detector-n-mais-um';
2
+ import type { FuncaoTaquigrafia, NivelDetalhamentoTaquigrafia } from './tipos';
3
+ export type { FuncaoTaquigrafia, NivelDetalhamentoTaquigrafia } from './tipos';
4
+ /**
5
+ * Taquígrafo, conhecido em inglês como _"shorthand logger"_, é um serviço simples
6
+ * e eficiente para a anotação de diferentes operações, com suporte a níveis
7
+ * de detalhamento e mensagens estruturadas. Inclui detecção de padrão N+1.
8
+ */
9
+ export declare class Taquigrafo {
10
+ nivel: NivelDetalhamentoTaquigrafia;
11
+ funcaoTaquigrafia: FuncaoTaquigrafia;
12
+ private detectorN1;
13
+ private habilitarDeteccaoN1;
14
+ constructor(nivel?: NivelDetalhamentoTaquigrafia, funcaoTaquigrafia?: FuncaoTaquigrafia);
15
+ private deveRegistrarOperacao;
16
+ erro(mensagem: string, detalhes?: any): void;
17
+ aviso(mensagem: string, detalhes?: any): void;
18
+ info(mensagem: string, detalhes?: any): void;
19
+ depuracao(mensagem: string, detalhes?: any): void;
20
+ /**
21
+ * Registra uma consulta executada para análise de N+1.
22
+ */
23
+ registrarConsulta(sql: string, quantidadeRegistros: number, tempoExecucao?: number, nomeEntidade?: string): void;
24
+ /**
25
+ * Analisa consultas para detectar padrão N+1.
26
+ */
27
+ analisarN1(): AnaliseN1;
28
+ /**
29
+ * Habilita ou desabilita a detecção de N+1.
30
+ */
31
+ definirDeteccaoN1Habilitada(habilitada: boolean): void;
32
+ /**
33
+ * Retorna o detector de N+1 para acesso direto.
34
+ */
35
+ obterDetectorN1(): DetectorConsultasN1;
36
+ /**
37
+ * Limpa o histórico de consultas rastreadas.
38
+ */
39
+ limparConsultas(): void;
40
+ }
41
+ //# sourceMappingURL=taquigrafia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taquigrafia.d.ts","sourceRoot":"","sources":["../../fontes/taquigrafia.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAE/E,YAAY,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAU/E;;;;GAIG;AACH,qBAAa,UAAU;IACnB,KAAK,EAAE,4BAA4B,CAAC;IACpC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,mBAAmB,CAAiB;gBAEhC,KAAK,GAAE,4BAAqC,EAAE,iBAAiB,CAAC,EAAE,iBAAiB;IAY/F,OAAO,CAAC,qBAAqB;IAI7B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI;IAM5C,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI;IAM7C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI;IAM5C,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI;IAMjD;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,aAAa,GAAE,MAAU,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IAMnH;;OAEG;IACH,UAAU,IAAI,SAAS;IAevB;;OAEG;IACH,2BAA2B,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAItD;;OAEG;IACH,eAAe,IAAI,mBAAmB;IAItC;;OAEG;IACH,eAAe,IAAI,IAAI;CAG1B"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Taquigrafo = void 0;
4
+ const detector_n_mais_um_1 = require("./detector-n-mais-um");
5
+ const NIVEIS_PRIORIDADE_DETALHAMENTO = {
6
+ 'desligado': 0,
7
+ 'erros': 1,
8
+ 'avisos': 2,
9
+ 'info': 3,
10
+ 'depuracao': 4
11
+ };
12
+ /**
13
+ * Taquígrafo, conhecido em inglês como _"shorthand logger"_, é um serviço simples
14
+ * e eficiente para a anotação de diferentes operações, com suporte a níveis
15
+ * de detalhamento e mensagens estruturadas. Inclui detecção de padrão N+1.
16
+ */
17
+ class Taquigrafo {
18
+ constructor(nivel = 'info', funcaoTaquigrafia) {
19
+ this.habilitarDeteccaoN1 = true;
20
+ this.nivel = nivel;
21
+ this.detectorN1 = new detector_n_mais_um_1.DetectorConsultasN1();
22
+ this.funcaoTaquigrafia = funcaoTaquigrafia || ((mensagem, detalhes) => {
23
+ if (detalhes !== undefined) {
24
+ console.log(mensagem, detalhes);
25
+ }
26
+ else {
27
+ console.log(mensagem);
28
+ }
29
+ });
30
+ }
31
+ deveRegistrarOperacao(nivel) {
32
+ return NIVEIS_PRIORIDADE_DETALHAMENTO[nivel] <= NIVEIS_PRIORIDADE_DETALHAMENTO[this.nivel];
33
+ }
34
+ erro(mensagem, detalhes) {
35
+ if (this.deveRegistrarOperacao('erros')) {
36
+ this.funcaoTaquigrafia(`[ERRO] ${mensagem}`, detalhes);
37
+ }
38
+ }
39
+ aviso(mensagem, detalhes) {
40
+ if (this.deveRegistrarOperacao('avisos')) {
41
+ this.funcaoTaquigrafia(`[AVISO] ${mensagem}`, detalhes);
42
+ }
43
+ }
44
+ info(mensagem, detalhes) {
45
+ if (this.deveRegistrarOperacao('info')) {
46
+ this.funcaoTaquigrafia(`[INFO] ${mensagem}`, detalhes);
47
+ }
48
+ }
49
+ depuracao(mensagem, detalhes) {
50
+ if (this.deveRegistrarOperacao('depuracao')) {
51
+ this.funcaoTaquigrafia(`[DEPURAÇÃO] ${mensagem}`, detalhes);
52
+ }
53
+ }
54
+ /**
55
+ * Registra uma consulta executada para análise de N+1.
56
+ */
57
+ registrarConsulta(sql, quantidadeRegistros, tempoExecucao = 0, nomeEntidade) {
58
+ if (this.habilitarDeteccaoN1) {
59
+ this.detectorN1.registrarConsulta(sql, quantidadeRegistros, tempoExecucao, nomeEntidade);
60
+ }
61
+ }
62
+ /**
63
+ * Analisa consultas para detectar padrão N+1.
64
+ */
65
+ analisarN1() {
66
+ if (!this.habilitarDeteccaoN1) {
67
+ return { detectado: false };
68
+ }
69
+ const analise = this.detectorN1.analisar();
70
+ // Se detectado N+1, emitir aviso
71
+ if (analise.detectado && analise.sugestao) {
72
+ this.aviso('Padrão N+1 detectado!', analise);
73
+ }
74
+ return analise;
75
+ }
76
+ /**
77
+ * Habilita ou desabilita a detecção de N+1.
78
+ */
79
+ definirDeteccaoN1Habilitada(habilitada) {
80
+ this.habilitarDeteccaoN1 = habilitada;
81
+ }
82
+ /**
83
+ * Retorna o detector de N+1 para acesso direto.
84
+ */
85
+ obterDetectorN1() {
86
+ return this.detectorN1;
87
+ }
88
+ /**
89
+ * Limpa o histórico de consultas rastreadas.
90
+ */
91
+ limparConsultas() {
92
+ this.detectorN1.limpar();
93
+ }
94
+ }
95
+ exports.Taquigrafo = Taquigrafo;
96
+ //# sourceMappingURL=taquigrafia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taquigrafia.js","sourceRoot":"","sources":["../../fontes/taquigrafia.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type NivelDetalhamentoTaquigrafia = 'desligado' | 'erros' | 'avisos' | 'info' | 'depuracao';
2
+ export type FuncaoTaquigrafia = (mensagem: string, detalhes?: any) => void;
3
+ //# sourceMappingURL=tipos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tipos.d.ts","sourceRoot":"","sources":["../../fontes/tipos.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,4BAA4B,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAEnG,MAAM,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=tipos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tipos.js","sourceRoot":"","sources":["../../fontes/tipos.ts"],"names":[],"mappings":""}
@@ -0,0 +1,81 @@
1
+ import { TecnologiaLinconesInterface } from "@designliquido/lincones-js";
2
+ import { TransacaoInterface } from "./interfaces-tipos/transacao-interface";
3
+ /**
4
+ * Implementação de transação de banco de dados com suporte a savepoints.
5
+ * Mantém controle de operações realizadas durante a transação
6
+ * e permite criar pontos de reversão parcial (savepoints).
7
+ */
8
+ export declare class Transacao implements TransacaoInterface {
9
+ private tecnologia;
10
+ private operacoes;
11
+ private ativa;
12
+ private pontosConfirmacao;
13
+ private nomeBancoDados;
14
+ constructor(tecnologia: TecnologiaLinconesInterface, nomeBancoDados?: string);
15
+ /**
16
+ * Define o banco de dados para gerar SQL correto.
17
+ */
18
+ definirBancoDados(nome: string): void;
19
+ /**
20
+ * Registra uma operação na transação.
21
+ * Internamente usada para rastrear mudanças.
22
+ */
23
+ registrarOperacao(comando: any): void;
24
+ /**
25
+ * Retorna as operações registradas.
26
+ */
27
+ obterOperacoes(): any[];
28
+ /**
29
+ * Confirma a transação.
30
+ * Todas as operações registradas são consideradas finais.
31
+ */
32
+ confirmar(): Promise<void>;
33
+ /**
34
+ * Reverte a transação.
35
+ * Todas as operações registradas são descartadas.
36
+ */
37
+ reverter(): Promise<void>;
38
+ /**
39
+ * Indica se a transação está ativa.
40
+ */
41
+ estaAtiva(): boolean;
42
+ /**
43
+ * Cria um savepoint com o nome especificado.
44
+ * Permite reverter para este ponto sem descartar toda a transação.
45
+ */
46
+ criarPontoDeConfirmacao(nome: string): Promise<void>;
47
+ /**
48
+ * Reverte a transação para um ponto de confirmação anterior.
49
+ */
50
+ reverterParaPontoDeConfirmacao(nome: string): Promise<void>;
51
+ /**
52
+ * Libera (remove) um ponto de confirmação criado anteriormente.
53
+ */
54
+ liberarPontoDeConfirmacao(nome: string): Promise<void>;
55
+ /**
56
+ * Obtém lista de savepoints ativos.
57
+ */
58
+ obterPontosDeConfirmacao(): string[];
59
+ /**
60
+ * Gera SQL de criação de ponto de confirmação apropriado para o banco de dados.
61
+ */
62
+ private gerarSQLPontoDeConfirmacao;
63
+ /**
64
+ * Gera SQL de reversão para um ponto de confirmação apropriado para o banco de dados.
65
+ */
66
+ private gerarSQLReversaoPontoDeConfirmacao;
67
+ /**
68
+ * Gera SQL de liberação de ponto de confirmação apropriado para o banco de dados.
69
+ */
70
+ private gerarSQLLiberacaoPontoDeConfirmacao;
71
+ /**
72
+ * Detecta o tipo de banco de dados para gerar SQL apropriado.
73
+ */
74
+ private detectorBancoDados;
75
+ /**
76
+ * Escapa nome do savepoint para uso em SQL.
77
+ * Adiciona backticks ou aspas conforme necessário.
78
+ */
79
+ private escaparNomePontoDeConfirmacao;
80
+ }
81
+ //# sourceMappingURL=transacao.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transacao.d.ts","sourceRoot":"","sources":["../../fontes/transacao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAU5E;;;;GAIG;AACH,qBAAa,SAAU,YAAW,kBAAkB;IAChD,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,cAAc,CAAoB;gBAE9B,UAAU,EAAE,2BAA2B,EAAE,cAAc,GAAE,MAAiB;IAKtF;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIrC;;;OAGG;IACH,iBAAiB,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAOrC;;OAEG;IACH,cAAc,IAAI,GAAG,EAAE;IAIvB;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAYhC;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAY/B;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;;OAGG;IACG,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsC1D;;OAEG;IACG,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BjE;;OAEG;IACG,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B5D;;OAEG;IACH,wBAAwB,IAAI,MAAM,EAAE;IAIpC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAKlC;;OAEG;IACH,OAAO,CAAC,kCAAkC;IAkB1C;;OAEG;IACH,OAAO,CAAC,mCAAmC;IAoB3C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;;OAGG;IACH,OAAO,CAAC,6BAA6B;CAKxC"}
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Transacao = void 0;
4
+ /**
5
+ * Implementação de transação de banco de dados com suporte a savepoints.
6
+ * Mantém controle de operações realizadas durante a transação
7
+ * e permite criar pontos de reversão parcial (savepoints).
8
+ */
9
+ class Transacao {
10
+ constructor(tecnologia, nomeBancoDados = "padrão") {
11
+ this.operacoes = [];
12
+ this.ativa = true;
13
+ this.pontosConfirmacao = [];
14
+ this.nomeBancoDados = "padrão";
15
+ this.tecnologia = tecnologia;
16
+ this.nomeBancoDados = nomeBancoDados;
17
+ }
18
+ /**
19
+ * Define o banco de dados para gerar SQL correto.
20
+ */
21
+ definirBancoDados(nome) {
22
+ this.nomeBancoDados = nome;
23
+ }
24
+ /**
25
+ * Registra uma operação na transação.
26
+ * Internamente usada para rastrear mudanças.
27
+ */
28
+ registrarOperacao(comando) {
29
+ if (!this.ativa) {
30
+ throw new Error('Transação não está ativa');
31
+ }
32
+ this.operacoes.push(comando);
33
+ }
34
+ /**
35
+ * Retorna as operações registradas.
36
+ */
37
+ obterOperacoes() {
38
+ return [...this.operacoes];
39
+ }
40
+ /**
41
+ * Confirma a transação.
42
+ * Todas as operações registradas são consideradas finais.
43
+ */
44
+ async confirmar() {
45
+ if (!this.ativa) {
46
+ throw new Error('Transação não está ativa');
47
+ }
48
+ // Em um provedor real, isso executaria COMMIT no banco de dados
49
+ // Por enquanto, apenas marcamos a transação como finalizada
50
+ this.ativa = false;
51
+ this.operacoes = [];
52
+ this.pontosConfirmacao = [];
53
+ }
54
+ /**
55
+ * Reverte a transação.
56
+ * Todas as operações registradas são descartadas.
57
+ */
58
+ async reverter() {
59
+ if (!this.ativa) {
60
+ throw new Error('Transação não está ativa');
61
+ }
62
+ // Em um provedor real, isso executaria ROLLBACK no banco de dados
63
+ // Aqui apenas descartamos as operações registradas
64
+ this.ativa = false;
65
+ this.operacoes = [];
66
+ this.pontosConfirmacao = [];
67
+ }
68
+ /**
69
+ * Indica se a transação está ativa.
70
+ */
71
+ estaAtiva() {
72
+ return this.ativa;
73
+ }
74
+ /**
75
+ * Cria um savepoint com o nome especificado.
76
+ * Permite reverter para este ponto sem descartar toda a transação.
77
+ */
78
+ async criarPontoDeConfirmacao(nome) {
79
+ if (!this.ativa) {
80
+ throw new Error('Transação não está ativa');
81
+ }
82
+ // Validar nome de ponto de confirmação
83
+ if (!nome || nome.trim() === '') {
84
+ throw new Error('Nome do ponto de confirmação não pode estar vazio');
85
+ }
86
+ if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(nome)) {
87
+ throw new Error('Nome do ponto de confirmação contém caracteres inválidos. Use apenas letras, números e underscore');
88
+ }
89
+ // Verificar se ponto de confirmação já existe
90
+ if (this.pontosConfirmacao.some(sp => sp.nome === nome)) {
91
+ throw new Error(`Ponto de confirmação '${nome}' já existe`);
92
+ }
93
+ // Gerar SQL do ponto de confirmação
94
+ const sql = this.gerarSQLPontoDeConfirmacao(nome);
95
+ // Registrar ponto de confirmação
96
+ this.pontosConfirmacao.push({
97
+ nome: nome,
98
+ criadoEm: new Date()
99
+ });
100
+ // Em um provedor real, executaria o SQL
101
+ // Por enquanto, apenas simulamos
102
+ this.registrarOperacao({
103
+ tipo: 'PONTO_DE_CONFIRMACAO',
104
+ nome: nome,
105
+ sql: sql,
106
+ timestamp: new Date()
107
+ });
108
+ }
109
+ /**
110
+ * Reverte a transação para um ponto de confirmação anterior.
111
+ */
112
+ async reverterParaPontoDeConfirmacao(nome) {
113
+ if (!this.ativa) {
114
+ throw new Error('Transação não está ativa');
115
+ }
116
+ // Verificar se ponto de confirmação existe
117
+ const indice = this.pontosConfirmacao.findIndex(sp => sp.nome === nome);
118
+ if (indice === -1) {
119
+ throw new Error(`Ponto de confirmação '${nome}' não existe`);
120
+ }
121
+ // Gerar SQL de reversão
122
+ const sql = this.gerarSQLReversaoPontoDeConfirmacao(nome);
123
+ // Remover pontos de confirmação posteriores (não incluindo o ponto de confirmação revertido)
124
+ const pontosRemovidos = this.pontosConfirmacao.splice(indice + 1);
125
+ // Registrar operação
126
+ this.registrarOperacao({
127
+ tipo: 'REVERSAO_PONTO_DE_CONFIRMACAO',
128
+ nome: nome,
129
+ sql: sql,
130
+ savepointsRemovidos: pontosRemovidos.map(sp => sp.nome),
131
+ timestamp: new Date()
132
+ });
133
+ }
134
+ /**
135
+ * Libera (remove) um ponto de confirmação criado anteriormente.
136
+ */
137
+ async liberarPontoDeConfirmacao(nome) {
138
+ if (!this.ativa) {
139
+ throw new Error('Transação não está ativa');
140
+ }
141
+ // Verificar se ponto de confirmação existe
142
+ const indice = this.pontosConfirmacao.findIndex(sp => sp.nome === nome);
143
+ if (indice === -1) {
144
+ throw new Error(`Ponto de confirmação '${nome}' não existe`);
145
+ }
146
+ // Gerar SQL de liberação
147
+ const sql = this.gerarSQLLiberacaoPontoDeConfirmacao(nome);
148
+ // Remover ponto de confirmação
149
+ this.pontosConfirmacao.splice(indice, 1);
150
+ // Registrar operação
151
+ this.registrarOperacao({
152
+ tipo: 'RELEASE_SAVEPOINT',
153
+ nome: nome,
154
+ sql: sql,
155
+ timestamp: new Date()
156
+ });
157
+ }
158
+ /**
159
+ * Obtém lista de savepoints ativos.
160
+ */
161
+ obterPontosDeConfirmacao() {
162
+ return this.pontosConfirmacao.map(sp => sp.nome);
163
+ }
164
+ /**
165
+ * Gera SQL de criação de ponto de confirmação apropriado para o banco de dados.
166
+ */
167
+ gerarSQLPontoDeConfirmacao(nome) {
168
+ // Todos os bancos suportados usam SAVEPOINT <name>
169
+ return `SAVEPOINT ${this.escaparNomePontoDeConfirmacao(nome)}`;
170
+ }
171
+ /**
172
+ * Gera SQL de reversão para um ponto de confirmação apropriado para o banco de dados.
173
+ */
174
+ gerarSQLReversaoPontoDeConfirmacao(nome) {
175
+ const nomeSafepoint = this.escaparNomePontoDeConfirmacao(nome);
176
+ switch (this.detectorBancoDados()) {
177
+ case 'sqlserver':
178
+ // SQL Server usa ROLLBACK TRANSACTION
179
+ return `ROLLBACK TRANSACTION ${nomeSafepoint}`;
180
+ case 'mysql':
181
+ // MySQL usa ROLLBACK TO SAVEPOINT
182
+ return `ROLLBACK TO SAVEPOINT ${nomeSafepoint}`;
183
+ case 'postgresql':
184
+ case 'sqlite':
185
+ default:
186
+ // PostgreSQL e SQLite usam ROLLBACK TO
187
+ return `ROLLBACK TO ${nomeSafepoint}`;
188
+ }
189
+ }
190
+ /**
191
+ * Gera SQL de liberação de ponto de confirmação apropriado para o banco de dados.
192
+ */
193
+ gerarSQLLiberacaoPontoDeConfirmacao(nome) {
194
+ const nomeSafepoint = this.escaparNomePontoDeConfirmacao(nome);
195
+ switch (this.detectorBancoDados()) {
196
+ case 'sqlserver':
197
+ // SQL Server não possui RELEASE, apenas Remove no ROLLBACK
198
+ return ''; // Sem operação necessária
199
+ case 'mysql':
200
+ // MySQL usa RELEASE SAVEPOINT
201
+ return `RELEASE SAVEPOINT ${nomeSafepoint}`;
202
+ case 'postgresql':
203
+ // PostgreSQL usa RELEASE SAVEPOINT
204
+ return `RELEASE SAVEPOINT ${nomeSafepoint}`;
205
+ case 'sqlite':
206
+ default:
207
+ // SQLite usa RELEASE
208
+ return `RELEASE ${nomeSafepoint}`;
209
+ }
210
+ }
211
+ /**
212
+ * Detecta o tipo de banco de dados para gerar SQL apropriado.
213
+ */
214
+ detectorBancoDados() {
215
+ if (!this.nomeBancoDados)
216
+ return 'sqlite';
217
+ const nomeLowercase = this.nomeBancoDados.toLowerCase();
218
+ if (nomeLowercase.includes('sql server') || nomeLowercase === 'sqlserver') {
219
+ return 'sqlserver';
220
+ }
221
+ if (nomeLowercase.includes('mysql')) {
222
+ return 'mysql';
223
+ }
224
+ if (nomeLowercase.includes('postgres') || nomeLowercase === 'postgresql') {
225
+ return 'postgresql';
226
+ }
227
+ if (nomeLowercase.includes('sqlite')) {
228
+ return 'sqlite';
229
+ }
230
+ return 'sqlite'; // default
231
+ }
232
+ /**
233
+ * Escapa nome do savepoint para uso em SQL.
234
+ * Adiciona backticks ou aspas conforme necessário.
235
+ */
236
+ escaparNomePontoDeConfirmacao(nome) {
237
+ // Validação já foi feita em criarPontoDeConfirmacao
238
+ // Adicionar backticks para segurança extra (funciona em maioria dos BDs)
239
+ return `\`${nome}\``;
240
+ }
241
+ }
242
+ exports.Transacao = Transacao;
243
+ //# sourceMappingURL=transacao.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transacao.js","sourceRoot":"","sources":["../../fontes/transacao.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { ObjetoDeleguaClasse } from "@designliquido/delegua/interpretador/estruturas";
2
+ import { EntidadeInterface } from "../interfaces-tipos/entidade-interface";
3
+ import { ErroValidacao } from "../erros/erro-validacao";
4
+ export type ValidadorCustomizado = (valor: any, registro: ObjetoDeleguaClasse) => boolean | Promise<boolean>;
5
+ export interface ConfiguracaoValidadorCustomizado {
6
+ validador: ValidadorCustomizado;
7
+ mensagem: string;
8
+ }
9
+ export declare class Validador {
10
+ /**
11
+ * Valida um registro de acordo com os decoradores definidos na entidade.
12
+ * @param entidade - A entidade a ser validada
13
+ * @param registro - O registro com os dados a validar
14
+ * @param verificadorUnicidade - Função opcional para verificar unicidade no banco de dados
15
+ * @returns Array de erros de validação
16
+ */
17
+ static validar(entidade: EntidadeInterface, registro: ObjetoDeleguaClasse, verificadorUnicidade?: (campo: string, valor: any, idExcluir?: any) => Promise<boolean>): Promise<ErroValidacao[]>;
18
+ }
19
+ //# sourceMappingURL=validador.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validador.d.ts","sourceRoot":"","sources":["../../../fontes/validacoes/validador.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAEtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,mBAAmB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE7G,MAAM,WAAW,gCAAgC;IAC7C,SAAS,EAAE,oBAAoB,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,SAAS;IAClB;;;;;;OAMG;WACU,OAAO,CAChB,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,EAAE,mBAAmB,EAC7B,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,GACxF,OAAO,CAAC,aAAa,EAAE,CAAC;CA2J9B"}