GithubHelp home page GithubHelp logo

lru-map-like's Introduction

lru-map-like

LRU cache top on Map-like. Support non-string key.

Features

  • Based on Map-like
    • It means that allow to use object as key
  • Tiny size: 2kb
env  bundle   minify   gzip
--   13.8 kB  6.32 kB  2.34 kB

Motivation

I have used isaacs/node-lru-cache, but this library is large for me.

env  bundle   minify   gzip
--   43.9 kB  27.5 kB  10.1 kB

Install

Install with npm:

npm install lru-map-like

Usage

const {LRUMapLike} = require("lru-map-like");
const cache = new LRUMapLike(3);
cache.set(0, "a");
cache.set(1, "b");
cache.set(2, "c");
assert.deepEqual(cache.values(), ["a", "b", "c"]);
// over limit(3)
cache.set(-1, "ADDED");
assert.deepEqual(cache.values(), ["b", "c", "ADDED"]);

non-string key supported

Object as key are fully supported. It is map-like feature.

const LRUMapLike = require("lru-map-like");
const cache = new LRUMapLike();
const keyObject = {};
const valueObject = {};
cache.set(keyObject, valueObject);
assert.strictEqual(cache.get(keyObject), valueObject);
assert.notStrictEqual(cache.get({}), valueObject);

API

LRUMapLike

LRU cache implementation Based on https://github.com/rse/cache-lru

limit

set the cache limit

Returns: number

limit

set the cache limit

Parameters

onDispose(cb: Function): LRUMapLike

configure function to be called before item is disposed

Parameters

Returns: LRUMapLike

size

get size of items

Returns: number

keys(): Array<Any>

get keys of all items in order

Returns: Array<Any>

values(): Array<Any>

get values of all items in order

Returns: Array<Any>

forEach(cb: function (value, key), ctx: Any): Any

iterate over all items in order

Parameters

  • cb: function (value, key)
  • ctx: Any

Returns: Any

has(key: Any): boolean

check whether item exists under key

Parameters

  • key: Any

Returns: boolean

peek(key: Any): Any

get value under key without promoting item

Parameters

  • key: Any

Returns: Any

get(key: Any): (Any | undefined)

get value under key

Parameters

  • key: Any

Returns: (Any | undefined)

set(key: Any, val: Any): LRUMapLike

set key as value

Parameters

  • key: Any - string, object etc..
  • val: Any

Returns: LRUMapLike

delete(key: Any): LRUMapLike

delete item under key

Parameters

  • key: Any

Returns: LRUMapLike

clear(): LRUMapLike

delete all items

Returns: LRUMapLike

Changelog

See Releases page.

Running tests

Install devDependencies and Run npm test:

npm i -d && npm test

Contributing

Pull requests and stars are always welcome.

For bugs and feature requests, please create an issue.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

License

MIT © azu

This library based on https://github.com/rse/cache-lru

Copyright (c) 2015-2016 Ralf S. Engelschall (http://engelschall.com/)

lru-map-like's People

Contributors

azu avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.