New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@avanio/expire-cache

Package Overview
Dependencies
Maintainers
3
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@avanio/expire-cache - npm Package Compare versions

Comparing version

to
0.3.0

7

dist/ExpireCache.d.ts

@@ -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;
}

20

package.json
{
"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