From 5b1b6e3c25abef5d235a43b9e55e759b9f6dee7e Mon Sep 17 00:00:00 2001 From: Luiz Silva Date: Tue, 11 Nov 2025 15:59:41 -0300 Subject: [PATCH 1/3] melhoria dayjs --- src/dayjs.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/dayjs.ts b/src/dayjs.ts index 1870e39..0450172 100644 --- a/src/dayjs.ts +++ b/src/dayjs.ts @@ -1,4 +1,4 @@ -import dayjs from "dayjs" +import dayjs, { type Dayjs } from "dayjs" export type { ManipulateType } from "dayjs" @@ -23,3 +23,5 @@ dayjs.extend(relativeTime) dayjs.extend(duration) export const dayjsbr = dayjs + +export type { Dayjs } From 84880fff0cc46dcb6f3c9b8d9241c3e15d642d68 Mon Sep 17 00:00:00 2001 From: Luiz Silva Date: Tue, 11 Nov 2025 15:59:47 -0300 Subject: [PATCH 2/3] build --- dist-back/consulta.js | 4 + dist-back/dayjs.js | 12 ++ dist-back/index.js | 18 ++ dist-back/instalarAmbiente.js | 5 + dist-back/logger.js | 4 + dist-front/index.d.ts | 314 ++++++++++++++++++++++++++++++++++ dist-front/index.mjs | 4 + 7 files changed, 361 insertions(+) create mode 100644 dist-front/index.d.ts diff --git a/dist-back/consulta.js b/dist-back/consulta.js index d5cb3e3..ace4812 100644 --- a/dist-back/consulta.js +++ b/dist-back/consulta.js @@ -33,7 +33,11 @@ __export(consulta_exports, { zOperadores: () => zOperadores }); module.exports = __toCommonJS(consulta_exports); +<<<<<<< HEAD var import_zod = __toESM(require("zod")); +======= +var import_zod = __toESM(require("zod"), 1); +>>>>>>> 34d92fa (build) var operadores = /* @__PURE__ */ ((operadores2) => { operadores2["="] = "="; operadores2["!="] = "!="; diff --git a/dist-back/dayjs.js b/dist-back/dayjs.js index 13f4663..e76e8f8 100644 --- a/dist-back/dayjs.js +++ b/dist-back/dayjs.js @@ -31,6 +31,7 @@ __export(dayjs_exports, { dayjsbr: () => dayjsbr }); module.exports = __toCommonJS(dayjs_exports); +<<<<<<< HEAD var import_dayjs = __toESM(require("dayjs")); var import_duration = __toESM(require("dayjs/plugin/duration.js")); var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter.js")); @@ -40,6 +41,17 @@ var import_relativeTime = __toESM(require("dayjs/plugin/relativeTime.js")); var import_timezone = __toESM(require("dayjs/plugin/timezone.js")); var import_utc = __toESM(require("dayjs/plugin/utc.js")); var import_weekOfYear = __toESM(require("dayjs/plugin/weekOfYear.js")); +======= +var import_dayjs = __toESM(require("dayjs"), 1); +var import_duration = __toESM(require("dayjs/plugin/duration.js"), 1); +var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter.js"), 1); +var import_isSameOrBefore = __toESM(require("dayjs/plugin/isSameOrBefore.js"), 1); +var import_minMax = __toESM(require("dayjs/plugin/minMax.js"), 1); +var import_relativeTime = __toESM(require("dayjs/plugin/relativeTime.js"), 1); +var import_timezone = __toESM(require("dayjs/plugin/timezone.js"), 1); +var import_utc = __toESM(require("dayjs/plugin/utc.js"), 1); +var import_weekOfYear = __toESM(require("dayjs/plugin/weekOfYear.js"), 1); +>>>>>>> 34d92fa (build) var import_pt_br = require("dayjs/locale/pt-br.js"); import_dayjs.default.locale("pt-br"); import_dayjs.default.extend(import_utc.default); diff --git a/dist-back/index.js b/dist-back/index.js index 57e8fd0..c51cdcf 100644 --- a/dist-back/index.js +++ b/dist-back/index.js @@ -22,16 +22,25 @@ __reExport(index_exports, require("./consulta"), module.exports); __reExport(index_exports, require("./dayjs"), module.exports); __reExport(index_exports, require("./ecosistema"), module.exports); __reExport(index_exports, require("./extensoes"), module.exports); +<<<<<<< HEAD __reExport(index_exports, require("./extensoes"), module.exports); __reExport(index_exports, require("./graficosPilao"), module.exports); __reExport(index_exports, require("./local"), module.exports); __reExport(index_exports, require("./logger"), module.exports); __reExport(index_exports, require("./logger"), module.exports); +======= +__reExport(index_exports, require("./graficosPilao"), module.exports); +__reExport(index_exports, require("./local"), module.exports); +__reExport(index_exports, require("./logger"), module.exports); +>>>>>>> 34d92fa (build) __reExport(index_exports, require("./postgres"), module.exports); __reExport(index_exports, require("./testes-de-variaveis"), module.exports); __reExport(index_exports, require("./texto_busca"), module.exports); __reExport(index_exports, require("./tipagemRotas"), module.exports); +<<<<<<< HEAD __reExport(index_exports, require("./tipagemRotas"), module.exports); +======= +>>>>>>> 34d92fa (build) __reExport(index_exports, require("./unidades_medida"), module.exports); __reExport(index_exports, require("./uuid"), module.exports); __reExport(index_exports, require("./variaveisComuns"), module.exports); @@ -44,16 +53,25 @@ __reExport(index_exports, require("./variaveisComuns"), module.exports); ...require("./dayjs"), ...require("./ecosistema"), ...require("./extensoes"), +<<<<<<< HEAD ...require("./extensoes"), ...require("./graficosPilao"), ...require("./local"), ...require("./logger"), ...require("./logger"), +======= + ...require("./graficosPilao"), + ...require("./local"), + ...require("./logger"), +>>>>>>> 34d92fa (build) ...require("./postgres"), ...require("./testes-de-variaveis"), ...require("./texto_busca"), ...require("./tipagemRotas"), +<<<<<<< HEAD ...require("./tipagemRotas"), +======= +>>>>>>> 34d92fa (build) ...require("./unidades_medida"), ...require("./uuid"), ...require("./variaveisComuns") diff --git a/dist-back/instalarAmbiente.js b/dist-back/instalarAmbiente.js index d31e0a5..a0a90c7 100644 --- a/dist-back/instalarAmbiente.js +++ b/dist-back/instalarAmbiente.js @@ -21,8 +21,13 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); +<<<<<<< HEAD var import_node_fs = __toESM(require("node:fs")); var import_node_path = __toESM(require("node:path")); +======= +var import_node_fs = __toESM(require("node:fs"), 1); +var import_node_path = __toESM(require("node:path"), 1); +>>>>>>> 34d92fa (build) const mesclar = (entrada, novo) => { const saida = { ...entrada || {} }; for (const [k, v] of Object.entries(novo)) { diff --git a/dist-back/logger.js b/dist-back/logger.js index 8f5983c..04c18f9 100644 --- a/dist-back/logger.js +++ b/dist-back/logger.js @@ -33,7 +33,11 @@ __export(logger_exports, { postLogger: () => postLogger }); module.exports = __toCommonJS(logger_exports); +<<<<<<< HEAD var import_cross_fetch = __toESM(require("cross-fetch")); +======= +var import_cross_fetch = __toESM(require("cross-fetch"), 1); +>>>>>>> 34d92fa (build) var import_variaveisComuns = require("./variaveisComuns"); const LOKI_BASE_URL = "https://log.idz.one"; const LOKI_ENDPOINT = "/loki/api/v1/push"; diff --git a/dist-front/index.d.ts b/dist-front/index.d.ts new file mode 100644 index 0000000..dea271a --- /dev/null +++ b/dist-front/index.d.ts @@ -0,0 +1,314 @@ +import z from 'zod'; +import dayjs from 'dayjs'; +export { Dayjs, ManipulateType } from 'dayjs'; +import { v4 } from 'uuid'; + +declare const aleatorio: (tamanho?: number) => 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: () => { + [k: string]: { + /** new Date().getTime() */ + validade?: number | undefined; + valor: any; + } | undefined; +}; +declare const cacheMemoria: (chave: any, valor?: T, validadeSeg?: number) => T | undefined; +/** para uso fixo dentro de uma função, trava a chave */ +declare const cacheMFixo: (chave: any) => (valor?: T) => T | undefined; + +declare const uuid_null = "00000000-0000-0000-0000-000000000000"; +/** Colunas Presentes n maioria das tabelas */ +declare enum camposComuns { + codigo = "codigo", + excluido = "excluido", + data_hora_criacao = "data_hora_criacao", + data_hora_atualizacao = "data_hora_atualizacao", + codigo_usuario_criacao = "codigo_usuario_criacao", + codigo_usuario_atualizacao = "codigo_usuario_atualizacao", + versao = "versao" +} +/** Palavras comumente usadas */ +declare enum tx { + token = "token" +} +declare enum tipoUsuarioResiduos { + Usuario = "usuario", + Fornecedor = "fornecedor" +} + +declare enum operadores { + "=" = "=", + "!=" = "!=", + ">" = ">", + ">=" = ">=", + "<" = "<", + "<=" = "<=", + like = "like", + in = "in" +} +type tipoFiltro = { + coluna: string; + valor: any; + operador: keyof typeof operadores | operadores; + ou?: boolean; +}; +type interfaceConsulta = { + offset?: number; + limit?: number; + filtros?: tipoFiltro[]; + ordem?: string; + ordemTipo?: "asc" | "desc"; + colunas?: string[]; + apenasConsulta?: boolean; + apenasContagem?: boolean; +}; +declare const zOperadores: z.ZodEnum<{ + "=": "="; + "!=": "!="; + ">": ">"; + ">=": ">="; + "<": "<"; + "<=": "<="; + like: "like"; + in: "in"; +}>; +declare const zFiltro: z.ZodObject<{ + coluna: z.ZodString; + valor: z.ZodAny; + operador: z.ZodEnum<{ + "=": "="; + "!=": "!="; + ">": ">"; + ">=": ">="; + "<": "<"; + "<=": "<="; + like: "like"; + in: "in"; + }>; + ou: z.ZodOptional; +}, z.core.$strip>; + +declare const dayjsbr: typeof dayjs; + +declare const cdn_carro_de_boi = "https://carro-de-boi-idz-one.b-cdn.net"; + +type tiposArquivo = "imagem" | "documento" | "vídeo" | "outros"; +declare const extensoes: { + ext: string; + tipo: tiposArquivo; + mime: string; +}[]; +/** + * Função que retorna o tipo do arquivo + * @param nomeArquivo + * @returns + */ +declare const tipoArquivo: (nomeArquivo: string | null | undefined) => tiposArquivo; + +declare const graficos_pilao: { + [k: string]: { + grafico: string; + titulo: string; + }; +}; + +/** + * LocalStorage Tipado + * Lê ou grava um valor no localStorage, mantendo o tipo genérico . + */ +declare const localValor: (chave_: string | any, valor?: T | null) => T | null; + +type tipoLokiObjeto = { + streams: { + stream: { + [k: string]: string; + }; + values: [string, string][]; + }[]; +}; +declare const postLogger: ({ objeto, }: { + objeto: tipoLokiObjeto; +}) => Promise<[objeto: tipoLokiObjeto, erro?: string]>; +/** define a localização da pasta do projeto */ +declare const defineCwd: (novoCwd: string) => void; +type tipoLevel = "info" | "warn" | "error"; +type tipoOpSessao = { + inquilino: string; + usuario: string; + parametros?: { + [k: string]: string; + }; +}; +type tipoLog = { + detalhes?: unknown[]; + __filename?: string; + local?: string; + parametros?: { + [k: string]: string; + }; +}; +type tipoLoggerLog = (level: tipoLevel, mensagem: string, op_tipoLog?: tipoLog) => Promise<[objeto: tipoLokiObjeto, erro?: string]>; +type TipoLoggerSessao = (sess: tipoOpSessao) => tipoLoggerLog; +type tipoLogger = (amb: { + app: string; + eProducao: boolean; + parametros?: { + [k: string]: string; + }; +}) => TipoLoggerSessao; +declare const logger: tipoLogger; + +/** + * Trata um objeto para ser imput para postgres + * @param entrada + * @returns + */ +declare const paraObjetoRegistroPg: (entrada: { + [k: string]: any; +}) => { + [k: string]: string | boolean | null | undefined | number; +}; +declare const pgObjeto: (entrada: { + [k: string]: any; +}) => { + [k: string]: string | boolean | null | undefined | number; +}; +declare const objetoPg: (entrada: { + [k: string]: any; +}) => { + [k: string]: string | boolean | null | undefined | number; +}; + +declare const umaFuncao: () => string; + +declare const umaVariavel = "Ol\u00E1 Mundo! (vari\u00E1vel)"; + +/** gerar o texto de busca removendo caracteres especies e caixa alta */ +declare const texto_busca: (...texto: any[]) => string; + +/** Gerar uma classe que facilita a gestão de rotas com a tipagem das querys + * + * Definições: + * + * caminho = "/aplicacao/funcionalidade" + * + * endereco = "http://localhost:3000/aplicacao/funcionalidade" + * + * parametros = {nome:"José"} + */ +declare class TipagemRotas { + _partesCaminho: string[]; + _acaoIr?: (endereco: string) => undefined; + rotulo: string | undefined; + /** Ao criar novo obijeto de tipagem de rota é necessário passar o caminho parcial + ** export const mCaminho = new TipagemRotas<{q:string}>("aplicacao","funcionalidade") + */ + constructor({ caminho, acaoIr, rotulo, }: { + caminho: (string | null | undefined)[] | string; + acaoIr?: undefined | ((endereco: string) => undefined); + /** Rotulo da página + * Inicio | Controle + */ + rotulo?: string; + }); + /** Retorna o caminho completo da rota + ** console.log(mCaminho.caminho) + ** "/caminho" + */ + get caminho(): string; + /** Define o caminho completo da rota + ** mCaminho.caminho = "/novoCaminho" + ** console.log(mCaminho.caminho) + ** "/novoCaminho" + ** */ + set caminho(caminhoParcial: string); + /** Retorna o caminho completo da rota com a query + ** console.log(mCaminho.resolve({q:"query"})) + ** "http://localhost:3000/caminho?q=query" + */ + endereco(query: T, usarComoHash?: boolean): string; + /** Vai para a url + ** mCaminho.ir({q:"query"}) + ** window.location.href = "http://localhost:3000/caminho?q=query" + */ + ir(query: T): void; + /** Retorna os parametros da url + ** console.log(mCaminho.parametros()) + ** {q:"query"} + */ + parametros(urlEntrada?: string): Partial; +} + +/** + * Essa variável se conecta a tabela_lidades + * + * onde sigla se conecta com sigla + * + * Usuário terá mais opções de unidades, quando fazer o envio para o mtr, usar a opção fornecida pelo usuarios, caso não tenha + * usar a normalizada + */ +declare enum siglas_unidades_medida { + UN = "UN", + KG = "KG", + TON = "TON", + g = "g", + "M³" = "M\u00B3", + Lt = "Lt" +} +declare const unidades_medida: { + sigla_unidade: keyof typeof siglas_unidades_medida; + nome: string; + sigla_normalizada: keyof typeof siglas_unidades_medida; + normalizar: (valor: number) => number; + tipo: "massa" | "volume" | "comprimento" | "unidade"; +}[]; + +/** + * Valida se uma string é um UUID válido (qualquer versão). + * + * @param valor - A string que será validada. + * @returns booleano indicando se é um UUID válido. + */ +declare const erUuid: RegExp; +declare const validarUuid: (uuid: string | number | undefined | null) => boolean; +/** + * Gera um UUID determinístico (versão 3) com base em uma chave e um grupo (namespace). + * + * - Usa o algoritmo MD5 (RFC 4122). + * - Sempre retorna o mesmo UUID para a mesma combinação chave + grupo. + * - Caso o grupo não seja informado, usa o UUID "nil" como namespace. + * + * @param chave - Qualquer valor que será convertido em string para gerar o UUID (ex: número, string ou objeto). + * @param grupo - Opcional. Namespace para separar domínios diferentes de UUIDs. + * @returns UUID v3 (determinístico) + */ +declare const uuidV3: (chave: any, grupo?: any) => string; +/** + * Gera um UUID v4 (aleatório, não determinístico). + * + * - Usado quando unicidade é necessária, mas não se exige que seja previsível. + */ +declare const uuidV4: typeof v4; +/** + * @deprecated Esta variável será descontinuada em versões futuras. + * Use a função `uuidV4()` diretamente. + */ +declare const uuid: typeof v4; + +declare const esperar: (ms: number) => Promise; +/** + * Usado para retronat o no de uma variável, deve ser usado dentro de um objeto + * const nomex = {a: 1, b: 2} + * nomeVariavel({nomex}) // retorna "nomex" + * @param v + * @returns + */ +declare const nomeVariavel: (v: { + [key: string]: any; +}) => string; + +export { TipagemRotas, type TipoLoggerSessao, aleatorio, cacheM, cacheMFixo, cacheMemoria, camposComuns, cdn_carro_de_boi, dayjsbr, defineCwd, erUuid, esperar, extensoes, graficos_pilao, type interfaceConsulta, 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/dist-front/index.mjs b/dist-front/index.mjs index a91cb3a..78c4b7e 100644 --- a/dist-front/index.mjs +++ b/dist-front/index.mjs @@ -1 +1,5 @@ +<<<<<<< HEAD var x="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),oo=o=>`eli-${Array.from({length:o||8}).map(()=>x[(999*Math.random()|0)%x.length]).join("")}`;var d={};globalThis.cacheMemoria_cache=d;var y=(o,e,t)=>{let r=typeof o=="string"?o:typeof o=="number"?String(o):encodeURIComponent(JSON.stringify(o)),i=t&&new Date().getTime()+t*1e3;e!==void 0&&(d[r]={valor:e,validade:i});let n=d[r];if(!(n?.validade&&n.validaded,ro=y,io=o=>e=>y(o,e);var ao="00000000-0000-0000-0000-000000000000",T=(s=>(s.codigo="codigo",s.excluido="excluido",s.data_hora_criacao="data_hora_criacao",s.data_hora_atualizacao="data_hora_atualizacao",s.codigo_usuario_criacao="codigo_usuario_criacao",s.codigo_usuario_atualizacao="codigo_usuario_atualizacao",s.versao="versao",s))(T||{}),S=(e=>(e.token="token",e))(S||{}),z=(t=>(t.Usuario="usuario",t.Fornecedor="fornecedor",t))(z||{});import l from"zod";var N=(t=>(t["="]="=",t["!="]="!=",t[">"]=">",t[">="]=">=",t["<"]="<",t["<="]="<=",t.like="like",t.in="in",t))(N||{}),$=l.enum(["=","!=",">",">=","<","<=","like","in"]),po=l.object({coluna:l.string(),valor:l.any(),operador:$,ou:l.boolean().optional()});import m from"dayjs";import M from"dayjs/plugin/duration.js";import P from"dayjs/plugin/isSameOrAfter.js";import C from"dayjs/plugin/isSameOrBefore.js";import I from"dayjs/plugin/minMax.js";import U from"dayjs/plugin/relativeTime.js";import A from"dayjs/plugin/timezone.js";import E from"dayjs/plugin/utc.js";import J from"dayjs/plugin/weekOfYear.js";import"dayjs/locale/pt-br.js";m.locale("pt-br");m.extend(E);m.extend(A);m.extend(J);m.extend(C);m.extend(P);m.extend(I);m.extend(U);m.extend(M);var Oo=m;var Lo="https://carro-de-boi-idz-one.b-cdn.net";var q=[{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 e=String(o||"").toLocaleLowerCase().split(".").pop();return q.find(r=>r.ext===e)?.tipo||"outros"};var No={Condicionantes:{grafico:"condicionantes-criadas",titulo:"Condicionantes Criadas"},Licen\u00E7as:{grafico:"licencas-criadas",titulo:"Licen\xE7as Criadas"}};var Mo=(o,e)=>{let t=globalThis.localStorage;if(typeof t>"u")return null;let r=typeof o=="string"?o:encodeURIComponent(JSON.stringify(o));try{e!==void 0&&t.setItem(r,JSON.stringify(e));let i=t.getItem(r);if(i===null)return null;try{return JSON.parse(i)}catch{return i}}catch{return null}};import K from"cross-fetch";var Co=o=>new Promise(e=>setTimeout(()=>e(!0),o)),g=o=>Object.keys(o).join("/");var F="https://log.idz.one",G="/loki/api/v1/push",V=async({objeto:o})=>{let e=await K(`${F}${G}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}).catch(t=>t);return e.ok?[o]:[o,`Erro ${e.status}: ${await e?.text?.()}`]},f="",Eo=o=>{f=o},Jo=({app:o,eProducao:e,parametros:t})=>({inquilino:r,usuario:i,parametros:n})=>async(a,s,v)=>{let{__filename:p,detalhes:c,local:u,parametros:_}=v||{},O=`${e?"":"DEV-"}${o}`;f&&p&&(p=p.replace(f,"")),u&&(c=[`${g({local:u})}="${u}"`,...c||[]]),p&&(c=[`${g({__filename:p})}="${p}"`,...c||[]]);let w=`${Date.now()}000000`,L=c?.length?`${s} | ${c.map(k=>JSON.stringify(k)).join(" | ")}`:s,j={streams:[{stream:{app:O,inquilino:r,usuario:i,level:a,...t||{},...n||{},..._||{}},values:[[w,L]]}]};return await V({objeto:j})};var b=o=>{try{return Object.fromEntries(Object.entries(o).map(([e,t])=>[e,t===void 0||t==null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"?t:JSON.stringify(t,null,2)]))}catch(e){throw new Error(`Erro na fun\xE7\xE3o paraObjetoRegistroPg: ${e.message} ${e.stack}`)}},Ko=b,Fo=b;var Vo=()=>"Ol\xE1 Mundo! (fun\xE7\xE3o)";var Ro="Ol\xE1 Mundo! (vari\xE1vel)";var Wo=(...o)=>o.map(e=>e==null?"":String(e).normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g," ").toLowerCase()).join(" ");var h=class{constructor({caminho:e,acaoIr:t,rotulo:r}){this._partesCaminho=[];this._acaoIr=t,this._partesCaminho=(Array.isArray(e)?e:[e]).filter(Boolean).map(i=>String(i)).flatMap(i=>i.split("/")).filter(Boolean),this.rotulo=r}get caminho(){return`/${this._partesCaminho.join("/")}`}set caminho(e){this._partesCaminho=e.split("/").filter(t=>t)}endereco(e,t){let r=new URL(typeof window<"u"?window.location.href:"http://localhost");r.pathname=this.caminho,r.search="";let i=Object.entries(e);for(let[n,a]of i)r.searchParams.set(String(n),JSON.stringify(a));return r.hash="",t&&(r.hash=`#${r.search}`,r.search=""),r.href}ir(e){this._acaoIr?this._acaoIr(this.endereco({...e})):typeof window<"u"&&(window.location.href=this.endereco({...e}))}parametros(e){let t=e?new URL(e):new URL(typeof window<"u"?window.location.href:"http://localhost"),r=t.searchParams,i=Object.fromEntries(r.entries()),n=t.hash;if(n){let a=Object.fromEntries(new URLSearchParams(n.slice(1)).entries());i={...i,...a}}for(let a in i)try{i[a]=JSON.parse(i[a])}catch{console.log(`[${a}|${i[a]}] n\xE3o \xE9 um json v\xE1lido.`)}return i}};var D=(n=>(n.UN="UN",n.KG="KG",n.TON="TON",n.g="g",n["M\xB3"]="M\xB3",n.Lt="Lt",n))(D||{}),oe=[{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 R,v3 as B,v4 as Q}from"uuid";var Y=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,re=o=>Y.test(String(o||"")),H=(o,e)=>B(typeof o=="string"?o:typeof o=="number"?String(o):JSON.stringify(o),e?H(e):R),W=Q,ie=W;export{h as TipagemRotas,oo as aleatorio,y as cacheM,io as cacheMFixo,ro as cacheMemoria,T as camposComuns,Lo as cdn_carro_de_boi,Oo as dayjsbr,Eo as defineCwd,Y as erUuid,Co as esperar,q as extensoes,No as graficos_pilao,Mo as localValor,Jo as logger,g as nomeVariavel,Fo as objetoPg,N as operadores,b as paraObjetoRegistroPg,Ko as pgObjeto,V as postLogger,D as siglas_unidades_medida,Wo as texto_busca,So as tipoArquivo,z as tipoUsuarioResiduos,S as tx,Vo as umaFuncao,Ro as umaVariavel,oe as unidades_medida,ie as uuid,H as uuidV3,W as uuidV4,ao as uuid_null,re as validarUuid,to as verCacheM,po as zFiltro,$ as zOperadores}; +======= +var x="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),oo=o=>`eli-${Array.from({length:o||8}).map(()=>x[(999*Math.random()|0)%x.length]).join("")}`;var d={};globalThis.cacheMemoria_cache=d;var y=(o,e,t)=>{let i=typeof o=="string"?o:typeof o=="number"?String(o):encodeURIComponent(JSON.stringify(o)),r=t&&new Date().getTime()+t*1e3;e!==void 0&&(d[i]={valor:e,validade:r});let n=d[i];if(!(n?.validade&&n.validaded,io=y,ro=o=>e=>y(o,e);var ao="00000000-0000-0000-0000-000000000000",T=(s=>(s.codigo="codigo",s.excluido="excluido",s.data_hora_criacao="data_hora_criacao",s.data_hora_atualizacao="data_hora_atualizacao",s.codigo_usuario_criacao="codigo_usuario_criacao",s.codigo_usuario_atualizacao="codigo_usuario_atualizacao",s.versao="versao",s))(T||{}),S=(e=>(e.token="token",e))(S||{}),z=(t=>(t.Usuario="usuario",t.Fornecedor="fornecedor",t))(z||{});import l from"zod";var N=(t=>(t["="]="=",t["!="]="!=",t[">"]=">",t[">="]=">=",t["<"]="<",t["<="]="<=",t.like="like",t.in="in",t))(N||{}),$=l.enum(["=","!=",">",">=","<","<=","like","in"]),po=l.object({coluna:l.string(),valor:l.any(),operador:$,ou:l.boolean().optional()});import m from"dayjs";import M from"dayjs/plugin/duration.js";import P from"dayjs/plugin/isSameOrAfter.js";import C from"dayjs/plugin/isSameOrBefore.js";import I from"dayjs/plugin/minMax.js";import U from"dayjs/plugin/relativeTime.js";import A from"dayjs/plugin/timezone.js";import E from"dayjs/plugin/utc.js";import J from"dayjs/plugin/weekOfYear.js";import"dayjs/locale/pt-br.js";m.locale("pt-br");m.extend(E);m.extend(A);m.extend(J);m.extend(C);m.extend(P);m.extend(I);m.extend(U);m.extend(M);var Oo=m;var Lo="https://carro-de-boi-idz-one.b-cdn.net";var q=[{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 e=String(o||"").toLocaleLowerCase().split(".").pop();return q.find(i=>i.ext===e)?.tipo||"outros"};var No={Condicionantes:{grafico:"condicionantes-criadas",titulo:"Condicionantes Criadas"},Licen\u00E7as:{grafico:"licencas-criadas",titulo:"Licen\xE7as Criadas"}};var Mo=(o,e)=>{let t=globalThis.localStorage;if(typeof t>"u")return null;let i=typeof o=="string"?o:encodeURIComponent(JSON.stringify(o));try{e!==void 0&&t.setItem(i,JSON.stringify(e));let r=t.getItem(i);if(r===null)return null;try{return JSON.parse(r)}catch{return r}}catch{return null}};import K from"cross-fetch";var Co=o=>new Promise(e=>setTimeout(()=>e(!0),o)),g=o=>Object.keys(o).join("/");var D="https://log.idz.one",F="/loki/api/v1/push",G=async({objeto:o})=>{let e=await K(`${D}${F}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}).catch(t=>t);return e.ok?[o]:[o,`Erro ${e.status}: ${await e?.text?.()}`]},f="",Eo=o=>{f=o},Jo=({app:o,eProducao:e,parametros:t})=>({inquilino:i,usuario:r,parametros:n})=>async(a,s,v)=>{let{__filename:p,detalhes:c,local:u,parametros:_}=v||{},O=`${e?"":"DEV-"}${o}`;f&&p&&(p=p.replace(f,"")),u&&(c=[`${g({local:u})}="${u}"`,...c||[]]),p&&(c=[`${g({__filename:p})}="${p}"`,...c||[]]);let w=`${Date.now()}000000`,L=c?.length?`${s} | ${c.map(k=>JSON.stringify(k)).join(" | ")}`:s,j={streams:[{stream:{app:O,inquilino:i,usuario:r,level:a,...t||{},...n||{},..._||{}},values:[[w,L]]}]};return await G({objeto:j})};var b=o=>{try{return Object.fromEntries(Object.entries(o).map(([e,t])=>[e,t===void 0||t==null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"?t:JSON.stringify(t,null,2)]))}catch(e){throw new Error(`Erro na fun\xE7\xE3o paraObjetoRegistroPg: ${e.message} ${e.stack}`)}},Ko=b,Do=b;var Go=()=>"Ol\xE1 Mundo! (fun\xE7\xE3o)";var Ro="Ol\xE1 Mundo! (vari\xE1vel)";var Wo=(...o)=>o.map(e=>e==null?"":String(e).normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g," ").toLowerCase()).join(" ");var h=class{constructor({caminho:e,acaoIr:t,rotulo:i}){this._partesCaminho=[];this._acaoIr=t,this._partesCaminho=(Array.isArray(e)?e:[e]).filter(Boolean).map(r=>String(r)).flatMap(r=>r.split("/")).filter(Boolean),this.rotulo=i}get caminho(){return`/${this._partesCaminho.join("/")}`}set caminho(e){this._partesCaminho=e.split("/").filter(t=>t)}endereco(e,t){let i=new URL(typeof window<"u"?window.location.href:"http://localhost");i.pathname=this.caminho,i.search="";let r=Object.entries(e);for(let[n,a]of r)i.searchParams.set(String(n),JSON.stringify(a));return i.hash="",t&&(i.hash=`#${i.search}`,i.search=""),i.href}ir(e){this._acaoIr?this._acaoIr(this.endereco({...e})):typeof window<"u"&&(window.location.href=this.endereco({...e}))}parametros(e){let t=e?new URL(e):new URL(typeof window<"u"?window.location.href:"http://localhost"),i=t.searchParams,r=Object.fromEntries(i.entries()),n=t.hash;if(n){let a=Object.fromEntries(new URLSearchParams(n.slice(1)).entries());r={...r,...a}}for(let a in r)try{r[a]=JSON.parse(r[a])}catch{console.log(`[${a}|${r[a]}] n\xE3o \xE9 um json v\xE1lido.`)}return r}};var V=(n=>(n.UN="UN",n.KG="KG",n.TON="TON",n.g="g",n["M\xB3"]="M\xB3",n.Lt="Lt",n))(V||{}),oe=[{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 R,v3 as B,v4 as Q}from"uuid";var Y=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,ie=o=>Y.test(String(o||"")),H=(o,e)=>B(typeof o=="string"?o:typeof o=="number"?String(o):JSON.stringify(o),e?H(e):R),W=Q,re=W;export{h as TipagemRotas,oo as aleatorio,y as cacheM,ro as cacheMFixo,io as cacheMemoria,T as camposComuns,Lo as cdn_carro_de_boi,Oo as dayjsbr,Eo as defineCwd,Y as erUuid,Co as esperar,q as extensoes,No as graficos_pilao,Mo as localValor,Jo as logger,g as nomeVariavel,Do as objetoPg,N as operadores,b as paraObjetoRegistroPg,Ko as pgObjeto,G as postLogger,V as siglas_unidades_medida,Wo as texto_busca,So as tipoArquivo,z as tipoUsuarioResiduos,S as tx,Go as umaFuncao,Ro as umaVariavel,oe as unidades_medida,re as uuid,H as uuidV3,W as uuidV4,ao as uuid_null,ie as validarUuid,to as verCacheM,po as zFiltro,$ as zOperadores}; +>>>>>>> 34d92fa (build) From 0cbe901499cb4eaa4492429bb192399792f30a8e Mon Sep 17 00:00:00 2001 From: Luiz Silva Date: Tue, 11 Nov 2025 16:02:48 -0300 Subject: [PATCH 3/3] . --- dist-back/consulta.js | 4 - dist-back/dayjs.js | 12 -- dist-back/index.js | 18 -- dist-back/instalarAmbiente.js | 5 - dist-back/logger.js | 4 - dist-front/index.d.mts | 2 +- dist-front/index.d.ts | 314 ---------------------------------- dist-front/index.mjs | 6 +- package.json | 2 +- pacote.tgz | Bin 24794 -> 24816 bytes 10 files changed, 3 insertions(+), 364 deletions(-) delete mode 100644 dist-front/index.d.ts diff --git a/dist-back/consulta.js b/dist-back/consulta.js index ace4812..d5cb3e3 100644 --- a/dist-back/consulta.js +++ b/dist-back/consulta.js @@ -33,11 +33,7 @@ __export(consulta_exports, { zOperadores: () => zOperadores }); module.exports = __toCommonJS(consulta_exports); -<<<<<<< HEAD var import_zod = __toESM(require("zod")); -======= -var import_zod = __toESM(require("zod"), 1); ->>>>>>> 34d92fa (build) var operadores = /* @__PURE__ */ ((operadores2) => { operadores2["="] = "="; operadores2["!="] = "!="; diff --git a/dist-back/dayjs.js b/dist-back/dayjs.js index e76e8f8..13f4663 100644 --- a/dist-back/dayjs.js +++ b/dist-back/dayjs.js @@ -31,7 +31,6 @@ __export(dayjs_exports, { dayjsbr: () => dayjsbr }); module.exports = __toCommonJS(dayjs_exports); -<<<<<<< HEAD var import_dayjs = __toESM(require("dayjs")); var import_duration = __toESM(require("dayjs/plugin/duration.js")); var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter.js")); @@ -41,17 +40,6 @@ var import_relativeTime = __toESM(require("dayjs/plugin/relativeTime.js")); var import_timezone = __toESM(require("dayjs/plugin/timezone.js")); var import_utc = __toESM(require("dayjs/plugin/utc.js")); var import_weekOfYear = __toESM(require("dayjs/plugin/weekOfYear.js")); -======= -var import_dayjs = __toESM(require("dayjs"), 1); -var import_duration = __toESM(require("dayjs/plugin/duration.js"), 1); -var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter.js"), 1); -var import_isSameOrBefore = __toESM(require("dayjs/plugin/isSameOrBefore.js"), 1); -var import_minMax = __toESM(require("dayjs/plugin/minMax.js"), 1); -var import_relativeTime = __toESM(require("dayjs/plugin/relativeTime.js"), 1); -var import_timezone = __toESM(require("dayjs/plugin/timezone.js"), 1); -var import_utc = __toESM(require("dayjs/plugin/utc.js"), 1); -var import_weekOfYear = __toESM(require("dayjs/plugin/weekOfYear.js"), 1); ->>>>>>> 34d92fa (build) var import_pt_br = require("dayjs/locale/pt-br.js"); import_dayjs.default.locale("pt-br"); import_dayjs.default.extend(import_utc.default); diff --git a/dist-back/index.js b/dist-back/index.js index c51cdcf..57e8fd0 100644 --- a/dist-back/index.js +++ b/dist-back/index.js @@ -22,25 +22,16 @@ __reExport(index_exports, require("./consulta"), module.exports); __reExport(index_exports, require("./dayjs"), module.exports); __reExport(index_exports, require("./ecosistema"), module.exports); __reExport(index_exports, require("./extensoes"), module.exports); -<<<<<<< HEAD __reExport(index_exports, require("./extensoes"), module.exports); __reExport(index_exports, require("./graficosPilao"), module.exports); __reExport(index_exports, require("./local"), module.exports); __reExport(index_exports, require("./logger"), module.exports); __reExport(index_exports, require("./logger"), module.exports); -======= -__reExport(index_exports, require("./graficosPilao"), module.exports); -__reExport(index_exports, require("./local"), module.exports); -__reExport(index_exports, require("./logger"), module.exports); ->>>>>>> 34d92fa (build) __reExport(index_exports, require("./postgres"), module.exports); __reExport(index_exports, require("./testes-de-variaveis"), module.exports); __reExport(index_exports, require("./texto_busca"), module.exports); __reExport(index_exports, require("./tipagemRotas"), module.exports); -<<<<<<< HEAD __reExport(index_exports, require("./tipagemRotas"), module.exports); -======= ->>>>>>> 34d92fa (build) __reExport(index_exports, require("./unidades_medida"), module.exports); __reExport(index_exports, require("./uuid"), module.exports); __reExport(index_exports, require("./variaveisComuns"), module.exports); @@ -53,25 +44,16 @@ __reExport(index_exports, require("./variaveisComuns"), module.exports); ...require("./dayjs"), ...require("./ecosistema"), ...require("./extensoes"), -<<<<<<< HEAD ...require("./extensoes"), ...require("./graficosPilao"), ...require("./local"), ...require("./logger"), ...require("./logger"), -======= - ...require("./graficosPilao"), - ...require("./local"), - ...require("./logger"), ->>>>>>> 34d92fa (build) ...require("./postgres"), ...require("./testes-de-variaveis"), ...require("./texto_busca"), ...require("./tipagemRotas"), -<<<<<<< HEAD ...require("./tipagemRotas"), -======= ->>>>>>> 34d92fa (build) ...require("./unidades_medida"), ...require("./uuid"), ...require("./variaveisComuns") diff --git a/dist-back/instalarAmbiente.js b/dist-back/instalarAmbiente.js index a0a90c7..d31e0a5 100644 --- a/dist-back/instalarAmbiente.js +++ b/dist-back/instalarAmbiente.js @@ -21,13 +21,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); -<<<<<<< HEAD var import_node_fs = __toESM(require("node:fs")); var import_node_path = __toESM(require("node:path")); -======= -var import_node_fs = __toESM(require("node:fs"), 1); -var import_node_path = __toESM(require("node:path"), 1); ->>>>>>> 34d92fa (build) const mesclar = (entrada, novo) => { const saida = { ...entrada || {} }; for (const [k, v] of Object.entries(novo)) { diff --git a/dist-back/logger.js b/dist-back/logger.js index 04c18f9..8f5983c 100644 --- a/dist-back/logger.js +++ b/dist-back/logger.js @@ -33,11 +33,7 @@ __export(logger_exports, { postLogger: () => postLogger }); module.exports = __toCommonJS(logger_exports); -<<<<<<< HEAD var import_cross_fetch = __toESM(require("cross-fetch")); -======= -var import_cross_fetch = __toESM(require("cross-fetch"), 1); ->>>>>>> 34d92fa (build) var import_variaveisComuns = require("./variaveisComuns"); const LOKI_BASE_URL = "https://log.idz.one"; const LOKI_ENDPOINT = "/loki/api/v1/push"; diff --git a/dist-front/index.d.mts b/dist-front/index.d.mts index 8de4d41..dea271a 100644 --- a/dist-front/index.d.mts +++ b/dist-front/index.d.mts @@ -1,6 +1,6 @@ import z from 'zod'; import dayjs from 'dayjs'; -export { ManipulateType } from 'dayjs'; +export { Dayjs, ManipulateType } from 'dayjs'; import { v4 } from 'uuid'; declare const aleatorio: (tamanho?: number) => string; diff --git a/dist-front/index.d.ts b/dist-front/index.d.ts deleted file mode 100644 index dea271a..0000000 --- a/dist-front/index.d.ts +++ /dev/null @@ -1,314 +0,0 @@ -import z from 'zod'; -import dayjs from 'dayjs'; -export { Dayjs, ManipulateType } from 'dayjs'; -import { v4 } from 'uuid'; - -declare const aleatorio: (tamanho?: number) => 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: () => { - [k: string]: { - /** new Date().getTime() */ - validade?: number | undefined; - valor: any; - } | undefined; -}; -declare const cacheMemoria: (chave: any, valor?: T, validadeSeg?: number) => T | undefined; -/** para uso fixo dentro de uma função, trava a chave */ -declare const cacheMFixo: (chave: any) => (valor?: T) => T | undefined; - -declare const uuid_null = "00000000-0000-0000-0000-000000000000"; -/** Colunas Presentes n maioria das tabelas */ -declare enum camposComuns { - codigo = "codigo", - excluido = "excluido", - data_hora_criacao = "data_hora_criacao", - data_hora_atualizacao = "data_hora_atualizacao", - codigo_usuario_criacao = "codigo_usuario_criacao", - codigo_usuario_atualizacao = "codigo_usuario_atualizacao", - versao = "versao" -} -/** Palavras comumente usadas */ -declare enum tx { - token = "token" -} -declare enum tipoUsuarioResiduos { - Usuario = "usuario", - Fornecedor = "fornecedor" -} - -declare enum operadores { - "=" = "=", - "!=" = "!=", - ">" = ">", - ">=" = ">=", - "<" = "<", - "<=" = "<=", - like = "like", - in = "in" -} -type tipoFiltro = { - coluna: string; - valor: any; - operador: keyof typeof operadores | operadores; - ou?: boolean; -}; -type interfaceConsulta = { - offset?: number; - limit?: number; - filtros?: tipoFiltro[]; - ordem?: string; - ordemTipo?: "asc" | "desc"; - colunas?: string[]; - apenasConsulta?: boolean; - apenasContagem?: boolean; -}; -declare const zOperadores: z.ZodEnum<{ - "=": "="; - "!=": "!="; - ">": ">"; - ">=": ">="; - "<": "<"; - "<=": "<="; - like: "like"; - in: "in"; -}>; -declare const zFiltro: z.ZodObject<{ - coluna: z.ZodString; - valor: z.ZodAny; - operador: z.ZodEnum<{ - "=": "="; - "!=": "!="; - ">": ">"; - ">=": ">="; - "<": "<"; - "<=": "<="; - like: "like"; - in: "in"; - }>; - ou: z.ZodOptional; -}, z.core.$strip>; - -declare const dayjsbr: typeof dayjs; - -declare const cdn_carro_de_boi = "https://carro-de-boi-idz-one.b-cdn.net"; - -type tiposArquivo = "imagem" | "documento" | "vídeo" | "outros"; -declare const extensoes: { - ext: string; - tipo: tiposArquivo; - mime: string; -}[]; -/** - * Função que retorna o tipo do arquivo - * @param nomeArquivo - * @returns - */ -declare const tipoArquivo: (nomeArquivo: string | null | undefined) => tiposArquivo; - -declare const graficos_pilao: { - [k: string]: { - grafico: string; - titulo: string; - }; -}; - -/** - * LocalStorage Tipado - * Lê ou grava um valor no localStorage, mantendo o tipo genérico . - */ -declare const localValor: (chave_: string | any, valor?: T | null) => T | null; - -type tipoLokiObjeto = { - streams: { - stream: { - [k: string]: string; - }; - values: [string, string][]; - }[]; -}; -declare const postLogger: ({ objeto, }: { - objeto: tipoLokiObjeto; -}) => Promise<[objeto: tipoLokiObjeto, erro?: string]>; -/** define a localização da pasta do projeto */ -declare const defineCwd: (novoCwd: string) => void; -type tipoLevel = "info" | "warn" | "error"; -type tipoOpSessao = { - inquilino: string; - usuario: string; - parametros?: { - [k: string]: string; - }; -}; -type tipoLog = { - detalhes?: unknown[]; - __filename?: string; - local?: string; - parametros?: { - [k: string]: string; - }; -}; -type tipoLoggerLog = (level: tipoLevel, mensagem: string, op_tipoLog?: tipoLog) => Promise<[objeto: tipoLokiObjeto, erro?: string]>; -type TipoLoggerSessao = (sess: tipoOpSessao) => tipoLoggerLog; -type tipoLogger = (amb: { - app: string; - eProducao: boolean; - parametros?: { - [k: string]: string; - }; -}) => TipoLoggerSessao; -declare const logger: tipoLogger; - -/** - * Trata um objeto para ser imput para postgres - * @param entrada - * @returns - */ -declare const paraObjetoRegistroPg: (entrada: { - [k: string]: any; -}) => { - [k: string]: string | boolean | null | undefined | number; -}; -declare const pgObjeto: (entrada: { - [k: string]: any; -}) => { - [k: string]: string | boolean | null | undefined | number; -}; -declare const objetoPg: (entrada: { - [k: string]: any; -}) => { - [k: string]: string | boolean | null | undefined | number; -}; - -declare const umaFuncao: () => string; - -declare const umaVariavel = "Ol\u00E1 Mundo! (vari\u00E1vel)"; - -/** gerar o texto de busca removendo caracteres especies e caixa alta */ -declare const texto_busca: (...texto: any[]) => string; - -/** Gerar uma classe que facilita a gestão de rotas com a tipagem das querys - * - * Definições: - * - * caminho = "/aplicacao/funcionalidade" - * - * endereco = "http://localhost:3000/aplicacao/funcionalidade" - * - * parametros = {nome:"José"} - */ -declare class TipagemRotas { - _partesCaminho: string[]; - _acaoIr?: (endereco: string) => undefined; - rotulo: string | undefined; - /** Ao criar novo obijeto de tipagem de rota é necessário passar o caminho parcial - ** export const mCaminho = new TipagemRotas<{q:string}>("aplicacao","funcionalidade") - */ - constructor({ caminho, acaoIr, rotulo, }: { - caminho: (string | null | undefined)[] | string; - acaoIr?: undefined | ((endereco: string) => undefined); - /** Rotulo da página - * Inicio | Controle - */ - rotulo?: string; - }); - /** Retorna o caminho completo da rota - ** console.log(mCaminho.caminho) - ** "/caminho" - */ - get caminho(): string; - /** Define o caminho completo da rota - ** mCaminho.caminho = "/novoCaminho" - ** console.log(mCaminho.caminho) - ** "/novoCaminho" - ** */ - set caminho(caminhoParcial: string); - /** Retorna o caminho completo da rota com a query - ** console.log(mCaminho.resolve({q:"query"})) - ** "http://localhost:3000/caminho?q=query" - */ - endereco(query: T, usarComoHash?: boolean): string; - /** Vai para a url - ** mCaminho.ir({q:"query"}) - ** window.location.href = "http://localhost:3000/caminho?q=query" - */ - ir(query: T): void; - /** Retorna os parametros da url - ** console.log(mCaminho.parametros()) - ** {q:"query"} - */ - parametros(urlEntrada?: string): Partial; -} - -/** - * Essa variável se conecta a tabela_lidades - * - * onde sigla se conecta com sigla - * - * Usuário terá mais opções de unidades, quando fazer o envio para o mtr, usar a opção fornecida pelo usuarios, caso não tenha - * usar a normalizada - */ -declare enum siglas_unidades_medida { - UN = "UN", - KG = "KG", - TON = "TON", - g = "g", - "M³" = "M\u00B3", - Lt = "Lt" -} -declare const unidades_medida: { - sigla_unidade: keyof typeof siglas_unidades_medida; - nome: string; - sigla_normalizada: keyof typeof siglas_unidades_medida; - normalizar: (valor: number) => number; - tipo: "massa" | "volume" | "comprimento" | "unidade"; -}[]; - -/** - * Valida se uma string é um UUID válido (qualquer versão). - * - * @param valor - A string que será validada. - * @returns booleano indicando se é um UUID válido. - */ -declare const erUuid: RegExp; -declare const validarUuid: (uuid: string | number | undefined | null) => boolean; -/** - * Gera um UUID determinístico (versão 3) com base em uma chave e um grupo (namespace). - * - * - Usa o algoritmo MD5 (RFC 4122). - * - Sempre retorna o mesmo UUID para a mesma combinação chave + grupo. - * - Caso o grupo não seja informado, usa o UUID "nil" como namespace. - * - * @param chave - Qualquer valor que será convertido em string para gerar o UUID (ex: número, string ou objeto). - * @param grupo - Opcional. Namespace para separar domínios diferentes de UUIDs. - * @returns UUID v3 (determinístico) - */ -declare const uuidV3: (chave: any, grupo?: any) => string; -/** - * Gera um UUID v4 (aleatório, não determinístico). - * - * - Usado quando unicidade é necessária, mas não se exige que seja previsível. - */ -declare const uuidV4: typeof v4; -/** - * @deprecated Esta variável será descontinuada em versões futuras. - * Use a função `uuidV4()` diretamente. - */ -declare const uuid: typeof v4; - -declare const esperar: (ms: number) => Promise; -/** - * Usado para retronat o no de uma variável, deve ser usado dentro de um objeto - * const nomex = {a: 1, b: 2} - * nomeVariavel({nomex}) // retorna "nomex" - * @param v - * @returns - */ -declare const nomeVariavel: (v: { - [key: string]: any; -}) => string; - -export { TipagemRotas, type TipoLoggerSessao, aleatorio, cacheM, cacheMFixo, cacheMemoria, camposComuns, cdn_carro_de_boi, dayjsbr, defineCwd, erUuid, esperar, extensoes, graficos_pilao, type interfaceConsulta, 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/dist-front/index.mjs b/dist-front/index.mjs index 78c4b7e..2c0a70b 100644 --- a/dist-front/index.mjs +++ b/dist-front/index.mjs @@ -1,5 +1 @@ -<<<<<<< HEAD -var x="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),oo=o=>`eli-${Array.from({length:o||8}).map(()=>x[(999*Math.random()|0)%x.length]).join("")}`;var d={};globalThis.cacheMemoria_cache=d;var y=(o,e,t)=>{let r=typeof o=="string"?o:typeof o=="number"?String(o):encodeURIComponent(JSON.stringify(o)),i=t&&new Date().getTime()+t*1e3;e!==void 0&&(d[r]={valor:e,validade:i});let n=d[r];if(!(n?.validade&&n.validaded,ro=y,io=o=>e=>y(o,e);var ao="00000000-0000-0000-0000-000000000000",T=(s=>(s.codigo="codigo",s.excluido="excluido",s.data_hora_criacao="data_hora_criacao",s.data_hora_atualizacao="data_hora_atualizacao",s.codigo_usuario_criacao="codigo_usuario_criacao",s.codigo_usuario_atualizacao="codigo_usuario_atualizacao",s.versao="versao",s))(T||{}),S=(e=>(e.token="token",e))(S||{}),z=(t=>(t.Usuario="usuario",t.Fornecedor="fornecedor",t))(z||{});import l from"zod";var N=(t=>(t["="]="=",t["!="]="!=",t[">"]=">",t[">="]=">=",t["<"]="<",t["<="]="<=",t.like="like",t.in="in",t))(N||{}),$=l.enum(["=","!=",">",">=","<","<=","like","in"]),po=l.object({coluna:l.string(),valor:l.any(),operador:$,ou:l.boolean().optional()});import m from"dayjs";import M from"dayjs/plugin/duration.js";import P from"dayjs/plugin/isSameOrAfter.js";import C from"dayjs/plugin/isSameOrBefore.js";import I from"dayjs/plugin/minMax.js";import U from"dayjs/plugin/relativeTime.js";import A from"dayjs/plugin/timezone.js";import E from"dayjs/plugin/utc.js";import J from"dayjs/plugin/weekOfYear.js";import"dayjs/locale/pt-br.js";m.locale("pt-br");m.extend(E);m.extend(A);m.extend(J);m.extend(C);m.extend(P);m.extend(I);m.extend(U);m.extend(M);var Oo=m;var Lo="https://carro-de-boi-idz-one.b-cdn.net";var q=[{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 e=String(o||"").toLocaleLowerCase().split(".").pop();return q.find(r=>r.ext===e)?.tipo||"outros"};var No={Condicionantes:{grafico:"condicionantes-criadas",titulo:"Condicionantes Criadas"},Licen\u00E7as:{grafico:"licencas-criadas",titulo:"Licen\xE7as Criadas"}};var Mo=(o,e)=>{let t=globalThis.localStorage;if(typeof t>"u")return null;let r=typeof o=="string"?o:encodeURIComponent(JSON.stringify(o));try{e!==void 0&&t.setItem(r,JSON.stringify(e));let i=t.getItem(r);if(i===null)return null;try{return JSON.parse(i)}catch{return i}}catch{return null}};import K from"cross-fetch";var Co=o=>new Promise(e=>setTimeout(()=>e(!0),o)),g=o=>Object.keys(o).join("/");var F="https://log.idz.one",G="/loki/api/v1/push",V=async({objeto:o})=>{let e=await K(`${F}${G}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}).catch(t=>t);return e.ok?[o]:[o,`Erro ${e.status}: ${await e?.text?.()}`]},f="",Eo=o=>{f=o},Jo=({app:o,eProducao:e,parametros:t})=>({inquilino:r,usuario:i,parametros:n})=>async(a,s,v)=>{let{__filename:p,detalhes:c,local:u,parametros:_}=v||{},O=`${e?"":"DEV-"}${o}`;f&&p&&(p=p.replace(f,"")),u&&(c=[`${g({local:u})}="${u}"`,...c||[]]),p&&(c=[`${g({__filename:p})}="${p}"`,...c||[]]);let w=`${Date.now()}000000`,L=c?.length?`${s} | ${c.map(k=>JSON.stringify(k)).join(" | ")}`:s,j={streams:[{stream:{app:O,inquilino:r,usuario:i,level:a,...t||{},...n||{},..._||{}},values:[[w,L]]}]};return await V({objeto:j})};var b=o=>{try{return Object.fromEntries(Object.entries(o).map(([e,t])=>[e,t===void 0||t==null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"?t:JSON.stringify(t,null,2)]))}catch(e){throw new Error(`Erro na fun\xE7\xE3o paraObjetoRegistroPg: ${e.message} ${e.stack}`)}},Ko=b,Fo=b;var Vo=()=>"Ol\xE1 Mundo! (fun\xE7\xE3o)";var Ro="Ol\xE1 Mundo! (vari\xE1vel)";var Wo=(...o)=>o.map(e=>e==null?"":String(e).normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g," ").toLowerCase()).join(" ");var h=class{constructor({caminho:e,acaoIr:t,rotulo:r}){this._partesCaminho=[];this._acaoIr=t,this._partesCaminho=(Array.isArray(e)?e:[e]).filter(Boolean).map(i=>String(i)).flatMap(i=>i.split("/")).filter(Boolean),this.rotulo=r}get caminho(){return`/${this._partesCaminho.join("/")}`}set caminho(e){this._partesCaminho=e.split("/").filter(t=>t)}endereco(e,t){let r=new URL(typeof window<"u"?window.location.href:"http://localhost");r.pathname=this.caminho,r.search="";let i=Object.entries(e);for(let[n,a]of i)r.searchParams.set(String(n),JSON.stringify(a));return r.hash="",t&&(r.hash=`#${r.search}`,r.search=""),r.href}ir(e){this._acaoIr?this._acaoIr(this.endereco({...e})):typeof window<"u"&&(window.location.href=this.endereco({...e}))}parametros(e){let t=e?new URL(e):new URL(typeof window<"u"?window.location.href:"http://localhost"),r=t.searchParams,i=Object.fromEntries(r.entries()),n=t.hash;if(n){let a=Object.fromEntries(new URLSearchParams(n.slice(1)).entries());i={...i,...a}}for(let a in i)try{i[a]=JSON.parse(i[a])}catch{console.log(`[${a}|${i[a]}] n\xE3o \xE9 um json v\xE1lido.`)}return i}};var D=(n=>(n.UN="UN",n.KG="KG",n.TON="TON",n.g="g",n["M\xB3"]="M\xB3",n.Lt="Lt",n))(D||{}),oe=[{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 R,v3 as B,v4 as Q}from"uuid";var Y=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,re=o=>Y.test(String(o||"")),H=(o,e)=>B(typeof o=="string"?o:typeof o=="number"?String(o):JSON.stringify(o),e?H(e):R),W=Q,ie=W;export{h as TipagemRotas,oo as aleatorio,y as cacheM,io as cacheMFixo,ro as cacheMemoria,T as camposComuns,Lo as cdn_carro_de_boi,Oo as dayjsbr,Eo as defineCwd,Y as erUuid,Co as esperar,q as extensoes,No as graficos_pilao,Mo as localValor,Jo as logger,g as nomeVariavel,Fo as objetoPg,N as operadores,b as paraObjetoRegistroPg,Ko as pgObjeto,V as postLogger,D as siglas_unidades_medida,Wo as texto_busca,So as tipoArquivo,z as tipoUsuarioResiduos,S as tx,Vo as umaFuncao,Ro as umaVariavel,oe as unidades_medida,ie as uuid,H as uuidV3,W as uuidV4,ao as uuid_null,re as validarUuid,to as verCacheM,po as zFiltro,$ as zOperadores}; -======= -var x="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),oo=o=>`eli-${Array.from({length:o||8}).map(()=>x[(999*Math.random()|0)%x.length]).join("")}`;var d={};globalThis.cacheMemoria_cache=d;var y=(o,e,t)=>{let i=typeof o=="string"?o:typeof o=="number"?String(o):encodeURIComponent(JSON.stringify(o)),r=t&&new Date().getTime()+t*1e3;e!==void 0&&(d[i]={valor:e,validade:r});let n=d[i];if(!(n?.validade&&n.validaded,io=y,ro=o=>e=>y(o,e);var ao="00000000-0000-0000-0000-000000000000",T=(s=>(s.codigo="codigo",s.excluido="excluido",s.data_hora_criacao="data_hora_criacao",s.data_hora_atualizacao="data_hora_atualizacao",s.codigo_usuario_criacao="codigo_usuario_criacao",s.codigo_usuario_atualizacao="codigo_usuario_atualizacao",s.versao="versao",s))(T||{}),S=(e=>(e.token="token",e))(S||{}),z=(t=>(t.Usuario="usuario",t.Fornecedor="fornecedor",t))(z||{});import l from"zod";var N=(t=>(t["="]="=",t["!="]="!=",t[">"]=">",t[">="]=">=",t["<"]="<",t["<="]="<=",t.like="like",t.in="in",t))(N||{}),$=l.enum(["=","!=",">",">=","<","<=","like","in"]),po=l.object({coluna:l.string(),valor:l.any(),operador:$,ou:l.boolean().optional()});import m from"dayjs";import M from"dayjs/plugin/duration.js";import P from"dayjs/plugin/isSameOrAfter.js";import C from"dayjs/plugin/isSameOrBefore.js";import I from"dayjs/plugin/minMax.js";import U from"dayjs/plugin/relativeTime.js";import A from"dayjs/plugin/timezone.js";import E from"dayjs/plugin/utc.js";import J from"dayjs/plugin/weekOfYear.js";import"dayjs/locale/pt-br.js";m.locale("pt-br");m.extend(E);m.extend(A);m.extend(J);m.extend(C);m.extend(P);m.extend(I);m.extend(U);m.extend(M);var Oo=m;var Lo="https://carro-de-boi-idz-one.b-cdn.net";var q=[{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 e=String(o||"").toLocaleLowerCase().split(".").pop();return q.find(i=>i.ext===e)?.tipo||"outros"};var No={Condicionantes:{grafico:"condicionantes-criadas",titulo:"Condicionantes Criadas"},Licen\u00E7as:{grafico:"licencas-criadas",titulo:"Licen\xE7as Criadas"}};var Mo=(o,e)=>{let t=globalThis.localStorage;if(typeof t>"u")return null;let i=typeof o=="string"?o:encodeURIComponent(JSON.stringify(o));try{e!==void 0&&t.setItem(i,JSON.stringify(e));let r=t.getItem(i);if(r===null)return null;try{return JSON.parse(r)}catch{return r}}catch{return null}};import K from"cross-fetch";var Co=o=>new Promise(e=>setTimeout(()=>e(!0),o)),g=o=>Object.keys(o).join("/");var D="https://log.idz.one",F="/loki/api/v1/push",G=async({objeto:o})=>{let e=await K(`${D}${F}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}).catch(t=>t);return e.ok?[o]:[o,`Erro ${e.status}: ${await e?.text?.()}`]},f="",Eo=o=>{f=o},Jo=({app:o,eProducao:e,parametros:t})=>({inquilino:i,usuario:r,parametros:n})=>async(a,s,v)=>{let{__filename:p,detalhes:c,local:u,parametros:_}=v||{},O=`${e?"":"DEV-"}${o}`;f&&p&&(p=p.replace(f,"")),u&&(c=[`${g({local:u})}="${u}"`,...c||[]]),p&&(c=[`${g({__filename:p})}="${p}"`,...c||[]]);let w=`${Date.now()}000000`,L=c?.length?`${s} | ${c.map(k=>JSON.stringify(k)).join(" | ")}`:s,j={streams:[{stream:{app:O,inquilino:i,usuario:r,level:a,...t||{},...n||{},..._||{}},values:[[w,L]]}]};return await G({objeto:j})};var b=o=>{try{return Object.fromEntries(Object.entries(o).map(([e,t])=>[e,t===void 0||t==null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"?t:JSON.stringify(t,null,2)]))}catch(e){throw new Error(`Erro na fun\xE7\xE3o paraObjetoRegistroPg: ${e.message} ${e.stack}`)}},Ko=b,Do=b;var Go=()=>"Ol\xE1 Mundo! (fun\xE7\xE3o)";var Ro="Ol\xE1 Mundo! (vari\xE1vel)";var Wo=(...o)=>o.map(e=>e==null?"":String(e).normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g," ").toLowerCase()).join(" ");var h=class{constructor({caminho:e,acaoIr:t,rotulo:i}){this._partesCaminho=[];this._acaoIr=t,this._partesCaminho=(Array.isArray(e)?e:[e]).filter(Boolean).map(r=>String(r)).flatMap(r=>r.split("/")).filter(Boolean),this.rotulo=i}get caminho(){return`/${this._partesCaminho.join("/")}`}set caminho(e){this._partesCaminho=e.split("/").filter(t=>t)}endereco(e,t){let i=new URL(typeof window<"u"?window.location.href:"http://localhost");i.pathname=this.caminho,i.search="";let r=Object.entries(e);for(let[n,a]of r)i.searchParams.set(String(n),JSON.stringify(a));return i.hash="",t&&(i.hash=`#${i.search}`,i.search=""),i.href}ir(e){this._acaoIr?this._acaoIr(this.endereco({...e})):typeof window<"u"&&(window.location.href=this.endereco({...e}))}parametros(e){let t=e?new URL(e):new URL(typeof window<"u"?window.location.href:"http://localhost"),i=t.searchParams,r=Object.fromEntries(i.entries()),n=t.hash;if(n){let a=Object.fromEntries(new URLSearchParams(n.slice(1)).entries());r={...r,...a}}for(let a in r)try{r[a]=JSON.parse(r[a])}catch{console.log(`[${a}|${r[a]}] n\xE3o \xE9 um json v\xE1lido.`)}return r}};var V=(n=>(n.UN="UN",n.KG="KG",n.TON="TON",n.g="g",n["M\xB3"]="M\xB3",n.Lt="Lt",n))(V||{}),oe=[{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 R,v3 as B,v4 as Q}from"uuid";var Y=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,ie=o=>Y.test(String(o||"")),H=(o,e)=>B(typeof o=="string"?o:typeof o=="number"?String(o):JSON.stringify(o),e?H(e):R),W=Q,re=W;export{h as TipagemRotas,oo as aleatorio,y as cacheM,ro as cacheMFixo,io as cacheMemoria,T as camposComuns,Lo as cdn_carro_de_boi,Oo as dayjsbr,Eo as defineCwd,Y as erUuid,Co as esperar,q as extensoes,No as graficos_pilao,Mo as localValor,Jo as logger,g as nomeVariavel,Do as objetoPg,N as operadores,b as paraObjetoRegistroPg,Ko as pgObjeto,G as postLogger,V as siglas_unidades_medida,Wo as texto_busca,So as tipoArquivo,z as tipoUsuarioResiduos,S as tx,Go as umaFuncao,Ro as umaVariavel,oe as unidades_medida,re as uuid,H as uuidV3,W as uuidV4,ao as uuid_null,ie as validarUuid,to as verCacheM,po as zFiltro,$ as zOperadores}; ->>>>>>> 34d92fa (build) +var x="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),oo=o=>`eli-${Array.from({length:o||8}).map(()=>x[(999*Math.random()|0)%x.length]).join("")}`;var d={};globalThis.cacheMemoria_cache=d;var y=(o,e,t)=>{let r=typeof o=="string"?o:typeof o=="number"?String(o):encodeURIComponent(JSON.stringify(o)),i=t&&new Date().getTime()+t*1e3;e!==void 0&&(d[r]={valor:e,validade:i});let n=d[r];if(!(n?.validade&&n.validaded,ro=y,io=o=>e=>y(o,e);var ao="00000000-0000-0000-0000-000000000000",T=(s=>(s.codigo="codigo",s.excluido="excluido",s.data_hora_criacao="data_hora_criacao",s.data_hora_atualizacao="data_hora_atualizacao",s.codigo_usuario_criacao="codigo_usuario_criacao",s.codigo_usuario_atualizacao="codigo_usuario_atualizacao",s.versao="versao",s))(T||{}),S=(e=>(e.token="token",e))(S||{}),z=(t=>(t.Usuario="usuario",t.Fornecedor="fornecedor",t))(z||{});import l from"zod";var N=(t=>(t["="]="=",t["!="]="!=",t[">"]=">",t[">="]=">=",t["<"]="<",t["<="]="<=",t.like="like",t.in="in",t))(N||{}),$=l.enum(["=","!=",">",">=","<","<=","like","in"]),po=l.object({coluna:l.string(),valor:l.any(),operador:$,ou:l.boolean().optional()});import m from"dayjs";import M from"dayjs/plugin/duration.js";import P from"dayjs/plugin/isSameOrAfter.js";import C from"dayjs/plugin/isSameOrBefore.js";import I from"dayjs/plugin/minMax.js";import U from"dayjs/plugin/relativeTime.js";import A from"dayjs/plugin/timezone.js";import E from"dayjs/plugin/utc.js";import J from"dayjs/plugin/weekOfYear.js";import"dayjs/locale/pt-br.js";m.locale("pt-br");m.extend(E);m.extend(A);m.extend(J);m.extend(C);m.extend(P);m.extend(I);m.extend(U);m.extend(M);var Oo=m;var Lo="https://carro-de-boi-idz-one.b-cdn.net";var q=[{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 e=String(o||"").toLocaleLowerCase().split(".").pop();return q.find(r=>r.ext===e)?.tipo||"outros"};var No={Condicionantes:{grafico:"condicionantes-criadas",titulo:"Condicionantes Criadas"},Licen\u00E7as:{grafico:"licencas-criadas",titulo:"Licen\xE7as Criadas"}};var Mo=(o,e)=>{let t=globalThis.localStorage;if(typeof t>"u")return null;let r=typeof o=="string"?o:encodeURIComponent(JSON.stringify(o));try{e!==void 0&&t.setItem(r,JSON.stringify(e));let i=t.getItem(r);if(i===null)return null;try{return JSON.parse(i)}catch{return i}}catch{return null}};import K from"cross-fetch";var Co=o=>new Promise(e=>setTimeout(()=>e(!0),o)),g=o=>Object.keys(o).join("/");var D="https://log.idz.one",F="/loki/api/v1/push",G=async({objeto:o})=>{let e=await K(`${D}${F}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}).catch(t=>t);return e.ok?[o]:[o,`Erro ${e.status}: ${await e?.text?.()}`]},f="",Eo=o=>{f=o},Jo=({app:o,eProducao:e,parametros:t})=>({inquilino:r,usuario:i,parametros:n})=>async(a,s,v)=>{let{__filename:p,detalhes:c,local:u,parametros:_}=v||{},O=`${e?"":"DEV-"}${o}`;f&&p&&(p=p.replace(f,"")),u&&(c=[`${g({local:u})}="${u}"`,...c||[]]),p&&(c=[`${g({__filename:p})}="${p}"`,...c||[]]);let w=`${Date.now()}000000`,L=c?.length?`${s} | ${c.map(k=>JSON.stringify(k)).join(" | ")}`:s,j={streams:[{stream:{app:O,inquilino:r,usuario:i,level:a,...t||{},...n||{},..._||{}},values:[[w,L]]}]};return await G({objeto:j})};var b=o=>{try{return Object.fromEntries(Object.entries(o).map(([e,t])=>[e,t===void 0||t==null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"?t:JSON.stringify(t,null,2)]))}catch(e){throw new Error(`Erro na fun\xE7\xE3o paraObjetoRegistroPg: ${e.message} ${e.stack}`)}},Ko=b,Do=b;var Go=()=>"Ol\xE1 Mundo! (fun\xE7\xE3o)";var Ro="Ol\xE1 Mundo! (vari\xE1vel)";var Wo=(...o)=>o.map(e=>e==null?"":String(e).normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g," ").toLowerCase()).join(" ");var h=class{constructor({caminho:e,acaoIr:t,rotulo:r}){this._partesCaminho=[];this._acaoIr=t,this._partesCaminho=(Array.isArray(e)?e:[e]).filter(Boolean).map(i=>String(i)).flatMap(i=>i.split("/")).filter(Boolean),this.rotulo=r}get caminho(){return`/${this._partesCaminho.join("/")}`}set caminho(e){this._partesCaminho=e.split("/").filter(t=>t)}endereco(e,t){let r=new URL(typeof window<"u"?window.location.href:"http://localhost");r.pathname=this.caminho,r.search="";let i=Object.entries(e);for(let[n,a]of i)r.searchParams.set(String(n),JSON.stringify(a));return r.hash="",t&&(r.hash=`#${r.search}`,r.search=""),r.href}ir(e){this._acaoIr?this._acaoIr(this.endereco({...e})):typeof window<"u"&&(window.location.href=this.endereco({...e}))}parametros(e){let t=e?new URL(e):new URL(typeof window<"u"?window.location.href:"http://localhost"),r=t.searchParams,i=Object.fromEntries(r.entries()),n=t.hash;if(n){let a=Object.fromEntries(new URLSearchParams(n.slice(1)).entries());i={...i,...a}}for(let a in i)try{i[a]=JSON.parse(i[a])}catch{console.log(`[${a}|${i[a]}] n\xE3o \xE9 um json v\xE1lido.`)}return i}};var V=(n=>(n.UN="UN",n.KG="KG",n.TON="TON",n.g="g",n["M\xB3"]="M\xB3",n.Lt="Lt",n))(V||{}),oe=[{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 R,v3 as B,v4 as Q}from"uuid";var Y=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,re=o=>Y.test(String(o||"")),H=(o,e)=>B(typeof o=="string"?o:typeof o=="number"?String(o):JSON.stringify(o),e?H(e):R),W=Q,ie=W;export{h as TipagemRotas,oo as aleatorio,y as cacheM,io as cacheMFixo,ro as cacheMemoria,T as camposComuns,Lo as cdn_carro_de_boi,Oo as dayjsbr,Eo as defineCwd,Y as erUuid,Co as esperar,q as extensoes,No as graficos_pilao,Mo as localValor,Jo as logger,g as nomeVariavel,Do as objetoPg,N as operadores,b as paraObjetoRegistroPg,Ko as pgObjeto,G as postLogger,V as siglas_unidades_medida,Wo as texto_busca,So as tipoArquivo,z as tipoUsuarioResiduos,S as tx,Go as umaFuncao,Ro as umaVariavel,oe as unidades_medida,ie as uuid,H as uuidV3,W as uuidV4,ao as uuid_null,re as validarUuid,to as verCacheM,po as zFiltro,$ as zOperadores}; diff --git a/package.json b/package.json index e755f0a..164baac 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "p-comuns", - "version": "0.291.0", + "version": "0.292.0", "description": "", "main": "./dist-front/index.mjs", "module": "./dist-front/index.mjs", diff --git a/pacote.tgz b/pacote.tgz index 9dc78726ef7d497e4342a272b93017b5ea101176..7b6064c6873b2ea28209dc4193e80e92e1b8dcd4 100644 GIT binary patch delta 23442 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 delta 23427 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 z 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