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
- LRU cache features will be applied invisibly:
; const lru = createLRUCache<number number>3; lru1 = 1;lru2 = 2;lru3 = 3;// reached capacitylru4 = 4;console;// 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.
- Keys will follow the least recently used sequence
; const lru = createLRUCache<number number>3; lru1 = 1;lru2 = 2;lru3 = 3;// reached capacitylru4 = 4;console;// keys will follow the priority: ['4', '3', '2'];
- Use it as normal object
; const lru = createLRUCache<number number>3; lru'one' = 1;lru'two' = 2;lru'three' = 3;// reached capacitydelete lru'three' forconst k v of Object console; for const key in lru if lru console;
Things that are not working as expected
- Spread operator is not following the least recently used sequence
; const lru = createLRUCache<number number>3; lru1 = 1;lru2 = 2;lru3 = 3;console;// result: { '1': 1, '2': 2, '3': 3 };// expected: { '3': 3, '2': 2, '1': 1 };
TODO
- Some options for the LRU cache
- Fix typescript issues
- ...