From 24407479cf8c9029b1c14ba72e8cdc3d5a774cb4 Mon Sep 17 00:00:00 2001 From: marcio Date: Mon, 10 Nov 2025 16:04:29 -0300 Subject: [PATCH] build --- dist-back/aleatorio.js | 29 ++ dist-back/cacheMemoria.js | 53 +++ dist-back/constantes.js | 53 +++ dist-back/consulta.js | 69 ++++ dist-back/dayjs.js | 57 +++ dist-back/ecosistema/index.js | 22 ++ dist-back/ecosistema/urls.js | 28 ++ dist-back/extensoes.js | 186 ++++++++++ dist-back/graficosPilao.js | 37 ++ dist-back/index.js | 62 ++++ dist-back/instalarAmbiente.js | 63 ++++ dist-back/local/index.js | 46 +++ dist-back/logger.js | 106 ++++++ dist-back/postgres.js | 47 +++ dist-back/situacoes/index.js | 22 ++ dist-back/situacoes/situacoes.js | 84 +++++ dist-back/teste.js | 6 + dist-back/testes-de-variaveis/index.js | 24 ++ dist-back/testes-de-variaveis/umaFuncao.js | 28 ++ dist-back/testes-de-variaveis/umaVariavel.js | 28 ++ dist-back/testes/TipagemRotas.test.js | 22 ++ dist-back/texto_busca.js | 30 ++ dist-back/tipagemRotas.js | 118 ++++++ dist-back/unidades_medida.js | 82 +++++ dist-back/uuid.js | 51 +++ dist-back/variaveisComuns.js | 33 ++ dist-front/index.d.ts | 366 +++++++++++++++++++ dist-front/index.mjs | 1 + package.json | 8 +- pacote.tgz | Bin 24987 -> 37942 bytes src/index.ts | 8 +- 31 files changed, 1759 insertions(+), 10 deletions(-) create mode 100644 dist-back/aleatorio.js create mode 100644 dist-back/cacheMemoria.js create mode 100644 dist-back/constantes.js create mode 100644 dist-back/consulta.js create mode 100644 dist-back/dayjs.js create mode 100644 dist-back/ecosistema/index.js create mode 100644 dist-back/ecosistema/urls.js create mode 100644 dist-back/extensoes.js create mode 100644 dist-back/graficosPilao.js create mode 100644 dist-back/index.js create mode 100644 dist-back/instalarAmbiente.js create mode 100644 dist-back/local/index.js create mode 100644 dist-back/logger.js create mode 100644 dist-back/postgres.js create mode 100644 dist-back/situacoes/index.js create mode 100644 dist-back/situacoes/situacoes.js create mode 100644 dist-back/teste.js create mode 100644 dist-back/testes-de-variaveis/index.js create mode 100644 dist-back/testes-de-variaveis/umaFuncao.js create mode 100644 dist-back/testes-de-variaveis/umaVariavel.js create mode 100644 dist-back/testes/TipagemRotas.test.js create mode 100644 dist-back/texto_busca.js create mode 100644 dist-back/tipagemRotas.js create mode 100644 dist-back/unidades_medida.js create mode 100644 dist-back/uuid.js create mode 100644 dist-back/variaveisComuns.js create mode 100644 dist-front/index.d.ts create mode 100644 dist-front/index.mjs diff --git a/dist-back/aleatorio.js b/dist-back/aleatorio.js new file mode 100644 index 0000000..1566283 --- /dev/null +++ b/dist-back/aleatorio.js @@ -0,0 +1,29 @@ +"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 aleatorio_exports = {}; +__export(aleatorio_exports, { + aleatorio: () => aleatorio +}); +module.exports = __toCommonJS(aleatorio_exports); +const alfabeto = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""); +const aleatorio = (tamanho) => `eli-${Array.from({ length: tamanho || 8 }).map(() => alfabeto[(999 * Math.random() | 0) % alfabeto.length]).join("")}`; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + aleatorio +}); diff --git a/dist-back/cacheMemoria.js b/dist-back/cacheMemoria.js new file mode 100644 index 0000000..7c004f4 --- /dev/null +++ b/dist-back/cacheMemoria.js @@ -0,0 +1,53 @@ +"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 cacheMemoria_exports = {}; +__export(cacheMemoria_exports, { + cacheM: () => cacheM, + cacheMFixo: () => cacheMFixo, + cacheMemoria: () => cacheMemoria, + verCacheM: () => verCacheM +}); +module.exports = __toCommonJS(cacheMemoria_exports); +const _cache = {}; +globalThis.cacheMemoria_cache = _cache; +const cacheM = (chave, valor, validadeSeg) => { + const txChave = typeof chave == "string" ? chave : typeof chave == "number" ? String(chave) : encodeURIComponent(JSON.stringify(chave)); + const validade = validadeSeg && (/* @__PURE__ */ new Date()).getTime() + validadeSeg * 1e3; + if (valor !== void 0) { + _cache[txChave] = { + valor, + validade + }; + } + const busca = _cache[txChave]; + if (busca?.validade && busca.validade < (/* @__PURE__ */ new Date()).getTime()) { + return void 0; + } + return busca?.valor; +}; +const verCacheM = () => _cache; +const cacheMemoria = cacheM; +const cacheMFixo = (chave) => (valor) => cacheM(chave, valor); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + cacheM, + cacheMFixo, + cacheMemoria, + verCacheM +}); diff --git a/dist-back/constantes.js b/dist-back/constantes.js new file mode 100644 index 0000000..4671769 --- /dev/null +++ b/dist-back/constantes.js @@ -0,0 +1,53 @@ +"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 constantes_exports = {}; +__export(constantes_exports, { + camposComuns: () => camposComuns, + tipoUsuarioResiduos: () => tipoUsuarioResiduos, + tx: () => tx, + uuid_null: () => uuid_null +}); +module.exports = __toCommonJS(constantes_exports); +const uuid_null = "00000000-0000-0000-0000-000000000000"; +var camposComuns = /* @__PURE__ */ ((camposComuns2) => { + camposComuns2["codigo"] = "codigo"; + camposComuns2["excluido"] = "excluido"; + camposComuns2["data_hora_criacao"] = "data_hora_criacao"; + camposComuns2["data_hora_atualizacao"] = "data_hora_atualizacao"; + camposComuns2["codigo_usuario_criacao"] = "codigo_usuario_criacao"; + camposComuns2["codigo_usuario_atualizacao"] = "codigo_usuario_atualizacao"; + camposComuns2["versao"] = "versao"; + return camposComuns2; +})(camposComuns || {}); +var tx = /* @__PURE__ */ ((tx2) => { + tx2["token"] = "token"; + return tx2; +})(tx || {}); +var tipoUsuarioResiduos = /* @__PURE__ */ ((tipoUsuarioResiduos2) => { + tipoUsuarioResiduos2["Usuario"] = "usuario"; + tipoUsuarioResiduos2["Fornecedor"] = "fornecedor"; + return tipoUsuarioResiduos2; +})(tipoUsuarioResiduos || {}); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + camposComuns, + tipoUsuarioResiduos, + tx, + uuid_null +}); diff --git a/dist-back/consulta.js b/dist-back/consulta.js new file mode 100644 index 0000000..7d923ff --- /dev/null +++ b/dist-back/consulta.js @@ -0,0 +1,69 @@ +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var consulta_exports = {}; +__export(consulta_exports, { + operadores: () => operadores, + zFiltro: () => zFiltro, + zOperadores: () => zOperadores +}); +module.exports = __toCommonJS(consulta_exports); +var import_zod = __toESM(require("zod"), 1); +var operadores = /* @__PURE__ */ ((operadores2) => { + operadores2["="] = "="; + operadores2["!="] = "!="; + operadores2[">"] = ">"; + operadores2[">="] = ">="; + operadores2["<"] = "<"; + operadores2["<="] = "<="; + operadores2["like"] = "like"; + operadores2["in"] = "in"; + return operadores2; +})(operadores || {}); +const zOperadores = import_zod.default.enum([ + "=", + "!=", + ">", + ">=", + "<", + "<=", + "like", + "in" +]); +const zFiltro = import_zod.default.object({ + coluna: import_zod.default.string(), + valor: import_zod.default.any(), + operador: zOperadores, + ou: import_zod.default.boolean().optional() +}); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + operadores, + zFiltro, + zOperadores +}); diff --git a/dist-back/dayjs.js b/dist-back/dayjs.js new file mode 100644 index 0000000..5149cd1 --- /dev/null +++ b/dist-back/dayjs.js @@ -0,0 +1,57 @@ +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var dayjs_exports = {}; +__export(dayjs_exports, { + dayjsbr: () => dayjsbr +}); +module.exports = __toCommonJS(dayjs_exports); +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); +var import_pt_br = require("dayjs/locale/pt-br.js"); +import_dayjs.default.locale("pt-br"); +import_dayjs.default.extend(import_utc.default); +import_dayjs.default.extend(import_timezone.default); +import_dayjs.default.extend(import_weekOfYear.default); +import_dayjs.default.extend(import_isSameOrBefore.default); +import_dayjs.default.extend(import_isSameOrAfter.default); +import_dayjs.default.extend(import_minMax.default); +import_dayjs.default.extend(import_relativeTime.default); +import_dayjs.default.extend(import_duration.default); +const dayjsbr = import_dayjs.default; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + dayjsbr +}); diff --git a/dist-back/ecosistema/index.js b/dist-back/ecosistema/index.js new file mode 100644 index 0000000..fc9ce97 --- /dev/null +++ b/dist-back/ecosistema/index.js @@ -0,0 +1,22 @@ +"use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var ecosistema_exports = {}; +module.exports = __toCommonJS(ecosistema_exports); +__reExport(ecosistema_exports, require("./urls"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./urls") +}); diff --git a/dist-back/ecosistema/urls.js b/dist-back/ecosistema/urls.js new file mode 100644 index 0000000..e63a7bd --- /dev/null +++ b/dist-back/ecosistema/urls.js @@ -0,0 +1,28 @@ +"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 urls_exports = {}; +__export(urls_exports, { + cdn_carro_de_boi: () => cdn_carro_de_boi +}); +module.exports = __toCommonJS(urls_exports); +const cdn_carro_de_boi = "https://carro-de-boi-idz-one.b-cdn.net"; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + cdn_carro_de_boi +}); diff --git a/dist-back/extensoes.js b/dist-back/extensoes.js new file mode 100644 index 0000000..3f49f81 --- /dev/null +++ b/dist-back/extensoes.js @@ -0,0 +1,186 @@ +"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 extensoes_exports = {}; +__export(extensoes_exports, { + extensoes: () => extensoes, + tipoArquivo: () => tipoArquivo +}); +module.exports = __toCommonJS(extensoes_exports); +const extensoes = [ + { + 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" + } +]; +const tipoArquivo = (nomeArquivo) => { + const extArquivo = String(nomeArquivo || "").toLocaleLowerCase().split(".").pop(); + const extensao = extensoes.find((extensao2) => extensao2.ext === extArquivo); + return extensao?.tipo || "outros"; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + extensoes, + tipoArquivo +}); diff --git a/dist-back/graficosPilao.js b/dist-back/graficosPilao.js new file mode 100644 index 0000000..12ac7cb --- /dev/null +++ b/dist-back/graficosPilao.js @@ -0,0 +1,37 @@ +"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 graficosPilao_exports = {}; +__export(graficosPilao_exports, { + graficos_pilao: () => graficos_pilao +}); +module.exports = __toCommonJS(graficosPilao_exports); +const graficos_pilao = { + Condicionantes: { + grafico: "condicionantes-criadas", + titulo: "Condicionantes Criadas" + }, + Licen\u00E7as: { + grafico: "licencas-criadas", + titulo: "Licen\xE7as Criadas" + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + graficos_pilao +}); diff --git a/dist-back/index.js b/dist-back/index.js new file mode 100644 index 0000000..0edcbbf --- /dev/null +++ b/dist-back/index.js @@ -0,0 +1,62 @@ +"use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var index_exports = {}; +module.exports = __toCommonJS(index_exports); +__reExport(index_exports, require("./aleatorio"), module.exports); +__reExport(index_exports, require("./cacheMemoria"), module.exports); +__reExport(index_exports, require("./constantes"), module.exports); +__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); +__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("./postgres"), module.exports); +__reExport(index_exports, require("./situacoes"), 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); +__reExport(index_exports, require("./tipagemRotas"), module.exports); +__reExport(index_exports, require("./unidades_medida"), module.exports); +__reExport(index_exports, require("./uuid"), module.exports); +__reExport(index_exports, require("./variaveisComuns"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./aleatorio"), + ...require("./cacheMemoria"), + ...require("./constantes"), + ...require("./consulta"), + ...require("./dayjs"), + ...require("./ecosistema"), + ...require("./extensoes"), + ...require("./extensoes"), + ...require("./graficosPilao"), + ...require("./local"), + ...require("./logger"), + ...require("./logger"), + ...require("./postgres"), + ...require("./situacoes"), + ...require("./testes-de-variaveis"), + ...require("./texto_busca"), + ...require("./tipagemRotas"), + ...require("./tipagemRotas"), + ...require("./unidades_medida"), + ...require("./uuid"), + ...require("./variaveisComuns") +}); diff --git a/dist-back/instalarAmbiente.js b/dist-back/instalarAmbiente.js new file mode 100644 index 0000000..7772b1d --- /dev/null +++ b/dist-back/instalarAmbiente.js @@ -0,0 +1,63 @@ +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var import_node_fs = __toESM(require("node:fs"), 1); +var import_node_path = __toESM(require("node:path"), 1); +const mesclar = (entrada, novo) => { + const saida = { ...entrada || {} }; + for (const [k, v] of Object.entries(novo)) { + if (v && typeof v === "object" && !Array.isArray(v)) { + saida[k] = mesclar(saida[k], v); + } else { + saida[k] = v; + } + } + return saida; +}; +const abrirJson = (caminho) => { + try { + return JSON.parse(import_node_fs.default.readFileSync(caminho, "utf-8")); + } catch { + return {}; + } +}; +const settings_json = { + "editor.defaultFormatter": "biomejs.biome", + "[javascript]": { "editor.defaultFormatter": "biomejs.biome" }, + "[javascriptreact]": { "editor.defaultFormatter": "biomejs.biome" }, + "[typescript]": { "editor.defaultFormatter": "biomejs.biome" }, + "[typescriptreact]": { "editor.defaultFormatter": "biomejs.biome" }, + "[json]": { "editor.defaultFormatter": "biomejs.biome" }, + "[jsonc]": { "editor.defaultFormatter": "biomejs.biome" }, + "[vue]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, + "editor.codeActionsOnSave": { + "source.organizeImports.biome": "always", + "source.fixAll.biome": "always" + } +}; +const caminhoSeting = import_node_path.default.join(process.cwd(), ".vscode/settings.json"); +import_node_fs.default.mkdirSync(import_node_path.default.dirname(caminhoSeting), { recursive: true }); +const atual = abrirJson(caminhoSeting); +const final = mesclar(atual, settings_json); +import_node_fs.default.writeFileSync(caminhoSeting, JSON.stringify(final, null, 2), "utf8"); +console.log(`\u2705 Configura\xE7\xF5es salvas em ${caminhoSeting}`); diff --git a/dist-back/local/index.js b/dist-back/local/index.js new file mode 100644 index 0000000..4b0c95a --- /dev/null +++ b/dist-back/local/index.js @@ -0,0 +1,46 @@ +"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 local_exports = {}; +__export(local_exports, { + localValor: () => localValor +}); +module.exports = __toCommonJS(local_exports); +const localValor = (chave_, valor) => { + const localStorage = globalThis.localStorage; + if (typeof localStorage == "undefined") return null; + const chave = typeof chave_ === "string" ? chave_ : encodeURIComponent(JSON.stringify(chave_)); + try { + if (valor !== void 0) { + localStorage.setItem(chave, JSON.stringify(valor)); + } + const v2 = localStorage.getItem(chave); + if (v2 === null) return null; + try { + return JSON.parse(v2); + } catch { + return v2; + } + } catch { + return null; + } +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + localValor +}); diff --git a/dist-back/logger.js b/dist-back/logger.js new file mode 100644 index 0000000..0283d3f --- /dev/null +++ b/dist-back/logger.js @@ -0,0 +1,106 @@ +"use strict"; +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var logger_exports = {}; +__export(logger_exports, { + defineCwd: () => defineCwd, + logger: () => logger, + postLogger: () => postLogger +}); +module.exports = __toCommonJS(logger_exports); +var import_cross_fetch = __toESM(require("cross-fetch"), 1); +var import_variaveisComuns = require("./variaveisComuns"); +const LOKI_BASE_URL = "https://log.idz.one"; +const LOKI_ENDPOINT = "/loki/api/v1/push"; +const postLogger = async ({ + objeto +}) => { + const response = await (0, import_cross_fetch.default)(`${LOKI_BASE_URL}${LOKI_ENDPOINT}`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(objeto) + }).catch((a) => a); + if (!response.ok) { + return [objeto, `Erro ${response.status}: ${await response?.text?.()}`]; + } + return [objeto]; +}; +let cwd = ""; +const defineCwd = (novoCwd) => { + cwd = novoCwd; +}; +const logger = ({ app: app_e, eProducao, parametros: parametrosAmbiente }) => ({ inquilino, usuario, parametros: parametrosSessao }) => async (level, mensagem, op_tipoLog) => { + let { + __filename, + detalhes, + local, + parametros: parametrosLog + } = op_tipoLog || {}; + const app = `${eProducao ? "" : "DEV-"}${app_e}`; + if (cwd && __filename) { + __filename = __filename.replace(cwd, ""); + } + if (local) { + detalhes = [`${(0, import_variaveisComuns.nomeVariavel)({ local })}="${local}"`, ...detalhes || []]; + } + if (__filename) { + detalhes = [ + `${(0, import_variaveisComuns.nomeVariavel)({ __filename })}="${__filename}"`, + ...detalhes || [] + ]; + } + const timestamp = `${Date.now()}000000`; + const mainLog = detalhes?.length ? `${mensagem} | ${detalhes.map((d) => JSON.stringify(d)).join(" | ")}` : mensagem; + const payload = { + stream: { + app, + inquilino, + usuario, + level, + ...parametrosAmbiente || {}, + ...parametrosSessao || {}, + ...parametrosLog || {} + }, + values: [ + [ + timestamp, + mainLog + // Linha de log direta + ] + ] + }; + const objeto = { streams: [payload] }; + const response = await postLogger({ objeto }); + return response; +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + defineCwd, + logger, + postLogger +}); diff --git a/dist-back/postgres.js b/dist-back/postgres.js new file mode 100644 index 0000000..62a7d6b --- /dev/null +++ b/dist-back/postgres.js @@ -0,0 +1,47 @@ +"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 postgres_exports = {}; +__export(postgres_exports, { + objetoPg: () => objetoPg, + paraObjetoRegistroPg: () => paraObjetoRegistroPg, + pgObjeto: () => pgObjeto +}); +module.exports = __toCommonJS(postgres_exports); +const paraObjetoRegistroPg = (entrada) => { + try { + return Object.fromEntries( + Object.entries(entrada).map(([k, v]) => [ + k, + v === void 0 || v == null ? v : typeof v == "string" || typeof v == "number" || typeof v == "boolean" ? v : JSON.stringify(v, null, 2) + ]) + ); + } catch (error) { + throw new Error( + `Erro na fun\xE7\xE3o paraObjetoRegistroPg: ${error.message} ${error.stack}` + ); + } +}; +const pgObjeto = paraObjetoRegistroPg; +const objetoPg = paraObjetoRegistroPg; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + objetoPg, + paraObjetoRegistroPg, + pgObjeto +}); diff --git a/dist-back/situacoes/index.js b/dist-back/situacoes/index.js new file mode 100644 index 0000000..b7ebd74 --- /dev/null +++ b/dist-back/situacoes/index.js @@ -0,0 +1,22 @@ +"use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var situacoes_exports = {}; +module.exports = __toCommonJS(situacoes_exports); +__reExport(situacoes_exports, require("./situacoes"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./situacoes") +}); diff --git a/dist-back/situacoes/situacoes.js b/dist-back/situacoes/situacoes.js new file mode 100644 index 0000000..61b5e5f --- /dev/null +++ b/dist-back/situacoes/situacoes.js @@ -0,0 +1,84 @@ +"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 situacoes_exports = {}; +__export(situacoes_exports, { + corSituacoes: () => corSituacoes, + tiposSituacoes: () => tiposSituacoes +}); +module.exports = __toCommonJS(situacoes_exports); +var tiposSituacoes = /* @__PURE__ */ ((tiposSituacoes2) => { + tiposSituacoes2["vencida"] = "100_vencida"; + tiposSituacoes2["expirado"] = "200_expirado"; + tiposSituacoes2["alerta"] = "300_alerta"; + tiposSituacoes2["protocoladafora"] = "350_protocoladafora"; + tiposSituacoes2["protocolada"] = "400_protocolada"; + tiposSituacoes2["protocoladaApenas"] = "430_protocolada"; + tiposSituacoes2["protocolada_alteracao"] = "450_protocolada"; + tiposSituacoes2["prazo"] = "500_prazo"; + tiposSituacoes2["emitida"] = "515_emitida"; + tiposSituacoes2["valida"] = "518_valida"; + tiposSituacoes2["novo"] = "520_novo"; + tiposSituacoes2["recebido"] = "521_recebido"; + tiposSituacoes2["em_andamento"] = "530_em_andamento"; + tiposSituacoes2["aguardando"] = "530_aguardando"; + tiposSituacoes2["aguardandoresposta"] = "540_aguardandoresposta"; + tiposSituacoes2["suspensaotemporaria"] = "540_suspensaotemporaria"; + tiposSituacoes2["cancelada"] = "550_cancelada"; + tiposSituacoes2["execucao"] = "560_execucao"; + tiposSituacoes2["pendente"] = "570_pendente"; + tiposSituacoes2["executadafora"] = "600_executadafora"; + tiposSituacoes2["executada"] = "700_executada"; + tiposSituacoes2["naoexecutada"] = "701_naoexecutada"; + tiposSituacoes2["concluida"] = "730_concluida"; + tiposSituacoes2["respondido_negado"] = "740_respondido_negado"; + tiposSituacoes2["respondido_aceito"] = "741_respondido_aceito"; + tiposSituacoes2["atendidoparcial"] = "742_atendidoparcial"; + tiposSituacoes2["naoatendido"] = "743_naoatendido"; + tiposSituacoes2["atendido"] = "744_atendido"; + tiposSituacoes2["renovada"] = "760_renovada"; + tiposSituacoes2["finalizada"] = "800_finalizada"; + tiposSituacoes2["emitirnota"] = "101_emitirnota"; + tiposSituacoes2["faturaatrasada"] = "301_faturaatrasada"; + tiposSituacoes2["pagarfatura"] = "302_pagarfatura"; + tiposSituacoes2["aguardandoconfirmacao"] = "531_aguardandoconfirmacao"; + tiposSituacoes2["agendado"] = "701_agendado"; + tiposSituacoes2["faturapaga"] = "801_faturapaga"; + tiposSituacoes2["excluida"] = "999_excluida"; + tiposSituacoes2["requerida"] = "401_requerida"; + tiposSituacoes2["vigente"] = "516_vigente"; + tiposSituacoes2["emrenovacao"] = "402_emrenovacao"; + tiposSituacoes2["arquivada"] = "801_arquivada"; + tiposSituacoes2["aguardando_sincronizacao"] = "999_aguardando_sincronizacao"; + tiposSituacoes2["nao_conforme"] = "710_nao_conforme"; + tiposSituacoes2["conforme"] = "720_conforme"; + tiposSituacoes2["nao_aplicavel"] = "730_nao_aplicavel"; + tiposSituacoes2["parcial"] = "715_parcial"; + return tiposSituacoes2; +})(tiposSituacoes || {}); +const corSituacoes = { + pendente: "#CCC353", + nao_conforme: "#dc3545", + conforme: "#28a745", + alerta: "#FFDE59" +}; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + corSituacoes, + tiposSituacoes +}); diff --git a/dist-back/teste.js b/dist-back/teste.js new file mode 100644 index 0000000..c2d0e9c --- /dev/null +++ b/dist-back/teste.js @@ -0,0 +1,6 @@ +"use strict"; +var import_cacheMemoria = require("./cacheMemoria"); +var import_texto_busca = require("./texto_busca"); +console.log("Vari\xE1veis funcionando", import_texto_busca.texto_busca); +(0, import_cacheMemoria.cacheM)(1, { Jaca: Promise.resolve() }); +console.log("cache:", (0, import_cacheMemoria.cacheM)(1)); diff --git a/dist-back/testes-de-variaveis/index.js b/dist-back/testes-de-variaveis/index.js new file mode 100644 index 0000000..6263622 --- /dev/null +++ b/dist-back/testes-de-variaveis/index.js @@ -0,0 +1,24 @@ +"use strict"; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var testes_de_variaveis_exports = {}; +module.exports = __toCommonJS(testes_de_variaveis_exports); +__reExport(testes_de_variaveis_exports, require("./umaFuncao"), module.exports); +__reExport(testes_de_variaveis_exports, require("./umaVariavel"), module.exports); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ...require("./umaFuncao"), + ...require("./umaVariavel") +}); diff --git a/dist-back/testes-de-variaveis/umaFuncao.js b/dist-back/testes-de-variaveis/umaFuncao.js new file mode 100644 index 0000000..c1d2b86 --- /dev/null +++ b/dist-back/testes-de-variaveis/umaFuncao.js @@ -0,0 +1,28 @@ +"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 umaFuncao_exports = {}; +__export(umaFuncao_exports, { + umaFuncao: () => umaFuncao +}); +module.exports = __toCommonJS(umaFuncao_exports); +const umaFuncao = () => "Ol\xE1 Mundo! (fun\xE7\xE3o)"; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + umaFuncao +}); diff --git a/dist-back/testes-de-variaveis/umaVariavel.js b/dist-back/testes-de-variaveis/umaVariavel.js new file mode 100644 index 0000000..6560bb5 --- /dev/null +++ b/dist-back/testes-de-variaveis/umaVariavel.js @@ -0,0 +1,28 @@ +"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 umaVariavel_exports = {}; +__export(umaVariavel_exports, { + umaVariavel: () => umaVariavel +}); +module.exports = __toCommonJS(umaVariavel_exports); +const umaVariavel = "Ol\xE1 Mundo! (vari\xE1vel)"; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + umaVariavel +}); diff --git a/dist-back/testes/TipagemRotas.test.js b/dist-back/testes/TipagemRotas.test.js new file mode 100644 index 0000000..49b4bbb --- /dev/null +++ b/dist-back/testes/TipagemRotas.test.js @@ -0,0 +1,22 @@ +"use strict"; +var import_vitest = require("vitest"); +var import_tipagemRotas = require("../tipagemRotas"); +(0, import_vitest.describe)("TipagemRotas", () => { + (0, import_vitest.it)("deve montar _partesCaminho a partir de string ou array, normalizando barras", () => { + const r1 = new import_tipagemRotas.TipagemRotas({ caminho: "aplicacao/func" }); + (0, import_vitest.expect)(r1.caminho).toBe("/aplicacao/func"); + const r2 = new import_tipagemRotas.TipagemRotas({ + caminho: ["aplicacao", "func"] + }); + (0, import_vitest.expect)(r2.caminho).toBe("/aplicacao/func"); + const r3 = new import_tipagemRotas.TipagemRotas({ caminho: "/a//b///c/" }); + (0, import_vitest.expect)(r3.caminho).toBe("/a/b/c"); + }); + (0, import_vitest.it)("Valores de entrada com mesmo valor dos valores de sa\xEDda", () => { + const r1 = new import_tipagemRotas.TipagemRotas({ caminho: "aplicacao/func" }); + const objetoEntrada = { idade: 21, nome: "Jo\xE3o" }; + const rota = r1.endereco(objetoEntrada); + const parametros = r1.parametros(rota); + (0, import_vitest.expect)(parametros.nome).toBe(objetoEntrada.nome); + }); +}); diff --git a/dist-back/texto_busca.js b/dist-back/texto_busca.js new file mode 100644 index 0000000..3d0ec36 --- /dev/null +++ b/dist-back/texto_busca.js @@ -0,0 +1,30 @@ +"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 texto_busca_exports = {}; +__export(texto_busca_exports, { + texto_busca: () => texto_busca +}); +module.exports = __toCommonJS(texto_busca_exports); +const texto_busca = (...texto) => texto.map( + (txt) => txt === null || txt === void 0 ? "" : String(txt).normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/\s+/g, " ").toLowerCase() +).join(" "); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + texto_busca +}); diff --git a/dist-back/tipagemRotas.js b/dist-back/tipagemRotas.js new file mode 100644 index 0000000..05c4f5b --- /dev/null +++ b/dist-back/tipagemRotas.js @@ -0,0 +1,118 @@ +"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 tipagemRotas_exports = {}; +__export(tipagemRotas_exports, { + TipagemRotas: () => TipagemRotas +}); +module.exports = __toCommonJS(tipagemRotas_exports); +class TipagemRotas { + /** 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 + }) { + this._partesCaminho = []; + this._acaoIr = acaoIr; + this._partesCaminho = (Array.isArray(caminho) ? caminho : [caminho]).filter(Boolean).map((a) => String(a)).flatMap((a) => a.split("/")).filter(Boolean); + this.rotulo = rotulo; + } + /** Retorna o caminho completo da rota + ** console.log(mCaminho.caminho) + ** "/caminho" + */ + get caminho() { + const ret = `/${this._partesCaminho.join("/")}`; + return ret; + } + /** Define o caminho completo da rota + ** mCaminho.caminho = "/novoCaminho" + ** console.log(mCaminho.caminho) + ** "/novoCaminho" + ** */ + set caminho(caminhoParcial) { + this._partesCaminho = caminhoParcial.split("/").filter((parte) => parte); + } + /** Retorna o caminho completo da rota com a query + ** console.log(mCaminho.resolve({q:"query"})) + ** "http://localhost:3000/caminho?q=query" + */ + endereco(query, usarComoHash) { + const url = new URL( + typeof window !== "undefined" ? window.location.href : "http://localhost" + ); + url.pathname = this.caminho; + url.search = ""; + const queryKeys = Object.entries(query); + for (const [key, value] of queryKeys) { + url.searchParams.set(String(key), JSON.stringify(value)); + } + url.hash = ""; + if (usarComoHash) { + url.hash = `#${url.search}`; + url.search = ""; + } + return url.href; + } + /** Vai para a url + ** mCaminho.ir({q:"query"}) + ** window.location.href = "http://localhost:3000/caminho?q=query" + */ + ir(query) { + if (this._acaoIr) { + this._acaoIr(this.endereco({ ...query })); + } else { + if (typeof window != "undefined") { + window.location.href = this.endereco({ ...query }); + } + } + } + /** Retorna os parametros da url + ** console.log(mCaminho.parametros()) + ** {q:"query"} + */ + parametros(urlEntrada) { + const url = urlEntrada ? new URL(urlEntrada) : new URL( + typeof window !== "undefined" ? window.location.href : "http://localhost" + ); + const query = url.searchParams; + let queryObj = Object.fromEntries(query.entries()); + const hash = url.hash; + if (hash) { + const hashObj = Object.fromEntries( + new URLSearchParams(hash.slice(1)).entries() + ); + queryObj = { ...queryObj, ...hashObj }; + } + for (const chave in queryObj) { + try { + queryObj[chave] = JSON.parse(queryObj[chave]); + } catch { + console.log(`[${chave}|${queryObj[chave]}] n\xE3o \xE9 um json v\xE1lido.`); + } + } + return queryObj; + } +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + TipagemRotas +}); diff --git a/dist-back/unidades_medida.js b/dist-back/unidades_medida.js new file mode 100644 index 0000000..1d9b95a --- /dev/null +++ b/dist-back/unidades_medida.js @@ -0,0 +1,82 @@ +"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 unidades_medida_exports = {}; +__export(unidades_medida_exports, { + siglas_unidades_medida: () => siglas_unidades_medida, + unidades_medida: () => unidades_medida +}); +module.exports = __toCommonJS(unidades_medida_exports); +var siglas_unidades_medida = /* @__PURE__ */ ((siglas_unidades_medida2) => { + siglas_unidades_medida2["UN"] = "UN"; + siglas_unidades_medida2["KG"] = "KG"; + siglas_unidades_medida2["TON"] = "TON"; + siglas_unidades_medida2["g"] = "g"; + siglas_unidades_medida2["M\xB3"] = "M\xB3"; + siglas_unidades_medida2["Lt"] = "Lt"; + return siglas_unidades_medida2; +})(siglas_unidades_medida || {}); +const unidades_medida = [ + { + sigla_unidade: "KG", + nome: "Quilograma", + sigla_normalizada: "KG", + normalizar: (valor) => valor, + tipo: "massa" + }, + { + sigla_unidade: "g", + nome: "Grama", + sigla_normalizada: "KG", + normalizar: (valor) => valor / 1e3, + tipo: "massa" + }, + { + sigla_unidade: "TON", + nome: "Tonelada", + sigla_normalizada: "KG", + normalizar: (valor) => valor * 1e3, + tipo: "massa" + }, + { + sigla_unidade: "Lt", + nome: "Litro", + sigla_normalizada: "Lt", + normalizar: (valor) => valor, + tipo: "volume" + }, + { + sigla_unidade: "M\xB3", + nome: "Metro C\xFAbico", + sigla_normalizada: "Lt", + normalizar: (valor) => valor * 1e3, + tipo: "volume" + }, + { + sigla_unidade: "UN", + nome: "Unidade", + sigla_normalizada: "UN", + normalizar: (valor) => valor, + tipo: "unidade" + } +]; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + siglas_unidades_medida, + unidades_medida +}); diff --git a/dist-back/uuid.js b/dist-back/uuid.js new file mode 100644 index 0000000..6d8dfc0 --- /dev/null +++ b/dist-back/uuid.js @@ -0,0 +1,51 @@ +"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 uuid_exports = {}; +__export(uuid_exports, { + erUuid: () => erUuid, + uuid: () => uuid, + uuidV3: () => uuidV3, + uuidV4: () => uuidV4, + validarUuid: () => validarUuid +}); +module.exports = __toCommonJS(uuid_exports); +var import_uuid = require("uuid"); +const erUuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; +const validarUuid = (uuid2) => { + const retorno = erUuid.test(String(uuid2 || "")); + return retorno; +}; +const uuidV3 = (chave, grupo) => { + return (0, import_uuid.v3)( + // Converte a chave para string (de forma segura) + typeof chave === "string" ? chave : typeof chave === "number" ? String(chave) : JSON.stringify(chave), + // Se um grupo foi fornecido, gera um UUID v3 recursivamente com base nele, senão usa NIL + grupo ? uuidV3(grupo) : import_uuid.NIL + ); +}; +const uuidV4 = import_uuid.v4; +const uuid = uuidV4; +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + erUuid, + uuid, + uuidV3, + uuidV4, + validarUuid +}); diff --git a/dist-back/variaveisComuns.js b/dist-back/variaveisComuns.js new file mode 100644 index 0000000..8f40e1d --- /dev/null +++ b/dist-back/variaveisComuns.js @@ -0,0 +1,33 @@ +"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 variaveisComuns_exports = {}; +__export(variaveisComuns_exports, { + esperar: () => esperar, + nomeVariavel: () => nomeVariavel +}); +module.exports = __toCommonJS(variaveisComuns_exports); +const esperar = (ms) => new Promise( + (resolve) => setTimeout(() => resolve(true), ms) +); +const nomeVariavel = (v) => Object.keys(v).join("/"); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + esperar, + nomeVariavel +}); diff --git a/dist-front/index.d.ts b/dist-front/index.d.ts new file mode 100644 index 0000000..daeea71 --- /dev/null +++ b/dist-front/index.d.ts @@ -0,0 +1,366 @@ +import z from 'zod'; +import dayjs from 'dayjs'; +export { 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 enum tiposSituacoes { + vencida = "100_vencida", + expirado = "200_expirado", + alerta = "300_alerta", + protocoladafora = "350_protocoladafora", + protocolada = "400_protocolada", + protocoladaApenas = "430_protocolada", + protocolada_alteracao = "450_protocolada", + prazo = "500_prazo", + emitida = "515_emitida", + valida = "518_valida", + novo = "520_novo", + recebido = "521_recebido", + em_andamento = "530_em_andamento", + aguardando = "530_aguardando", + aguardandoresposta = "540_aguardandoresposta", + suspensaotemporaria = "540_suspensaotemporaria", + cancelada = "550_cancelada", + execucao = "560_execucao", + pendente = "570_pendente", + executadafora = "600_executadafora", + executada = "700_executada", + naoexecutada = "701_naoexecutada", + concluida = "730_concluida", + respondido_negado = "740_respondido_negado", + respondido_aceito = "741_respondido_aceito", + atendidoparcial = "742_atendidoparcial", + naoatendido = "743_naoatendido", + atendido = "744_atendido", + renovada = "760_renovada", + finalizada = "800_finalizada", + emitirnota = "101_emitirnota", + faturaatrasada = "301_faturaatrasada", + pagarfatura = "302_pagarfatura", + aguardandoconfirmacao = "531_aguardandoconfirmacao", + agendado = "701_agendado", + faturapaga = "801_faturapaga", + excluida = "999_excluida", + requerida = "401_requerida", + vigente = "516_vigente", + emrenovacao = "402_emrenovacao", + arquivada = "801_arquivada", + aguardando_sincronizacao = "999_aguardando_sincronizacao", + nao_conforme = "710_nao_conforme", + conforme = "720_conforme", + nao_aplicavel = "730_nao_aplicavel", + parcial = "715_parcial" +} +declare const corSituacoes: { + [K in keyof typeof tiposSituacoes]?: string; +}; + +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, corSituacoes, 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, tiposSituacoes, 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 new file mode 100644 index 0000000..aa167ae --- /dev/null +++ b/dist-front/index.mjs @@ -0,0 +1 @@ +var _="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),re=e=>`eli-${Array.from({length:e||8}).map(()=>_[(999*Math.random()|0)%_.length]).join("")}`;var g={};globalThis.cacheMemoria_cache=g;var v=(e,o,t)=>{let a=typeof e=="string"?e:typeof e=="number"?String(e):encodeURIComponent(JSON.stringify(e)),n=t&&new Date().getTime()+t*1e3;o!==void 0&&(g[a]={valor:o,validade:n});let i=g[a];if(!(i?.validade&&i.validadeg,ne=v,ie=e=>o=>v(e,o);var de="00000000-0000-0000-0000-000000000000",z=(d=>(d.codigo="codigo",d.excluido="excluido",d.data_hora_criacao="data_hora_criacao",d.data_hora_atualizacao="data_hora_atualizacao",d.codigo_usuario_criacao="codigo_usuario_criacao",d.codigo_usuario_atualizacao="codigo_usuario_atualizacao",d.versao="versao",d))(z||{}),N=(o=>(o.token="token",o))(N||{}),$=(t=>(t.Usuario="usuario",t.Fornecedor="fornecedor",t))($||{});import c from"zod";var C=(t=>(t["="]="=",t["!="]="!=",t[">"]=">",t[">="]=">=",t["<"]="<",t["<="]="<=",t.like="like",t.in="in",t))(C||{}),M=c.enum(["=","!=",">",">=","<","<=","like","in"]),le=c.object({coluna:c.string(),valor:c.any(),operador:M,ou:c.boolean().optional()});import p from"dayjs";import P from"dayjs/plugin/duration.js";import q from"dayjs/plugin/isSameOrAfter.js";import I from"dayjs/plugin/isSameOrBefore.js";import U from"dayjs/plugin/minMax.js";import A from"dayjs/plugin/relativeTime.js";import E from"dayjs/plugin/timezone.js";import F from"dayjs/plugin/utc.js";import J from"dayjs/plugin/weekOfYear.js";import"dayjs/locale/pt-br.js";p.locale("pt-br");p.extend(F);p.extend(E);p.extend(J);p.extend(I);p.extend(q);p.extend(U);p.extend(A);p.extend(P);var we=p;var je="https://carro-de-boi-idz-one.b-cdn.net";var K=[{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"}],Ne=e=>{let o=String(e||"").toLocaleLowerCase().split(".").pop();return K.find(a=>a.ext===o)?.tipo||"outros"};var Ce={Condicionantes:{grafico:"condicionantes-criadas",titulo:"Condicionantes Criadas"},Licen\u00E7as:{grafico:"licencas-criadas",titulo:"Licen\xE7as Criadas"}};var Pe=(e,o)=>{let t=globalThis.localStorage;if(typeof t>"u")return null;let a=typeof e=="string"?e:encodeURIComponent(JSON.stringify(e));try{o!==void 0&&t.setItem(a,JSON.stringify(o));let n=t.getItem(a);if(n===null)return null;try{return JSON.parse(n)}catch{return n}}catch{return null}};import D from"cross-fetch";var Ie=e=>new Promise(o=>setTimeout(()=>o(!0),e)),u=e=>Object.keys(e).join("/");var G="https://log.idz.one",V="/loki/api/v1/push",R=async({objeto:e})=>{let o=await D(`${G}${V}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).catch(t=>t);return o.ok?[e]:[e,`Erro ${o.status}: ${await o?.text?.()}`]},x="",Fe=e=>{x=e},Je=({app:e,eProducao:o,parametros:t})=>({inquilino:a,usuario:n,parametros:i})=>async(m,d,h)=>{let{__filename:s,detalhes:l,local:f,parametros:O}=h||{},w=`${o?"":"DEV-"}${e}`;x&&s&&(s=s.replace(x,"")),f&&(l=[`${u({local:f})}="${f}"`,...l||[]]),s&&(l=[`${u({__filename:s})}="${s}"`,...l||[]]);let L=`${Date.now()}000000`,j=l?.length?`${d} | ${l.map(T=>JSON.stringify(T)).join(" | ")}`:d,k={streams:[{stream:{app:w,inquilino:a,usuario:n,level:m,...t||{},...i||{},...O||{}},values:[[L,j]]}]};return await R({objeto:k})};var y=e=>{try{return Object.fromEntries(Object.entries(e).map(([o,t])=>[o,t===void 0||t==null||typeof t=="string"||typeof t=="number"||typeof t=="boolean"?t:JSON.stringify(t,null,2)]))}catch(o){throw new Error(`Erro na fun\xE7\xE3o paraObjetoRegistroPg: ${o.message} ${o.stack}`)}},De=y,Ge=y;var B=(r=>(r.vencida="100_vencida",r.expirado="200_expirado",r.alerta="300_alerta",r.protocoladafora="350_protocoladafora",r.protocolada="400_protocolada",r.protocoladaApenas="430_protocolada",r.protocolada_alteracao="450_protocolada",r.prazo="500_prazo",r.emitida="515_emitida",r.valida="518_valida",r.novo="520_novo",r.recebido="521_recebido",r.em_andamento="530_em_andamento",r.aguardando="530_aguardando",r.aguardandoresposta="540_aguardandoresposta",r.suspensaotemporaria="540_suspensaotemporaria",r.cancelada="550_cancelada",r.execucao="560_execucao",r.pendente="570_pendente",r.executadafora="600_executadafora",r.executada="700_executada",r.naoexecutada="701_naoexecutada",r.concluida="730_concluida",r.respondido_negado="740_respondido_negado",r.respondido_aceito="741_respondido_aceito",r.atendidoparcial="742_atendidoparcial",r.naoatendido="743_naoatendido",r.atendido="744_atendido",r.renovada="760_renovada",r.finalizada="800_finalizada",r.emitirnota="101_emitirnota",r.faturaatrasada="301_faturaatrasada",r.pagarfatura="302_pagarfatura",r.aguardandoconfirmacao="531_aguardandoconfirmacao",r.agendado="701_agendado",r.faturapaga="801_faturapaga",r.excluida="999_excluida",r.requerida="401_requerida",r.vigente="516_vigente",r.emrenovacao="402_emrenovacao",r.arquivada="801_arquivada",r.aguardando_sincronizacao="999_aguardando_sincronizacao",r.nao_conforme="710_nao_conforme",r.conforme="720_conforme",r.nao_aplicavel="730_nao_aplicavel",r.parcial="715_parcial",r))(B||{}),Re={pendente:"#CCC353",nao_conforme:"#dc3545",conforme:"#28a745",alerta:"#FFDE59"};var He=()=>"Ol\xE1 Mundo! (fun\xE7\xE3o)";var Xe="Ol\xE1 Mundo! (vari\xE1vel)";var ro=(...e)=>e.map(o=>o==null?"":String(o).normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g," ").toLowerCase()).join(" ");var b=class{constructor({caminho:o,acaoIr:t,rotulo:a}){this._partesCaminho=[];this._acaoIr=t,this._partesCaminho=(Array.isArray(o)?o:[o]).filter(Boolean).map(n=>String(n)).flatMap(n=>n.split("/")).filter(Boolean),this.rotulo=a}get caminho(){return`/${this._partesCaminho.join("/")}`}set caminho(o){this._partesCaminho=o.split("/").filter(t=>t)}endereco(o,t){let a=new URL(typeof window<"u"?window.location.href:"http://localhost");a.pathname=this.caminho,a.search="";let n=Object.entries(o);for(let[i,m]of n)a.searchParams.set(String(i),JSON.stringify(m));return a.hash="",t&&(a.hash=`#${a.search}`,a.search=""),a.href}ir(o){this._acaoIr?this._acaoIr(this.endereco({...o})):typeof window<"u"&&(window.location.href=this.endereco({...o}))}parametros(o){let t=o?new URL(o):new URL(typeof window<"u"?window.location.href:"http://localhost"),a=t.searchParams,n=Object.fromEntries(a.entries()),i=t.hash;if(i){let m=Object.fromEntries(new URLSearchParams(i.slice(1)).entries());n={...n,...m}}for(let m in n)try{n[m]=JSON.parse(n[m])}catch{console.log(`[${m}|${n[m]}] n\xE3o \xE9 um json v\xE1lido.`)}return n}};var Q=(i=>(i.UN="UN",i.KG="KG",i.TON="TON",i.g="g",i["M\xB3"]="M\xB3",i.Lt="Lt",i))(Q||{}),no=[{sigla_unidade:"KG",nome:"Quilograma",sigla_normalizada:"KG",normalizar:e=>e,tipo:"massa"},{sigla_unidade:"g",nome:"Grama",sigla_normalizada:"KG",normalizar:e=>e/1e3,tipo:"massa"},{sigla_unidade:"TON",nome:"Tonelada",sigla_normalizada:"KG",normalizar:e=>e*1e3,tipo:"massa"},{sigla_unidade:"Lt",nome:"Litro",sigla_normalizada:"Lt",normalizar:e=>e,tipo:"volume"},{sigla_unidade:"M\xB3",nome:"Metro C\xFAbico",sigla_normalizada:"Lt",normalizar:e=>e*1e3,tipo:"volume"},{sigla_unidade:"UN",nome:"Unidade",sigla_normalizada:"UN",normalizar:e=>e,tipo:"unidade"}];import{NIL as Y,v3 as H,v4 as W}from"uuid";var X=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,po=e=>X.test(String(e||"")),Z=(e,o)=>H(typeof e=="string"?e:typeof e=="number"?String(e):JSON.stringify(e),o?Z(o):Y),S=W,so=S;export{b as TipagemRotas,re as aleatorio,v as cacheM,ie as cacheMFixo,ne as cacheMemoria,z as camposComuns,je as cdn_carro_de_boi,Re as corSituacoes,we as dayjsbr,Fe as defineCwd,X as erUuid,Ie as esperar,K as extensoes,Ce as graficos_pilao,Pe as localValor,Je as logger,u as nomeVariavel,Ge as objetoPg,C as operadores,y as paraObjetoRegistroPg,De as pgObjeto,R as postLogger,Q as siglas_unidades_medida,ro as texto_busca,Ne as tipoArquivo,$ as tipoUsuarioResiduos,B as tiposSituacoes,N as tx,He as umaFuncao,Xe as umaVariavel,no as unidades_medida,so as uuid,Z as uuidV3,S as uuidV4,de as uuid_null,po as validarUuid,ae as verCacheM,le as zFiltro,M as zOperadores}; diff --git a/package.json b/package.json index ebcdb05..9b2c2d4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "p-comuns", - "version": "0.276.0", + "version": "0.278.0", "description": "", "main": "./dist/index.cjs", "module": "./dist/index.mjs", @@ -13,10 +13,6 @@ } }, "type": "module", - - - - "scripts": { "biome": "pnpm exec biome check --write", "check": "pnpm run biome && npx tsc --noEmit", @@ -50,4 +46,4 @@ "uuid": "^11.1.0", "zod": "4.1.4" } -} \ No newline at end of file +} diff --git a/pacote.tgz b/pacote.tgz index 73ce297283842797a2705d2f37bf2c0f536b30ed..63c8d92e1f85654cc35208e17246beb377211444 100644 GIT binary patch literal 37942 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 literal 24987 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