Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

lru-object

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

lru-object

Javascript object with basic LRU functionalities

  • 1.0.3
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
1
decreased by-50%
Maintainers
1
Weekly downloads
 
Created
Source

lru-object

Javascript object with basic LRU functionalities, the idea of this small library is to use the Proxy API to create a Javascript Object with LRU behaviors without loosing the Syntactic Sugar of Object(e.g. spread and rest operations).

How to install

Install with npm.

npm i --save lru-object

Install with yarn

yarn add lru-object

Features

  1. LRU cache features will be applied invisibly:
import createLRUCache from 'lru-object';

const lru = createLRUCache<number, number>(3);

lru[1] = 1;
lru[2] = 2;
lru[3] = 3;
// reached capacity
lru[4] = 4;
console.log({...lru});
// lru[1] is removed, current object { '2': 2, '3': 3, '4': 4 };

Please aware that the newly created Object {...lru} is nolonger a LRU cache but a plain javascript object.

  1. Keys will follow the least recently used sequence
import createLRUCache from 'lru-object';

const lru = createLRUCache<number, number>(3);

lru[1] = 1;
lru[2] = 2;
lru[3] = 3;
// reached capacity
lru[4] = 4;
console.log(Object.keys(lru));
// keys will follow the priority: ['4', '3', '2'];
  1. Use it as normal object
import createLRUCache from 'lru-object';

const lru = createLRUCache<number, number>(3);

lru['one'] = 1;
lru['two'] = 2;
lru['three'] = 3;
// reached capacity
delete lru['three']

for(const [k, v] of Object.entries(lru)) {
    console.log(k, v);
}

for (const key in lru) {
    if (lru.hasOwnProperty(key)) {
    console.log(key);
    }
}

Things that are not working as expected

  1. Spread operator is not following the least recently used sequence
import createLRUCache from 'lru-object';

const lru = createLRUCache<number, number>(3);

lru[1] = 1;
lru[2] = 2;
lru[3] = 3;
console.log({...lru});
// result: { '1': 1, '2': 2, '3': 3 };
// expected: { '3': 3, '2': 2, '1': 1 };

TODO

  1. Some options for the LRU cache
  2. Fix typescript issues
  3. ...

Keywords

FAQs

Package last updated on 13 Sep 2020

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc