melhorias de caches

This commit is contained in:
Luiz Silva 2025-07-16 11:20:53 -03:00
parent 29ae7400cf
commit 00e9c4d698
18 changed files with 210 additions and 66 deletions

View file

@ -1,7 +1,7 @@
{
"$schema": "node_modules/@biomejs/biome/configuration_schema.json",
"extends": ["node_modules/p-comuns/Documentos/biome.json"],
"files": {
}
"extends": [
"node_modules/p-comuns/Documentos/biome.json"
],
"files": {}
}

View file

@ -5,8 +5,10 @@
"name": "p-autenticacao-drive",
"dependencies": {
"cross-fetch": "^4.1.0",
"node-cache": "^5.1.2",
"p-comuns": "git+https://git2.idz.one/publico/_comuns.git#master",
"p-respostas": "git+https://git2.idz.one/publico/_respostas.git#master",
"uuid": "^11.1.0",
},
"devDependencies": {
"@biomejs/biome": "^2.0.6",
@ -43,6 +45,8 @@
"check-node-version": ["check-node-version@4.2.1", "", { "dependencies": { "chalk": "^3.0.0", "map-values": "^1.0.1", "minimist": "^1.2.0", "object-filter": "^1.0.2", "run-parallel": "^1.1.4", "semver": "^6.3.0" }, "bin": { "check-node-version": "bin.js" } }, "sha512-YYmFYHV/X7kSJhuN/QYHUu998n/TRuDe8UenM3+m5NrkiH670lb9ILqHIvBencvJc4SDh+XcbXMR4b+TtubJiw=="],
"clone": ["clone@2.1.2", "", {}, "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="],
"color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
"color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
@ -55,6 +59,8 @@
"minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="],
"node-cache": ["node-cache@5.1.2", "", { "dependencies": { "clone": "2.x" } }, "sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg=="],
"node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="],
"object-filter": ["object-filter@1.0.2", "", {}, "sha512-NahvP2vZcy1ZiiYah30CEPw0FpDcSkSePJBMpzl5EQgCmISijiGuJm3SPYp7U+Lf2TljyaIw3E5EgkEx/TNEVA=="],
@ -77,6 +83,8 @@
"undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
"uuid": ["uuid@11.1.0", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A=="],
"webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="],
"whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="],

View file

