0.0.2 • Published 8 months ago

cached-factory v0.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

Usage

cached-factory exports a CachedFactory class that takes in "factory" function in its constructor. Each time a factory's .get(key) is called with any key for the first time, that factory is used to create a value under the key.

const cache = new CachedFactory((key) => `Cached: ${key}!`);

// "Cached: apple!"
cache.get("apple");

Values are cached so that subsequent .get(key) calls with the same key instantly return the same value.

const cache = new CachedFactory((key) => ({ key }));

// { key: "banana" }
cache.get("banana");

// true
cache.get("banana") === cached.get("banana");

Asynchronous Factories

CachedFactory does not itself handle Promise logic, but it doesn't have to! Provided factory functions can themselves be async / return Promise values.

const cache = new CachedFactory(
	async (key) => await fetch(`/some/resource?key=${key}`),
);

// Type: Promise<Response>
cache.get("cherry");

// Type: Response
await cache.get("cherry");

Other Methods

clear

Clears the cache.

cache.clear();

TypeScript

CachedFactory is written in TypeScript and ships with strong typing. 💪

👉 Tip: if you're working with noImplicitAny enabled (which is generally a good idea), an inline function provided as an argument to CachedFactory may need an explicit type annotation for its key.

new CachedFactory((key: string) => `Cached: ${key}!`);

Contributors

💙 This package is based on @JoshuaKGoldberg's template-typescript-node-package.

0.0.2

8 months ago

0.0.1

9 months ago