/// <reference path="../../../../../typings-module/process.d.ts" />
"use strict";
const redux_1 = require('redux');
const redux_thunk_1 = require('redux-thunk');
const process = require('process');
const index_1 = require('../promise-middleware/index');
// 中间件生成器
const middlewareBuilder = () => {
    let middleware = {};
    let universalMiddleware = [redux_thunk_1.default, index_1.default];
    let allComposeElements = [];
    if (process.browser) {
        middleware = redux_1.applyMiddleware(...universalMiddleware);
        if (process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'test') {
            allComposeElements = [
                middleware
            ];
        }
        else {
            allComposeElements = [
                middleware,
                window.devToolsExtension ? window.devToolsExtension() : (f) => f
            ];
        }
    }
    else {
        middleware = redux_1.applyMiddleware(...universalMiddleware);
        allComposeElements = [
            middleware
        ];
    }
    return allComposeElements;
};
const finalCreateStore = redux_1.compose(...middlewareBuilder())(redux_1.createStore);
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = (initialState, rootReducer) => {
    const store = finalCreateStore(rootReducer, initialState);
    if (module.hot) {
    }
    return store;
};
