@thermopylae/lib.cache
Version:
37 lines (36 loc) • 1.23 kB
JavaScript
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 };