UNPKG

@thermopylae/lib.cache

Version:
37 lines (36 loc) 1.23 kB
import { chrono } from '@thermopylae/lib.utils'; import { EXPIRES_AT_SYM } from "../../constants.js"; import { createException } from "../../error.js"; class AbstractExpirationPolicy { deleteFromCache; onMiss() { return undefined; } onDelete(entry) { entry[EXPIRES_AT_SYM] = undefined; } setDeleter(deleter) { this.deleteFromCache = deleter; } static setEntryExpiration(entry, expiresAfter, expiresFrom) { if (!Number.isInteger(expiresAfter)) { throw createException("INVALID_EXPIRES_AFTER" , `'expiresAfter' needs to be an integer. Given: ${expiresAfter}.`); } const now = chrono.unixTime(); let expiresAt; if (expiresFrom != null) { if (!Number.isInteger(expiresFrom)) { throw createException("INVALID_EXPIRES_FROM" , `'expiresFrom' needs to be an integer. Given: ${expiresFrom}.`); } expiresAt = expiresFrom + expiresAfter; } else { expiresAt = now + expiresAfter; } if (expiresAt < now) { expiresAt = now; } entry[EXPIRES_AT_SYM] = expiresAt; } } export { AbstractExpirationPolicy };