Nine Parsecs from Milwaukee
    Wondering what’s next for npm?Check out our public roadmap! »

    bulkcache
    TypeScript icon, indicating that this package has built-in type declarations

    1.3.5 • Public • Published

    Install

    npm i bulkcache -S

    Description

    Allows painlessly cache request reuslt or any result that have a unique id. Saves client/service resources by minizing network request, and requested content.

    Usage

    import { Cache, FilterFunction } from 'bulkcache';
    
    interface User {
        id: number;
        name: string;
        email: string;
    }
    
    function idGetter(user: User) {
        return user.id;
    }
    
    async function fetch(id: number) {
        return await YourAPI.fetchUser(id);
    }
    
    async function bulkFetch(ids: number[]) {
        return await YourAPI.fetchALotOfUsers(ids);
    }
    
    function allIWantIsANameFilter(user: User) {
        return user.name;
    }
    
    const cache = new Cache(idGetter, fetch, bulkFetch);
    cache.addFilter(FilterFunction(allIWantIsANameFilter));
    
     // open your Chrome Developer tools, witness miracles!
    console.log(await cache.fetch(1)); // this should produce one network request
    console.log(await cache.fetch(1)); // this should not produce any network request
    
    cache.fetch(2);// this should produce one network request. NOTICE!!!, we did not wait for its network request to return
    console.log(await cache.fetch(2)); // this should not produce any network request
    
    console.log(await cache.batchGet([1, 2])) // this should not produce any network request
    console.log(await cache.batchGet([1, 2, 3, 4])) // this should produce one network request with batch requerst for id 3 and 4.
    

    Contribute

    Issues and PRs are welcome! If you feel any functionalities that are crucial, you are also welcome to submit an Issue about it.

    Install

    npm i bulkcache

    DownloadsWeekly Downloads

    3

    Version

    1.3.5

    License

    MIT

    Unpacked Size

    780 kB

    Total Files

    91

    Last publish

    Collaborators

    • avatar