// Type definitions for Recompose v0.20.2 // Project: https://github.com/acdlite/recompose // Definitions by: Iskander Sierra // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped /// declare module 'recompose' { import * as React from 'react'; import { ComponentClass, StatelessComponent, ValidationMap } from 'react'; type Component

= ComponentClass

| StatelessComponent

; type mapper = (input: TInner) => TOutter; type predicate = mapper; type predicateDiff = (current: T, next: T) => boolean interface Subscribable { subscribe: Function; } interface ComponentEnhancer { (component: Component): ComponentClass; } interface InferableComponentEnhancer { )>(component: TComp): TComp; } // Higher-order components: https://github.com/acdlite/recompose/blob/master/docs/API.md#higher-order-components // mapProps: https://github.com/acdlite/recompose/blob/master/docs/API.md#mapprops export function mapProps( propsMapper: mapper ): ComponentEnhancer; // withProps: https://github.com/acdlite/recompose/blob/master/docs/API.md#withprops export function withProps( createProps: TInner | mapper ): ComponentEnhancer; // withPropsOnChange: https://github.com/acdlite/recompose/blob/master/docs/API.md#withpropsonchange export function withPropsOnChange( shouldMapOrKeys: string[] | predicateDiff, createProps: mapper ): ComponentEnhancer; // withHandlers: https://github.com/acdlite/recompose/blob/master/docs/API.md#withhandlers type EventHandler = Function; type HandleCreators = { [handlerName: string]: mapper; }; export function withHandlers( handlerCreators: HandleCreators ): ComponentEnhancer; // defaultProps: https://github.com/acdlite/recompose/blob/master/docs/API.md#defaultprops export function defaultProps( props: Object ): InferableComponentEnhancer; // renameProp: https://github.com/acdlite/recompose/blob/master/docs/API.md#renameProp export function renameProp( outterName: string, innerName: string ): ComponentEnhancer; // renameProps: https://github.com/acdlite/recompose/blob/master/docs/API.md#renameProps type NameMap = { [outterName: string]: string; }; export function renameProps( nameMap: NameMap ): ComponentEnhancer; // flattenProp: https://github.com/acdlite/recompose/blob/master/docs/API.md#flattenProp export function flattenProp( propName: string ): ComponentEnhancer; // withState: https://github.com/acdlite/recompose/blob/master/docs/API.md#withState export function withState( stateName: string, stateUpdaterName: string, initialState: any | mapper ): ComponentEnhancer void }*/, TOutter>; // withReducer: https://github.com/acdlite/recompose/blob/master/docs/API.md#withReducer type reducer = (s: TState, a: TAction) => TState; export function withReducer( stateName: string, dispatchName: string, reducer: reducer, initialState: TState ): ComponentEnhancer; export function withReducer( stateName: string, dispatchName: string, reducer: reducer, initialState: (props: TOutter) => TState ): ComponentEnhancer; // branch: https://github.com/acdlite/recompose/blob/master/docs/API.md#branch export function branch( test: predicate, trueEnhancer: InferableComponentEnhancer, falseEnhancer: InferableComponentEnhancer ): ComponentEnhancer; // renderComponent: https://github.com/acdlite/recompose/blob/master/docs/API.md#renderComponent export function renderComponent( component: string | Component ): ComponentEnhancer; // renderNothing: https://github.com/acdlite/recompose/blob/master/docs/API.md#renderNothing export const renderNothing: InferableComponentEnhancer; // shouldUpdate: https://github.com/acdlite/recompose/blob/master/docs/API.md#shouldUpdate export function shouldUpdate( test: predicateDiff ): InferableComponentEnhancer; // pure: https://github.com/acdlite/recompose/blob/master/docs/API.md#pure export function pure)> (component: TComp): TComp; // onlyUpdateForKeys: https://github.com/acdlite/recompose/blob/master/docs/API.md#onlyUpdateForKeys export function onlyUpdateForKeys( propKeys: Array ) : InferableComponentEnhancer; // onlyUpdateForPropTypes: https://github.com/acdlite/recompose/blob/master/docs/API.md#onlyUpdateForPropTypes export const onlyUpdateForPropTypes: InferableComponentEnhancer; // withContext: https://github.com/acdlite/recompose/blob/master/docs/API.md#withContext export function withContext( childContextTypes: ValidationMap, getChildContext: mapper ) : InferableComponentEnhancer; // getContext: https://github.com/acdlite/recompose/blob/master/docs/API.md#getContext export function getContext( contextTypes: ValidationMap ) : InferableComponentEnhancer; // lifecycle: https://github.com/acdlite/recompose/blob/master/docs/API.md#lifecycle interface ReactLifeCycleFunctions { componentWillMount?: Function; componentDidMount?: Function; componentWillReceiveProps?: Function; shouldComponentUpdate?: Function; componentWillUpdate?: Function; componentDidUpdate?: Function; componentWillUnmount?: Function; } export function lifecycle( spec: ReactLifeCycleFunctions ): InferableComponentEnhancer; // toClass: https://github.com/acdlite/recompose/blob/master/docs/API.md#toClass export const toClass: InferableComponentEnhancer; // Static property helpers: https://github.com/acdlite/recompose/blob/master/docs/API.md#static-property-helpers // setStatic: https://github.com/acdlite/recompose/blob/master/docs/API.md#setStatic export function setStatic( key: string, value: any ): ComponentEnhancer; // setPropTypes: https://github.com/acdlite/recompose/blob/master/docs/API.md#setPropTypes export function setPropTypes( propTypes: ValidationMap ): ComponentEnhancer; // setDisplayName: https://github.com/acdlite/recompose/blob/master/docs/API.md#setDisplayName export function setDisplayName( displayName: string ): ComponentEnhancer; // Utilities: https://github.com/acdlite/recompose/blob/master/docs/API.md#utilities // compose: https://github.com/acdlite/recompose/blob/master/docs/API.md#compose export function compose( ...functions: Function[] ): ComponentEnhancer; // export function compose( // ...functions: Array // ): ComponentEnhancer; // export function compose( // ...functions: Array // ): ComponentEnhancer; // getDisplayName: https://github.com/acdlite/recompose/blob/master/docs/API.md#getDisplayName export function getDisplayName( component: Component ): string; // wrapDisplayName: https://github.com/acdlite/recompose/blob/master/docs/API.md#wrapDisplayName export function wrapDisplayName( component: Component, wrapperName: string ): string; // shallowEqual: https://github.com/acdlite/recompose/blob/master/docs/API.md#shallowEqual export function shallowEqual( a: Object, b: Object ): boolean; // isClassComponent: https://github.com/acdlite/recompose/blob/master/docs/API.md#isClassComponent export function isClassComponent( value: any ): boolean; // createEagerElement: https://github.com/acdlite/recompose/blob/master/docs/API.md#createEagerElement export function createEagerElement( type: Component | string, props?: Object, children?: React.ReactNode ): React.ReactElement; // createEagerFactory: https://github.com/acdlite/recompose/blob/master/docs/API.md#createEagerFactory type componentFactory = (props?: Object, children?: React.ReactNode) => React.ReactElement; export function createEagerFactory( type: Component | string ): componentFactory; // createSink: https://github.com/acdlite/recompose/blob/master/docs/API.md#createSink export function createSink( callback: (props: Object) => void ): React.ComponentClass; // ??? // componentFromProp: https://github.com/acdlite/recompose/blob/master/docs/API.md#componentFromProp export function componentFromProp( propName: string ): StatelessComponent; // nest: https://github.com/acdlite/recompose/blob/master/docs/API.md#nest export function nest( ...Components: (string | Component)[] ): React.ComponentClass; // ??? // hoistStatics: https://github.com/acdlite/recompose/blob/master/docs/API.md#hoistStatics export function hoistStatics( hoc: InferableComponentEnhancer ): InferableComponentEnhancer; // Observable utilities: https://github.com/acdlite/recompose/blob/master/docs/API.md#observable-utilities // componentFromStream: https://github.com/acdlite/recompose/blob/master/docs/API.md#componentFromStream export function componentFromStream( propsToReactNode: mapper, Subscribable> ): Component; // ??? // mapPropsStream: https://github.com/acdlite/recompose/blob/master/docs/API.md#mapPropsStream export function mapPropsStream( transform: mapper, Subscribable> ): ComponentEnhancer; // createEventHandler: https://github.com/acdlite/recompose/blob/master/docs/API.md#createEventHandler type EventHandlerOf> = { handler: (value: T) => void; stream: TSubs; }; export function createEventHandler>(): EventHandlerOf; // setObservableConfig: https://github.com/acdlite/recompose/blob/master/docs/API.md#setObservableConfig type ObservableConfig = { fromESObservable?: (observable: Subscribable) => any; toESObservable?: (stream: any) => Subscribable; }; export function setObservableConfig(config: ObservableConfig): void; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#rxjs declare module 'recompose/rxjsObservableConfig' { import { ObservableConfig } from 'recompose'; const rxjsconfig: ObservableConfig; export default rxjsconfig; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#rxjs-4-legacy declare module 'recompose/rxjs4ObservableConfig' { import { ObservableConfig } from 'recompose'; const rxjs4config: ObservableConfig; export default rxjs4config; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#most declare module 'recompose/mostObservableConfig' { import { ObservableConfig } from 'recompose'; const mostConfig: ObservableConfig; export default mostConfig; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#xstream declare module 'recompose/xstreamObservableConfig' { import { ObservableConfig } from 'recompose'; const xstreamConfig: ObservableConfig; export default xstreamConfig; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#bacon declare module 'recompose/baconObservableConfig' { import { ObservableConfig } from 'recompose'; const baconConfig: ObservableConfig; export default baconConfig; } // https://github.com/acdlite/recompose/blob/master/docs/API.md#kefir declare module 'recompose/kefirObservableConfig' { import { ObservableConfig } from 'recompose'; const kefirConfig: ObservableConfig; export default kefirConfig; }