diff --git a/packages/client/src/index.ts b/packages/client/src/index.ts index 84aa6b5..96a5a87 100644 --- a/packages/client/src/index.ts +++ b/packages/client/src/index.ts @@ -5,3 +5,4 @@ export * from './login' export * from './middleware' export * from './redux' export * from './renderer' +export * from './store' diff --git a/packages/client/src/renderer/index.ts b/packages/client/src/renderer/index.ts index effcb69..08fc7f1 100644 --- a/packages/client/src/renderer/index.ts +++ b/packages/client/src/renderer/index.ts @@ -1,4 +1,3 @@ export * from './ClientRenderer' export * from './IRenderer' export * from './IStoreFactory' -export * from './ServerRenderer' diff --git a/packages/client/src/store/createStore.ts b/packages/client/src/store/createStore.ts new file mode 100644 index 0000000..7e097c2 --- /dev/null +++ b/packages/client/src/store/createStore.ts @@ -0,0 +1,32 @@ +import {PromiseMiddleware} from '../middleware' +import { + applyMiddleware, + createStore as create, + combineReducers, + Middleware, + Action, + // AnyAction, + DeepPartial, + ReducersMapObject, + // Reducer, +} from 'redux' + +export interface ICreateStoreParams { + reducers: ReducersMapObject + state?: DeepPartial + middleware?: Middleware[] +} + +/** + * Create a Redux store. + */ +export function createStore( + params: ICreateStoreParams, +) { + const middleware = params.middleware || [new PromiseMiddleware().handle] + return create( + combineReducers(params.reducers), + params.state, + applyMiddleware(...middleware), + ) +} diff --git a/packages/client/src/store/index.ts b/packages/client/src/store/index.ts new file mode 100644 index 0000000..61ff86c --- /dev/null +++ b/packages/client/src/store/index.ts @@ -0,0 +1 @@ +export * from './createStore' diff --git a/packages/client/src/test-utils/TestUtils.tsx b/packages/client/src/test-utils/TestUtils.tsx index 688bd91..13176d2 100644 --- a/packages/client/src/test-utils/TestUtils.tsx +++ b/packages/client/src/test-utils/TestUtils.tsx @@ -3,26 +3,16 @@ import ReactDOM from 'react-dom' import T from 'react-dom/test-utils' import {Connector, IStateSelector} from '../redux' import {Provider} from 'react-redux' -import {PromiseMiddleware} from '../middleware' +import {createStore} from '../store' import { Action, AnyAction, DeepPartial, - Middleware, Reducer, ReducersMapObject, - Store, - applyMiddleware, combineReducers, - createStore, } from 'redux' -interface IStoreParams> { - reducer: Reducer - state?: DeepPartial - middleware?: Middleware[] -} - interface IRenderParams { reducers: ReducersMapObject state?: DeepPartial @@ -31,6 +21,11 @@ interface IRenderParams { } export class TestUtils { + /** + * Create a redux store + */ + readonly createStore = createStore + render(jsx: JSX.Element) { const component = T.renderIntoDocument(jsx) as React.Component const node = ReactDOM.findDOMNode(component) as Element @@ -44,20 +39,6 @@ export class TestUtils { return combineReducers(reducers) } - /** - * Create a redux store - */ - createStore = AnyAction>( - params: IStoreParams, - ): Store { - const middleware = params.middleware || [new PromiseMiddleware().handle] - return createStore( - params.reducer, - params.state, - applyMiddleware(...middleware), - ) - } - /** * Creates a redux store, connects a component, and provides the `render` * method to render the connected component with a `Provider`. @@ -66,7 +47,7 @@ export class TestUtils { params: IRenderParams, ) { const store = this.createStore({ - reducer: this.combineReducers(params.reducers), + reducers: params.reducers, state: params.state, }) const Component = params.connector.connect(params.select)