Skip to content

Latest commit

 

History

History
109 lines (81 loc) · 4.28 KB

README.md

File metadata and controls

109 lines (81 loc) · 4.28 KB

cached-factory

Creates and caches values under keys. 🏭

All Contributors: 1 Codecov Test Coverage Contributor Covenant License: MIT Style: Prettier TypeScript: Strict

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

Josh Goldberg ✨
Josh Goldberg ✨

💻 🖋 📖 🤔 🚇 🚧 📆 🔧

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