UNPKG

@thermopylae/lib.cache

Version:
38 lines (37 loc) 1.34 kB
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 };