merge
This commit is contained in:
commit
95ceb92d9c
59 changed files with 1114 additions and 452 deletions
0
.gitignore
vendored
Normal file → Executable file
0
.gitignore
vendored
Normal file → Executable file
0
.npmignore
Normal file → Executable file
0
.npmignore
Normal file → Executable file
0
.npmrc
Normal file → Executable file
0
.npmrc
Normal file → Executable file
0
.vscode/settings.json
vendored
Normal file → Executable file
0
.vscode/settings.json
vendored
Normal file → Executable file
6
Documentos/biome.json
Normal file → Executable file
6
Documentos/biome.json
Normal file → Executable file
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"$schema": "../node_modules/@biomejs/biome/configuration_schema.json",
|
"$schema": "../node_modules/@biomejs/biome/configuration_schema.json",
|
||||||
"root": false,
|
"root": false,
|
||||||
|
|
||||||
"linter": {
|
"linter": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"rules": {
|
"rules": {
|
||||||
|
|
@ -36,7 +36,7 @@
|
||||||
"useLiteralKeys": "off",
|
"useLiteralKeys": "off",
|
||||||
"useArrowFunction": "warn",
|
"useArrowFunction": "warn",
|
||||||
"useDateNow": "off",
|
"useDateNow": "off",
|
||||||
"noUselessFragments":"off"
|
"noUselessFragments": "off"
|
||||||
},
|
},
|
||||||
"performance": {
|
"performance": {
|
||||||
"noAccumulatingSpread": "off"
|
"noAccumulatingSpread": "off"
|
||||||
|
|
@ -61,4 +61,4 @@
|
||||||
"attributePosition": "multiline"
|
"attributePosition": "multiline"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
91
README.md
Normal file → Executable file
91
README.md
Normal file → Executable file
|
|
@ -88,3 +88,94 @@ adicionar em .vscode/settings.json
|
||||||
"source.fixAll.biome": "always"
|
"source.fixAll.biome": "always"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Sistema de Filtros (tipoFiltro26)
|
||||||
|
|
||||||
|
O sistema `tipoFiltro26` foi projetado para gerar automaticamente a tipagem de filtros compatíveis com operadores padrão do PostgreSQL, a partir de um tipo base `T`.
|
||||||
|
|
||||||
|
**Principais características:**
|
||||||
|
- Tipagem forte e segura (Typescript)
|
||||||
|
- Suporte a aninhamento de objetos
|
||||||
|
- Operadores lógicos `E` (AND) e `OU` (OR)
|
||||||
|
- Validação de operadores permitidos por tipo de dado (string, number, boolean)
|
||||||
|
|
||||||
|
### Estrutura do Filtro
|
||||||
|
|
||||||
|
O filtro segue uma estrutura onde chaves representam campos (simples ou aninhados) e valores representam condições com operadores específicos.
|
||||||
|
|
||||||
|
#### 1. Campos Simples
|
||||||
|
```typescript
|
||||||
|
{
|
||||||
|
idade: { ">=": 18 }
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. Campos Aninhados
|
||||||
|
```typescript
|
||||||
|
{
|
||||||
|
carro: {
|
||||||
|
ano: { "=": 2020 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. Operadores Lógicos
|
||||||
|
|
||||||
|
**Operador E (AND):** Todos devem ser verdadeiros.
|
||||||
|
```typescript
|
||||||
|
{
|
||||||
|
E: [
|
||||||
|
{ idade: { ">=": 18 } },
|
||||||
|
{ nome: { like: "%pa%" } }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Operador OU (OR):** Pelo menos um deve ser verdadeiro.
|
||||||
|
```typescript
|
||||||
|
{
|
||||||
|
OU: [
|
||||||
|
{ idade: { "<": 18 } },
|
||||||
|
{ idade: { ">=": 60 } }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4. Exemplo Complexo Complet
|
||||||
|
```typescript
|
||||||
|
{
|
||||||
|
idade: { ">=": 18 },
|
||||||
|
OU: [
|
||||||
|
{ nome: { like: "%pa%" } },
|
||||||
|
{
|
||||||
|
E: [
|
||||||
|
{ carro: { ano: { "=": 2020 } } },
|
||||||
|
{ carro: { modelo: { in: ["Civic"] } } }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Operadores Suportados (`operadores26`)
|
||||||
|
|
||||||
|
Os operadores são fornecidos pelo enum `operadores26` e são restritos pelo tipo do campo:
|
||||||
|
|
||||||
|
* **Number**: `=`, `!=`, `>`, `>=`, `<`, `<=`, `in`
|
||||||
|
* **String**: `=`, `!=`, `like`, `in`
|
||||||
|
* **Boolean**: `=`, `!=`, `in`
|
||||||
|
|
||||||
|
> **Nota:** Atualmente não há suporte automático para `null`, `date`, `jsonb` ou `arrays` como tipos de campo raiz (exceto arrays dentro do operador `in`).
|
||||||
|
|
||||||
|
### Validação em Tempo de Execução (Zod)
|
||||||
|
|
||||||
|
O sistema inclui um validador Zod `zFiltro26` para validação estrutural dos objetos de filtro recebidos (ex: via API).
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
import { zFiltro26 } from './tipoFiltro.26';
|
||||||
|
|
||||||
|
// Valida a estrutura (não checa existência de colunas no DB)
|
||||||
|
zFiltro26.parse(objetoFiltro);
|
||||||
|
```
|
||||||
|
|
|
||||||
0
biome.json
Normal file → Executable file
0
biome.json
Normal file → Executable file
0
build.config.ts
Normal file → Executable file
0
build.config.ts
Normal file → Executable file
|
|
@ -1,57 +0,0 @@
|
||||||
"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"));
|
|
||||||
var import_duration = __toESM(require("dayjs/plugin/duration.js"));
|
|
||||||
var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter.js"));
|
|
||||||
var import_isSameOrBefore = __toESM(require("dayjs/plugin/isSameOrBefore.js"));
|
|
||||||
var import_minMax = __toESM(require("dayjs/plugin/minMax.js"));
|
|
||||||
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_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
|
|
||||||
});
|
|
||||||
49
dist-back/dayjs26.js
Normal file
49
dist-back/dayjs26.js
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
"use strict";
|
||||||
|
var __defProp = Object.defineProperty;
|
||||||
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||||
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||||
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||||
|
var __export = (target, all) => {
|
||||||
|
for (var name in all)
|
||||||
|
__defProp(target, name, { get: all[name], enumerable: true });
|
||||||
|
};
|
||||||
|
var __copyProps = (to, from, except, desc) => {
|
||||||
|
if (from && typeof from === "object" || typeof from === "function") {
|
||||||
|
for (let key of __getOwnPropNames(from))
|
||||||
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||||
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||||
|
}
|
||||||
|
return to;
|
||||||
|
};
|
||||||
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||||
|
var dayjs26_exports = {};
|
||||||
|
__export(dayjs26_exports, {
|
||||||
|
defineDayjsBr: () => defineDayjsBr
|
||||||
|
});
|
||||||
|
module.exports = __toCommonJS(dayjs26_exports);
|
||||||
|
const defineDayjsBr = ({
|
||||||
|
dayjs,
|
||||||
|
duration,
|
||||||
|
isSameOrAfter,
|
||||||
|
isSameOrBefore,
|
||||||
|
minMax,
|
||||||
|
relativeTime,
|
||||||
|
timezone,
|
||||||
|
utc,
|
||||||
|
weekOfYear
|
||||||
|
}) => {
|
||||||
|
dayjs.extend(utc);
|
||||||
|
dayjs.extend(timezone);
|
||||||
|
dayjs.extend(weekOfYear);
|
||||||
|
dayjs.extend(isSameOrBefore);
|
||||||
|
dayjs.extend(isSameOrAfter);
|
||||||
|
dayjs.extend(minMax);
|
||||||
|
dayjs.extend(relativeTime);
|
||||||
|
dayjs.extend(duration);
|
||||||
|
dayjs.locale("pt-br");
|
||||||
|
return dayjs;
|
||||||
|
};
|
||||||
|
// Annotate the CommonJS export names for ESM import in node:
|
||||||
|
0 && (module.exports = {
|
||||||
|
defineDayjsBr
|
||||||
|
});
|
||||||
37
dist-back/graficosPilao.js
Normal file
37
dist-back/graficosPilao.js
Normal file
|
|
@ -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
|
||||||
|
});
|
||||||
|
|
@ -20,19 +20,19 @@ __reExport(index_exports, require("./auditoria"), module.exports);
|
||||||
__reExport(index_exports, require("./cacheMemoria"), module.exports);
|
__reExport(index_exports, require("./cacheMemoria"), module.exports);
|
||||||
__reExport(index_exports, require("./constantes"), module.exports);
|
__reExport(index_exports, require("./constantes"), module.exports);
|
||||||
__reExport(index_exports, require("./consulta"), module.exports);
|
__reExport(index_exports, require("./consulta"), module.exports);
|
||||||
__reExport(index_exports, require("./dayjs"), module.exports);
|
__reExport(index_exports, require("./dayjs26"), module.exports);
|
||||||
__reExport(index_exports, require("./ecosistema"), 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("./extensoes"), module.exports);
|
__reExport(index_exports, require("./extensoes"), module.exports);
|
||||||
__reExport(index_exports, require("./local"), 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("./postgres"), module.exports);
|
||||||
__reExport(index_exports, require("./produtos"), module.exports);
|
__reExport(index_exports, require("./produtos"), module.exports);
|
||||||
|
__reExport(index_exports, require("./situacoes"), module.exports);
|
||||||
__reExport(index_exports, require("./testes-de-variaveis"), module.exports);
|
__reExport(index_exports, require("./testes-de-variaveis"), module.exports);
|
||||||
__reExport(index_exports, require("./texto_busca"), 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("./tipagemRotas"), module.exports);
|
__reExport(index_exports, require("./tipagemRotas"), module.exports);
|
||||||
|
__reExport(index_exports, require("./tipoFiltro.26"), module.exports);
|
||||||
__reExport(index_exports, require("./unidades_medida"), module.exports);
|
__reExport(index_exports, require("./unidades_medida"), module.exports);
|
||||||
__reExport(index_exports, require("./uuid"), module.exports);
|
__reExport(index_exports, require("./uuid"), module.exports);
|
||||||
__reExport(index_exports, require("./variaveisComuns"), module.exports);
|
__reExport(index_exports, require("./variaveisComuns"), module.exports);
|
||||||
|
|
@ -43,19 +43,19 @@ __reExport(index_exports, require("./variaveisComuns"), module.exports);
|
||||||
...require("./cacheMemoria"),
|
...require("./cacheMemoria"),
|
||||||
...require("./constantes"),
|
...require("./constantes"),
|
||||||
...require("./consulta"),
|
...require("./consulta"),
|
||||||
...require("./dayjs"),
|
...require("./dayjs26"),
|
||||||
...require("./ecosistema"),
|
...require("./ecosistema"),
|
||||||
...require("./extensoes"),
|
...require("./extensoes"),
|
||||||
...require("./extensoes"),
|
...require("./extensoes"),
|
||||||
...require("./local"),
|
...require("./local"),
|
||||||
...require("./logger"),
|
|
||||||
...require("./logger"),
|
|
||||||
...require("./postgres"),
|
...require("./postgres"),
|
||||||
...require("./produtos"),
|
...require("./produtos"),
|
||||||
|
...require("./situacoes"),
|
||||||
...require("./testes-de-variaveis"),
|
...require("./testes-de-variaveis"),
|
||||||
...require("./texto_busca"),
|
...require("./texto_busca"),
|
||||||
...require("./tipagemRotas"),
|
...require("./tipagemRotas"),
|
||||||
...require("./tipagemRotas"),
|
...require("./tipagemRotas"),
|
||||||
|
...require("./tipoFiltro.26"),
|
||||||
...require("./unidades_medida"),
|
...require("./unidades_medida"),
|
||||||
...require("./uuid"),
|
...require("./uuid"),
|
||||||
...require("./variaveisComuns")
|
...require("./variaveisComuns")
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ __export(local_exports, {
|
||||||
});
|
});
|
||||||
module.exports = __toCommonJS(local_exports);
|
module.exports = __toCommonJS(local_exports);
|
||||||
const localValor = (chave_, valor) => {
|
const localValor = (chave_, valor) => {
|
||||||
const localStorage = globalThis.localStorage;
|
const localStorage = "localStorage" in globalThis ? globalThis.localStorage : void 0;
|
||||||
if (typeof localStorage == "undefined") return null;
|
if (typeof localStorage == "undefined") return null;
|
||||||
const chave = typeof chave_ === "string" ? chave_ : encodeURIComponent(JSON.stringify(chave_));
|
const chave = typeof chave_ === "string" ? chave_ : encodeURIComponent(JSON.stringify(chave_));
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -1,106 +0,0 @@
|
||||||
"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"));
|
|
||||||
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
|
|
||||||
});
|
|
||||||
77
dist-back/situacoes.js
Normal file
77
dist-back/situacoes.js
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
"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, {
|
||||||
|
tiposSituacoesElicencie: () => tiposSituacoesElicencie
|
||||||
|
});
|
||||||
|
module.exports = __toCommonJS(situacoes_exports);
|
||||||
|
var tiposSituacoesElicencie = /* @__PURE__ */ ((tiposSituacoesElicencie2) => {
|
||||||
|
tiposSituacoesElicencie2["modelo"] = "000_modelo";
|
||||||
|
tiposSituacoesElicencie2["vencida"] = "100_vencida";
|
||||||
|
tiposSituacoesElicencie2["expirado"] = "200_expirado";
|
||||||
|
tiposSituacoesElicencie2["alerta"] = "300_alerta";
|
||||||
|
tiposSituacoesElicencie2["protocoladafora"] = "350_protocoladafora";
|
||||||
|
tiposSituacoesElicencie2["protocolada"] = "400_protocolada";
|
||||||
|
tiposSituacoesElicencie2["protocoladaApenas"] = "430_protocolada";
|
||||||
|
tiposSituacoesElicencie2["protocolada_alteracao"] = "450_protocolada";
|
||||||
|
tiposSituacoesElicencie2["prazo"] = "500_prazo";
|
||||||
|
tiposSituacoesElicencie2["emitida"] = "515_emitida";
|
||||||
|
tiposSituacoesElicencie2["valida"] = "518_valida";
|
||||||
|
tiposSituacoesElicencie2["novo"] = "520_novo";
|
||||||
|
tiposSituacoesElicencie2["recebido"] = "521_recebido";
|
||||||
|
tiposSituacoesElicencie2["em_andamento"] = "530_em_andamento";
|
||||||
|
tiposSituacoesElicencie2["aguardando"] = "530_aguardando";
|
||||||
|
tiposSituacoesElicencie2["aguardandoresposta"] = "540_aguardandoresposta";
|
||||||
|
tiposSituacoesElicencie2["suspensaotemporaria"] = "540_suspensaotemporaria";
|
||||||
|
tiposSituacoesElicencie2["cancelada"] = "550_cancelada";
|
||||||
|
tiposSituacoesElicencie2["execucao"] = "560_execucao";
|
||||||
|
tiposSituacoesElicencie2["pendente"] = "570_pendente";
|
||||||
|
tiposSituacoesElicencie2["executadafora"] = "600_executadafora";
|
||||||
|
tiposSituacoesElicencie2["executada"] = "700_executada";
|
||||||
|
tiposSituacoesElicencie2["naoexecutada"] = "701_naoexecutada";
|
||||||
|
tiposSituacoesElicencie2["concluida"] = "730_concluida";
|
||||||
|
tiposSituacoesElicencie2["respondido_negado"] = "740_respondido_negado";
|
||||||
|
tiposSituacoesElicencie2["respondido_aceito"] = "741_respondido_aceito";
|
||||||
|
tiposSituacoesElicencie2["atendidoparcial"] = "742_atendidoparcial";
|
||||||
|
tiposSituacoesElicencie2["naoatendido"] = "743_naoatendido";
|
||||||
|
tiposSituacoesElicencie2["atendido"] = "744_atendido";
|
||||||
|
tiposSituacoesElicencie2["renovada"] = "760_renovada";
|
||||||
|
tiposSituacoesElicencie2["finalizada"] = "800_finalizada";
|
||||||
|
tiposSituacoesElicencie2["emitirnota"] = "101_emitirnota";
|
||||||
|
tiposSituacoesElicencie2["faturaatrasada"] = "301_faturaatrasada";
|
||||||
|
tiposSituacoesElicencie2["pagarfatura"] = "302_pagarfatura";
|
||||||
|
tiposSituacoesElicencie2["aguardandoconfirmacao"] = "531_aguardandoconfirmacao";
|
||||||
|
tiposSituacoesElicencie2["agendado"] = "701_agendado";
|
||||||
|
tiposSituacoesElicencie2["faturapaga"] = "801_faturapaga";
|
||||||
|
tiposSituacoesElicencie2["excluida"] = "999_excluida";
|
||||||
|
tiposSituacoesElicencie2["requerida"] = "401_requerida";
|
||||||
|
tiposSituacoesElicencie2["vigente"] = "516_vigente";
|
||||||
|
tiposSituacoesElicencie2["emrenovacao"] = "402_emrenovacao";
|
||||||
|
tiposSituacoesElicencie2["arquivada"] = "801_arquivada";
|
||||||
|
tiposSituacoesElicencie2["aguardando_sincronizacao"] = "999_aguardando_sincronizacao";
|
||||||
|
tiposSituacoesElicencie2["nao_conforme"] = "710_nao_conforme";
|
||||||
|
tiposSituacoesElicencie2["conforme"] = "720_conforme";
|
||||||
|
tiposSituacoesElicencie2["nao_aplicavel"] = "730_nao_aplicavel";
|
||||||
|
tiposSituacoesElicencie2["parcial"] = "715_parcial";
|
||||||
|
return tiposSituacoesElicencie2;
|
||||||
|
})(tiposSituacoesElicencie || {});
|
||||||
|
// Annotate the CommonJS export names for ESM import in node:
|
||||||
|
0 && (module.exports = {
|
||||||
|
tiposSituacoesElicencie
|
||||||
|
});
|
||||||
|
|
@ -56,9 +56,8 @@ class TipagemRotas {
|
||||||
** "http://localhost:3000/caminho?q=query"
|
** "http://localhost:3000/caminho?q=query"
|
||||||
*/
|
*/
|
||||||
endereco(query, usarComoHash) {
|
endereco(query, usarComoHash) {
|
||||||
const url = new URL(
|
const win = typeof globalThis !== "undefined" && globalThis.window || void 0;
|
||||||
typeof window !== "undefined" ? window.location.href : "http://localhost"
|
const url = new URL(win ? win.location.href : "http://localhost");
|
||||||
);
|
|
||||||
url.pathname = this.caminho;
|
url.pathname = this.caminho;
|
||||||
url.search = "";
|
url.search = "";
|
||||||
const queryKeys = Object.entries(query);
|
const queryKeys = Object.entries(query);
|
||||||
|
|
@ -80,8 +79,9 @@ class TipagemRotas {
|
||||||
if (this._acaoIr) {
|
if (this._acaoIr) {
|
||||||
this._acaoIr(this.endereco({ ...query }));
|
this._acaoIr(this.endereco({ ...query }));
|
||||||
} else {
|
} else {
|
||||||
if (typeof window != "undefined") {
|
const win = typeof globalThis !== "undefined" && globalThis.window || void 0;
|
||||||
window.location.href = this.endereco({ ...query });
|
if (win) {
|
||||||
|
win.location.href = this.endereco({ ...query });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -91,7 +91,7 @@ class TipagemRotas {
|
||||||
*/
|
*/
|
||||||
parametros(urlEntrada) {
|
parametros(urlEntrada) {
|
||||||
const url = urlEntrada ? new URL(urlEntrada) : new URL(
|
const url = urlEntrada ? new URL(urlEntrada) : new URL(
|
||||||
typeof window !== "undefined" ? window.location.href : "http://localhost"
|
typeof globalThis !== "undefined" && globalThis.window ? globalThis.window.location.href : "http://localhost"
|
||||||
);
|
);
|
||||||
const query = url.searchParams;
|
const query = url.searchParams;
|
||||||
let queryObj = Object.fromEntries(query.entries());
|
let queryObj = Object.fromEntries(query.entries());
|
||||||
|
|
|
||||||
72
dist-back/tipoFiltro.26.js
Normal file
72
dist-back/tipoFiltro.26.js
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
"use strict";
|
||||||
|
var __defProp = Object.defineProperty;
|
||||||
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||||
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||||
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||||
|
var __export = (target, all) => {
|
||||||
|
for (var name in all)
|
||||||
|
__defProp(target, name, { get: all[name], enumerable: true });
|
||||||
|
};
|
||||||
|
var __copyProps = (to, from, except, desc) => {
|
||||||
|
if (from && typeof from === "object" || typeof from === "function") {
|
||||||
|
for (let key of __getOwnPropNames(from))
|
||||||
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||||
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||||
|
}
|
||||||
|
return to;
|
||||||
|
};
|
||||||
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||||
|
var tipoFiltro_26_exports = {};
|
||||||
|
__export(tipoFiltro_26_exports, {
|
||||||
|
agrupadores26: () => agrupadores26,
|
||||||
|
criarFiltro26: () => criarFiltro26,
|
||||||
|
operadores26: () => operadores26,
|
||||||
|
zFiltro26: () => zFiltro26
|
||||||
|
});
|
||||||
|
module.exports = __toCommonJS(tipoFiltro_26_exports);
|
||||||
|
var import_zod = require("zod");
|
||||||
|
var operadores26 = /* @__PURE__ */ ((operadores262) => {
|
||||||
|
operadores262["="] = "=";
|
||||||
|
operadores262["!="] = "!=";
|
||||||
|
operadores262[">"] = ">";
|
||||||
|
operadores262[">="] = ">=";
|
||||||
|
operadores262["<"] = "<";
|
||||||
|
operadores262["<="] = "<=";
|
||||||
|
operadores262["like"] = "like";
|
||||||
|
operadores262["in"] = "in";
|
||||||
|
return operadores262;
|
||||||
|
})(operadores26 || {});
|
||||||
|
var agrupadores26 = /* @__PURE__ */ ((agrupadores262) => {
|
||||||
|
agrupadores262["E"] = "E";
|
||||||
|
agrupadores262["OU"] = "OU";
|
||||||
|
return agrupadores262;
|
||||||
|
})(agrupadores26 || {});
|
||||||
|
const zOperadores = import_zod.z.nativeEnum(operadores26);
|
||||||
|
const zValor = import_zod.z.any();
|
||||||
|
const zCondicao = import_zod.z.record(zOperadores, zValor);
|
||||||
|
const zFiltro26 = import_zod.z.lazy(
|
||||||
|
() => import_zod.z.object({
|
||||||
|
E: import_zod.z.array(zFiltro26).optional(),
|
||||||
|
OU: import_zod.z.array(zFiltro26).optional()
|
||||||
|
}).catchall(import_zod.z.union([zCondicao, zFiltro26]))
|
||||||
|
);
|
||||||
|
const criarFiltro26 = (filtro) => filtro;
|
||||||
|
const _filtro = criarFiltro26({
|
||||||
|
idade: { [">=" /* >= */]: 18 },
|
||||||
|
["OU" /* OU */]: [
|
||||||
|
{ nome: { ["like" /* like */]: "%pa%" } },
|
||||||
|
{
|
||||||
|
["E" /* E */]: [
|
||||||
|
{ carro: { ano: { ["=" /* = */]: 2020 } } },
|
||||||
|
{ carro: { modelo: { ["in" /* in */]: ["Civic", "Corolla"] } } }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
// Annotate the CommonJS export names for ESM import in node:
|
||||||
|
0 && (module.exports = {
|
||||||
|
agrupadores26,
|
||||||
|
criarFiltro26,
|
||||||
|
operadores26,
|
||||||
|
zFiltro26
|
||||||
|
});
|
||||||
|
|
@ -1,6 +1,14 @@
|
||||||
import z from 'zod';
|
import z, { z as z$1 } from 'zod';
|
||||||
import dayjs from 'dayjs';
|
import _dayjs from 'dayjs';
|
||||||
export { Dayjs, ManipulateType } from 'dayjs';
|
export { Dayjs, ManipulateType } from 'dayjs';
|
||||||
|
import _duration from 'dayjs/plugin/duration';
|
||||||
|
import _isSameOrAfter from 'dayjs/plugin/isSameOrAfter';
|
||||||
|
import _isSameOrBefore from 'dayjs/plugin/isSameOrBefore';
|
||||||
|
import _minMax from 'dayjs/plugin/minMax';
|
||||||
|
import _relativeTime from 'dayjs/plugin/relativeTime';
|
||||||
|
import _timezone from 'dayjs/plugin/timezone';
|
||||||
|
import _utc from 'dayjs/plugin/utc';
|
||||||
|
import _weekOfYear from 'dayjs/plugin/weekOfYear';
|
||||||
import { v4 } from 'uuid';
|
import { v4 } from 'uuid';
|
||||||
|
|
||||||
declare const aleatorio: (tamanho?: number) => string;
|
declare const aleatorio: (tamanho?: number) => string;
|
||||||
|
|
@ -114,7 +122,69 @@ declare const zFiltro: z.ZodObject<{
|
||||||
ou: z.ZodOptional<z.ZodBoolean>;
|
ou: z.ZodOptional<z.ZodBoolean>;
|
||||||
}, z.core.$strip>;
|
}, z.core.$strip>;
|
||||||
|
|
||||||
declare const dayjsbr: typeof dayjs;
|
/**
|
||||||
|
* Utilitário de configuração do Dayjs focado em compatibilidade com SSR.
|
||||||
|
*
|
||||||
|
* PROBLEMA:
|
||||||
|
* A importação direta do `dayjs` e seus plugins frequentemente causa conflitos em ambientes
|
||||||
|
* de Renderização do Lado do Servidor (SSR), como Nuxt ou Next.js, devido a discrepâncias
|
||||||
|
* na resolução de módulos (ESM vs CJS) e instabilidades de importação.
|
||||||
|
*
|
||||||
|
* SOLUÇÃO:
|
||||||
|
* Este módulo utiliza o padrão de Injeção de Dependência. Ele expõe apenas tipagens e
|
||||||
|
* uma função de configuração (`defineDayjsBr`). A responsabilidade de importar as
|
||||||
|
* bibliotecas "vivas" é delegada à aplicação consumidora (o cliente da função).
|
||||||
|
*
|
||||||
|
* Isso permite que o bundler da aplicação principal (Vite, Webpack, etc.) gerencie as
|
||||||
|
* instâncias, garantindo consistência e evitando erros de "module not found" ou
|
||||||
|
* instâncias duplicadas/não inicializadas adequadamente.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inicializa e configura o Dayjs com o locale 'pt-br' e plugins essenciais.
|
||||||
|
*
|
||||||
|
* MODO DE USO:
|
||||||
|
* Importe os pacotes reais na sua aplicação e passe-os para esta função.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* ```ts
|
||||||
|
* // Em seu arquivo de configuração (ex: plugins/dayjs.ts):
|
||||||
|
* import dayjs from "dayjs"
|
||||||
|
* import duration from "dayjs/plugin/duration"
|
||||||
|
* import isSameOrAfter from "dayjs/plugin/isSameOrAfter"
|
||||||
|
* import isSameOrBefore from "dayjs/plugin/isSameOrBefore"
|
||||||
|
* import minMax from "dayjs/plugin/minMax"
|
||||||
|
* import relativeTime from "dayjs/plugin/relativeTime"
|
||||||
|
* import timezone from "dayjs/plugin/timezone"
|
||||||
|
* import utc from "dayjs/plugin/utc"
|
||||||
|
* import weekOfYear from "dayjs/plugin/weekOfYear"
|
||||||
|
* import { defineDayjsBr } from "p-comuns"
|
||||||
|
* import "dayjs/locale/pt-br" // Importante: importar o locale!
|
||||||
|
|
||||||
|
* export const dayjsbr = defineDayjsBr({
|
||||||
|
* dayjs,
|
||||||
|
* duration,
|
||||||
|
* isSameOrAfter,
|
||||||
|
* isSameOrBefore,
|
||||||
|
* minMax,
|
||||||
|
* relativeTime,
|
||||||
|
* timezone,
|
||||||
|
* utc,
|
||||||
|
* weekOfYear,
|
||||||
|
* })
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
declare const defineDayjsBr: ({ dayjs, duration, isSameOrAfter, isSameOrBefore, minMax, relativeTime, timezone, utc, weekOfYear, }: {
|
||||||
|
dayjs: typeof _dayjs;
|
||||||
|
duration: typeof _duration;
|
||||||
|
isSameOrAfter: typeof _isSameOrAfter;
|
||||||
|
isSameOrBefore: typeof _isSameOrBefore;
|
||||||
|
minMax: typeof _minMax;
|
||||||
|
relativeTime: typeof _relativeTime;
|
||||||
|
timezone: typeof _timezone;
|
||||||
|
utc: typeof _utc;
|
||||||
|
weekOfYear: typeof _weekOfYear;
|
||||||
|
}) => typeof _dayjs;
|
||||||
|
|
||||||
declare const link_paiol = "https://paiol.idz.one";
|
declare const link_paiol = "https://paiol.idz.one";
|
||||||
|
|
||||||
|
|
@ -137,46 +207,6 @@ declare const tipoArquivo: (nomeArquivo: string | null | undefined) => tiposArqu
|
||||||
*/
|
*/
|
||||||
declare const localValor: <T>(chave_: string | any, valor?: T | null) => T | null;
|
declare const localValor: <T>(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
|
* Trata um objeto para ser imput para postgres
|
||||||
* @param entrada
|
* @param entrada
|
||||||
|
|
@ -203,6 +233,56 @@ declare enum Produtos {
|
||||||
"gov.e-licencie" = "gov.e-licencie"
|
"gov.e-licencie" = "gov.e-licencie"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
declare enum tiposSituacoesElicencie {
|
||||||
|
modelo = "000_modelo",
|
||||||
|
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 umaFuncao: () => string;
|
declare const umaFuncao: () => string;
|
||||||
|
|
||||||
declare const umaVariavel = "Ol\u00E1 Mundo! (vari\u00E1vel)";
|
declare const umaVariavel = "Ol\u00E1 Mundo! (vari\u00E1vel)";
|
||||||
|
|
@ -265,6 +345,151 @@ declare class TipagemRotas<T extends {
|
||||||
parametros(urlEntrada?: string): Partial<T>;
|
parametros(urlEntrada?: string): Partial<T>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* =============================================================================
|
||||||
|
* tipoFiltro26<T>
|
||||||
|
* =============================================================================
|
||||||
|
*
|
||||||
|
* OBJETIVO
|
||||||
|
* -----------------------------------------------------------------------------
|
||||||
|
* Gerar automaticamente a tipagem de filtros compatíveis com operadores
|
||||||
|
* padrão do PostgreSQL, a partir de um tipo base T.
|
||||||
|
*
|
||||||
|
* Este tipo foi projetado para:
|
||||||
|
* - Construção de filtros dinâmicos
|
||||||
|
* - Geração posterior de WHERE (Knex / SQL)
|
||||||
|
* - Uso seguro por IA (evita filtros inválidos em nível de tipo)
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* FORMATO DO FILTRO
|
||||||
|
* -----------------------------------------------------------------------------
|
||||||
|
* 1) Campos simples:
|
||||||
|
*
|
||||||
|
* {
|
||||||
|
* idade: { ">=": 18 }
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* 2) Campos aninhados:
|
||||||
|
*
|
||||||
|
* {
|
||||||
|
* carro: {
|
||||||
|
* ano: { "=": 2020 }
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* 3) Operador E (AND):
|
||||||
|
*
|
||||||
|
* {
|
||||||
|
* E: [
|
||||||
|
* { idade: { ">=": 18 } },
|
||||||
|
* { nome: { like: "%pa%" } }
|
||||||
|
* ]
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* 4) Operador OU (OR):
|
||||||
|
*
|
||||||
|
* {
|
||||||
|
* OU: [
|
||||||
|
* { idade: { "<": 18 } },
|
||||||
|
* { idade: { ">=": 60 } }
|
||||||
|
* ]
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* 5) Combinação complexa:
|
||||||
|
*
|
||||||
|
* {
|
||||||
|
* idade: { ">=": 18 },
|
||||||
|
* OU: [
|
||||||
|
* { nome: { like: "%pa%" } },
|
||||||
|
* {
|
||||||
|
* E: [
|
||||||
|
* { carro: { ano: { "=": 2020 } } },
|
||||||
|
* { carro: { modelo: { in: ["Civic"] } } }
|
||||||
|
* ]
|
||||||
|
* }
|
||||||
|
* ]
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* REGRAS IMPORTANTES (PARA IA)
|
||||||
|
* -----------------------------------------------------------------------------
|
||||||
|
* - Apenas campos existentes em T podem ser usados.
|
||||||
|
* - Operadores são restritos por tipo do campo.
|
||||||
|
* - Objetos são tratados recursivamente.
|
||||||
|
* - Arrays NÃO são tratados como objeto recursivo.
|
||||||
|
* - Funções NÃO são consideradas campos filtráveis.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* OPERADORES SUPORTADOS
|
||||||
|
* -----------------------------------------------------------------------------
|
||||||
|
* number:
|
||||||
|
* =, !=, >, >=, <, <=, in
|
||||||
|
*
|
||||||
|
* string:
|
||||||
|
* =, !=, like, in
|
||||||
|
*
|
||||||
|
* boolean:
|
||||||
|
* =, !=, in
|
||||||
|
*
|
||||||
|
* Não há suporte automático a:
|
||||||
|
* - null
|
||||||
|
* - date
|
||||||
|
* - jsonb
|
||||||
|
* - arrays
|
||||||
|
*
|
||||||
|
* Essas extensões devem ser adicionadas explicitamente.
|
||||||
|
*
|
||||||
|
* =============================================================================
|
||||||
|
*/
|
||||||
|
declare enum operadores26 {
|
||||||
|
"=" = "=",
|
||||||
|
"!=" = "!=",
|
||||||
|
">" = ">",
|
||||||
|
">=" = ">=",
|
||||||
|
"<" = "<",
|
||||||
|
"<=" = "<=",
|
||||||
|
like = "like",
|
||||||
|
in = "in"
|
||||||
|
}
|
||||||
|
declare enum agrupadores26 {
|
||||||
|
E = "E",
|
||||||
|
OU = "OU"
|
||||||
|
}
|
||||||
|
type PgOpsNumber = {
|
||||||
|
[K in Extract<operadores26, "=" | "!=" | ">" | ">=" | "<" | "<=">]?: number;
|
||||||
|
} & {
|
||||||
|
[K in Extract<operadores26, "in">]?: number[];
|
||||||
|
};
|
||||||
|
type PgOpsString = {
|
||||||
|
[K in Extract<operadores26, "=" | "!=" | "like">]?: string;
|
||||||
|
} & {
|
||||||
|
[K in Extract<operadores26, "in">]?: string[];
|
||||||
|
};
|
||||||
|
type PgOpsBoolean = {
|
||||||
|
[K in Extract<operadores26, "=" | "!=">]?: boolean;
|
||||||
|
} & {
|
||||||
|
[K in Extract<operadores26, "in">]?: boolean[];
|
||||||
|
};
|
||||||
|
type PgOpsFor<V> = V extends number ? PgOpsNumber : V extends string ? PgOpsString : V extends boolean ? PgOpsBoolean : never;
|
||||||
|
type IsPlainObject<T> = T extends object ? T extends Function ? false : T extends readonly any[] ? false : true : false;
|
||||||
|
type FiltroCampos<T> = {
|
||||||
|
[K in keyof T]?: IsPlainObject<T[K]> extends true ? tipoFiltro26<T[K]> : PgOpsFor<T[K]>;
|
||||||
|
};
|
||||||
|
type tipoFiltro26<T> = FiltroCampos<T> & {
|
||||||
|
/**
|
||||||
|
* E => AND lógico
|
||||||
|
* Todos os filtros dentro do array devem ser verdadeiros.
|
||||||
|
*/
|
||||||
|
E?: tipoFiltro26<T>[];
|
||||||
|
/**
|
||||||
|
* OU => OR lógico
|
||||||
|
* Pelo menos um filtro dentro do array deve ser verdadeiro.
|
||||||
|
*/
|
||||||
|
OU?: tipoFiltro26<T>[];
|
||||||
|
};
|
||||||
|
declare const zFiltro26: z$1.ZodType<any>;
|
||||||
|
declare const criarFiltro26: <T>(filtro: tipoFiltro26<T>) => tipoFiltro26<T>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Essa variável se conecta a tabela_lidades
|
* Essa variável se conecta a tabela_lidades
|
||||||
*
|
*
|
||||||
|
|
@ -333,4 +558,4 @@ declare const nomeVariavel: (v: {
|
||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
}) => string;
|
}) => string;
|
||||||
|
|
||||||
export { Produtos, TipagemRotas, type TipoLoggerSessao, type TipoPayloadAuditoria, aleatorio, cacheM, cacheMFixo, cacheMemoria, camposComuns, dayjsbr, defineCwd, erUuid, esperar, extensoes, type interfaceConsulta, link_paiol, localValor, logger, nomeVariavel, objetoPg, operadores, paraObjetoRegistroPg, pgObjeto, postLogger, siglas_unidades_medida, texto_busca, tipoArquivo, type tipoFiltro, type tipoLogger, type tipoLoggerLog, type tipoLokiObjeto, tipoUsuarioResiduos, tx, umaFuncao, umaVariavel, unidades_medida, uuid, uuidV3, uuidV4, uuid_null, validarUuid, verCacheM, zFiltro, zOperadores };
|
export { Produtos, TipagemRotas, type TipoLoggerSessao, type TipoPayloadAuditoria, aleatorio, cacheM, cacheMFixo, cacheMemoria, camposComuns, dayjsbr, defineCwd, erUuid, esperar, extensoes, type interfaceConsulta, link_paiol, localValor, logger, nomeVariavel, objetoPg, operadores, paraObjetoRegistroPg, pgObjeto, postLogger, siglas_unidades_medida, texto_busca, tipoArquivo, type tipoFiltro, type tipoLogger, type tipoLoggerLog, type tipoLokiObjeto, tipoUsuarioResiduos, tx, umaFuncao, umaVariavel, unidades_medida, uuid, uuidV3, uuidV4, uuid_null, validarUuid, verCacheM, zFiltro, zOperadores };
|
||||||
File diff suppressed because one or more lines are too long
17
package.json
17
package.json
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "p-comuns",
|
"name": "p-comuns",
|
||||||
"version": "0.298.0",
|
"version": "0.317.0",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "./dist-front/index.mjs",
|
"main": "./dist-front/index.mjs",
|
||||||
"module": "./dist-front/index.mjs",
|
"module": "./dist-front/index.mjs",
|
||||||
|
|
@ -25,14 +25,13 @@
|
||||||
"url": "https://e-licencie.com.br"
|
"url": "https://e-licencie.com.br"
|
||||||
},
|
},
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {},
|
||||||
"cross-fetch": "4.1.0",
|
|
||||||
"dayjs": "^1.11.18",
|
|
||||||
"uuid": "^11.1.0",
|
|
||||||
"zod": "4.1.4"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@biomejs/biome": "2.1.4",
|
"cross-fetch": "4.1.0",
|
||||||
|
"uuid": "^11.1.0",
|
||||||
|
"zod": "4.1.4",
|
||||||
|
"dayjs": "^1.11.18",
|
||||||
|
"@biomejs/biome": "2.4.0",
|
||||||
"@types/node": "^20.19.22",
|
"@types/node": "^20.19.22",
|
||||||
"tsup": "8.5.0",
|
"tsup": "8.5.0",
|
||||||
"typescript": "~5.9.3",
|
"typescript": "~5.9.3",
|
||||||
|
|
@ -45,4 +44,4 @@
|
||||||
"uuid": "^11.1.0",
|
"uuid": "^11.1.0",
|
||||||
"zod": "4.1.4"
|
"zod": "4.1.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BIN
pacote.tgz
BIN
pacote.tgz
Binary file not shown.
105
pnpm-lock.yaml
generated
Normal file → Executable file
105
pnpm-lock.yaml
generated
Normal file → Executable file
|
|
@ -7,26 +7,19 @@ settings:
|
||||||
importers:
|
importers:
|
||||||
|
|
||||||
.:
|
.:
|
||||||
dependencies:
|
devDependencies:
|
||||||
|
'@biomejs/biome':
|
||||||
|
specifier: 2.4.0
|
||||||
|
version: 2.4.0
|
||||||
|
'@types/node':
|
||||||
|
specifier: ^20.19.22
|
||||||
|
version: 20.19.22
|
||||||
cross-fetch:
|
cross-fetch:
|
||||||
specifier: 4.1.0
|
specifier: 4.1.0
|
||||||
version: 4.1.0
|
version: 4.1.0
|
||||||
dayjs:
|
dayjs:
|
||||||
specifier: ^1.11.18
|
specifier: ^1.11.18
|
||||||
version: 1.11.18
|
version: 1.11.19
|
||||||
uuid:
|
|
||||||
specifier: ^11.1.0
|
|
||||||
version: 11.1.0
|
|
||||||
zod:
|
|
||||||
specifier: 4.1.4
|
|
||||||
version: 4.1.4
|
|
||||||
devDependencies:
|
|
||||||
'@biomejs/biome':
|
|
||||||
specifier: 2.1.4
|
|
||||||
version: 2.1.4
|
|
||||||
'@types/node':
|
|
||||||
specifier: ^20.19.22
|
|
||||||
version: 20.19.22
|
|
||||||
tsup:
|
tsup:
|
||||||
specifier: 8.5.0
|
specifier: 8.5.0
|
||||||
version: 8.5.0(jiti@2.6.1)(postcss@8.5.6)(typescript@5.9.3)
|
version: 8.5.0(jiti@2.6.1)(postcss@8.5.6)(typescript@5.9.3)
|
||||||
|
|
@ -36,9 +29,15 @@ importers:
|
||||||
unbuild:
|
unbuild:
|
||||||
specifier: ^3.6.1
|
specifier: ^3.6.1
|
||||||
version: 3.6.1(typescript@5.9.3)
|
version: 3.6.1(typescript@5.9.3)
|
||||||
|
uuid:
|
||||||
|
specifier: ^11.1.0
|
||||||
|
version: 11.1.0
|
||||||
vitest:
|
vitest:
|
||||||
specifier: ^3.2.4
|
specifier: ^3.2.4
|
||||||
version: 3.2.4(@types/node@20.19.22)(jiti@2.6.1)
|
version: 3.2.4(@types/node@20.19.22)(jiti@2.6.1)
|
||||||
|
zod:
|
||||||
|
specifier: 4.1.4
|
||||||
|
version: 4.1.4
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
|
|
@ -50,55 +49,55 @@ packages:
|
||||||
resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
|
resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
|
||||||
'@biomejs/biome@2.1.4':
|
'@biomejs/biome@2.4.0':
|
||||||
resolution: {integrity: sha512-QWlrqyxsU0FCebuMnkvBIkxvPqH89afiJzjMl+z67ybutse590jgeaFdDurE9XYtzpjRGTI1tlUZPGWmbKsElA==}
|
resolution: {integrity: sha512-iluT61cORUDIC5i/y42ljyQraCemmmcgbMLLCnYO+yh+2hjTmcMFcwY8G0zTzWCsPb3t3AyKc+0t/VuhPZULUg==}
|
||||||
engines: {node: '>=14.21.3'}
|
engines: {node: '>=14.21.3'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
'@biomejs/cli-darwin-arm64@2.1.4':
|
'@biomejs/cli-darwin-arm64@2.4.0':
|
||||||
resolution: {integrity: sha512-sCrNENE74I9MV090Wq/9Dg7EhPudx3+5OiSoQOkIe3DLPzFARuL1dOwCWhKCpA3I5RHmbrsbNSRfZwCabwd8Qg==}
|
resolution: {integrity: sha512-L+YpOtPSuU0etomfvFTPWRsa7+8ejaJL3yaROEoT/96HDJbR6OsvZQk0C8JUYou+XFdP+JcGxqZknkp4n934RA==}
|
||||||
engines: {node: '>=14.21.3'}
|
engines: {node: '>=14.21.3'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@biomejs/cli-darwin-x64@2.1.4':
|
'@biomejs/cli-darwin-x64@2.4.0':
|
||||||
resolution: {integrity: sha512-gOEICJbTCy6iruBywBDcG4X5rHMbqCPs3clh3UQ+hRKlgvJTk4NHWQAyHOXvaLe+AxD1/TNX1jbZeffBJzcrOw==}
|
resolution: {integrity: sha512-Aq+S7ffpb5ynTyLgtnEjG+W6xuTd2F7FdC7J6ShpvRhZwJhjzwITGF9vrqoOnw0sv1XWkt2Q1Rpg+hleg/Xg7Q==}
|
||||||
engines: {node: '>=14.21.3'}
|
engines: {node: '>=14.21.3'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@biomejs/cli-linux-arm64-musl@2.1.4':
|
'@biomejs/cli-linux-arm64-musl@2.4.0':
|
||||||
resolution: {integrity: sha512-nYr7H0CyAJPaLupFE2cH16KZmRC5Z9PEftiA2vWxk+CsFkPZQ6dBRdcC6RuS+zJlPc/JOd8xw3uCCt9Pv41WvQ==}
|
resolution: {integrity: sha512-1rhDUq8sf7xX3tg7vbnU3WVfanKCKi40OXc4VleBMzRStmQHdeBY46aFP6VdwEomcVjyNiu+Zcr3LZtAdrZrjQ==}
|
||||||
engines: {node: '>=14.21.3'}
|
engines: {node: '>=14.21.3'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@biomejs/cli-linux-arm64@2.1.4':
|
'@biomejs/cli-linux-arm64@2.4.0':
|
||||||
resolution: {integrity: sha512-juhEkdkKR4nbUi5k/KRp1ocGPNWLgFRD4NrHZSveYrD6i98pyvuzmS9yFYgOZa5JhaVqo0HPnci0+YuzSwT2fw==}
|
resolution: {integrity: sha512-u2p54IhvNAWB+h7+rxCZe3reNfQYFK+ppDw+q0yegrGclFYnDPZAntv/PqgUacpC3uxTeuWFgWW7RFe3lHuxOA==}
|
||||||
engines: {node: '>=14.21.3'}
|
engines: {node: '>=14.21.3'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@biomejs/cli-linux-x64-musl@2.1.4':
|
'@biomejs/cli-linux-x64-musl@2.4.0':
|
||||||
resolution: {integrity: sha512-lvwvb2SQQHctHUKvBKptR6PLFCM7JfRjpCCrDaTmvB7EeZ5/dQJPhTYBf36BE/B4CRWR2ZiBLRYhK7hhXBCZAg==}
|
resolution: {integrity: sha512-Omo0xhl63z47X+CrE5viEWKJhejJyndl577VoXg763U/aoATrK3r5+8DPh02GokWPeODX1Hek00OtjjooGan9w==}
|
||||||
engines: {node: '>=14.21.3'}
|
engines: {node: '>=14.21.3'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@biomejs/cli-linux-x64@2.1.4':
|
'@biomejs/cli-linux-x64@2.4.0':
|
||||||
resolution: {integrity: sha512-Eoy9ycbhpJVYuR+LskV9s3uyaIkp89+qqgqhGQsWnp/I02Uqg2fXFblHJOpGZR8AxdB9ADy87oFVxn9MpFKUrw==}
|
resolution: {integrity: sha512-WVFOhsnzhrbMGOSIcB9yFdRV2oG2KkRRhIZiunI9gJqSU3ax9ErdnTxRfJUxZUI9NbzVxC60OCXNcu+mXfF/Tw==}
|
||||||
engines: {node: '>=14.21.3'}
|
engines: {node: '>=14.21.3'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@biomejs/cli-win32-arm64@2.1.4':
|
'@biomejs/cli-win32-arm64@2.4.0':
|
||||||
resolution: {integrity: sha512-3WRYte7orvyi6TRfIZkDN9Jzoogbv+gSvR+b9VOXUg1We1XrjBg6WljADeVEaKTvOcpVdH0a90TwyOQ6ue4fGw==}
|
resolution: {integrity: sha512-aqRwW0LJLV1v1NzyLvLWQhdLmDSAV1vUh+OBdYJaa8f28XBn5BZavo+WTfqgEzALZxlNfBmu6NGO6Al3MbCULw==}
|
||||||
engines: {node: '>=14.21.3'}
|
engines: {node: '>=14.21.3'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@biomejs/cli-win32-x64@2.1.4':
|
'@biomejs/cli-win32-x64@2.4.0':
|
||||||
resolution: {integrity: sha512-tBc+W7anBPSFXGAoQW+f/+svkpt8/uXfRwDzN1DvnatkRMt16KIYpEi/iw8u9GahJlFv98kgHcIrSsZHZTR0sw==}
|
resolution: {integrity: sha512-g47s+V+OqsGxbSZN3lpav6WYOk0PIc3aCBAq+p6dwSynL3K5MA6Cg6nkzDOlu28GEHwbakW+BllzHCJCxnfK5Q==}
|
||||||
engines: {node: '>=14.21.3'}
|
engines: {node: '>=14.21.3'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
@ -658,8 +657,8 @@ packages:
|
||||||
resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==}
|
resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==}
|
||||||
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
|
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
|
||||||
|
|
||||||
dayjs@1.11.18:
|
dayjs@1.11.19:
|
||||||
resolution: {integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==}
|
resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==}
|
||||||
|
|
||||||
debug@4.4.3:
|
debug@4.4.3:
|
||||||
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
|
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
|
||||||
|
|
@ -1479,39 +1478,39 @@ snapshots:
|
||||||
'@babel/helper-validator-identifier@7.28.5':
|
'@babel/helper-validator-identifier@7.28.5':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@biomejs/biome@2.1.4':
|
'@biomejs/biome@2.4.0':
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@biomejs/cli-darwin-arm64': 2.1.4
|
'@biomejs/cli-darwin-arm64': 2.4.0
|
||||||
'@biomejs/cli-darwin-x64': 2.1.4
|
'@biomejs/cli-darwin-x64': 2.4.0
|
||||||
'@biomejs/cli-linux-arm64': 2.1.4
|
'@biomejs/cli-linux-arm64': 2.4.0
|
||||||
'@biomejs/cli-linux-arm64-musl': 2.1.4
|
'@biomejs/cli-linux-arm64-musl': 2.4.0
|
||||||
'@biomejs/cli-linux-x64': 2.1.4
|
'@biomejs/cli-linux-x64': 2.4.0
|
||||||
'@biomejs/cli-linux-x64-musl': 2.1.4
|
'@biomejs/cli-linux-x64-musl': 2.4.0
|
||||||
'@biomejs/cli-win32-arm64': 2.1.4
|
'@biomejs/cli-win32-arm64': 2.4.0
|
||||||
'@biomejs/cli-win32-x64': 2.1.4
|
'@biomejs/cli-win32-x64': 2.4.0
|
||||||
|
|
||||||
'@biomejs/cli-darwin-arm64@2.1.4':
|
'@biomejs/cli-darwin-arm64@2.4.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@biomejs/cli-darwin-x64@2.1.4':
|
'@biomejs/cli-darwin-x64@2.4.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@biomejs/cli-linux-arm64-musl@2.1.4':
|
'@biomejs/cli-linux-arm64-musl@2.4.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@biomejs/cli-linux-arm64@2.1.4':
|
'@biomejs/cli-linux-arm64@2.4.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@biomejs/cli-linux-x64-musl@2.1.4':
|
'@biomejs/cli-linux-x64-musl@2.4.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@biomejs/cli-linux-x64@2.1.4':
|
'@biomejs/cli-linux-x64@2.4.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@biomejs/cli-win32-arm64@2.1.4':
|
'@biomejs/cli-win32-arm64@2.4.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@biomejs/cli-win32-x64@2.1.4':
|
'@biomejs/cli-win32-x64@2.4.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@esbuild/aix-ppc64@0.25.11':
|
'@esbuild/aix-ppc64@0.25.11':
|
||||||
|
|
@ -1971,7 +1970,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
css-tree: 2.2.1
|
css-tree: 2.2.1
|
||||||
|
|
||||||
dayjs@1.11.18: {}
|
dayjs@1.11.19: {}
|
||||||
|
|
||||||
debug@4.4.3:
|
debug@4.4.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
|
||||||
0
requisicoes.rest
Normal file → Executable file
0
requisicoes.rest
Normal file → Executable file
0
src/aleatorio.ts
Normal file → Executable file
0
src/aleatorio.ts
Normal file → Executable file
0
src/cacheMemoria.ts
Normal file → Executable file
0
src/cacheMemoria.ts
Normal file → Executable file
0
src/constantes.ts
Normal file → Executable file
0
src/constantes.ts
Normal file → Executable file
0
src/consulta.ts
Normal file → Executable file
0
src/consulta.ts
Normal file → Executable file
27
src/dayjs.ts
27
src/dayjs.ts
|
|
@ -1,27 +0,0 @@
|
||||||
import dayjs, { type Dayjs } from "dayjs"
|
|
||||||
|
|
||||||
export type { ManipulateType } from "dayjs"
|
|
||||||
|
|
||||||
import duration from "dayjs/plugin/duration.js"
|
|
||||||
import isSameOrAfter from "dayjs/plugin/isSameOrAfter.js"
|
|
||||||
import isSameOrBefore from "dayjs/plugin/isSameOrBefore.js"
|
|
||||||
import minMax from "dayjs/plugin/minMax.js"
|
|
||||||
import relativeTime from "dayjs/plugin/relativeTime.js"
|
|
||||||
import timezone from "dayjs/plugin/timezone.js"
|
|
||||||
import utc from "dayjs/plugin/utc.js"
|
|
||||||
import weekOfYear from "dayjs/plugin/weekOfYear.js"
|
|
||||||
import "dayjs/locale/pt-br.js"
|
|
||||||
dayjs.locale("pt-br")
|
|
||||||
|
|
||||||
dayjs.extend(utc)
|
|
||||||
dayjs.extend(timezone)
|
|
||||||
dayjs.extend(weekOfYear)
|
|
||||||
dayjs.extend(isSameOrBefore)
|
|
||||||
dayjs.extend(isSameOrAfter)
|
|
||||||
dayjs.extend(minMax)
|
|
||||||
dayjs.extend(relativeTime)
|
|
||||||
dayjs.extend(duration)
|
|
||||||
|
|
||||||
export const dayjsbr = dayjs
|
|
||||||
|
|
||||||
export type { Dayjs }
|
|
||||||
107
src/dayjs26.ts
Executable file
107
src/dayjs26.ts
Executable file
|
|
@ -0,0 +1,107 @@
|
||||||
|
/**
|
||||||
|
* Utilitário de configuração do Dayjs focado em compatibilidade com SSR.
|
||||||
|
*
|
||||||
|
* PROBLEMA:
|
||||||
|
* A importação direta do `dayjs` e seus plugins frequentemente causa conflitos em ambientes
|
||||||
|
* de Renderização do Lado do Servidor (SSR), como Nuxt ou Next.js, devido a discrepâncias
|
||||||
|
* na resolução de módulos (ESM vs CJS) e instabilidades de importação.
|
||||||
|
*
|
||||||
|
* SOLUÇÃO:
|
||||||
|
* Este módulo utiliza o padrão de Injeção de Dependência. Ele expõe apenas tipagens e
|
||||||
|
* uma função de configuração (`defineDayjsBr`). A responsabilidade de importar as
|
||||||
|
* bibliotecas "vivas" é delegada à aplicação consumidora (o cliente da função).
|
||||||
|
*
|
||||||
|
* Isso permite que o bundler da aplicação principal (Vite, Webpack, etc.) gerencie as
|
||||||
|
* instâncias, garantindo consistência e evitando erros de "module not found" ou
|
||||||
|
* instâncias duplicadas/não inicializadas adequadamente.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import type _dayjs from "dayjs"
|
||||||
|
import type { Dayjs } from "dayjs"
|
||||||
|
|
||||||
|
export type { ManipulateType } from "dayjs"
|
||||||
|
|
||||||
|
// Importação apenas de TIPOS para evitar bundling indesejado neste arquivo
|
||||||
|
import type _duration from "dayjs/plugin/duration"
|
||||||
|
import type _isSameOrAfter from "dayjs/plugin/isSameOrAfter"
|
||||||
|
import type _isSameOrBefore from "dayjs/plugin/isSameOrBefore"
|
||||||
|
import type _minMax from "dayjs/plugin/minMax"
|
||||||
|
import type _relativeTime from "dayjs/plugin/relativeTime"
|
||||||
|
import type _timezone from "dayjs/plugin/timezone"
|
||||||
|
import type _utc from "dayjs/plugin/utc"
|
||||||
|
import type _weekOfYear from "dayjs/plugin/weekOfYear"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inicializa e configura o Dayjs com o locale 'pt-br' e plugins essenciais.
|
||||||
|
*
|
||||||
|
* MODO DE USO:
|
||||||
|
* Importe os pacotes reais na sua aplicação e passe-os para esta função.
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* ```ts
|
||||||
|
* // Em seu arquivo de configuração (ex: plugins/dayjs.ts):
|
||||||
|
* import dayjs from "dayjs"
|
||||||
|
* import duration from "dayjs/plugin/duration"
|
||||||
|
* import isSameOrAfter from "dayjs/plugin/isSameOrAfter"
|
||||||
|
* import isSameOrBefore from "dayjs/plugin/isSameOrBefore"
|
||||||
|
* import minMax from "dayjs/plugin/minMax"
|
||||||
|
* import relativeTime from "dayjs/plugin/relativeTime"
|
||||||
|
* import timezone from "dayjs/plugin/timezone"
|
||||||
|
* import utc from "dayjs/plugin/utc"
|
||||||
|
* import weekOfYear from "dayjs/plugin/weekOfYear"
|
||||||
|
* import { defineDayjsBr } from "p-comuns"
|
||||||
|
* import "dayjs/locale/pt-br" // Importante: importar o locale!
|
||||||
|
|
||||||
|
* export const dayjsbr = defineDayjsBr({
|
||||||
|
* dayjs,
|
||||||
|
* duration,
|
||||||
|
* isSameOrAfter,
|
||||||
|
* isSameOrBefore,
|
||||||
|
* minMax,
|
||||||
|
* relativeTime,
|
||||||
|
* timezone,
|
||||||
|
* utc,
|
||||||
|
* weekOfYear,
|
||||||
|
* })
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
const defineDayjsBr = ({
|
||||||
|
dayjs,
|
||||||
|
duration,
|
||||||
|
isSameOrAfter,
|
||||||
|
isSameOrBefore,
|
||||||
|
minMax,
|
||||||
|
relativeTime,
|
||||||
|
timezone,
|
||||||
|
utc,
|
||||||
|
weekOfYear,
|
||||||
|
}: {
|
||||||
|
dayjs: typeof _dayjs
|
||||||
|
duration: typeof _duration
|
||||||
|
isSameOrAfter: typeof _isSameOrAfter
|
||||||
|
isSameOrBefore: typeof _isSameOrBefore
|
||||||
|
minMax: typeof _minMax
|
||||||
|
relativeTime: typeof _relativeTime
|
||||||
|
timezone: typeof _timezone
|
||||||
|
utc: typeof _utc
|
||||||
|
weekOfYear: typeof _weekOfYear
|
||||||
|
}) => {
|
||||||
|
// Extensão da biblioteca com os plugins fornecidos
|
||||||
|
dayjs.extend(utc)
|
||||||
|
dayjs.extend(timezone)
|
||||||
|
dayjs.extend(weekOfYear)
|
||||||
|
dayjs.extend(isSameOrBefore)
|
||||||
|
dayjs.extend(isSameOrAfter)
|
||||||
|
dayjs.extend(minMax)
|
||||||
|
dayjs.extend(relativeTime)
|
||||||
|
dayjs.extend(duration)
|
||||||
|
|
||||||
|
// Definição do locale global
|
||||||
|
dayjs.locale("pt-br")
|
||||||
|
|
||||||
|
return dayjs
|
||||||
|
}
|
||||||
|
|
||||||
|
export { defineDayjsBr }
|
||||||
|
|
||||||
|
export type { Dayjs }
|
||||||
0
src/ecosistema/index.ts
Normal file → Executable file
0
src/ecosistema/index.ts
Normal file → Executable file
0
src/ecosistema/urls.ts
Normal file → Executable file
0
src/ecosistema/urls.ts
Normal file → Executable file
0
src/extensoes.ts
Normal file → Executable file
0
src/extensoes.ts
Normal file → Executable file
12
src/graficosPilao.ts
Executable file
12
src/graficosPilao.ts
Executable file
|
|
@ -0,0 +1,12 @@
|
||||||
|
export const graficos_pilao: {
|
||||||
|
[k: string]: { grafico: string; titulo: string }
|
||||||
|
} = {
|
||||||
|
Condicionantes: {
|
||||||
|
grafico: "condicionantes-criadas",
|
||||||
|
titulo: "Condicionantes Criadas",
|
||||||
|
},
|
||||||
|
Licenças: {
|
||||||
|
grafico: "licencas-criadas",
|
||||||
|
titulo: "Licenças Criadas",
|
||||||
|
},
|
||||||
|
}
|
||||||
6
src/index.ts
Normal file → Executable file
6
src/index.ts
Normal file → Executable file
|
|
@ -3,19 +3,19 @@ export * from "./auditoria"
|
||||||
export * from "./cacheMemoria"
|
export * from "./cacheMemoria"
|
||||||
export * from "./constantes"
|
export * from "./constantes"
|
||||||
export * from "./consulta"
|
export * from "./consulta"
|
||||||
export * from "./dayjs"
|
export * from "./dayjs26"
|
||||||
export * from "./ecosistema"
|
export * from "./ecosistema"
|
||||||
export * from "./extensoes"
|
export * from "./extensoes"
|
||||||
export * from "./extensoes"
|
export * from "./extensoes"
|
||||||
export * from "./local"
|
export * from "./local"
|
||||||
export * from "./logger"
|
|
||||||
export * from "./logger"
|
|
||||||
export * from "./postgres"
|
export * from "./postgres"
|
||||||
export * from "./produtos"
|
export * from "./produtos"
|
||||||
|
export * from "./situacoes"
|
||||||
export * from "./testes-de-variaveis"
|
export * from "./testes-de-variaveis"
|
||||||
export * from "./texto_busca"
|
export * from "./texto_busca"
|
||||||
export * from "./tipagemRotas"
|
export * from "./tipagemRotas"
|
||||||
export * from "./tipagemRotas"
|
export * from "./tipagemRotas"
|
||||||
|
export * from "./tipoFiltro.26"
|
||||||
export * from "./unidades_medida"
|
export * from "./unidades_medida"
|
||||||
export * from "./uuid"
|
export * from "./uuid"
|
||||||
export * from "./variaveisComuns"
|
export * from "./variaveisComuns"
|
||||||
|
|
|
||||||
0
src/instalarAmbiente.ts
Normal file → Executable file
0
src/instalarAmbiente.ts
Normal file → Executable file
4
src/local/index.ts
Normal file → Executable file
4
src/local/index.ts
Normal file → Executable file
|
|
@ -6,8 +6,8 @@ export const localValor = <T>(
|
||||||
chave_: string | any,
|
chave_: string | any,
|
||||||
valor?: T | null,
|
valor?: T | null,
|
||||||
): T | null => {
|
): T | null => {
|
||||||
const localStorage = globalThis.localStorage
|
const localStorage =
|
||||||
|
"localStorage" in globalThis ? (globalThis as any).localStorage : undefined
|
||||||
if (typeof localStorage == "undefined") return null
|
if (typeof localStorage == "undefined") return null
|
||||||
|
|
||||||
const chave =
|
const chave =
|
||||||
|
|
|
||||||
126
src/logger.ts
126
src/logger.ts
|
|
@ -1,126 +0,0 @@
|
||||||
import crossFetch from "cross-fetch"
|
|
||||||
import { nomeVariavel } from "./variaveisComuns"
|
|
||||||
|
|
||||||
const LOKI_BASE_URL = "https://log.idz.one"
|
|
||||||
const LOKI_ENDPOINT = "/loki/api/v1/push"
|
|
||||||
export type tipoLokiObjeto = {
|
|
||||||
streams: {
|
|
||||||
stream: {
|
|
||||||
[k: string]: string
|
|
||||||
}
|
|
||||||
values: [string, string][]
|
|
||||||
}[]
|
|
||||||
}
|
|
||||||
|
|
||||||
export const postLogger = async ({
|
|
||||||
objeto,
|
|
||||||
}: {
|
|
||||||
objeto: tipoLokiObjeto
|
|
||||||
}): Promise<[objeto: tipoLokiObjeto, erro?: string]> => {
|
|
||||||
const response = await crossFetch(`${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 = ""
|
|
||||||
|
|
||||||
/** define a localização da pasta do projeto */
|
|
||||||
export const defineCwd = (novoCwd: string) => {
|
|
||||||
cwd = novoCwd
|
|
||||||
}
|
|
||||||
|
|
||||||
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 }
|
|
||||||
}
|
|
||||||
|
|
||||||
export type tipoLoggerLog = (
|
|
||||||
level: tipoLevel,
|
|
||||||
mensagem: string,
|
|
||||||
op_tipoLog?: tipoLog,
|
|
||||||
) => Promise<[objeto: tipoLokiObjeto, erro?: string]>
|
|
||||||
|
|
||||||
export type TipoLoggerSessao = (sess: tipoOpSessao) => tipoLoggerLog
|
|
||||||
|
|
||||||
export type tipoLogger = (amb: {
|
|
||||||
app: string
|
|
||||||
eProducao: boolean
|
|
||||||
parametros?: {
|
|
||||||
[k: string]: string
|
|
||||||
}
|
|
||||||
}) => TipoLoggerSessao
|
|
||||||
|
|
||||||
export const logger: tipoLogger =
|
|
||||||
({ 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 = [`${nomeVariavel({ local })}="${local}"`, ...(detalhes || [])]
|
|
||||||
}
|
|
||||||
|
|
||||||
if (__filename) {
|
|
||||||
detalhes = [
|
|
||||||
`${nomeVariavel({ __filename })}="${__filename}"`,
|
|
||||||
...(detalhes || []),
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
const timestamp = `${Date.now()}000000`
|
|
||||||
|
|
||||||
const mainLog = detalhes?.length
|
|
||||||
? `${mensagem} | ${detalhes.map((d) => JSON.stringify(d)).join(" | ")}`
|
|
||||||
: mensagem
|
|
||||||
|
|
||||||
const payload: tipoLokiObjeto["streams"][number] = {
|
|
||||||
stream: {
|
|
||||||
app,
|
|
||||||
inquilino,
|
|
||||||
usuario,
|
|
||||||
level,
|
|
||||||
...(parametrosAmbiente || {}),
|
|
||||||
...(parametrosSessao || {}),
|
|
||||||
...(parametrosLog || {}),
|
|
||||||
},
|
|
||||||
values: [
|
|
||||||
[
|
|
||||||
timestamp,
|
|
||||||
mainLog, // Linha de log direta
|
|
||||||
],
|
|
||||||
],
|
|
||||||
}
|
|
||||||
|
|
||||||
const objeto: tipoLokiObjeto = { streams: [payload] }
|
|
||||||
|
|
||||||
const response = await postLogger({ objeto })
|
|
||||||
|
|
||||||
return response
|
|
||||||
}
|
|
||||||
0
src/postgres.ts
Normal file → Executable file
0
src/postgres.ts
Normal file → Executable file
63
src/situacoes.ts
Normal file
63
src/situacoes.ts
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
export enum tiposSituacoesElicencie {
|
||||||
|
modelo = "000_modelo",
|
||||||
|
|
||||||
|
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",
|
||||||
|
|
||||||
|
// situacoes outorgas
|
||||||
|
// Requerido
|
||||||
|
// Vigente
|
||||||
|
// Em renovação
|
||||||
|
// Arquivado
|
||||||
|
|
||||||
|
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",
|
||||||
|
}
|
||||||
0
src/teste.ts
Normal file → Executable file
0
src/teste.ts
Normal file → Executable file
0
src/testes-de-variaveis/index.ts
Normal file → Executable file
0
src/testes-de-variaveis/index.ts
Normal file → Executable file
0
src/testes-de-variaveis/umaFuncao.ts
Normal file → Executable file
0
src/testes-de-variaveis/umaFuncao.ts
Normal file → Executable file
0
src/testes-de-variaveis/umaVariavel.ts
Normal file → Executable file
0
src/testes-de-variaveis/umaVariavel.ts
Normal file → Executable file
0
src/testes/TipagemRotas.test.ts
Normal file → Executable file
0
src/testes/TipagemRotas.test.ts
Normal file → Executable file
0
src/texto_busca.ts
Normal file → Executable file
0
src/texto_busca.ts
Normal file → Executable file
18
src/tipagemRotas.ts
Normal file → Executable file
18
src/tipagemRotas.ts
Normal file → Executable file
|
|
@ -63,9 +63,10 @@ export class TipagemRotas<T extends { [q: string]: any }> {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
endereco(query: T, usarComoHash?: boolean) {
|
endereco(query: T, usarComoHash?: boolean) {
|
||||||
const url = new URL(
|
const win =
|
||||||
typeof window !== "undefined" ? window.location.href : "http://localhost",
|
(typeof globalThis !== "undefined" && (globalThis as any).window) ||
|
||||||
)
|
undefined
|
||||||
|
const url = new URL(win ? win.location.href : "http://localhost")
|
||||||
|
|
||||||
url.pathname = this.caminho
|
url.pathname = this.caminho
|
||||||
|
|
||||||
|
|
@ -95,8 +96,11 @@ export class TipagemRotas<T extends { [q: string]: any }> {
|
||||||
if (this._acaoIr) {
|
if (this._acaoIr) {
|
||||||
this._acaoIr(this.endereco({ ...query }))
|
this._acaoIr(this.endereco({ ...query }))
|
||||||
} else {
|
} else {
|
||||||
if (typeof window != "undefined") {
|
const win =
|
||||||
window.location.href = this.endereco({ ...query })
|
(typeof globalThis !== "undefined" && (globalThis as any).window) ||
|
||||||
|
undefined
|
||||||
|
if (win) {
|
||||||
|
win.location.href = this.endereco({ ...query })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -110,8 +114,8 @@ export class TipagemRotas<T extends { [q: string]: any }> {
|
||||||
const url = urlEntrada
|
const url = urlEntrada
|
||||||
? new URL(urlEntrada)
|
? new URL(urlEntrada)
|
||||||
: new URL(
|
: new URL(
|
||||||
typeof window !== "undefined"
|
typeof globalThis !== "undefined" && (globalThis as any).window
|
||||||
? window.location.href
|
? (globalThis as any).window.location.href
|
||||||
: "http://localhost",
|
: "http://localhost",
|
||||||
)
|
)
|
||||||
const query = url.searchParams
|
const query = url.searchParams
|
||||||
|
|
|
||||||
235
src/tipoFiltro.26.ts
Normal file
235
src/tipoFiltro.26.ts
Normal file
|
|
@ -0,0 +1,235 @@
|
||||||
|
import { z } from "zod"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* =============================================================================
|
||||||
|
* tipoFiltro26<T>
|
||||||
|
* =============================================================================
|
||||||
|
*
|
||||||
|
* OBJETIVO
|
||||||
|
* -----------------------------------------------------------------------------
|
||||||
|
* Gerar automaticamente a tipagem de filtros compatíveis com operadores
|
||||||
|
* padrão do PostgreSQL, a partir de um tipo base T.
|
||||||
|
*
|
||||||
|
* Este tipo foi projetado para:
|
||||||
|
* - Construção de filtros dinâmicos
|
||||||
|
* - Geração posterior de WHERE (Knex / SQL)
|
||||||
|
* - Uso seguro por IA (evita filtros inválidos em nível de tipo)
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* FORMATO DO FILTRO
|
||||||
|
* -----------------------------------------------------------------------------
|
||||||
|
* 1) Campos simples:
|
||||||
|
*
|
||||||
|
* {
|
||||||
|
* idade: { ">=": 18 }
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* 2) Campos aninhados:
|
||||||
|
*
|
||||||
|
* {
|
||||||
|
* carro: {
|
||||||
|
* ano: { "=": 2020 }
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* 3) Operador E (AND):
|
||||||
|
*
|
||||||
|
* {
|
||||||
|
* E: [
|
||||||
|
* { idade: { ">=": 18 } },
|
||||||
|
* { nome: { like: "%pa%" } }
|
||||||
|
* ]
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* 4) Operador OU (OR):
|
||||||
|
*
|
||||||
|
* {
|
||||||
|
* OU: [
|
||||||
|
* { idade: { "<": 18 } },
|
||||||
|
* { idade: { ">=": 60 } }
|
||||||
|
* ]
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* 5) Combinação complexa:
|
||||||
|
*
|
||||||
|
* {
|
||||||
|
* idade: { ">=": 18 },
|
||||||
|
* OU: [
|
||||||
|
* { nome: { like: "%pa%" } },
|
||||||
|
* {
|
||||||
|
* E: [
|
||||||
|
* { carro: { ano: { "=": 2020 } } },
|
||||||
|
* { carro: { modelo: { in: ["Civic"] } } }
|
||||||
|
* ]
|
||||||
|
* }
|
||||||
|
* ]
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* REGRAS IMPORTANTES (PARA IA)
|
||||||
|
* -----------------------------------------------------------------------------
|
||||||
|
* - Apenas campos existentes em T podem ser usados.
|
||||||
|
* - Operadores são restritos por tipo do campo.
|
||||||
|
* - Objetos são tratados recursivamente.
|
||||||
|
* - Arrays NÃO são tratados como objeto recursivo.
|
||||||
|
* - Funções NÃO são consideradas campos filtráveis.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* OPERADORES SUPORTADOS
|
||||||
|
* -----------------------------------------------------------------------------
|
||||||
|
* number:
|
||||||
|
* =, !=, >, >=, <, <=, in
|
||||||
|
*
|
||||||
|
* string:
|
||||||
|
* =, !=, like, in
|
||||||
|
*
|
||||||
|
* boolean:
|
||||||
|
* =, !=, in
|
||||||
|
*
|
||||||
|
* Não há suporte automático a:
|
||||||
|
* - null
|
||||||
|
* - date
|
||||||
|
* - jsonb
|
||||||
|
* - arrays
|
||||||
|
*
|
||||||
|
* Essas extensões devem ser adicionadas explicitamente.
|
||||||
|
*
|
||||||
|
* =============================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* =============================================================================
|
||||||
|
OPERADORES POSTGRESQL POR TIPO
|
||||||
|
============================================================================= */
|
||||||
|
|
||||||
|
export enum operadores26 {
|
||||||
|
"=" = "=",
|
||||||
|
"!=" = "!=",
|
||||||
|
">" = ">",
|
||||||
|
">=" = ">=",
|
||||||
|
"<" = "<",
|
||||||
|
"<=" = "<=",
|
||||||
|
like = "like",
|
||||||
|
in = "in",
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum agrupadores26 {
|
||||||
|
E = "E",
|
||||||
|
OU = "OU",
|
||||||
|
}
|
||||||
|
|
||||||
|
type PgOpsNumber = {
|
||||||
|
[K in Extract<operadores26, "=" | "!=" | ">" | ">=" | "<" | "<=">]?: number
|
||||||
|
} & {
|
||||||
|
[K in Extract<operadores26, "in">]?: number[]
|
||||||
|
}
|
||||||
|
|
||||||
|
type PgOpsString = {
|
||||||
|
[K in Extract<operadores26, "=" | "!=" | "like">]?: string
|
||||||
|
} & {
|
||||||
|
[K in Extract<operadores26, "in">]?: string[]
|
||||||
|
}
|
||||||
|
|
||||||
|
type PgOpsBoolean = {
|
||||||
|
[K in Extract<operadores26, "=" | "!=">]?: boolean
|
||||||
|
} & {
|
||||||
|
[K in Extract<operadores26, "in">]?: boolean[]
|
||||||
|
}
|
||||||
|
|
||||||
|
/* =============================================================================
|
||||||
|
SELEÇÃO AUTOMÁTICA DE OPERADORES BASEADA NO TIPO DO CAMPO
|
||||||
|
============================================================================= */
|
||||||
|
|
||||||
|
type PgOpsFor<V> = V extends number
|
||||||
|
? PgOpsNumber
|
||||||
|
: V extends string
|
||||||
|
? PgOpsString
|
||||||
|
: V extends boolean
|
||||||
|
? PgOpsBoolean
|
||||||
|
: never
|
||||||
|
|
||||||
|
/* =============================================================================
|
||||||
|
UTILITÁRIO: DETECTAR OBJETO PLANO
|
||||||
|
============================================================================= */
|
||||||
|
|
||||||
|
type IsPlainObject<T> = T extends object
|
||||||
|
? T extends Function
|
||||||
|
? false
|
||||||
|
: T extends readonly any[]
|
||||||
|
? false
|
||||||
|
: true
|
||||||
|
: false
|
||||||
|
|
||||||
|
/* =============================================================================
|
||||||
|
FILTRO RECURSIVO POR CAMPOS
|
||||||
|
============================================================================= */
|
||||||
|
|
||||||
|
type FiltroCampos<T> = {
|
||||||
|
[K in keyof T]?: IsPlainObject<T[K]> extends true
|
||||||
|
? tipoFiltro26<T[K]>
|
||||||
|
: PgOpsFor<T[K]>
|
||||||
|
}
|
||||||
|
|
||||||
|
/* =============================================================================
|
||||||
|
TIPO PRINCIPAL EXPORTADO
|
||||||
|
============================================================================= */
|
||||||
|
|
||||||
|
export type tipoFiltro26<T> = FiltroCampos<T> & {
|
||||||
|
/**
|
||||||
|
* E => AND lógico
|
||||||
|
* Todos os filtros dentro do array devem ser verdadeiros.
|
||||||
|
*/
|
||||||
|
E?: tipoFiltro26<T>[]
|
||||||
|
|
||||||
|
/**
|
||||||
|
* OU => OR lógico
|
||||||
|
* Pelo menos um filtro dentro do array deve ser verdadeiro.
|
||||||
|
*/
|
||||||
|
OU?: tipoFiltro26<T>[]
|
||||||
|
}
|
||||||
|
|
||||||
|
/* =============================================================================
|
||||||
|
VALIDAÇÃO ESTRUTURAL (ZOD)
|
||||||
|
============================================================================= */
|
||||||
|
|
||||||
|
const zOperadores = z.nativeEnum(operadores26)
|
||||||
|
const zValor = z.any()
|
||||||
|
const zCondicao = z.record(zOperadores, zValor)
|
||||||
|
|
||||||
|
export const zFiltro26: z.ZodType<any> = z.lazy(() =>
|
||||||
|
z
|
||||||
|
.object({
|
||||||
|
E: z.array(zFiltro26).optional(),
|
||||||
|
OU: z.array(zFiltro26).optional(),
|
||||||
|
})
|
||||||
|
.catchall(z.union([zCondicao, zFiltro26])),
|
||||||
|
)
|
||||||
|
|
||||||
|
/* =============================================================================
|
||||||
|
EXEMPLO DE USO
|
||||||
|
============================================================================= */
|
||||||
|
|
||||||
|
type Pessoa = {
|
||||||
|
codigo: string
|
||||||
|
nome: string
|
||||||
|
idade: number
|
||||||
|
carro: {
|
||||||
|
modelo: string
|
||||||
|
ano: number
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const criarFiltro26 = <T>(filtro: tipoFiltro26<T>) => filtro
|
||||||
|
|
||||||
|
const _filtro = criarFiltro26<Pessoa>({
|
||||||
|
idade: { [operadores26[">="]]: 18 },
|
||||||
|
|
||||||
|
[agrupadores26.OU]: [
|
||||||
|
{ nome: { [operadores26.like]: "%pa%" } },
|
||||||
|
{
|
||||||
|
[agrupadores26.E]: [
|
||||||
|
{ carro: { ano: { [operadores26["="]]: 2020 } } },
|
||||||
|
{ carro: { modelo: { [operadores26.in]: ["Civic", "Corolla"] } } },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
0
src/unidades_medida.ts
Normal file → Executable file
0
src/unidades_medida.ts
Normal file → Executable file
0
src/uuid.ts
Normal file → Executable file
0
src/uuid.ts
Normal file → Executable file
0
src/variaveisComuns.ts
Normal file → Executable file
0
src/variaveisComuns.ts
Normal file → Executable file
0
tsconfig-back.json
Normal file → Executable file
0
tsconfig-back.json
Normal file → Executable file
0
tsconfig-front.json
Normal file → Executable file
0
tsconfig-front.json
Normal file → Executable file
0
tsconfig.json
Normal file → Executable file
0
tsconfig.json
Normal file → Executable file
0
tsup/como usar.md
Normal file → Executable file
0
tsup/como usar.md
Normal file → Executable file
4
tsup/tsup.config.back.ts
Normal file → Executable file
4
tsup/tsup.config.back.ts
Normal file → Executable file
|
|
@ -18,6 +18,10 @@ export const tsup_config_back: Options = {
|
||||||
minify: false, // Geralmente não minificamos o código do backend em produção, mas você pode mudar
|
minify: false, // Geralmente não minificamos o código do backend em produção, mas você pode mudar
|
||||||
platform: "node",
|
platform: "node",
|
||||||
outExtension: () => ({ js: ".js" }),
|
outExtension: () => ({ js: ".js" }),
|
||||||
|
loader: {
|
||||||
|
".svg": "text",
|
||||||
|
".md": "text",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exporta a configuração padrão usando defineConfig
|
// Exporta a configuração padrão usando defineConfig
|
||||||
|
|
|
||||||
0
tsup/tsup.config.front.interno.ts
Normal file → Executable file
0
tsup/tsup.config.front.interno.ts
Normal file → Executable file
6
tsup/tsup.config.front.ts
Normal file → Executable file
6
tsup/tsup.config.front.ts
Normal file → Executable file
|
|
@ -16,9 +16,13 @@ export const tsup_config_front: Options = {
|
||||||
sourcemap: false,
|
sourcemap: false,
|
||||||
minify: true, // Recomendado para builds de produção
|
minify: true, // Recomendado para builds de produção
|
||||||
platform: "browser",
|
platform: "browser",
|
||||||
external: ['dayjs'],
|
external: ['dayjs', 'cross-fetch', 'uuid', 'zod'],
|
||||||
outExtension: () => ({ js: ".mjs" }),
|
outExtension: () => ({ js: ".mjs" }),
|
||||||
shims: false,
|
shims: false,
|
||||||
|
loader: {
|
||||||
|
".svg": "text",
|
||||||
|
".md": "text",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exporta a configuração padrão usando defineConfig
|
// Exporta a configuração padrão usando defineConfig
|
||||||
|
|
|
||||||
0
tsup/tsup.config.interno.ts
Normal file → Executable file
0
tsup/tsup.config.interno.ts
Normal file → Executable file
0
tsup/tsup.config.ts
Normal file → Executable file
0
tsup/tsup.config.ts
Normal file → Executable file
Loading…
Add table
Add a link
Reference in a new issue