1.6.1 • Published 7 months ago

cache-manager-function v1.6.1

Weekly downloads
-
License
-
Repository
-
Last release
7 months ago

cache-manager-function

semantic-release XO code style Snyk Security CodeQL OpenSSF Scorecard

Cache functions dynamically based on their arguments using cache-manager.

Installation

Install the package using npm:

npm install cache-manager-function

or with Yarn:

yarn add cache-manager-function

Usage

1. Initialize

Call getOrInitializeCache to manually initialize the cache.

const cache = await getOrInitializeCache<RedisStore>({
  store: await redisStore({
    host: 'localhost',
    port: 6379,
  }),
});

Alternatively, you can initialize the cache implicitly by providing the store directly to cachedFunction.

const multiply = (x, y) => x * y;

const cachedMultiply = cachedFunction(multiply, {
  store: await redisStore({
    host: 'localhost',
    port: 6379,
  }),
});

// Initializes the cache and caches the result
await cachedMultiply(2, 3); 

2. Caching with cachedFunction

The selector option specifies which arguments should be used to generate the cache key.

type Person = { name: string; lastname: string };

const greet = (person: Person) => `Hello, ${person.name} ${person.lastname}!`;

// Caches based on `person.name` and `person.lastname`
const cachedGreet = cachedFunction(greet, {
  selector: ['0.name', '0.lastname']
});

await cachedGreet({ person: { name: `John`, lastname: `Doe` } }); // Caches the result based on name=John and lastname=Doe
await cachedGreet({ person: { name: `Jane`, lastname: `Doe` } }); // Caches the result based on name=Jane and lastname=Doe

3. Using the CacheOptions decorator

CacheOptions receives the exact same options that cachedFunction receives. It’s an alternative way to define the cache behavior directly on the function.

import { CacheOptions, cachedFunction } from `cache-manager-function`;

class UserService {
  @CacheOptions(['0'], 300) // Specifies to cache based on the first argument (id), with a TTL of 300ms
  async getUser(id: number) {
    return `User with ID: ${id}`;
  }
}

const service = new UserService();
const cachedFetchUser = cachedFunction(service.getUser);

await userService.getUser(1); // Executes and caches based on the `id` argument
await userService.getUser(1); // Returns the cached result

API

getOrInitializeCache

Initializes or retrieves the cache.

  • Parameters:

    • options (Optional): Configuration options to initialize the cache.
  • Returns: A promise that resolves to the cache instance.

cachedFunction

Caches the result of a function based on its arguments.

  • Parameters:

    • function_: The function to cache.
    • options (Optional): Configuration options for caching.
  • Returns: A cached function that returns a promise with the result.

CacheOptions

Decorator to cache function results based on selected arguments.

  • Parameters:
    • selector: Paths of the arguments to include in the cache key.
    • ttl (Optional): Time-to-live for the cached result.
1.6.1

7 months ago

1.6.0

8 months ago

1.5.3

10 months ago

1.5.2

10 months ago

1.5.1

10 months ago

1.5.0

10 months ago

1.4.0

10 months ago

1.3.0

10 months ago

1.2.0

10 months ago

1.1.0

10 months ago