0.0.5-rc3 • Published 2 years ago

side-cache v0.0.5-rc3

Weekly downloads
-
License
Apache License 2....
Repository
github
Last release
2 years ago

cacheable

A simple cache wrapper for functions. Only need 1 line of code to cache the function result.

Highglights

  • Simple wrapper for function (support async)
  • Cache TTL
  • Cache signature validation (Optional)
  • Less pollution in your code
  • Support Array/Set/Map in returned type
  • Support LocalStorage or Memory as cache store

Install

npm i side-cache

Usage

One Line for Cache

import { cacheable } from 'side-cache';

const getUser = async (userId) => {
    const resp = await fetch('https://gorest.co.in/public/v1/users?id=' + userId);
    return await resp.json()
}
const getCacheableUser = cacheable(getUser, (userId)=> `user.${userId}`)

const userInfo = getCacheableUser(1)
console.log(userInfo)

Cache Options

import { cacheable } from 'side-cache';

const getUser = async (userId) => {
    const resp = await fetch('https://gorest.co.in/public/v1/users?id=' + userId);
    return await resp.json()
}
//Cache will expired after 1 hour
const getCacheableUser = cacheable(
        getUser, 
        (userId) => `user.${userId}`, 
        {timeToLive: 3600}
    )

const userInfo = getCacheableUser(1)
console.log(userInfo)

Global Config

import { configure } from 'side-cache';

configure({
    keyPrefix: "cacheable",
    signer: (data:string) => createHash('sha256').update(data).digest('hex'), //Default is null
    timeToLive: 3600 * 24 // Default ttl is 1 day (seconds)
    //cacheStore: new LocalStorageCacheStore() - Defautl store in browser.
    //cacheStore: new LocalMemCacheStore() - Default store in Node.
})

API

cacheable

declare const cacheable: (
    target: Function,                       // support sync/async function
    cacheKeyBuilder: string | Function,     // only support sync function
    options?: CacheOptions
) => any;

interface CacheOptions {
    keyPrefix?: string | Function;          // Support sync/async function
    signer?: (data:string) => string;       // Function use to do signature validation
    timeToLive?: number;
}

configure

declare const configure: (options?: GlobalCacheOptions) => void;

interface GlobalCacheOptions extends CacheOptions {
    cacheStore?: CacheStore;
    serializer?: Serializer<any>;
}

Q&A

  • What kind of storage policy support?

    Currently we only support LocalStorage(in broswer) and LocalMemory(in node), it been selected automatically while launch your application.

  • Does Browser application supported?

    Yes.

  • Please raise you questions in issues!

0.0.3

2 years ago

0.0.2

2 years ago

0.0.5-rc3

2 years ago

0.0.5-rc1

2 years ago

0.0.5-rc2

2 years ago

0.0.5-beta

2 years ago

0.0.4

2 years ago

0.0.1

3 years ago