From fa8b8d6424c8a3e2f9e0a5f1a66e9792dd2f5db9 Mon Sep 17 00:00:00 2001 From: Luiz Silva Date: Tue, 17 Feb 2026 08:38:20 -0300 Subject: [PATCH] inciado filtro 26 --- dist-back/index.js | 2 + dist-back/tipoFiltro.26.js | 49 +++++++++++++ dist-front/index.d.mts | 139 ++++++++++++++++++++++++++++++++++++- dist-front/index.mjs | 2 +- package.json | 2 +- pacote.tgz | Bin 24878 -> 28346 bytes src/index.ts | 1 + src/tipoFiltro.26.ts | 45 ++++++++---- 8 files changed, 221 insertions(+), 19 deletions(-) create mode 100644 dist-back/tipoFiltro.26.js diff --git a/dist-back/index.js b/dist-back/index.js index 821a29e..487f583 100644 --- a/dist-back/index.js +++ b/dist-back/index.js @@ -31,6 +31,7 @@ __reExport(index_exports, require("./testes-de-variaveis"), module.exports); __reExport(index_exports, require("./texto_busca"), module.exports); __reExport(index_exports, require("./tipagemRotas"), module.exports); __reExport(index_exports, require("./tipagemRotas"), module.exports); +__reExport(index_exports, require("./tipoFiltro.26"), module.exports); __reExport(index_exports, require("./unidades_medida"), module.exports); __reExport(index_exports, require("./uuid"), module.exports); __reExport(index_exports, require("./variaveisComuns"), module.exports); @@ -52,6 +53,7 @@ __reExport(index_exports, require("./variaveisComuns"), module.exports); ...require("./texto_busca"), ...require("./tipagemRotas"), ...require("./tipagemRotas"), + ...require("./tipoFiltro.26"), ...require("./unidades_medida"), ...require("./uuid"), ...require("./variaveisComuns") diff --git a/dist-back/tipoFiltro.26.js b/dist-back/tipoFiltro.26.js new file mode 100644 index 0000000..c4356ce --- /dev/null +++ b/dist-back/tipoFiltro.26.js @@ -0,0 +1,49 @@ +"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 tipoFiltro_26_exports = {}; +__export(tipoFiltro_26_exports, { + zFiltro26: () => zFiltro26 +}); +module.exports = __toCommonJS(tipoFiltro_26_exports); +var import_zod = require("zod"); +const zOperadores = import_zod.z.enum(["=", "!=", ">", ">=", "<", "<=", "like", "in"]); +const zValor = import_zod.z.any(); +const zCondicao = import_zod.z.record(zOperadores, zValor); +const zFiltro26 = import_zod.z.lazy( + () => import_zod.z.object({ + E: import_zod.z.array(zFiltro26).optional(), + OU: import_zod.z.array(zFiltro26).optional() + }).catchall(import_zod.z.union([zCondicao, zFiltro26])) +); +const _filtro = { + idade: { ">=": 18 }, + OU: [ + { nome: { like: "%pa%" } }, + { + E: [ + { carro: { ano: { "=": 2020 } } }, + { carro: { modelo: { in: ["Civic", "Corolla"] } } } + ] + } + ] +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + zFiltro26 +}); diff --git a/dist-front/index.d.mts b/dist-front/index.d.mts index 0c0d61c..51be5b5 100644 --- a/dist-front/index.d.mts +++ b/dist-front/index.d.mts @@ -1,4 +1,4 @@ -import z from 'zod'; +import z, { z as z$1 } from 'zod'; export { Dayjs, ManipulateType, default as dayjsbr } from 'dayjs'; export { default as duration } from 'dayjs/plugin/duration'; export { default as isSameOrAfter } from 'dayjs/plugin/isSameOrAfter'; @@ -259,6 +259,141 @@ declare class TipagemRotas; } +/** + * ============================================================================= + * tipoFiltro26 + * ============================================================================= + * + * OBJETIVO + * ----------------------------------------------------------------------------- + * Gerar automaticamente a tipagem de filtros compatíveis com operadores + * padrão do PostgreSQL, a partir de um tipo base T. + * + * Este tipo foi projetado para: + * - Construção de filtros dinâmicos + * - Geração posterior de WHERE (Knex / SQL) + * - Uso seguro por IA (evita filtros inválidos em nível de tipo) + * + * + * FORMATO DO FILTRO + * ----------------------------------------------------------------------------- + * 1) Campos simples: + * + * { + * idade: { ">=": 18 } + * } + * + * 2) Campos aninhados: + * + * { + * carro: { + * ano: { "=": 2020 } + * } + * } + * + * 3) Operador E (AND): + * + * { + * E: [ + * { idade: { ">=": 18 } }, + * { nome: { like: "%pa%" } } + * ] + * } + * + * 4) Operador OU (OR): + * + * { + * OU: [ + * { idade: { "<": 18 } }, + * { idade: { ">=": 60 } } + * ] + * } + * + * 5) Combinação complexa: + * + * { + * idade: { ">=": 18 }, + * OU: [ + * { nome: { like: "%pa%" } }, + * { + * E: [ + * { carro: { ano: { "=": 2020 } } }, + * { carro: { modelo: { in: ["Civic"] } } } + * ] + * } + * ] + * } + * + * + * REGRAS IMPORTANTES (PARA IA) + * ----------------------------------------------------------------------------- + * - Apenas campos existentes em T podem ser usados. + * - Operadores são restritos por tipo do campo. + * - Objetos são tratados recursivamente. + * - Arrays NÃO são tratados como objeto recursivo. + * - Funções NÃO são consideradas campos filtráveis. + * + * + * OPERADORES SUPORTADOS + * ----------------------------------------------------------------------------- + * number: + * =, !=, >, >=, <, <=, in + * + * string: + * =, !=, like, in + * + * boolean: + * =, !=, in + * + * Não há suporte automático a: + * - null + * - date + * - jsonb + * - arrays + * + * Essas extensões devem ser adicionadas explicitamente. + * + * ============================================================================= + */ +type PgOpsNumber = { + "="?: number; + "!="?: number; + ">"?: number; + ">="?: number; + "<"?: number; + "<="?: number; + in?: number[]; +}; +type PgOpsString = { + "="?: string; + "!="?: string; + like?: string; + in?: string[]; +}; +type PgOpsBoolean = { + "="?: boolean; + "!="?: boolean; + in?: boolean[]; +}; +type PgOpsFor = V extends number ? PgOpsNumber : V extends string ? PgOpsString : V extends boolean ? PgOpsBoolean : never; +type IsPlainObject = T extends object ? T extends Function ? false : T extends readonly any[] ? false : true : false; +type FiltroCampos = { + [K in keyof T]?: IsPlainObject extends true ? tipoFiltro26 : PgOpsFor; +}; +type tipoFiltro26 = FiltroCampos & { + /** + * E => AND lógico + * Todos os filtros dentro do array devem ser verdadeiros. + */ + E?: tipoFiltro26[]; + /** + * OU => OR lógico + * Pelo menos um filtro dentro do array deve ser verdadeiro. + */ + OU?: tipoFiltro26[]; +}; +declare const zFiltro26: z$1.ZodType; + /** * Essa variável se conecta a tabela_lidades * @@ -327,4 +462,4 @@ declare const nomeVariavel: (v: { [key: string]: any; }) => string; -export { Produtos, TipagemRotas, aleatorio, cacheM, cacheMFixo, cacheMemoria, camposComuns, erUuid, esperar, extensoes, type interfaceConsulta, link_paiol, localValor, nomeVariavel, objetoPg, operadores, paraObjetoRegistroPg, pgObjeto, siglas_unidades_medida, texto_busca, tipoArquivo, type tipoFiltro, tipoUsuarioResiduos, tiposSituacoesElicencie, tx, umaFuncao, umaVariavel, unidades_medida, uuid, uuidV3, uuidV4, uuid_null, validarUuid, verCacheM, zFiltro, zOperadores }; +export { Produtos, TipagemRotas, aleatorio, cacheM, cacheMFixo, cacheMemoria, camposComuns, erUuid, esperar, extensoes, type interfaceConsulta, link_paiol, localValor, nomeVariavel, objetoPg, operadores, paraObjetoRegistroPg, pgObjeto, siglas_unidades_medida, texto_busca, tipoArquivo, type tipoFiltro, type tipoFiltro26, tipoUsuarioResiduos, tiposSituacoesElicencie, tx, umaFuncao, umaVariavel, unidades_medida, uuid, uuidV3, uuidV4, uuid_null, validarUuid, verCacheM, zFiltro, zFiltro26, zOperadores }; diff --git a/dist-front/index.mjs b/dist-front/index.mjs index b7ec4e7..38d22d7 100644 --- a/dist-front/index.mjs +++ b/dist-front/index.mjs @@ -1 +1 @@ -var s="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),K=o=>`eli-${Array.from({length:o||8}).map(()=>s[(999*Math.random()|0)%s.length]).join("")}`;var f={};globalThis.cacheMemoria_cache=f;var u=(o,a,r)=>{let n=typeof o=="string"?o:typeof o=="number"?String(o):encodeURIComponent(JSON.stringify(o)),t=r&&new Date().getTime()+r*1e3;a!==void 0&&(f[n]={valor:a,validade:t});let m=f[n];if(!(m?.validade&&m.validadef,D=u,R=o=>a=>u(o,a);var B="00000000-0000-0000-0000-000000000000",c=(i=>(i.codigo="codigo",i.excluido="excluido",i.data_hora_criacao="data_hora_criacao",i.data_hora_atualizacao="data_hora_atualizacao",i.codigo_usuario_criacao="codigo_usuario_criacao",i.codigo_usuario_atualizacao="codigo_usuario_atualizacao",i.versao="versao",i))(c||{}),_=(a=>(a.token="token",a))(_||{}),v=(r=>(r.Usuario="usuario",r.Fornecedor="fornecedor",r))(v||{});import l from"zod";var h=(n=>(n["="]="=",n["!="]="!=",n[">"]=">",n[">="]=">=",n["<"]="<",n["<="]="<=",n.like="like",n.in="in",n.isNull="isNull",n))(h||{}),y=l.enum(["=","!=",">",">=","<","<=","like","in","isNull"]),H=l.object({coluna:l.string(),valor:l.any(),operador:y,ou:l.boolean().optional()});import d from"dayjs";import b from"dayjs/plugin/duration";import T from"dayjs/plugin/isSameOrAfter";import w from"dayjs/plugin/isSameOrBefore";import z from"dayjs/plugin/minMax";import O from"dayjs/plugin/relativeTime";import j from"dayjs/plugin/timezone";import k from"dayjs/plugin/utc";import N from"dayjs/plugin/weekOfYear";import"dayjs/locale/pt-br";d.locale("pt-br");d.extend(k);d.extend(j);d.extend(N);d.extend(w);d.extend(T);d.extend(z);d.extend(O);d.extend(b);var io="https://paiol.idz.one";var M=[{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"}],so=o=>{let a=String(o||"").toLocaleLowerCase().split(".").pop();return M.find(n=>n.ext===a)?.tipo||"outros"};var go=(o,a)=>{let r="localStorage"in globalThis?globalThis.localStorage:void 0;if(typeof r>"u")return null;let n=typeof o=="string"?o:encodeURIComponent(JSON.stringify(o));try{a!==void 0&&r.setItem(n,JSON.stringify(a));let t=r.getItem(n);if(t===null)return null;try{return JSON.parse(t)}catch{return t}}catch{return null}};var g=o=>{try{return Object.fromEntries(Object.entries(o).map(([a,r])=>[a,r===void 0||r==null||typeof r=="string"||typeof r=="number"||typeof r=="boolean"?r:JSON.stringify(r,null,2)]))}catch(a){throw new Error(`Erro na fun\xE7\xE3o paraObjetoRegistroPg: ${a.message} ${a.stack}`)}},co=g,_o=g;var L=(o=>(o["e-licencie"]="e-licencie",o["gov.e-licencie"]="gov.e-licencie",o))(L||{});var q=(e=>(e.modelo="000_modelo",e.vencida="100_vencida",e.expirado="200_expirado",e.alerta="300_alerta",e.protocoladafora="350_protocoladafora",e.protocolada="400_protocolada",e.protocoladaApenas="430_protocolada",e.protocolada_alteracao="450_protocolada",e.prazo="500_prazo",e.emitida="515_emitida",e.valida="518_valida",e.novo="520_novo",e.recebido="521_recebido",e.em_andamento="530_em_andamento",e.aguardando="530_aguardando",e.aguardandoresposta="540_aguardandoresposta",e.suspensaotemporaria="540_suspensaotemporaria",e.cancelada="550_cancelada",e.execucao="560_execucao",e.pendente="570_pendente",e.executadafora="600_executadafora",e.executada="700_executada",e.naoexecutada="701_naoexecutada",e.concluida="730_concluida",e.respondido_negado="740_respondido_negado",e.respondido_aceito="741_respondido_aceito",e.atendidoparcial="742_atendidoparcial",e.naoatendido="743_naoatendido",e.atendido="744_atendido",e.renovada="760_renovada",e.finalizada="800_finalizada",e.emitirnota="101_emitirnota",e.faturaatrasada="301_faturaatrasada",e.pagarfatura="302_pagarfatura",e.aguardandoconfirmacao="531_aguardandoconfirmacao",e.agendado="701_agendado",e.faturapaga="801_faturapaga",e.excluida="999_excluida",e.requerida="401_requerida",e.vigente="516_vigente",e.emrenovacao="402_emrenovacao",e.arquivada="801_arquivada",e.aguardando_sincronizacao="999_aguardando_sincronizacao",e.nao_conforme="710_nao_conforme",e.conforme="720_conforme",e.nao_aplicavel="730_nao_aplicavel",e.parcial="715_parcial",e))(q||{});var bo=()=>"Ol\xE1 Mundo! (fun\xE7\xE3o)";var wo="Ol\xE1 Mundo! (vari\xE1vel)";var No=(...o)=>o.map(a=>a==null?"":String(a).normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g," ").toLowerCase()).join(" ");var x=class{constructor({caminho:a,acaoIr:r,rotulo:n}){this._partesCaminho=[];this._acaoIr=r,this._partesCaminho=(Array.isArray(a)?a:[a]).filter(Boolean).map(t=>String(t)).flatMap(t=>t.split("/")).filter(Boolean),this.rotulo=n}get caminho(){return`/${this._partesCaminho.join("/")}`}set caminho(a){this._partesCaminho=a.split("/").filter(r=>r)}endereco(a,r){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 m=Object.entries(a);for(let[p,i]of m)t.searchParams.set(String(p),JSON.stringify(i));return t.hash="",r&&(t.hash=`#${t.search}`,t.search=""),t.href}ir(a){if(this._acaoIr)this._acaoIr(this.endereco({...a}));else{let r=typeof globalThis<"u"&&globalThis.window||void 0;r&&(r.location.href=this.endereco({...a}))}}parametros(a){let r=a?new URL(a):new URL(typeof globalThis<"u"&&globalThis.window?globalThis.window.location.href:"http://localhost"),n=r.searchParams,t=Object.fromEntries(n.entries()),m=r.hash;if(m){let p=Object.fromEntries(new URLSearchParams(m.slice(1)).entries());t={...t,...p}}for(let p in t)try{t[p]=JSON.parse(t[p])}catch{console.log(`[${p}|${t[p]}] n\xE3o \xE9 um json v\xE1lido.`)}return t}};var U=(m=>(m.UN="UN",m.KG="KG",m.TON="TON",m.g="g",m["M\xB3"]="M\xB3",m.Lt="Lt",m))(U||{}),qo=[{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 A,v3 as I,v4 as J}from"uuid";var C=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Io=o=>C.test(String(o||"")),F=(o,a)=>I(typeof o=="string"?o:typeof o=="number"?String(o):JSON.stringify(o),a?F(a):A),G=J,Jo=G;var Fo=o=>new Promise(a=>setTimeout(()=>a(!0),o)),Go=o=>Object.keys(o).join("/");export{L as Produtos,x as TipagemRotas,K as aleatorio,u as cacheM,R as cacheMFixo,D as cacheMemoria,c as camposComuns,d as dayjsbr,b as duration,C as erUuid,Fo as esperar,M as extensoes,T as isSameOrAfter,w as isSameOrBefore,io as link_paiol,go as localValor,z as minMax,Go as nomeVariavel,_o as objetoPg,h as operadores,g as paraObjetoRegistroPg,co as pgObjeto,O as relativeTime,U as siglas_unidades_medida,No as texto_busca,j as timezone,so as tipoArquivo,v as tipoUsuarioResiduos,q as tiposSituacoesElicencie,_ as tx,bo as umaFuncao,wo as umaVariavel,qo as unidades_medida,k as utc,Jo as uuid,F as uuidV3,G as uuidV4,B as uuid_null,Io as validarUuid,$ as verCacheM,N as weekOfYear,H as zFiltro,y as zOperadores}; +var g="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),D=o=>`eli-${Array.from({length:o||8}).map(()=>g[(999*Math.random()|0)%g.length]).join("")}`;var f={};globalThis.cacheMemoria_cache=f;var x=(o,a,r)=>{let n=typeof o=="string"?o:typeof o=="number"?String(o):encodeURIComponent(JSON.stringify(o)),t=r&&new Date().getTime()+r*1e3;a!==void 0&&(f[n]={valor:a,validade:t});let i=f[n];if(!(i?.validade&&i.validadef,Y=x,Z=o=>a=>x(o,a);var W="00000000-0000-0000-0000-000000000000",b=(m=>(m.codigo="codigo",m.excluido="excluido",m.data_hora_criacao="data_hora_criacao",m.data_hora_atualizacao="data_hora_atualizacao",m.codigo_usuario_criacao="codigo_usuario_criacao",m.codigo_usuario_atualizacao="codigo_usuario_atualizacao",m.versao="versao",m))(b||{}),y=(a=>(a.token="token",a))(y||{}),v=(r=>(r.Usuario="usuario",r.Fornecedor="fornecedor",r))(v||{});import s from"zod";var h=(n=>(n["="]="=",n["!="]="!=",n[">"]=">",n[">="]=">=",n["<"]="<",n["<="]="<=",n.like="like",n.in="in",n.isNull="isNull",n))(h||{}),T=s.enum(["=","!=",">",">=","<","<=","like","in","isNull"]),E=s.object({coluna:s.string(),valor:s.any(),operador:T,ou:s.boolean().optional()});import d from"dayjs";import O from"dayjs/plugin/duration";import z from"dayjs/plugin/isSameOrAfter";import w from"dayjs/plugin/isSameOrBefore";import j from"dayjs/plugin/minMax";import k from"dayjs/plugin/relativeTime";import N from"dayjs/plugin/timezone";import P from"dayjs/plugin/utc";import F from"dayjs/plugin/weekOfYear";import"dayjs/locale/pt-br";d.locale("pt-br");d.extend(P);d.extend(N);d.extend(F);d.extend(w);d.extend(z);d.extend(j);d.extend(k);d.extend(O);var uo="https://paiol.idz.one";var M=[{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 a=String(o||"").toLocaleLowerCase().split(".").pop();return M.find(n=>n.ext===a)?.tipo||"outros"};var yo=(o,a)=>{let r="localStorage"in globalThis?globalThis.localStorage:void 0;if(typeof r>"u")return null;let n=typeof o=="string"?o:encodeURIComponent(JSON.stringify(o));try{a!==void 0&&r.setItem(n,JSON.stringify(a));let t=r.getItem(n);if(t===null)return null;try{return JSON.parse(t)}catch{return t}}catch{return null}};var c=o=>{try{return Object.fromEntries(Object.entries(o).map(([a,r])=>[a,r===void 0||r==null||typeof r=="string"||typeof r=="number"||typeof r=="boolean"?r:JSON.stringify(r,null,2)]))}catch(a){throw new Error(`Erro na fun\xE7\xE3o paraObjetoRegistroPg: ${a.message} ${a.stack}`)}},ho=c,To=c;var U=(o=>(o["e-licencie"]="e-licencie",o["gov.e-licencie"]="gov.e-licencie",o))(U||{});var L=(e=>(e.modelo="000_modelo",e.vencida="100_vencida",e.expirado="200_expirado",e.alerta="300_alerta",e.protocoladafora="350_protocoladafora",e.protocolada="400_protocolada",e.protocoladaApenas="430_protocolada",e.protocolada_alteracao="450_protocolada",e.prazo="500_prazo",e.emitida="515_emitida",e.valida="518_valida",e.novo="520_novo",e.recebido="521_recebido",e.em_andamento="530_em_andamento",e.aguardando="530_aguardando",e.aguardandoresposta="540_aguardandoresposta",e.suspensaotemporaria="540_suspensaotemporaria",e.cancelada="550_cancelada",e.execucao="560_execucao",e.pendente="570_pendente",e.executadafora="600_executadafora",e.executada="700_executada",e.naoexecutada="701_naoexecutada",e.concluida="730_concluida",e.respondido_negado="740_respondido_negado",e.respondido_aceito="741_respondido_aceito",e.atendidoparcial="742_atendidoparcial",e.naoatendido="743_naoatendido",e.atendido="744_atendido",e.renovada="760_renovada",e.finalizada="800_finalizada",e.emitirnota="101_emitirnota",e.faturaatrasada="301_faturaatrasada",e.pagarfatura="302_pagarfatura",e.aguardandoconfirmacao="531_aguardandoconfirmacao",e.agendado="701_agendado",e.faturapaga="801_faturapaga",e.excluida="999_excluida",e.requerida="401_requerida",e.vigente="516_vigente",e.emrenovacao="402_emrenovacao",e.arquivada="801_arquivada",e.aguardando_sincronizacao="999_aguardando_sincronizacao",e.nao_conforme="710_nao_conforme",e.conforme="720_conforme",e.nao_aplicavel="730_nao_aplicavel",e.parcial="715_parcial",e))(L||{});var jo=()=>"Ol\xE1 Mundo! (fun\xE7\xE3o)";var No="Ol\xE1 Mundo! (vari\xE1vel)";var Lo=(...o)=>o.map(a=>a==null?"":String(a).normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g," ").toLowerCase()).join(" ");var _=class{constructor({caminho:a,acaoIr:r,rotulo:n}){this._partesCaminho=[];this._acaoIr=r,this._partesCaminho=(Array.isArray(a)?a:[a]).filter(Boolean).map(t=>String(t)).flatMap(t=>t.split("/")).filter(Boolean),this.rotulo=n}get caminho(){return`/${this._partesCaminho.join("/")}`}set caminho(a){this._partesCaminho=a.split("/").filter(r=>r)}endereco(a,r){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(a);for(let[p,m]of i)t.searchParams.set(String(p),JSON.stringify(m));return t.hash="",r&&(t.hash=`#${t.search}`,t.search=""),t.href}ir(a){if(this._acaoIr)this._acaoIr(this.endereco({...a}));else{let r=typeof globalThis<"u"&&globalThis.window||void 0;r&&(r.location.href=this.endereco({...a}))}}parametros(a){let r=a?new URL(a):new URL(typeof globalThis<"u"&&globalThis.window?globalThis.window.location.href:"http://localhost"),n=r.searchParams,t=Object.fromEntries(n.entries()),i=r.hash;if(i){let p=Object.fromEntries(new URLSearchParams(i.slice(1)).entries());t={...t,...p}}for(let p in t)try{t[p]=JSON.parse(t[p])}catch{console.log(`[${p}|${t[p]}] n\xE3o \xE9 um json v\xE1lido.`)}return t}};import{z as l}from"zod";var q=l.enum(["=","!=",">",">=","<","<=","like","in"]),C=l.any(),I=l.record(q,C),u=l.lazy(()=>l.object({E:l.array(u).optional(),OU:l.array(u).optional()}).catchall(l.union([I,u])));var K=(i=>(i.UN="UN",i.KG="KG",i.TON="TON",i.g="g",i["M\xB3"]="M\xB3",i.Lt="Lt",i))(K||{}),Ao=[{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 A,v3 as V,v4 as J}from"uuid";var G=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Go=o=>G.test(String(o||"")),$=(o,a)=>V(typeof o=="string"?o:typeof o=="number"?String(o):JSON.stringify(o),a?$(a):A),B=J,$o=B;var Do=o=>new Promise(a=>setTimeout(()=>a(!0),o)),Ro=o=>Object.keys(o).join("/");export{U as Produtos,_ as TipagemRotas,D as aleatorio,x as cacheM,Z as cacheMFixo,Y as cacheMemoria,b as camposComuns,d as dayjsbr,O as duration,G as erUuid,Do as esperar,M as extensoes,z as isSameOrAfter,w as isSameOrBefore,uo as link_paiol,yo as localValor,j as minMax,Ro as nomeVariavel,To as objetoPg,h as operadores,c as paraObjetoRegistroPg,ho as pgObjeto,k as relativeTime,K as siglas_unidades_medida,Lo as texto_busca,N as timezone,_o as tipoArquivo,v as tipoUsuarioResiduos,L as tiposSituacoesElicencie,y as tx,jo as umaFuncao,No as umaVariavel,Ao as unidades_medida,P as utc,$o as uuid,$ as uuidV3,B as uuidV4,W as uuid_null,Go as validarUuid,Q as verCacheM,F as weekOfYear,E as zFiltro,u as zFiltro26,T as zOperadores}; diff --git a/package.json b/package.json index c69ee09..f4b9a82 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "p-comuns", - "version": "0.304.0", + "version": "0.307.0", "description": "", "main": "./dist-front/index.mjs", "module": "./dist-front/index.mjs", diff --git a/pacote.tgz b/pacote.tgz index 682bc9e4dbcba9577eee12d9b0c06d7e4c03cc4b..3ce4852d59adb484da1321cdcafc3bd950f80bc0 100644 GIT binary patch literal 28346 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 @@ -95,7 +97,6 @@ * ============================================================================= */ - /* ============================================================================= OPERADORES POSTGRESQL POR TIPO ============================================================================= */ @@ -123,29 +124,29 @@ type PgOpsBoolean = { in?: boolean[] } - /* ============================================================================= SELEÇÃO AUTOMÁTICA DE OPERADORES BASEADA NO TIPO DO CAMPO ============================================================================= */ -type PgOpsFor = - V extends number ? PgOpsNumber : - V extends string ? PgOpsString : - V extends boolean ? PgOpsBoolean : - never - +type PgOpsFor = V extends number + ? PgOpsNumber + : V extends string + ? PgOpsString + : V extends boolean + ? PgOpsBoolean + : never /* ============================================================================= UTILITÁRIO: DETECTAR OBJETO PLANO ============================================================================= */ -type IsPlainObject = - T extends object - ? T extends Function ? false - : T extends readonly any[] ? false +type IsPlainObject = T extends object + ? T extends Function + ? false + : T extends readonly any[] + ? false : true - : false - + : false /* ============================================================================= FILTRO RECURSIVO POR CAMPOS @@ -157,7 +158,6 @@ type FiltroCampos = { : PgOpsFor } - /* ============================================================================= TIPO PRINCIPAL EXPORTADO ============================================================================= */ @@ -176,7 +176,22 @@ export type tipoFiltro26 = FiltroCampos & { OU?: tipoFiltro26[] } +/* ============================================================================= + VALIDAÇÃO ESTRUTURAL (ZOD) +============================================================================= */ +const zOperadores = z.enum(["=", "!=", ">", ">=", "<", "<=", "like", "in"]) +const zValor = z.any() +const zCondicao = z.record(zOperadores, zValor) + +export const zFiltro26: z.ZodType = z.lazy(() => + z + .object({ + E: z.array(zFiltro26).optional(), + OU: z.array(zFiltro26).optional(), + }) + .catchall(z.union([zCondicao, zFiltro26])), +) /* ============================================================================= EXEMPLO DE USO