Comparing version 0.2.2 to 0.2.3
@@ -1,1 +0,1 @@ | ||
var createLRU=g=>{var{max:d,onEviction:t}=g;if(!(Number.isInteger(d)&&d>0))throw new TypeError("`max` must be a positive integer");var a=0,f=0,s=0,y=[],l=new Map,i=new Array(d).fill(void 0),n=new Array(d).fill(void 0),v=new Array(d).fill(0),m=new Array(d).fill(0),o=e=>{if(e!==s){var r=v[e];if(e===f)f=r;else{var u=m[e];v[u]=r,m[r]=u}v[s]=e,m[e]=s,s=e}},b=()=>{var e=f,r=i[e];return t==null||t(n[e],r),l.delete(r),i[e]=void 0,n[e]=void 0,f=v[e],a--,e};return{set(e,r){var u=l.get(e);u===void 0?(u=a===d?b():y.length>0?y.pop():a,l.set(e,u),i[u]=e,a++):t==null||t(n[u],e),n[u]=r,o(u)},get(e){var r=l.get(e);if(r!==void 0)return o(r),n[r]},peek:e=>{var r=l.get(e);return r!==void 0?n[r]:void 0},has:e=>l.has(e),*keys(){for(var e=f,r=0;r<a;r++)yield i[e],e=v[e]},*values(){for(var e=f,r=0;r<a;r++)yield n[e],e=v[e]},*entries(){for(var e=f,r=0;r<a;r++)yield[i[e],n[e]],e=v[e]},forEach:e=>{for(var r=f,u=0;u<a;u++){var K=i[r],h=n[r];e(h,K),r=v[r]}},delete(e){var r=l.get(e);return r!==void 0?(t==null||t(n[r],e),l.delete(e),y.push(r),i[r]=void 0,n[r]=void 0,a--,!0):!1},evict:e=>{for(var r=Math.min(e,a);r>0;)b(),r--},clear(){for(var e of l.values())t==null||t(n[e],i[e]);l.clear(),i.fill(void 0),n.fill(void 0),y=[],a=0,f=s=0},resize:e=>{if(!(Number.isInteger(e)&&e>0))throw new TypeError("`max` must be a positive integer");for(d=e;a>d;)b()},get max(){return d},get size(){return a},get available(){return d-a}}}; | ||
var createLRU=g=>{var{max:d,onEviction:t}=g;if(!(Number.isInteger(d)&&d>0))throw new TypeError("`max` must be a positive integer");var a=0,f=0,s=0,y=[],l=new Map,i=new Array(d).fill(void 0),n=new Array(d).fill(void 0),v=new Array(d).fill(0),m=new Array(d).fill(0),o=e=>{if(e!==s){var r=v[e];if(e===f)f=r;else{var u=m[e];v[u]=r,m[r]=u}v[s]=e,m[e]=s,s=e}},b=()=>{var e=f,r=i[e];return t==null||t(r,n[e]),l.delete(r),i[e]=void 0,n[e]=void 0,f=v[e],a--,e};return{set(e,r){var u=l.get(e);u===void 0?(u=a===d?b():y.length>0?y.pop():a,l.set(e,u),i[u]=e,a++):t==null||t(e,n[u]),n[u]=r,o(u)},get(e){var r=l.get(e);if(r!==void 0)return o(r),n[r]},peek:e=>{var r=l.get(e);return r!==void 0?n[r]:void 0},has:e=>l.has(e),*keys(){for(var e=f,r=0;r<a;r++)yield i[e],e=v[e]},*values(){for(var e=f,r=0;r<a;r++)yield n[e],e=v[e]},*entries(){for(var e=f,r=0;r<a;r++)yield[i[e],n[e]],e=v[e]},forEach:e=>{for(var r=f,u=0;u<a;u++){var K=i[r],h=n[r];e(h,K),r=v[r]}},delete(e){var r=l.get(e);return r!==void 0?(t==null||t(e,n[r]),l.delete(e),y.push(r),i[r]=void 0,n[r]=void 0,a--,!0):!1},evict:e=>{for(var r=Math.min(e,a);r>0;)b(),r--},clear(){for(var e of l.values())t==null||t(i[e],n[e]);l.clear(),i.fill(void 0),n.fill(void 0),y=[],a=0,f=s=0},resize:e=>{if(!(Number.isInteger(e)&&e>0))throw new TypeError("`max` must be a positive integer");for(d=e;a>d;)b()},get max(){return d},get size(){return a},get available(){return d-a}}}; |
@@ -5,3 +5,3 @@ export declare const createLRU: <Key, Value>(options: { | ||
/** Function called when an item is evicted from the cache. */ | ||
onEviction?: (value: Value, key: Key) => unknown; | ||
onEviction?: (key: Key, value: Value) => unknown; | ||
}) => { | ||
@@ -8,0 +8,0 @@ /** Adds a key-value pair to the cache. Updates the value if the key already exists. */ |
@@ -35,3 +35,3 @@ "use strict"; | ||
const key = keyList[evictHead]; | ||
onEviction === null || onEviction === void 0 ? void 0 : onEviction(valList[evictHead], key); | ||
onEviction === null || onEviction === void 0 ? void 0 : onEviction(key, valList[evictHead]); | ||
keyMap.delete(key); | ||
@@ -55,3 +55,3 @@ keyList[evictHead] = undefined; | ||
else | ||
onEviction === null || onEviction === void 0 ? void 0 : onEviction(valList[index], key); | ||
onEviction === null || onEviction === void 0 ? void 0 : onEviction(key, valList[index]); | ||
valList[index] = value; | ||
@@ -113,3 +113,3 @@ moveToTail(index); | ||
if (index !== undefined) { | ||
onEviction === null || onEviction === void 0 ? void 0 : onEviction(valList[index], key); | ||
onEviction === null || onEviction === void 0 ? void 0 : onEviction(key, valList[index]); | ||
keyMap.delete(key); | ||
@@ -135,3 +135,3 @@ free.push(index); | ||
for (const index of keyMap.values()) | ||
onEviction === null || onEviction === void 0 ? void 0 : onEviction(valList[index], keyList[index]); | ||
onEviction === null || onEviction === void 0 ? void 0 : onEviction(keyList[index], valList[index]); | ||
keyMap.clear(); | ||
@@ -138,0 +138,0 @@ keyList.fill(undefined); |
{ | ||
"name": "lru.min", | ||
"version": "0.2.2", | ||
"version": "0.2.3", | ||
"description": "🔥 An extremely fast and efficient LRU cache for JavaScript (Browser compatible) — 4.8KB.", | ||
@@ -5,0 +5,0 @@ "main": "./lib/index.js", |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package