Socket
Socket
Sign inDemoInstall

tiny-lru

Package Overview
Dependencies
0
Maintainers
1
Versions
97
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 10.1.1 to 10.2.0

15

dist/tiny-lru.esm.js

@@ -6,6 +6,6 @@ /**

* @license BSD-3-Clause
* @version 10.1.0
* @version 10.2.0
*/
class LRU {
constructor (max = 0, ttl = 0) {
constructor (max = 0, ttl = 0, resetTtl = false) {
this.first = null;

@@ -15,2 +15,3 @@ this.items = Object.create(null);

this.max = max;
this.resetTtl = resetTtl;
this.size = 0;

@@ -110,3 +111,3 @@ this.ttl = ttl;

set (key, value, bypass = false, resetTtl = false) {
set (key, value, bypass = false, resetTtl = this.resetTtl) {
let item;

@@ -169,3 +170,3 @@

function lru (max = 1000, ttl = 0) {
function lru (max = 1000, ttl = 0, resetTtl = false) {
if (isNaN(max) || max < 0) {

@@ -179,3 +180,7 @@ throw new TypeError("Invalid max value");

return new LRU(max, ttl);
if (typeof resetTtl !== "boolean") {
throw new TypeError("Invalid resetTtl value");
}
return new LRU(max, ttl, resetTtl);
}export{lru};
/*!
2023 Jason Mulligan <jason.mulligan@avoidwork.com>
@version 10.1.0
@version 10.2.0
*/
class t{constructor(t=0,s=0){this.first=null,this.items=Object.create(null),this.last=null,this.max=t,this.size=0,this.ttl=s}#t(t){return t in this.items}clear(){return this.first=null,this.items=Object.create(null),this.last=null,this.size=0,this}delete(t){if(this.#t(t)){const s=this.items[t];delete this.items[t],this.size--,null!==s.prev&&(s.prev.next=s.next),null!==s.next&&(s.next.prev=s.prev),this.first===s&&(this.first=s.next),this.last===s&&(this.last=s.prev)}return this}evict(t=!1){if(t||this.size>0){const t=this.first;delete this.items[t.key],this.size--,0===this.size?(this.first=null,this.last=null):(this.first=t.next,this.first.prev=null)}return this}get(t){let s;if(this.#t(t)){const i=this.items[t];this.ttl>0&&i.expiry<=(new Date).getTime()?this.delete(t):(s=i.value,this.set(t,s,!0))}return s}expiresAt(t){let s;return this.#t(t)&&(s=this.items[t].expiry),s}keys(){return Object.keys(this.items)}set(t,s,i=!1,e=!1){let h;if(i||this.#t(t)){if(h=this.items[t],h.value=s,e&&(h.expiry=this.ttl>0?(new Date).getTime()+this.ttl:this.ttl),this.last!==h){const t=this.last,s=h.next,i=h.prev;this.first===h&&(this.first=h.next),h.next=null,h.prev=this.last,t.next=h,null!==i&&(i.next=s),null!==s&&(s.prev=i)}}else this.max>0&&this.size===this.max&&this.evict(!0),h=this.items[t]={expiry:this.ttl>0?(new Date).getTime()+this.ttl:this.ttl,key:t,prev:this.last,next:null,value:s},1==++this.size?this.first=h:this.last.next=h;return this.last=h,this}}function s(s=1e3,i=0){if(isNaN(s)||s<0)throw new TypeError("Invalid max value");if(isNaN(i)||i<0)throw new TypeError("Invalid ttl value");return new t(s,i)}export{s as lru};//# sourceMappingURL=tiny-lru.esm.min.js.map
class t{constructor(t=0,s=0,e=!1){this.first=null,this.items=Object.create(null),this.last=null,this.max=t,this.resetTtl=e,this.size=0,this.ttl=s}#t(t){return t in this.items}clear(){return this.first=null,this.items=Object.create(null),this.last=null,this.size=0,this}delete(t){if(this.#t(t)){const s=this.items[t];delete this.items[t],this.size--,null!==s.prev&&(s.prev.next=s.next),null!==s.next&&(s.next.prev=s.prev),this.first===s&&(this.first=s.next),this.last===s&&(this.last=s.prev)}return this}evict(t=!1){if(t||this.size>0){const t=this.first;delete this.items[t.key],this.size--,0===this.size?(this.first=null,this.last=null):(this.first=t.next,this.first.prev=null)}return this}get(t){let s;if(this.#t(t)){const e=this.items[t];this.ttl>0&&e.expiry<=(new Date).getTime()?this.delete(t):(s=e.value,this.set(t,s,!0))}return s}expiresAt(t){let s;return this.#t(t)&&(s=this.items[t].expiry),s}keys(){return Object.keys(this.items)}set(t,s,e=!1,i=this.resetTtl){let h;if(e||this.#t(t)){if(h=this.items[t],h.value=s,i&&(h.expiry=this.ttl>0?(new Date).getTime()+this.ttl:this.ttl),this.last!==h){const t=this.last,s=h.next,e=h.prev;this.first===h&&(this.first=h.next),h.next=null,h.prev=this.last,t.next=h,null!==e&&(e.next=s),null!==s&&(s.prev=e)}}else this.max>0&&this.size===this.max&&this.evict(!0),h=this.items[t]={expiry:this.ttl>0?(new Date).getTime()+this.ttl:this.ttl,key:t,prev:this.last,next:null,value:s},1==++this.size?this.first=h:this.last.next=h;return this.last=h,this}}function s(s=1e3,e=0,i=!1){if(isNaN(s)||s<0)throw new TypeError("Invalid max value");if(isNaN(e)||e<0)throw new TypeError("Invalid ttl value");if("boolean"!=typeof i)throw new TypeError("Invalid resetTtl value");return new t(s,e,i)}export{s as lru};//# sourceMappingURL=tiny-lru.esm.min.js.map

@@ -6,6 +6,6 @@ /**

* @license BSD-3-Clause
* @version 10.1.0
* @version 10.2.0
*/
(function(g,f){typeof exports==='object'&&typeof module!=='undefined'?f(exports):typeof define==='function'&&define.amd?define(['exports'],f):(g=typeof globalThis!=='undefined'?globalThis:g||self,f(g.lru={}));})(this,(function(exports){'use strict';class LRU {
constructor (max = 0, ttl = 0) {
constructor (max = 0, ttl = 0, resetTtl = false) {
this.first = null;

@@ -15,2 +15,3 @@ this.items = Object.create(null);

this.max = max;
this.resetTtl = resetTtl;
this.size = 0;

@@ -110,3 +111,3 @@ this.ttl = ttl;

set (key, value, bypass = false, resetTtl = false) {
set (key, value, bypass = false, resetTtl = this.resetTtl) {
let item;

@@ -169,3 +170,3 @@

function lru (max = 1000, ttl = 0) {
function lru (max = 1000, ttl = 0, resetTtl = false) {
if (isNaN(max) || max < 0) {

@@ -179,3 +180,7 @@ throw new TypeError("Invalid max value");

return new LRU(max, ttl);
if (typeof resetTtl !== "boolean") {
throw new TypeError("Invalid resetTtl value");
}
return new LRU(max, ttl, resetTtl);
}exports.lru=lru;}));
/*!
2023 Jason Mulligan <jason.mulligan@avoidwork.com>
@version 10.1.0
@version 10.2.0
*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).lru={})}(this,(function(t){"use strict";class e{constructor(t=0,e=0){this.first=null,this.items=Object.create(null),this.last=null,this.max=t,this.size=0,this.ttl=e}#t(t){return t in this.items}clear(){return this.first=null,this.items=Object.create(null),this.last=null,this.size=0,this}delete(t){if(this.#t(t)){const e=this.items[t];delete this.items[t],this.size--,null!==e.prev&&(e.prev.next=e.next),null!==e.next&&(e.next.prev=e.prev),this.first===e&&(this.first=e.next),this.last===e&&(this.last=e.prev)}return this}evict(t=!1){if(t||this.size>0){const t=this.first;delete this.items[t.key],this.size--,0===this.size?(this.first=null,this.last=null):(this.first=t.next,this.first.prev=null)}return this}get(t){let e;if(this.#t(t)){const s=this.items[t];this.ttl>0&&s.expiry<=(new Date).getTime()?this.delete(t):(e=s.value,this.set(t,e,!0))}return e}expiresAt(t){let e;return this.#t(t)&&(e=this.items[t].expiry),e}keys(){return Object.keys(this.items)}set(t,e,s=!1,i=!1){let l;if(s||this.#t(t)){if(l=this.items[t],l.value=e,i&&(l.expiry=this.ttl>0?(new Date).getTime()+this.ttl:this.ttl),this.last!==l){const t=this.last,e=l.next,s=l.prev;this.first===l&&(this.first=l.next),l.next=null,l.prev=this.last,t.next=l,null!==s&&(s.next=e),null!==e&&(e.prev=s)}}else this.max>0&&this.size===this.max&&this.evict(!0),l=this.items[t]={expiry:this.ttl>0?(new Date).getTime()+this.ttl:this.ttl,key:t,prev:this.last,next:null,value:e},1==++this.size?this.first=l:this.last.next=l;return this.last=l,this}}t.lru=function(t=1e3,s=0){if(isNaN(t)||t<0)throw new TypeError("Invalid max value");if(isNaN(s)||s<0)throw new TypeError("Invalid ttl value");return new e(t,s)}}));//# sourceMappingURL=tiny-lru.min.js.map
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).lru={})}(this,(function(t){"use strict";class e{constructor(t=0,e=0,s=!1){this.first=null,this.items=Object.create(null),this.last=null,this.max=t,this.resetTtl=s,this.size=0,this.ttl=e}#t(t){return t in this.items}clear(){return this.first=null,this.items=Object.create(null),this.last=null,this.size=0,this}delete(t){if(this.#t(t)){const e=this.items[t];delete this.items[t],this.size--,null!==e.prev&&(e.prev.next=e.next),null!==e.next&&(e.next.prev=e.prev),this.first===e&&(this.first=e.next),this.last===e&&(this.last=e.prev)}return this}evict(t=!1){if(t||this.size>0){const t=this.first;delete this.items[t.key],this.size--,0===this.size?(this.first=null,this.last=null):(this.first=t.next,this.first.prev=null)}return this}get(t){let e;if(this.#t(t)){const s=this.items[t];this.ttl>0&&s.expiry<=(new Date).getTime()?this.delete(t):(e=s.value,this.set(t,e,!0))}return e}expiresAt(t){let e;return this.#t(t)&&(e=this.items[t].expiry),e}keys(){return Object.keys(this.items)}set(t,e,s=!1,i=this.resetTtl){let l;if(s||this.#t(t)){if(l=this.items[t],l.value=e,i&&(l.expiry=this.ttl>0?(new Date).getTime()+this.ttl:this.ttl),this.last!==l){const t=this.last,e=l.next,s=l.prev;this.first===l&&(this.first=l.next),l.next=null,l.prev=this.last,t.next=l,null!==s&&(s.next=e),null!==e&&(e.prev=s)}}else this.max>0&&this.size===this.max&&this.evict(!0),l=this.items[t]={expiry:this.ttl>0?(new Date).getTime()+this.ttl:this.ttl,key:t,prev:this.last,next:null,value:e},1==++this.size?this.first=l:this.last.next=l;return this.last=l,this}}t.lru=function(t=1e3,s=0,i=!1){if(isNaN(t)||t<0)throw new TypeError("Invalid max value");if(isNaN(s)||s<0)throw new TypeError("Invalid ttl value");if("boolean"!=typeof i)throw new TypeError("Invalid resetTtl value");return new e(t,s,i)}}));//# sourceMappingURL=tiny-lru.min.js.map

@@ -1,2 +0,2 @@

export function lru<T = any>(max?: number, ttl?: number): LRU<T>;
export function lru<T = any>(max?: number, ttl?: number, resetTtl?: boolean): LRU<T>;
export interface LRU<T> {

@@ -6,2 +6,3 @@ first: T | null;

max: number;
resetTtl: boolean;
size: number;

@@ -8,0 +9,0 @@ ttl: number;

{
"name": "tiny-lru",
"description": "Tiny LRU cache for Client or Server",
"version": "10.1.1",
"version": "10.2.0",
"homepage": "https://github.com/avoidwork/tiny-lru",

@@ -6,0 +6,0 @@ "author": "Jason Mulligan <jason.mulligan@avoidwork.com>",

@@ -7,3 +7,3 @@ # Tiny LRU

import {lru} from "tiny-lru";
const cache = lru(max, ttl = 0);
const cache = lru(max, ttl = 0, resetTtl = false);
```

@@ -141,14 +141,13 @@

## remove
### Method
## resetTtl
### Property
(Deprecated) Removes item from cache
Resets `item.expiry` with each `set()` if `true` (false)
param {String} key Item key
return {Object} LRU instance
**Example**
```javascript
cache.remove("myKey");
const cache = lru();
cache.resetTtl; // false
```

@@ -163,4 +162,4 @@

param {Mixed} value Item value
param {Boolean=false} bypass If set to true, this will skip cache size limit check and auto-eviction of least recently used entry on overfill.
param {Boolean=false} resetTtl If entry with this key already exists, by default it will keep same expiration date. With `resetTtl=true`, new expiration date will be calculated.
param {Boolean} bypass Bypasses 'has()' check; do not use (false)
param {Boolean} resetTtl Resets the 'expiry' of the item if present; do not use (this.resetTtl)
return {Object} LRU instance

@@ -167,0 +166,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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc