import path from 'path';

import { babel } from '@rollup/plugin-babel';
import replace from '@rollup/plugin-replace';
import { terser } from 'rollup-plugin-terser';
import { nodeResolve } from '@rollup/plugin-node-resolve';

const { data } = require('json-file').read('./package.json');

const year = new Date().getFullYear();

function getHeader() {
    return `/*!
 * EasyToggler v${data.version} (${data.homepage})
 * Copyright ${year} ${data.author}
 * Licensed under MIT (https://github.com/rah-emil/easy-toggler/blob/master/LICENSE)
 */`;
}

const pathCore = path.join(__dirname, 'src/easy-toggler.es.js');
const pathCoreUmd = path.join(__dirname, 'src/easy-toggler.umd.js');

const bundles = [
    {
        input: pathCore,
        output: {
            banner: getHeader(),
            file: path.join(__dirname, 'dist/easy-toggler.es.js'),
            format: 'esm',
        },
    },
    {
        input: pathCore,
        output: {
            banner: getHeader(),
            file: path.join(__dirname, 'dist/easy-toggler.es.min.js'),
            format: 'esm',
        },
    },
    {
        input: pathCoreUmd,
        output: {
            banner: getHeader(),
            name: 'easy-toggler',
            file: path.join(__dirname, 'dist/easy-toggler.js'),
            format: 'umd',
        },
    },
    {
        input: pathCoreUmd,
        output: {
            banner: getHeader(),
            name: 'easy-toggler',
            file: path.join(__dirname, 'dist/easy-toggler.min.js'),
            format: 'umd',
        },
    },
    {
        input: pathCore,
        output: {
            banner: getHeader(),
            name: 'easy-toggler.cjs',
            file: path.join(__dirname, 'dist/easy-toggler.cjs'),
            format: 'cjs',
        },
    },
];

const configs = bundles.map(({ input: inputPath, output }) => ({
    input: inputPath,
    output,
    plugins: [
        nodeResolve(),
        babel({
            babelHelpers: 'bundled',
            plugins: ['annotate-pure-calls'],
        }),
        replace({
            __DEV__: false,
            preventAssignment: true,
        }),
        output.file.includes('.min.') && terser(),
    ],
}));

export default configs;