@thermopylae/lib.cache
Version:
38 lines (37 loc) • 1.34 kB
JavaScript
import { chrono } from '@thermopylae/lib.utils';
import { EXPIRES_AT_SYM, INFINITE_EXPIRATION } from "../../constants.js";
import { AbstractExpirationPolicy } from "./abstract.js";
class AbsoluteExpirationPolicy extends AbstractExpirationPolicy {
onHit(entry) {
return this.evictIfExpired(entry);
}
onSet(entry, options) {
if (options == null || AbsoluteExpirationPolicy.isNonExpirable(options)) {
return;
}
AbsoluteExpirationPolicy.setEntryExpiration(entry, options.expiresAfter, options.expiresFrom);
}
onUpdate(entry, options) {
if (options == null || options.expiresAfter == null) {
return;
}
if (options.expiresAfter === INFINITE_EXPIRATION) {
entry[EXPIRES_AT_SYM] = undefined;
return;
}
AbsoluteExpirationPolicy.setEntryExpiration(entry, options.expiresAfter, options.expiresFrom);
}
onClear() {
}
evictIfExpired(entry) {
if (entry[EXPIRES_AT_SYM] <= chrono.unixTime()) {
this.deleteFromCache(entry);
return 0 ;
}
return 1 ;
}
static isNonExpirable(argumentsBundle) {
return argumentsBundle.expiresAfter == null || argumentsBundle.expiresAfter === INFINITE_EXPIRATION;
}
}
export { AbsoluteExpirationPolicy };