UNPKG

@mic-rexjs/usecases-react

Version:

React-based solution for use usecases of Clean Architecture

22 lines (21 loc) 855 B
import { Reducers } from '@mic-rexjs/usecases'; import { RestArguments } from '@mic-rexjs/usecases/es/types'; export interface CacheableFactory { (...args: RestArguments): unknown; } export interface CacheCallOptions { onShouldCache?(): boolean; onCompare?(newArgs: RestArguments, oldArgs: RestArguments): boolean; } export interface CallCache<T extends CacheableFactory> { parameters: Parameters<T>; returnValue: ReturnType<T>; } export interface CaptureCallFactory { <T>(key: string, args: RestArguments): T; } export type MethodReducers = Reducers<{ cacheCall<T extends CacheableFactory>(factory: T, options?: CacheCallOptions): T; cacheCalls<T extends Record<string, CacheableFactory>>(sourceFactories: T, options?: CacheCallOptions): T; captureCalls<T extends object>(obj: T, callback: CaptureCallFactory): T; }>;