@avanio/expire-cache
Advanced tools
Comparing version 0.6.5 to 0.6.6
import { EventEmitter } from 'events'; | ||
import { LogMapping, ISetLogMapping, ILoggerLike } from '@avanio/logger-like'; | ||
import { LogMapInfer, MapLogger, ILoggerLike } from '@avanio/logger-like'; | ||
import { CacheEventsMap, ICacheWithEvents } from '@luolapeikko/cache-types'; | ||
@@ -221,3 +221,3 @@ | ||
}; | ||
type ExpireCacheLogMapType = LogMapping<keyof typeof defaultLogMap$2>; | ||
type ExpireCacheLogMapType = LogMapInfer<typeof defaultLogMap$2>; | ||
/** | ||
@@ -229,6 +229,6 @@ * ExpireCache class that implements the ICache interface with value expiration and expires on read operations | ||
*/ | ||
declare class ExpireCache<Payload, Key = string> extends EventEmitter<CacheEventsMap<Payload, Key>> implements ICacheWithEvents<Payload, Key>, ISetLogMapping<ExpireCacheLogMapType> { | ||
declare class ExpireCache<Payload, Key = string> extends EventEmitter<CacheEventsMap<Payload, Key>> implements ICacheWithEvents<Payload, Key> { | ||
private readonly cache; | ||
private readonly cacheTtl; | ||
private readonly logger; | ||
readonly logger: MapLogger<ExpireCacheLogMapType>; | ||
private defaultExpireMs; | ||
@@ -257,4 +257,2 @@ /** | ||
setExpireMs(expireMs: number | undefined): void; | ||
setLogger(logger: ILoggerLike | undefined): void; | ||
setLogMapping(logMapping: Partial<ExpireCacheLogMapType>): void; | ||
/** | ||
@@ -280,14 +278,14 @@ * Cleans expired cache entries | ||
declare const defaultLogMap$1: { | ||
readonly cleanExpired: 0; | ||
readonly clear: 0; | ||
readonly constructor: 0; | ||
readonly delete: 0; | ||
readonly expires: 0; | ||
readonly get: 0; | ||
readonly has: 0; | ||
readonly onExpire: 0; | ||
readonly set: 0; | ||
readonly size: 0; | ||
cleanExpired: 0; | ||
clear: 0; | ||
constructor: 0; | ||
delete: 0; | ||
expires: 0; | ||
get: 0; | ||
has: 0; | ||
onExpire: 0; | ||
set: 0; | ||
size: 0; | ||
}; | ||
type ExpireTimeoutCacheLogMapType = LogMapping<keyof typeof defaultLogMap$1>; | ||
type ExpireTimeoutCacheLogMapType = LogMapInfer<typeof defaultLogMap$1>; | ||
/** | ||
@@ -299,6 +297,6 @@ * ExpireCache class that implements the ICache interface with value expiration and expires with setTimeout | ||
*/ | ||
declare class ExpireTimeoutCache<Payload, Key = string> extends EventEmitter<CacheEventsMap<Payload, Key>> implements ICacheWithEvents<Payload, Key>, ISetLogMapping<ExpireTimeoutCacheLogMapType> { | ||
declare class ExpireTimeoutCache<Payload, Key = string> extends EventEmitter<CacheEventsMap<Payload, Key>> implements ICacheWithEvents<Payload, Key> { | ||
private readonly cache; | ||
private readonly cacheTimeout; | ||
private readonly logger; | ||
readonly logger: MapLogger<ExpireTimeoutCacheLogMapType>; | ||
private defaultExpireMs; | ||
@@ -311,3 +309,3 @@ /** | ||
*/ | ||
constructor(logger?: ILoggerLike, logMapping?: Partial<ExpireCacheLogMapType>, defaultExpireMs?: number); | ||
constructor(logger?: ILoggerLike, logMapping?: Partial<ExpireTimeoutCacheLogMapType>, defaultExpireMs?: number); | ||
set(key: Key, data: Payload, expires?: Date): void; | ||
@@ -328,4 +326,2 @@ get(key: Key): Payload | undefined; | ||
setExpireMs(expireMs: number | undefined): void; | ||
setLogger(logger: ILoggerLike | undefined): void; | ||
setLogMapping(logMapping: Partial<ExpireCacheLogMapType>): void; | ||
private clearTimeout; | ||
@@ -335,2 +331,3 @@ private notifyExpires; | ||
private handleExpiredCallback; | ||
private handleTimeoutSetup; | ||
} | ||
@@ -372,3 +369,3 @@ | ||
}; | ||
type TieredCacheLogMapType = LogMapping<keyof typeof defaultLogMap>; | ||
type TieredCacheLogMapType = LogMapInfer<typeof defaultLogMap>; | ||
/** | ||
@@ -378,7 +375,7 @@ * Multi tier cache with timeout support to change tier based on timeout | ||
*/ | ||
declare abstract class TieredCache<Tiers extends TierType<unknown, string>[], TimeoutEnum extends number, Key> extends EventEmitter<MultiTierCacheEvents<Tiers, Key>> implements ISetLogMapping<TieredCacheLogMapType> { | ||
declare abstract class TieredCache<Tiers extends TierType<unknown, string>[], TimeoutEnum extends number, Key> extends EventEmitter<MultiTierCacheEvents<Tiers, Key>> { | ||
abstract readonly cacheName: string; | ||
protected readonly cache: Map<Key, Tiers[number]>; | ||
private readonly cacheTimeout; | ||
private readonly logger; | ||
readonly logger: MapLogger<TieredCacheLogMapType>; | ||
private statusData; | ||
@@ -427,4 +424,2 @@ constructor(logger?: ILoggerLike, logMapping?: Partial<ExpireCacheLogMapType>); | ||
status(): Readonly<TieredCacheStatus<Tiers>>; | ||
setLogger(logger: ILoggerLike | undefined): void; | ||
setLogMapping(logMapping: Partial<ExpireCacheLogMapType>): void; | ||
private setTimeout; | ||
@@ -431,0 +426,0 @@ private clearTimeoutKey; |
@@ -20,2 +20,14 @@ "use strict"; | ||
}; | ||
var __objRest = (source, exclude) => { | ||
var target = {}; | ||
for (var prop in source) | ||
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) | ||
target[prop] = source[prop]; | ||
if (source != null && __getOwnPropSymbols) | ||
for (var prop of __getOwnPropSymbols(source)) { | ||
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) | ||
target[prop] = source[prop]; | ||
} | ||
return target; | ||
}; | ||
var __export = (target, all) => { | ||
@@ -140,8 +152,2 @@ for (var name in all) | ||
} | ||
setLogger(logger) { | ||
this.logger.setLogger(logger); | ||
} | ||
setLogMapping(logMapping) { | ||
this.logger.setLogMapping(logMapping); | ||
} | ||
/** | ||
@@ -211,9 +217,7 @@ * Cleans expired cache entries | ||
this.clearTimeout(key); | ||
const expiresDate = this.getExpireDate(expires); | ||
const expireTs = expiresDate && expiresDate.getTime() - Date.now(); | ||
const expireString = expireTs ? `${expireTs.toString()} ms` : "undefined"; | ||
const _a = this.handleTimeoutSetup(key, this.getExpireDate(expires)), { expiresInMs } = _a, options = __objRest(_a, ["expiresInMs"]); | ||
const expireString = expiresInMs ? `${expiresInMs.toString()} ms` : "undefined"; | ||
this.logger.logKey("set", `ExpireTimeoutCache set key: ${String(key)}, expireTs: ${expireString}`); | ||
const timeout = expireTs ? setTimeout(() => this.handleExpiredCallback(key), expireTs) : void 0; | ||
this.cache.set(key, data); | ||
this.cacheTimeout.set(key, { timeout, expires: expiresDate }); | ||
this.cacheTimeout.set(key, options); | ||
} | ||
@@ -273,8 +277,2 @@ get(key) { | ||
} | ||
setLogger(logger) { | ||
this.logger.setLogger(logger); | ||
} | ||
setLogMapping(logMapping) { | ||
this.logger.setLogMapping(logMapping); | ||
} | ||
clearTimeout(key) { | ||
@@ -305,2 +303,7 @@ const entry = this.cacheTimeout.get(key); | ||
} | ||
handleTimeoutSetup(key, expiresDate) { | ||
const expiresInMs = expiresDate && expiresDate.getTime() - Date.now(); | ||
const timeout = expiresInMs ? setTimeout(() => this.handleExpiredCallback(key), expiresInMs) : void 0; | ||
return { expiresInMs, timeout, expires: expiresDate }; | ||
} | ||
}; | ||
@@ -474,8 +477,2 @@ | ||
} | ||
setLogger(logger) { | ||
this.logger.setLogger(logger); | ||
} | ||
setLogMapping(logMapping) { | ||
this.logger.setLogMapping(logMapping); | ||
} | ||
setTimeout(key, timeout) { | ||
@@ -482,0 +479,0 @@ const oldTimeout = this.cacheTimeout.get(key); |
{ | ||
"name": "@avanio/expire-cache", | ||
"version": "0.6.5", | ||
"version": "0.6.6", | ||
"description": "Typescript/Javascript cache with expiration", | ||
@@ -59,6 +59,6 @@ "main": "./dist/index.js", | ||
"devDependencies": { | ||
"@avanio/logger-like": "^0.2.9", | ||
"@avanio/logger-like": "^0.2.11", | ||
"@luolapeikko/cache-types": "^0.0.8", | ||
"@stylistic/eslint-plugin": "^2.12.1", | ||
"@stylistic/eslint-plugin-ts": "^2.12.1", | ||
"@stylistic/eslint-plugin": "^2.13.0", | ||
"@stylistic/eslint-plugin-ts": "^2.13.0", | ||
"@types/node": "^22.10.5", | ||
@@ -88,3 +88,3 @@ "@types/sinon": "^17.0.3", | ||
"peerDependencies": { | ||
"@avanio/logger-like": "^0.2.6", | ||
"@avanio/logger-like": "^0.2.10", | ||
"@luolapeikko/cache-types": "^0.0.8" | ||
@@ -91,0 +91,0 @@ }, |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
150013
1502