Neurological Phenomenon Multiplexer
    Wondering what’s next for npm?Check out our public roadmap! »

    lru-generator

    0.1.2 • Public • Published

    lru-generator

    SCM Build Status Documentation Coverage Coverage Coverage Coverage

    Least Recently Used Cache using generator.

    TL;DR

    // sync
    
    var generate_callback = function(key) {...} ; // something expensive to generate
    var limit = 2; // say we are only caching 2 items
    var generate = require('lru-generator')(limit, generate_callback)
    ...
    generate(key1); // calls generate_callback(key1)
    generate(key2); // calls generate_callback(key2)
    generate(key3); // calls generate_callback(key3)
    generate(key2); // returns previous results which is still in cache
    generate(key1); // calls generate_callback(key1) as it is no longer in cache
    
    // misc
    
    generate.isCached(key);
    
    generate.getCached(key);
    
    generate.cache(key, value);
    
    generate.purge(key, value);
    
    

    Complexity

    Whatever complexity your JS engine has for accessing object properties.

    Asynchronous

    I was going to write async functionality but then I realised that it is not really needed for modern asynchronous programming. You can just have a an async generator function or can just return a promise from generator function. This will allow you to await or .then the return value. There is no need to add yet another level of indirection.

    Current generate.async is more for you if you want old style callbacks for generator function and want to be called back with generated value. This is deprecated. Just keep things simple by using modern async/await.

    // async
    
    var generate_callback = function(key, callback) { ... callback(value) ... }; //
    var generate = require('lru-generator')(limit, generate_callback, {async: true});
    
    generate.sync(key, [custom_generate_callback]);
    
    generate.async(key, callback, [custom_generate_callback]);
    
    // generate(...) has the same signature as generate.sync or generate.async based on setting
    
    

    Install

    npm i lru-generator

    DownloadsWeekly Downloads

    1

    Version

    0.1.2

    License

    MIT

    Last publish

    Collaborators

    • avatar