53 lines
1.1 KiB
TypeScript
53 lines
1.1 KiB
TypeScript
/** gerar uma função de cache para uso em memoria */
|
|
|
|
const _cache: {
|
|
[k: string]:
|
|
| {
|
|
/** new Date().getTime() */
|
|
validade?: number | undefined
|
|
valor: any
|
|
}
|
|
| undefined
|
|
} = {}
|
|
|
|
;(globalThis as any).cacheMemoria_cache = _cache
|
|
|
|
export const cacheM = <T>(
|
|
chave: any,
|
|
valor?: T,
|
|
validadeSeg?: number,
|
|
): T | undefined => {
|
|
// converte a chave e string
|
|
const txChave: string =
|
|
typeof chave == "string"
|
|
? chave
|
|
: typeof chave == "number"
|
|
? String(chave)
|
|
: encodeURIComponent(JSON.stringify(chave))
|
|
|
|
const validade = validadeSeg && new Date().getTime() + validadeSeg * 1000
|
|
|
|
if (valor !== undefined) {
|
|
_cache[txChave] = {
|
|
valor,
|
|
validade,
|
|
}
|
|
}
|
|
|
|
const busca = _cache[txChave]
|
|
|
|
if (busca?.validade && busca.validade < new Date().getTime()) {
|
|
return undefined
|
|
}
|
|
return busca?.valor
|
|
}
|
|
|
|
export const verCacheM = () => _cache
|
|
|
|
export const cacheMemoria = cacheM
|
|
|
|
/** para uso fixo dentro de uma função, trava a chave */
|
|
export const cacheMFixo =
|
|
(chave: any) =>
|
|
<T>(valor?: T) =>
|
|
cacheM(chave, valor)
|