/* eslint-disable */
const path = require('path');
const merge = require('webpack-merge');
const prod = require('./webpack.web.prod.js');

const CopyPlugin = require('copy-webpack-plugin');
const webpack = require('webpack');

/* global module */

module.exports = merge(prod, {
	plugins: [
		new CopyPlugin([
			{
				from: './src/entry.js',
				to: 'script.js'
			}
		]),
		new webpack.DefinePlugin({
			__git_commit__: null
		})
	],

	devServer: {
		https: true,
		port: 8000,
		compress: true,
		inline: false,

		allowedHosts: [
			'.twitch.tv',
			'.frankerfacez.com'
		],

		contentBase: path.join(__dirname, 'dev_cdn'),
		publicPath: '/script/',

		proxy: {
			'**': {
				target: 'https://cdn.frankerfacez.com/',
				changeOrigin: true
			}
		},

		before(app) {
			// Because the headers config option is broken.
			app.get('/*', (req, res, next) => {
				res.setHeader('Access-Control-Allow-Origin', '*');
				next();
			});

			app.get('/update_font', (req, res) => {
				const proc = exec('npm run font:save');

				proc.stdout.on('data', data => {
					console.log('FONT>>', data);
				});

				proc.stderr.on('data', data => {
					console.error('FONT>>', data);
				});

				proc.on('close', code => {
					console.log('FONT>> Exited with code', code);
					res.redirect(req.headers.referer);
				});
			});

			app.get('/dev_server', (req, res) => {
				res.json({
					path: process.cwd(),
					version: 2
				})
			});
		}
	},

	output: {
		publicPath: '//localhost:8000/script/',
		filename: '[name].js',
		jsonpFunction: 'ffzWebpackJsonp',
		crossOriginLoading: 'anonymous'
	}
})