ixfx
Version:
A framework for programming interactivity
32 lines (29 loc) • 1.13 kB
TypeScript
import { I as IDictionary } from './IMappish-qfjdy4T9.js';
type GetOrGenerate<K, V, Z> = (key: K, args?: Z) => Promise<V>;
/**
* @inheritDoc getOrGenerate
* @param map
* @param fn
* @returns
*/
declare const getOrGenerateSync: <K, V, Z>(map: IDictionary<K, V>, fn: (key: K, args?: Z) => V) => (key: K, args?: Z) => V;
/**
* Returns a function that fetches a value from a map, or generates and sets it if not present.
* Undefined is never returned, because if `fn` yields that, an error is thrown.
*
* See {@link getOrGenerateSync} for a synchronous version.
*
* ```
* const m = getOrGenerate(new Map(), (key) => {
* return key.toUppercase();
* });
*
* // Not contained in map, so it will run the uppercase function,
* // setting the value to the key 'hello'.
* const v = await m(`hello`); // Yields 'HELLO'
* const v1 = await m(`hello`); // Value exists, so it is returned ('HELLO')
* ```
*
*/
declare const getOrGenerate: <K, V, Z>(map: IDictionary<K, V>, fn: (key: K, args?: Z) => Promise<V> | V) => GetOrGenerate<K, V, Z>;
export { type GetOrGenerate as G, getOrGenerateSync as a, getOrGenerate as g };