(
fn: ResultFn<TArgs, TEntry>
)
| 26 | } |
| 27 | |
| 28 | export function memoizeOneWithFlag<TArgs extends any[], TEntry>( |
| 29 | fn: ResultFn<TArgs, TEntry> |
| 30 | ): ResultFn<TArgs, ICachedResultFn<TEntry>> { |
| 31 | let lastArgs: any[] | null = null; |
| 32 | let lastResult: any; |
| 33 | let isFirst = true; |
| 34 | |
| 35 | return (...args: TArgs): ICachedResultFn<TEntry> => { |
| 36 | const res = isEqualArgs(lastArgs, args) |
| 37 | ? {cached: true, first: isFirst, result: lastResult} |
| 38 | : { |
| 39 | cached: false, |
| 40 | first: isFirst, |
| 41 | result: (lastArgs = args) && (lastResult = fn(...args)) |
| 42 | }; |
| 43 | isFirst = false; |
| 44 | |
| 45 | return res; |
| 46 | }; |
| 47 | } |
| 48 | |
| 49 | export function memoizeAll<TArgs extends any[], TEntry>( |
| 50 | fn: ResultFn<TArgs, TEntry> |
no test coverage detected
searching dependent graphs…