const utils = require('./utils')

module.exports = [
  {
    test: /\.(js|vue)$/,
    loader: 'eslint-loader',
    enforce: 'pre',
    options: {
      formatter: require('eslint-friendly-formatter'),
    },
  },
  {
    test: /\.jsx?$/,
    exclude: [/node_modules(?!\/quill)/, /frontend/],
    loader: 'babel-loader',
    query: {
      presets: ['env'],
      plugins: ['lodash'],
    },
  },
  {
    test: /\.tsx?$/,
    loader: 'ts-loader',
    options: {
      compilerOptions: {
        declaration: false,
        target: 'es5',
        module: 'es2015',
      },
      transpileOnly: true,
      appendTsSuffixTo: [/\.vue$/],
    },
  },
  {
    test: /\.(html)$/,
    use: {
      loader: 'html-loader',
      options: {
        attrs: [':data-src']
      }
    }
  },
  {
    test: /\.vue$/,
    loader: 'vue-loader',
    options: {
      esModule: true,
      cacheBusting: false,
      optimizeSSR: false,
      loaders: {
        scss: 'vue-style-loader!css-loader!sass-loader',
      },
    },
  },
  {
    test: /\.scss$/,
    use: [
      {
        loader: 'style-loader',
        options: {
          sourceMap: true,
        },
      },
      {
        loader: 'css-loader',
        options: {
          sourceMap: true,
        },
      },
      {
        loader: 'sass-loader',
        options: {
          sourceMap: true,
          includePaths: [
            utils.resolve('../../vendor/zurb/foundation/scss'),
            utils.resolve('../../resources/assets/libs/animate'),
          ],
        },
      },
    ],
  },
  {
    test: /\.css$/,
    use: [
      {
        loader: 'style-loader',
        options: {
          sourceMap: true,
        },
      },
      {
        loader: 'css-loader',
        options: {
          sourceMap: true,
        },
      },
    ],
  },
  {
    test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
    loader: 'url-loader',
    options: {
      limit: 10000,
      name: utils.assetsPath('img/[name].[hash:7].[ext]'),
    },
  },
  {
    test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
    loader: 'url-loader',
    options: {
      limit: 10000,
      name: utils.assetsPath('media/[name].[hash:7].[ext]'),
    },
  },
  {
    test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
    loader: 'url-loader',
    options: {
      limit: 10000,
      name: utils.assetsPath('fonts/[name].[hash:7].[ext]'),
    },
  },
]