import type { ElectrobunConfig } from "electrobun"; import { readFileSync } from "node:fs"; const packageJson = JSON.parse(readFileSync("./package.json", "utf8")); const buildEnv = process.env.ELECTROBUN_BUILD_ENV || "dev"; const isStable = buildEnv === "stable"; const canCodesign = Boolean(process.env.ELECTROBUN_DEVELOPER_ID); const targetOs = process.env.ELECTROBUN_OS || (process.platform === "darwin" ? "macos" : process.platform === "win32" ? "win" : "linux"); export default { app: { name: "Farm Control", identifier: "com.tombutcher.farmcontrol", version: packageJson.version, description: "3D Printer ERP and Control Software.", urlSchemes: ["farmcontrol"], }, runtime: { exitOnLastWindowClosed: true, }, build: { buildFolder: "build", artifactFolder: "app_dist", // macOS WebKit loads views:// assets reliably from a flat app folder; // ASAR-packed views can fail to load module scripts on first launch. useAsar: isStable && targetOs !== "macos", asarUnpack: [ "*.node", "*.dll", "*.dylib", "*.so", "views/**", ], bun: { entrypoint: "src/bun/index.js", }, copy: { "dist/mainview": "views/mainview", }, watch: ["scripts", "src"], watchIgnore: ["dist/**", "build/**", "app_dist/**"], mac: { bundleCEF: false, icons: "assets/icon.iconset", createDmg: false, codesign: isStable && canCodesign, notarize: isStable && canCodesign, }, linux: { bundleCEF: false, icon: "assets/icon.png", }, win: { bundleCEF: false, icon: "assets/icon.iconset/icon_256x256.png", }, }, scripts: { preBuild: "scripts/pre-build.mjs", postWrap: "scripts/expand-macos-bundle.mjs", postPackage: "scripts/finalize-desktop-artifacts.mjs", }, release: { baseUrl: process.env.ELECTROBUN_RELEASE_BASE_URL || process.env.RELEASE_BASE_URL || "", }, } satisfies ElectrobunConfig;