// SPDX-FileCopyrightText: 2021 Johannes Loher
//
// SPDX-License-Identifier: MIT

import copy from "@guanghechen/rollup-plugin-copy";
import typescript from "@rollup/plugin-typescript";
import styles from "rollup-plugin-styles";
import { terser } from "rollup-plugin-terser";
import { distDirectory, name, sourceDirectory } from "./tools/const.js";
import { convertJSONToPack } from "./tools/json-pack-tools.js";

const staticFiles = ["template.json", "system.json", "assets", "fonts", "lang", "templates"];
const isProduction = process.env.NODE_ENV === "production";

/**
 * @type {import('rollup').RollupOptions}
 */
const config = {
    input: { [`module/${name}`]: `${sourceDirectory}/module/${name}.ts` },
    output: {
        dir: distDirectory,
        format: "es",
        sourcemap: true,
        assetFileNames: "[name].[ext]",
    },
    plugins: [
        typescript({ noEmitOnError: true }),
        styles({
            mode: ["extract", `css/${name}.css`],
            url: false,
            sourceMap: true,
            minimize: isProduction,
        }),
        copy({
            targets: [
                { src: staticFiles.map((file) => `${sourceDirectory}/${file}`), dest: distDirectory },
                {
                    src: [`${sourceDirectory}/packs/*.json`],
                    dest: `${distDirectory}/packs`,
                    rename: (name) => `${name}.db`,
                    transform: convertJSONToPack,
                },
            ],
        }),
        isProduction && terser({ ecma: 2020, keep_fnames: true }),
    ],
};

export default config;