Files
recap/node_modules/@start9labs/start-sdk/base/lib/util/once.js
T

26 lines
691 B
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.once = once;
/**
* Wraps a function so it is only executed once. Subsequent calls return the cached result.
*
* @param fn - The function to execute at most once
* @returns A wrapper that lazily evaluates `fn` on first call and caches the result
*
* @example
* ```ts
* const getConfig = once(() => loadExpensiveConfig())
* getConfig() // loads config
* getConfig() // returns cached result
* ```
*/
function once(fn) {
let result = [];
return () => {
if (!result.length) {
result = [fn()];
}
return result[0];
};
}
//# sourceMappingURL=once.js.map