// 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 = [
    ".reuse",
    "assets",
    "ATTRIBUTION.md",
    "fonts",
    "lang",
    "LICENSE.md",
    "LICENSES",
    "README.md",
    "system.json.license",
    "system.json",
    "template.json.license",
    "template.json",
    "templates",
];
const isProduction = process.env.NODE_ENV === "production";

/**
 * @type {import('rollup').RollupOptions}
 */
const config = {
    input: { [`${name}`]: `${sourceDirectory}/${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, dest: distDirectory },
                {
                    src: [`packs/*.json`],
                    dest: `${distDirectory}/packs`,
                    rename: (name) => `${name}.db`,
                    transform: convertJSONToPack,
                },
                {
                    src: [`packs/*.json.license`],
                    dest: `${distDirectory}/packs`,
                    rename: (name, extension) => `${name.replace(".json", ".db")}.${extension}`,
                },
            ],
        }),
        isProduction && terser({ ecma: 2020, keep_fnames: true }),
    ],
};

export default config;