Socket
Socket
Sign inDemoInstall

tiny-lru

Package Overview
Dependencies
0
Maintainers
1
Versions
96
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

tiny-lru

Tiny LRU cache for Client or Server


Version published
Maintainers
1
Weekly downloads
1,274,693
decreased by-14.92%

Weekly downloads

Readme

Source

Tiny LRU

Least Recently Used cache for Client or Server.

Using the factory

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

Using the Class

import {LRU} from "tiny-lru";
const cache = new LRU(max, ttl = 0, resetTtl = false);
import {LRU} from "tiny-lru";
class MyCache extends LRU {}

Interoperability

Lodash provides a memoize function with a cache that can be swapped out as long as it implements the right interface. See the lodash docs for more on memoize.

Example

_.memoize.Cache = lru().constructor;
const memoized = _.memoize(myFunc);
memoized.cache.max = 10;

Testing

Tiny-LRU has 100% code coverage with its tests.

--------------|---------|----------|---------|---------|-------------------
File          | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
--------------|---------|----------|---------|---------|-------------------
All files     |     100 |    89.85 |     100 |     100 |                  
 tiny-lru.cjs |     100 |    89.85 |     100 |     100 | 11-31,130-138,172
--------------|---------|----------|---------|---------|-------------------

API

Properties

first

Item in "first" or "bottom" position; default is null

Example

const cache = lru();

cache.first; // null - it's a new cache!

last

Item in "last" or "top" position; default is null

Example

const cache = lru();

cache.last; // null - it's a new cache!

max

Max items to hold in cache; default is 1000

Example

const cache = lru(500);

cache.max; // 500

resetTtl

Resets item.expiry with each set() if true; default is false

Example

const cache = lru(500, 5*6e4, true);

cache.resetTtl; // true

size

Number of items in cache

Example

const cache = lru();

cache.size; // 0 - it's a new cache!

ttl

Milliseconds an item will remain in cache; lazy expiration upon next get() of an item

Example

const cache = lru(100, 3e4);

cache.ttl; // 30000;

Methods

clear

Clears the contents of the cache

return {Object} LRU instance

Example

cache.clear();

delete

Removes item from cache

param  {String} key Item key
return {Object}     LRU instance

Example

cache.delete("myKey");

entries(["key1", "key2"])

Returns an Array cache items

param  {Array} keys (Optional) Cache item keys to get, defaults to `this.keys()` if not provided
return {Object} LRU instance

Example

cache.entries(['myKey1', 'myKey2']);

evict

Evicts the least recently used item from cache

return {Object} LRU instance

Example

cache.evict();

expiresAt

Gets expiration time for cached item

param  {String} key Item key
return {Mixed}      Undefined or number (epoch time)

Example

const item = cache.expiresAt("myKey");

get

Gets cached item and moves it to the front

param  {String} key Item key
return {Mixed}      Undefined or Item value

Example

const item = cache.get("myKey");

has

Returns a Boolean indicating if key is in cache

return {Object} LRU instance

Example

cache.has('myKey');

keys

Returns an Array of cache item keys (first to last)

return {Array} Array of keys

Example

console.log(cache.keys());

set

Sets item in cache as first

param  {String} key   Item key
param  {Mixed}  value Item value
return {Object}       LRU instance

Example

cache.set("myKey", {prop: true});

values(["key1", "key2"])

Returns an Array cache items

param  {Array} keys (Optional) Cache item keys to get
return {Array} Cache items

Example

cache.values(['abc', 'def']);

License

Copyright (c) 2023 Jason Mulligan Licensed under the BSD-3 license.

Keywords

FAQs

Last updated on 29 Oct 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

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