| var _arity = |
| /*#__PURE__*/ |
| require("./internal/_arity"); |
| |
| var _curry1 = |
| /*#__PURE__*/ |
| require("./internal/_curry1"); |
| /** |
| * Accepts a function `fn` and returns a function that guards invocation of |
| * `fn` such that `fn` can only ever be called once, no matter how many times |
| * the returned function is invoked. The first value calculated is returned in |
| * subsequent invocations. |
| * |
| * @func |
| * @memberOf R |
| * @since v0.1.0 |
| * @category Function |
| * @sig (a... -> b) -> (a... -> b) |
| * @param {Function} fn The function to wrap in a call-only-once wrapper. |
| * @return {Function} The wrapped function. |
| * @example |
| * |
| * const addOneOnce = R.once(x => x + 1); |
| * addOneOnce(10); //=> 11 |
| * addOneOnce(addOneOnce(50)); //=> 11 |
| */ |
| |
| |
| var once = |
| /*#__PURE__*/ |
| _curry1(function once(fn) { |
| var called = false; |
| var result; |
| return _arity(fn.length, function () { |
| if (called) { |
| return result; |
| } |
| |
| called = true; |
| result = fn.apply(this, arguments); |
| return result; |
| }); |
| }); |
| |
| module.exports = once; |