@ -10,7 +10,9 @@ export type tipo_retorno_vinculo_listas = {
_inquilino_nome: string;
_inquilino_base_url: string;
};
export declare const listarVinculos: ({ token, url_api_autenticacao, }: {
export declare const listarVinculos: ({ token, url_api_autenticacao, desativarCache, }: {
url_api_autenticacao: string;
token: string;
/** por padrão será 10 segundos */
desativarCache?: boolean;
}) => Promise<tipoResposta<tipo_retorno_vinculo_listas[]>>;

View file

@ -1,7 +1,17 @@
import cFetch from "cross-fetch";
import { respostaComuns } from "p-respostas";
import { cacheAuDrive } from "./plugins/node-cache";
import { uuidV3 } from "./plugins/uuid";
export const tx_vinculos__listar = "vinculos__listar";
export const listarVinculos = async ({ token, url_api_autenticacao, }) => {
export const listarVinculos = async ({ token, url_api_autenticacao, desativarCache, }) => {
const chaveCache = uuidV3({ token, url_api_autenticacao });
// Buscar promeiro no cache
if (!desativarCache) {
const valorCache = cacheAuDrive.get(chaveCache);
if (valorCache)
return valorCache;
}
const res = (async () => {
const url = `${url_api_autenticacao}/api/${tx_vinculos__listar}`;
return cFetch(url, {
headers: { token, "Content-Type": "application/json" },
@ -15,11 +25,21 @@ export const listarVinculos = async ({ token, url_api_autenticacao, }) => {
return res;
}
catch (error) {
return respostaComuns.erro(`Erro ao listar cidades: ${error.message}`, [
texto,
error,
]);
return respostaComuns.erro(`Erro ao listar cidades: ${error.message}`, [texto, error]);
}
})
.catch((error) => respostaComuns.erro(`Erro ao listar cidades: ${error.message}`, [error]));
.catch((error) => respostaComuns.erro(`Erro ao listar cidades: ${error.message}`, [
error,
]));
})();
cacheAuDrive.set(chaveCache, res.then((a) => {
try {
if (a.eErro) {
cacheAuDrive.del(chaveCache);
}
}
catch { }
return a;
}), 10);
return res;
};

2
dist-import/plugins/node-cache.d.ts vendored Normal file
View file

@ -0,0 +1,2 @@
import NodeCache from "node-cache";
export declare const cacheAuDrive: NodeCache;

View file

@ -0,0 +1,2 @@
import NodeCache from "node-cache";
export const cacheAuDrive = new NodeCache();

3
dist-import/plugins/uuid.d.ts vendored Normal file
View file

@ -0,0 +1,3 @@
import { v4 } from "uuid";
export declare const uuidV3: (qualquerCoisa: any) => string;
export declare const uuidV4: typeof v4;

View file

@ -0,0 +1,7 @@
import { NIL, v3, v4 } from "uuid";
export const uuidV3 = (qualquerCoisa) => v3(typeof qualquerCoisa == "string"
? qualquerCoisa
: typeof qualquerCoisa == "number"
? String(qualquerCoisa)
: JSON.stringify(qualquerCoisa), NIL);
export const uuidV4 = v4;

View file

@ -10,7 +10,9 @@ export type tipo_retorno_vinculo_listas = {
_inquilino_nome: string;
_inquilino_base_url: string;
};
export declare const listarVinculos: ({ token, url_api_autenticacao, }: {
export declare const listarVinculos: ({ token, url_api_autenticacao, desativarCache, }: {
url_api_autenticacao: string;
token: string;
/** por padrão será 10 segundos */
desativarCache?: boolean;
}) => Promise<tipoResposta<tipo_retorno_vinculo_listas[]>>;

View file

@ -6,8 +6,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.listarVinculos = exports.tx_vinculos__listar = void 0;
const cross_fetch_1 = __importDefault(require("cross-fetch"));
const p_respostas_1 = require("p-respostas");
const node_cache_1 = require("./plugins/node-cache");
const uuid_1 = require("./plugins/uuid");
exports.tx_vinculos__listar = "vinculos__listar";
const listarVinculos = async ({ token, url_api_autenticacao, }) => {
const listarVinculos = async ({ token, url_api_autenticacao, desativarCache, }) => {
const chaveCache = (0, uuid_1.uuidV3)({ token, url_api_autenticacao });
// Buscar promeiro no cache
if (!desativarCache) {
const valorCache = node_cache_1.cacheAuDrive.get(chaveCache);
if (valorCache)
return valorCache;
}
const res = (async () => {
const url = `${url_api_autenticacao}/api/${exports.tx_vinculos__listar}`;
return (0, cross_fetch_1.default)(url, {
headers: { token, "Content-Type": "application/json" },
@ -21,12 +31,22 @@ const listarVinculos = async ({ token, url_api_autenticacao, }) => {
return res;
}
catch (error) {
return p_respostas_1.respostaComuns.erro(`Erro ao listar cidades: ${error.message}`, [
texto,
error,
]);
return p_respostas_1.respostaComuns.erro(`Erro ao listar cidades: ${error.message}`, [texto, error]);
}
})
.catch((error) => p_respostas_1.respostaComuns.erro(`Erro ao listar cidades: ${error.message}`, [error]));
.catch((error) => p_respostas_1.respostaComuns.erro(`Erro ao listar cidades: ${error.message}`, [
error,
]));
})();
node_cache_1.cacheAuDrive.set(chaveCache, res.then((a) => {
try {
if (a.eErro) {
node_cache_1.cacheAuDrive.del(chaveCache);
}
}
catch { }
return a;
}), 10);
return res;
};
exports.listarVinculos = listarVinculos;

2
dist-require/plugins/node-cache.d.ts vendored Normal file
View file

@ -0,0 +1,2 @@
import NodeCache from "node-cache";
export declare const cacheAuDrive: NodeCache;

View file

@ -0,0 +1,8 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.cacheAuDrive = void 0;
const node_cache_1 = __importDefault(require("node-cache"));
exports.cacheAuDrive = new node_cache_1.default();

3
dist-require/plugins/uuid.d.ts vendored Normal file
View file

@ -0,0 +1,3 @@
import { v4 } from "uuid";
export declare const uuidV3: (qualquerCoisa: any) => string;
export declare const uuidV4: typeof v4;

View file

@ -0,0 +1,11 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.uuidV4 = exports.uuidV3 = void 0;
const uuid_1 = require("uuid");
const uuidV3 = (qualquerCoisa) => (0, uuid_1.v3)(typeof qualquerCoisa == "string"
? qualquerCoisa
: typeof qualquerCoisa == "number"
? String(qualquerCoisa)
: JSON.stringify(qualquerCoisa), uuid_1.NIL);
exports.uuidV3 = uuidV3;
exports.uuidV4 = uuid_1.v4;

View file

@ -21,8 +21,10 @@
},
"dependencies": {
"cross-fetch": "^4.1.0",
"node-cache": "^5.1.2",
"p-comuns": "git+https://git2.idz.one/publico/_comuns.git#master",
"p-respostas": "git+https://git2.idz.one/publico/_respostas.git#master"
"p-respostas": "git+https://git2.idz.one/publico/_respostas.git#master",
"uuid": "^11.1.0"
},
"devDependencies": {
"@biomejs/biome": "^2.0.6",

View file

@ -1,5 +1,7 @@
import cFetch from "cross-fetch"
import { respostaComuns, type tipoResposta } from "p-respostas"
import { cacheAuDrive } from "./plugins/node-cache"
import { uuidV3 } from "./plugins/uuid"
export const tx_vinculos__listar = "vinculos__listar" as const
export type tipo_retorno_vinculo_listas = {
@ -16,10 +18,25 @@ export type tipo_retorno_vinculo_listas = {
export const listarVinculos = async ({
token,
url_api_autenticacao,
desativarCache,
}: {
url_api_autenticacao: string
token: string
/** por padrão será 10 segundos */
desativarCache?: boolean
}): Promise<tipoResposta<tipo_retorno_vinculo_listas[]>> => {
const chaveCache = uuidV3({ token, url_api_autenticacao })
// Buscar promeiro no cache
if (!desativarCache) {
const valorCache =
cacheAuDrive.get<Promise<tipoResposta<tipo_retorno_vinculo_listas[]>>>(
chaveCache,
)
if (valorCache) return valorCache
}
const res = (async () => {
const url = `${url_api_autenticacao}/api/${tx_vinculos__listar}`
return cFetch(url, {
@ -36,13 +53,32 @@ export const listarVinculos = async ({
return res
} catch (error: any) {
return respostaComuns.erro(`Erro ao listar cidades: ${error.message}`, [
texto,
error,
])
return respostaComuns.erro(
`Erro ao listar cidades: ${error.message}`,
[texto, error],
)
}
})
.catch((error) =>
respostaComuns.erro(`Erro ao listar cidades: ${error.message}`, [error]),
respostaComuns.erro(`Erro ao listar cidades: ${error.message}`, [
error,
]),
)
})()
cacheAuDrive.set(
chaveCache,
res.then((a) => {
try {
if (a.eErro) {
cacheAuDrive.del(chaveCache)
}
} catch {}
return a
}),
10,
)
return res
}

View file

@ -0,0 +1,3 @@
import NodeCache from "node-cache"
export const cacheAuDrive = new NodeCache()

13
src/plugins/uuid.ts Normal file
View file

@ -0,0 +1,13 @@
import { NIL, v3, v4 } from "uuid"
export const uuidV3 = (qualquerCoisa: any) =>
v3(
typeof qualquerCoisa == "string"
? qualquerCoisa
: typeof qualquerCoisa == "number"
? String(qualquerCoisa)
: JSON.stringify(qualquerCoisa),
NIL,
)
export const uuidV4 = v4