import svelte from 'rollup-plugin-svelte';
import replace from "@rollup/plugin-replace";
import commonjs from '@rollup/plugin-commonjs';
import resolve from '@rollup/plugin-node-resolve';
import terser from '@rollup/plugin-terser';
import css from 'rollup-plugin-css-only';

const production = !process.env.ROLLUP_WATCH;

const plugins = [
    svelte({
        compilerOptions: {
            // Enable run-time checks when not in production
            dev: !production,
            // As of sveltestrap 7.1.0, filtered warnings would appear for imported sveltestrap components
            warningFilter: (warning) => (
                warning.code !== 'element_invalid_self_closing_tag' &&
                warning.code !== 'a11y_interactive_supports_focus'
            )
        }
    }),

    // If you have external dependencies installed from
    // npm, you'll most likely need these plugins. In
    // some cases you'll need additional configuration -
    // consult the documentation for details:
    // https://github.com/rollup/plugins/tree/master/packages/commonjs
    resolve({
        browser: true,
        dedupe: ['svelte', '@sveltejs/kit'] // Ensure deduplication for Svelte 5
    }),
    commonjs(),

    // If we're building for production (npm run build
    // instead of npm run dev), minify
    production && terser(),

    replace({
        preventAssignment: true,
        values: {
            "process.env.NODE_ENV": JSON.stringify(production ? "production" : "development"),
        }
    })
];

const entrypoint = (name, path) => ({
    input: path,
    output: {
        sourcemap: false,
        format: 'iife',
        name: 'app',
        file: `public/build/${name}.js`
    },
    plugins: [
        ...plugins,

        // we'll extract any component CSS out into
        // a separate file - better for performance
        css({ output: `${name}.css` }),
    ],
    watch: {
        clearScreen: false
    }
});

export default [
    entrypoint('header', 'src/header.entrypoint.js'),
    entrypoint('jobs', 'src/jobs.entrypoint.js'),
    entrypoint('user', 'src/user.entrypoint.js'),
    entrypoint('list', 'src/list.entrypoint.js'),
    entrypoint('taglist', 'src/tags.entrypoint.js'),
    entrypoint('job', 'src/job.entrypoint.js'),
    entrypoint('systems', 'src/systems.entrypoint.js'),
    entrypoint('node', 'src/node.entrypoint.js'),
    entrypoint('analysis', 'src/analysis.entrypoint.js'),
    entrypoint('status', 'src/status.entrypoint.js'),
    entrypoint('dashpublic', 'src/dashpublic.entrypoint.js'),
    entrypoint('config', 'src/config.entrypoint.js'),
    entrypoint('logs', 'src/logs.entrypoint.js')
];
