Nourished Personal Mucus

    node-ts-cache
    TypeScript icon, indicating that this package has built-in type declarations

    4.4.0 • Public • Published

    CI CI npm The MIT License

    NPM

    node-ts-cache

    Simple and extensible caching module supporting decorators.

    Install

    npm install node-ts-cache

    Note: The underlying storage layer must be installed separately.

    Storages

    Storage Install
    memory npm install node-ts-cache-storage-memory
    node-fs npm install node-ts-cache-storage-node-fs
    ioredis npm install node-ts-cache-storage-ioredis

    Usage

    With decorator

    Caches function response using the given options. Works with the above listed storages. By default, uses all arguments to build an unique key.

    @Cache(container, options)

    • options:
      • ttl: (Default: 60) Number of seconds to expire the cachte item
      • isLazy: (Default: true) If true, expired cache entries will be deleted on touch. If false, entries will be deleted after the given ttl.
      • isCachedForever: (Default: false) If true, cache entry has no expiration.
      • calculateKey(data => string): (Default: JSON.stringify combination of className, methodName and call args)
        • data:
          • className: The class name for the method being decorated
          • methodName: The method name being decorated
          • args: The arguments passed to the method when called

    Note: @Cache will consider the return type of the function. If the return type is a thenable, it will stay that way, otherwise not.

    import { Cache, CacheContainer } from 'node-ts-cache'
    import { MemoryStorage } from 'node-ts-cache-storage-memory'
    
    const userCache = new CacheContainer(new MemoryStorage())
    
    class MyService {
        @Cache(userCache, {ttl: 60})
        public async getUsers(): Promise<string[]> {
            return ["Max", "User"]
        }
    }

    Directly

    import { CacheContainer } from 'node-ts-cache'
    import { MemoryStorage } from 'node-ts-cache-storage-memory'
    
    const myCache = new CacheContainer(new MemoryStorage())
    
    class MyService {
        public async getUsers(): Promise<string[]> {
            const cachedUsers = await myCache.getItem<string[]>("users")
    
            if (cachedUsers) {
                return cachedUsers
            }
    
            const newUsers = ["Max", "User"]
    
            await myCache.setItem("users", newUsers, {ttl: 60})
    
            return newUsers
        }
    }

    Logging

    This project uses debug to log useful caching information. Set environment variable DEBUG=node-ts-cache to enable logging.

    Development & Testing

    This project follows the monorepo architecture using lerna. To start development and run tests for all the packages, run:

    git clone git@github.com:havsar/node-ts-cache.git
    cd node-ts-cache
    npm i
    npm run bootstrap
    npm run test

    Install

    npm i node-ts-cache

    DownloadsWeekly Downloads

    5,382

    Version

    4.4.0

    License

    MIT

    Unpacked Size

    24.9 kB

    Total Files

    19

    Last publish

    Collaborators

    • havsar