@@ -4,10 +4,14 @@ import {createStore, applyMiddleware, compose, combineReducers} from 'redux';
44import digestMiddleware from './digestMiddleware' ;
55
66import assign from 'lodash.assign' ;
7+ import curry from 'lodash.curry' ;
78import isArray from 'lodash.isarray' ;
89import isFunction from 'lodash.isfunction' ;
10+ import map from 'lodash.map' ;
911
10- const isObject = x => typeof x === 'object' ;
12+ const typeIs = curry ( ( type , val ) => typeof val === type ) ;
13+ const isObject = typeIs ( 'object' ) ;
14+ const isString = typeIs ( 'string' ) ;
1115
1216export default function ngReduxProvider ( ) {
1317 let _reducer = undefined ;
@@ -37,37 +41,34 @@ export default function ngReduxProvider() {
3741 } ;
3842
3943 this . $get = ( $injector ) => {
40- let store , resolvedMiddleware = [ ] ;
41-
42- for ( let middleware of _middlewares ) {
43- if ( typeof middleware === 'string' ) {
44- resolvedMiddleware . push ( $injector . get ( middleware ) ) ;
45- } else {
46- resolvedMiddleware . push ( middleware ) ;
47- }
48- }
44+ const resolveMiddleware = middleware => isString ( middleware )
45+ ? $injector . get ( middleware )
46+ : middleware ;
47+
48+ const resolvedMiddleware = map ( _middlewares , resolveMiddleware ) ;
4949
5050 if ( _reducerIsObject ) {
51- let reducersObj = { } ;
52- let reducKeys = Object . keys ( _reducer ) ;
51+ const getReducerKey = key => isString ( key )
52+ ? $injector . get ( _reducer [ key ] )
53+ : _reducer [ key ] ;
54+
55+ const resolveReducerKey = ( result , key ) => assign ( { } , result ,
56+ { [ key ] : getReducerKey ( key ) }
57+ ) ;
5358
54- reducKeys . forEach ( ( key ) => {
55- if ( typeof _reducer [ key ] === 'string' ) {
56- reducersObj [ key ] = $injector . get ( _reducer [ key ] ) ;
57- } else {
58- reducersObj [ key ] = _reducer [ key ] ;
59- }
60- } ) ;
59+ const reducersObj = Object
60+ . keys ( _reducer )
61+ . reduce ( resolveReducerKey , { } ) ;
6162
6263 _reducer = combineReducers ( reducersObj ) ;
6364 }
6465
65- let finalCreateStore = _storeEnhancers ? compose ( ..._storeEnhancers ) ( createStore ) : createStore ;
66+ const finalCreateStore = _storeEnhancers ? compose ( ..._storeEnhancers ) ( createStore ) : createStore ;
6667
6768 //digestMiddleware needs to be the last one.
6869 resolvedMiddleware . push ( digestMiddleware ( $injector . get ( '$rootScope' ) ) ) ;
6970
70- store = _initialState
71+ const store = _initialState
7172 ? applyMiddleware ( ...resolvedMiddleware ) ( finalCreateStore ) ( _reducer , _initialState )
7273 : applyMiddleware ( ...resolvedMiddleware ) ( finalCreateStore ) ( _reducer ) ;
7374
0 commit comments