import * as esbuild from "esbuild";
import path from "path";
import { fileURLToPath } from "url";

const __dirname = path.dirname(fileURLToPath(import.meta.url));
const isProduction = process.env.NODE_ENV === "production";
const isWatch = process.argv.includes("--watch");

/** @type {import('esbuild').BuildOptions} */
const opts = {
  alias: {
    "koenig-styles": path.resolve(
      __dirname,
      "node_modules/@tryghost/koenig-lexical/dist/index.css"
    ),
  },
  entryPoints: ["src/index.jsx"],
  bundle: true,
  outdir: "../static/scripts",
  entryNames: "editor",
  format: "iife",
  target: "es2020",
  jsx: "automatic",
  minify: isProduction,
  define: {
    "process.env.NODE_ENV": JSON.stringify(
      isProduction ? "production" : "development"
    ),
  },
  loader: {
    ".svg": "dataurl",
    ".woff": "file",
    ".woff2": "file",
    ".ttf": "file",
  },
  logLevel: "info",
};

if (isWatch) {
  const ctx = await esbuild.context(opts);
  await ctx.watch();
  console.log("Watching for changes...");
} else {
  await esbuild.build(opts);
}
