@avanio/expire-cache
Advanced tools
Comparing version
@@ -0,3 +1,3 @@ | ||
import { ICache, ICacheOnClearCallback } from './interfaces/ICache'; | ||
import { ILoggerLike, LogMapping, MapLogger } from '@avanio/logger-like'; | ||
import { ICache } from './interfaces/ICache'; | ||
/** | ||
@@ -22,2 +22,3 @@ * The default log mapping for the ExpireCache class. | ||
readonly has: 0; | ||
readonly onExpire: 0; | ||
readonly set: 0; | ||
@@ -34,2 +35,3 @@ readonly size: 0; | ||
private cache; | ||
private handleOnClear; | ||
private defaultExpireMs; | ||
@@ -50,2 +52,3 @@ /** | ||
size(): number; | ||
onClear(callback: ICacheOnClearCallback<Payload, Key>): void; | ||
/** | ||
@@ -55,3 +58,5 @@ * Cleans expired cache entries | ||
private cleanExpired; | ||
private notifyOnClear; | ||
private cacheAsKeyPayloadMap; | ||
} | ||
export {}; |
@@ -24,2 +24,3 @@ "use strict"; | ||
has: logger_like_1.LogLevel.None, | ||
onExpire: logger_like_1.LogLevel.None, | ||
set: logger_like_1.LogLevel.None, | ||
@@ -43,2 +44,3 @@ size: logger_like_1.LogLevel.None, | ||
this.cache = new Map(); | ||
this.handleOnClear = new Set(); | ||
this.logKey('constructor', `ExpireCache created, defaultExpireMs: ${defaultExpireMs}`); | ||
@@ -72,2 +74,6 @@ this.defaultExpireMs = defaultExpireMs; | ||
this.logKey('delete', `ExpireCache delete key: ${key}`); | ||
const entry = this.cache.get(key); | ||
if (entry) { | ||
this.notifyOnClear(new Map([[key, entry.data]])); | ||
} | ||
return this.cache.delete(key); | ||
@@ -77,2 +83,3 @@ } | ||
this.logKey('clear', `ExpireCache clear`); | ||
this.notifyOnClear(this.cacheAsKeyPayloadMap()); | ||
this.cache.clear(); | ||
@@ -84,2 +91,6 @@ } | ||
} | ||
onClear(callback) { | ||
this.logKey('onExpire', `ExpireCache onExpire`); | ||
this.handleOnClear.add(callback); | ||
} | ||
/** | ||
@@ -89,16 +100,27 @@ * Cleans expired cache entries | ||
cleanExpired() { | ||
let cleanCount = 0; | ||
const now = new Date().getTime(); | ||
const deleteEntries = new Map(); | ||
for (const [key, value] of this.cache.entries()) { | ||
if (value.expires !== undefined && value.expires < now) { | ||
deleteEntries.set(key, value.data); | ||
this.cache.delete(key); | ||
cleanCount++; | ||
} | ||
} | ||
if (cleanCount > 0) { | ||
this.logKey('cleanExpired', `ExpireCache expired count: ${cleanCount}`); | ||
if (deleteEntries.size > 0) { | ||
this.notifyOnClear(deleteEntries); | ||
this.logKey('cleanExpired', `ExpireCache expired count: ${deleteEntries.size}`); | ||
} | ||
} | ||
notifyOnClear(entries) { | ||
this.handleOnClear.forEach((callback) => callback(entries)); | ||
} | ||
cacheAsKeyPayloadMap() { | ||
const map = new Map(); | ||
for (const [key, value] of this.cache.entries()) { | ||
map.set(key, value.data); | ||
} | ||
return map; | ||
} | ||
} | ||
exports.ExpireCache = ExpireCache; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwaXJlQ2FjaGUuanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJFeHBpcmVDYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBaUY7QUFHakY7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sYUFBYSxHQUFHO0lBQ3JCLFlBQVksRUFBRSxzQkFBUSxDQUFDLElBQUk7SUFDM0IsS0FBSyxFQUFFLHNCQUFRLENBQUMsSUFBSTtJQUNwQixXQUFXLEVBQUUsc0JBQVEsQ0FBQyxJQUFJO0lBQzFCLE1BQU0sRUFBRSxzQkFBUSxDQUFDLElBQUk7SUFDckIsT0FBTyxFQUFFLHNCQUFRLENBQUMsSUFBSTtJQUN0QixHQUFHLEVBQUUsc0JBQVEsQ0FBQyxJQUFJO0lBQ2xCLEdBQUcsRUFBRSxzQkFBUSxDQUFDLElBQUk7SUFDbEIsR0FBRyxFQUFFLHNCQUFRLENBQUMsSUFBSTtJQUNsQixJQUFJLEVBQUUsc0JBQVEsQ0FBQyxJQUFJO0NBQ1YsQ0FBQztBQUlYOzs7O0dBSUc7QUFDSCxNQUFhLFdBQW1DLFNBQVEsdUJBQWdDO0lBSXZGOzs7OztPQUtHO0lBQ0gsWUFBWSxNQUFvQixFQUFFLFVBQTJDLEVBQUUsZUFBd0I7UUFDdEcsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQVZyRCxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQXFELENBQUM7UUFXNUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUseUNBQXlDLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7SUFDeEMsQ0FBQztJQUVNLEdBQUcsQ0FBQyxHQUFRLEVBQUUsSUFBYSxFQUFFLE9BQWM7O1FBQ2pELE1BQU0sUUFBUSxHQUF1QixNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxPQUFPLEVBQUUs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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwaXJlQ2FjaGUuanMiLCJzb3VyY2VSb290IjoiLi9zcmMvIiwic291cmNlcyI6WyJFeHBpcmVDYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBaUY7QUFFakY7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sYUFBYSxHQUFHO0lBQ3JCLFlBQVksRUFBRSxzQkFBUSxDQUFDLElBQUk7SUFDM0IsS0FBSyxFQUFFLHNCQUFRLENBQUMsSUFBSTtJQUNwQixXQUFXLEVBQUUsc0JBQVEsQ0FBQyxJQUFJO0lBQzFCLE1BQU0sRUFBRSxzQkFBUSxDQUFDLElBQUk7SUFDckIsT0FBTyxFQUFFLHNCQUFRLENBQUMsSUFBSTtJQUN0QixHQUFHLEVBQUUsc0JBQVEsQ0FBQyxJQUFJO0lBQ2xCLEdBQUcsRUFBRSxzQkFBUSxDQUFDLElBQUk7SUFDbEIsUUFBUSxFQUFFLHNCQUFRLENBQUMsSUFBSTtJQUN2QixHQUFHLEVBQUUsc0JBQVEsQ0FBQyxJQUFJO0lBQ2xCLElBQUksRUFBRSxzQkFBUSxDQUFDLElBQUk7Q0FDVixDQUFDO0FBU1g7Ozs7R0FJRztBQUNILE1BQWEsV0FBbUMsU0FBUSx1QkFBZ0M7SUFLdkY7Ozs7O09BS0c7SUFDSCxZQUFZLE1BQW9CLEVBQUUsVUFBMkMsRUFBRSxlQUF3QjtRQUN0RyxLQUFLLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBWHJELFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztRQUMzQyxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUF1QyxDQUFDO1FBV3RFLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLHlDQUF5QyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO0lBQ3hDLENBQUM7SUFFTSxHQUFHLENBQUMsR0FBUSxFQUFFLElBQWEsRUFBRSxPQUFj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 |
/** | ||
* Async callback type for when entries are expired or cleared | ||
*/ | ||
export type IAsyncCacheOnClearCallback<Payload, Key = string> = (entries: Map<Key, Payload>) => Promise<void>; | ||
/** | ||
* Asynchronous cache interface | ||
@@ -55,2 +59,6 @@ * @example | ||
size(): Promise<number>; | ||
/** | ||
* Called when a entries are expired, deleted or cleared | ||
*/ | ||
onClear(callback: IAsyncCacheOnClearCallback<Payload, Key>): void; | ||
} |
/** | ||
* Callback type for when entries are expired or cleared | ||
*/ | ||
export type ICacheOnClearCallback<Payload, Key = string> = (entries: Map<Key, Payload>) => void; | ||
/** | ||
* Synchronous cache interface | ||
@@ -54,2 +58,6 @@ * @example | ||
size(): number; | ||
/** | ||
* Called when a entries are expired, deleted or cleared | ||
*/ | ||
onClear(callback: ICacheOnClearCallback<Payload, Key>): void; | ||
} |
{ | ||
"name": "@avanio/expire-cache", | ||
"version": "0.2.0", | ||
"version": "0.3.0", | ||
"description": "Typescript/Javascript cache with expiration", | ||
@@ -58,11 +58,11 @@ "main": "./dist/index.js", | ||
"@types/mocha": "^10.0.1", | ||
"@types/node": "^16.18.26", | ||
"@types/sinon": "^10.0.14", | ||
"@typescript-eslint/eslint-plugin": "^5.59.2", | ||
"@typescript-eslint/parser": "^5.59.2", | ||
"@types/node": "^16.18.38", | ||
"@types/sinon": "^10.0.15", | ||
"@typescript-eslint/eslint-plugin": "^5.60.1", | ||
"@typescript-eslint/parser": "^5.60.1", | ||
"chai": "^4.3.7", | ||
"chai-as-promised": "^7.1.1", | ||
"eslint": "^8.40.0", | ||
"eslint": "^8.44.0", | ||
"eslint-config-prettier": "^8.8.0", | ||
"eslint-config-standard": "^17.0.0", | ||
"eslint-config-standard": "^17.1.0", | ||
"eslint-plugin-deprecation": "^1.4.1", | ||
@@ -74,9 +74,9 @@ "eslint-plugin-prettier": "^4.2.1", | ||
"prettier": "^2.8.8", | ||
"sinon": "^15.0.4", | ||
"sinon": "^15.2.0", | ||
"ts-node": "^10.9.1", | ||
"typescript": "^5.0.4" | ||
"typescript": "^5.1.6" | ||
}, | ||
"dependencies": { | ||
"@avanio/logger-like": "^0.1.0" | ||
"@avanio/logger-like": "^0.1.1" | ||
} | ||
} |
@@ -11,3 +11,4 @@ # @avanio/expire-cache | ||
This package contains: | ||
This package contains: | ||
- **_[ICache](./src/interfaces/ICache.ts)_** a common cache interface | ||
@@ -26,2 +27,7 @@ - **_[IAsyncCache](./src/interfaces/IAsyncCache.ts)_** a common async cache interface | ||
const cache = new ExpireCache<string>(); | ||
cache.onClear((cleared) => { | ||
for (const [key, value] of cleared.entries()) { | ||
console.log(`key ${key} expired, deleted or clear with value ${value}`); | ||
} | ||
}); | ||
@@ -28,0 +34,0 @@ cache.add('key', 'value', new Date(Date.now() + 1000)); // expires in 1000ms |
24312
14.24%348
14.1%74
8.82%Updated