react-torch
Version:
A lib to server-side render with react.
39 lines (38 loc) • 1.58 kB
TypeScript
import { createLifeCircleManager } from './lifecircle';
import type { Store, PreloadedState } from 'redux';
declare type AnyFn = (...args: any) => any;
declare type Actions = {
[key: string]: AnyFn | Actions;
};
export declare type Initializer<S = any> = (...args: any) => {
store: Store<S>;
actions: Actions;
};
export declare type InitializerState<I extends Initializer> = I extends (...args: any) => {
store: Store<infer S>;
actions: Actions;
} ? S : never;
export declare type InitializerActions<I extends Initializer> = I extends (...args: any) => {
store: Store;
actions: infer A;
} ? A : never;
export declare type CreatePureModelOptions<I extends Initializer> = {
preloadedState?: PreloadedState<InitializerState<I>>;
};
export declare const createPureModel: <I extends Initializer<any>>(initializer: I, options?: CreatePureModelOptions<I>) => ReturnType<I> & {
preload: import("./callback").CallbackManager;
start: import("./callback").SyncCallbackManager;
finish: import("./callback").SyncCallbackManager;
};
export declare type Model<S = any> = {
store: Store<S>;
actions: Actions;
} & ReturnType<typeof createLifeCircleManager>;
export declare function subscribe<S>(model: Model<S>, listener: (state: S) => void): import("redux").Unsubscribe;
export declare function select<S, TSelected = unknown>(options: {
model: Model<S>;
selector: (state: S) => TSelected;
listener: (state: TSelected) => void;
compare?: (curr: TSelected, prev: TSelected) => boolean;
}): import("redux").Unsubscribe;
export {};