clean-redux
Version:
Utilities for implementing clean architecture using Redux
24 lines (23 loc) • 864 B
TypeScript
import "minimal-polyfills/Object.fromEntries";
import type { Param0 } from "tsafe";
declare type WrapSelectorsReturnValue<Selectors extends {
[Name in string]: (state: any) => unknown;
}> = {
[Name in keyof Selectors]: (state: Param0<Selectors[Name]>) => Record<Name, ReturnType<Selectors[Name]>>;
};
export declare function wrapSelectorsReturnValue<Selectors extends {
[Name in string]: (state: any) => unknown;
}>(selectors: Selectors): WrapSelectorsReturnValue<Selectors>;
export declare function usecasesToSelectors<Usecase extends {
name: string;
selectors?: {
[Name in string]: (state: any) => unknown;
};
}>(usecases: readonly Usecase[]): {
[Key in Extract<Usecase, {
selectors: any;
}>["name"]]: WrapSelectorsReturnValue<NonNullable<Extract<Usecase, {
name: Key;
}>["selectors"]>>;
};
export {};