const path = require('path');

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

const makeConfig = require('./webpack.makeConfig.js');

const getModulePath = moduleName => path.dirname(require.resolve(`${moduleName}/package.json`));

module.exports = defaultConfig =>
    makeConfig(
        defaultConfig,
        {
            name: 'renderer',
            useReact: true,
            disableDefaultRulesForExtensions: ['js', 'jsx', 'css', 'svg', 'png', 'wav', 'gif', 'jpg', 'ttf'],
            babelPaths: [
                path.resolve(__dirname, 'src', 'renderer'),
                /node_modules[\\/]+scratch-[^\\/]+[\\/]+src/,
                /node_modules[\\/]+pify/,
                /node_modules[\\/]+@vernier[\\/]+godirect/
            ],
            plugins: [
                new CopyWebpackPlugin([
                    {
                        from: path.join(getModulePath('scratch-blocks'), 'media'),
                        to: 'static/blocks-media/default'
                    },
                    {
                        from: path.join(getModulePath('scratch-blocks'), 'media'),
                        to: 'static/blocks-media/high-contrast'
                    },
                    {
                        from: path.join(getModulePath('scratch-gui'),
                            'src', 'lib', 'themes', 'high-contrast', 'blocks-media'),
                        to: 'static/blocks-media/high-contrast',
                        force: true
                    },
                    {
                        from: 'extension-worker.{js,js.map}',
                        context: path.join(getModulePath('scratch-vm'), 'dist', 'web')
                    },
                    {
                        from: path.join(getModulePath('scratch-gui'), 'src', 'lib', 'libraries', '*.json'),
                        to: 'static/libraries',
                        flatten: true
                    }
                ])
            ]
        }
    );