import * as path from "path";
import { promises as fs } from "fs";
import { fileURLToPath } from "url";

export async function loadAppConfig() {
  const packageJson = await loadPackageJson();
  const appName = process.env.TIME_SAFARI_APP_TITLE || packageJson.name;
  const __dirname = path.dirname(fileURLToPath(import.meta.url));

  return {
    pwaConfig: {
      manifest: {
        name: appName,
        short_name: appName,
        icons: [
          {
            src: "./img/icons/android-chrome-192x192.png",
            sizes: "192x192",
            type: "image/png",
          },
          {
            src: "./img/icons/android-chrome-512x512.png",
            sizes: "512x512",
            type: "image/png",
          },
          {
            src: "./img/icons/android-chrome-maskable-192x192.png",
            sizes: "192x192",
            type: "image/png",
            purpose: "maskable",
          },
          {
            src: "./img/icons/android-chrome-maskable-512x512.png",
            sizes: "512x512",
            type: "image/png",
            purpose: "maskable",
          },
        ],
      },
    },
    aliasConfig: {
      "@": path.resolve(path.dirname(__dirname), "src"),
      buffer: path.resolve(path.dirname(__dirname), "node_modules", "buffer"),
      "dexie-export-import/dist/import":
        "dexie-export-import/dist/import/index.js",
    },
  };
}

async function loadPackageJson() {
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
  const packageJsonPath = path.resolve(path.dirname(__dirname), "package.json");
  const packageJsonData = await fs.readFile(packageJsonPath, "utf-8");
  return JSON.parse(packageJsonData);
}
