import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import babel from '@rollup/plugin-babel';
import { terser } from 'rollup-plugin-terser';
import json from '@rollup/plugin-json';

const commonConfig = {
  input: 'src/index.js',
  output: {
    name: 'index',
    sourcemap: true,
  },
  plugins: [
    resolve({
      customResolveOptions: {
        moduleDirectory: 'node_modules',
      },
    }),
    babel({
      exclude: 'node_modules/**',
      babelHelpers: 'runtime',
    }),
    commonjs(),
    json(),
  ],
};

// ESM config
const esmConfig = Object.assign({}, commonConfig);
esmConfig.output = Object.assign({}, commonConfig.output, {
  file: 'dist/mjs/index.js',
  format: 'esm',
});

// ESM prod config
const esmProdConfig = Object.assign({}, esmConfig);
esmProdConfig.output = Object.assign({}, esmConfig.output, {
  file: 'dist/mjs/index.min.js',
  sourcemap: false,
});
esmProdConfig.plugins = [...esmConfig.plugins, terser()];

// CJS config
const cjsConfig = Object.assign({}, commonConfig);
cjsConfig.output = Object.assign({}, commonConfig.output, {
  file: 'dist/cjs/index.js',
  format: 'cjs',
});

// CJS prod config
const cjsProdConfig = Object.assign({}, cjsConfig);
cjsProdConfig.output = Object.assign({}, cjsConfig.output, {
  file: 'dist/cjs/index.min.js',
  sourcemap: false,
});
cjsProdConfig.plugins = [...cjsConfig.plugins, terser()];
let configurations = [];
configurations.push(esmConfig, esmProdConfig, cjsConfig, cjsProdConfig);

export default configurations;
