var express = require('express');
var path = require('path');
var webpackConfig = require('./webpack.config');
var webpack = require('webpack');
var webpackDevMiddleware = require('webpack-dev-middleware');
var webpackHotMiddleware = require('webpack-hot-middleware');
var proxyMiddleware = require('http-proxy-middleware');

var devConfig = webpackConfig.devServer;
var app = express();
var compiler = webpack(webpackConfig);

app.use(express.static(devConfig.contentBase || __dirname));
app.use(webpackDevMiddleware(compiler, {}));
app.use(webpackHotMiddleware(compiler));

// Set up the proxy.
if(devConfig.proxy) {
  Object.keys(devConfig.proxy).forEach(function(context) {
    app.use(proxyMiddleware(context, devConfig.proxy[context]));
  });
}

if(devConfig.historyApiFallback) {
  console.log('404 responses will be forwarded to /index.html');

  app.get('*', function(req, res) {
    res.sendFile(path.resolve(devConfig.contentBase, 'index.html'));
  });
}

app.listen(devConfig.port || 8080, function() {
  console.log('Development server listening on port ' + devConfig.port);
});