import path, { resolve } from "node:path";
import URL from "node:url";
import fg from "fast-glob";
import { build } from "unbuild";

export async function buildOne(dir: string, isDev: boolean = false) {
    const rootDir = resolve("packages/" + dir);

    // let alias = await import(URL.pathToFileURL(path.resolve(rootDir, "./alias.mts")).href);
    // alias = alias.default || alias;
    // Object.keys(alias).forEach((key) => {
    //     alias[key] = path.resolve(rootDir, alias[key]);
    // });
    const pkgInfo = await import(URL.pathToFileURL(path.resolve(rootDir, "package.json")).href);
    const alias = { [pkgInfo.name]: path.resolve(rootDir, "./src") };

    const files = fg.sync(["src/**/*.ts"], { cwd: rootDir, ignore: ["**/__tests__/**/*", "**/docs/**/*"] });

    return build(rootDir, false, {
        rootDir: rootDir,
        entries: files,
        declaration: !isDev,
        replace: {
            __DEV__: String(isDev),
        },
        alias: alias,
        watch: isDev,
        rollup: {
            emitCJS: !isDev,
            output: {
                preserveModules: true,
                preserveModulesRoot: "src",
            },
        },
    });
}