// SPDX-FileCopyrightText: 2026 Stan Grams // // SPDX-License-Identifier: GPL-2.0-or-later import { build } from "esbuild"; import { rm } from "node:fs/promises"; import { fileURLToPath } from "node:url"; import path from "node:path"; const frontendDir = path.dirname(fileURLToPath(import.meta.url)); const sourceDir = path.join(frontendDir, "src"); const outputDir = path.join(frontendDir, "..", "assets", "web", "generated"); await rm(outputDir, { recursive: true, force: true }); await build({ entryPoints: { "api-client": path.join(sourceDir, "api", "client.ts"), app: path.join(sourceDir, "app.js"), "ui-core": path.join(sourceDir, "ui-core.ts"), "map-core": path.join(sourceDir, "map-core.js"), screenshot: path.join(sourceDir, "screenshot.ts"), "webgl-renderer": path.join(sourceDir, "webgl-renderer.ts"), ais: path.join(sourceDir, "plugins", "ais.js"), aprs: path.join(sourceDir, "plugins", "aprs.js"), "background-decode": path.join(sourceDir, "plugins", "background-decode.js"), bookmarks: path.join(sourceDir, "plugins", "bookmarks.js"), "hf-aprs": path.join(sourceDir, "plugins", "hf-aprs.js"), sat: path.join(sourceDir, "plugins", "sat.js"), "sat-scheduler": path.join(sourceDir, "plugins", "sat-scheduler.js"), scheduler: path.join(sourceDir, "plugins", "scheduler.js"), vchan: path.join(sourceDir, "plugins", "vchan.js"), vdes: path.join(sourceDir, "plugins", "vdes.js"), wefax: path.join(sourceDir, "plugins", "wefax.js"), }, outdir: outputDir, bundle: false, target: "es2022", sourcemap: false, legalComments: "inline", charset: "utf8", logLevel: "info", }); await build({ entryPoints: { ft2: path.join(sourceDir, "plugins", "ft2.ts"), ft4: path.join(sourceDir, "plugins", "ft4.ts"), wspr: path.join(sourceDir, "plugins", "wspr.ts"), cw: path.join(sourceDir, "plugins", "cw.ts"), ft8: path.join(sourceDir, "plugins", "ft8.ts"), "leaflet-ais-tracksymbol": path.join(sourceDir, "leaflet-ais-tracksymbol.ts"), }, outdir: outputDir, bundle: true, format: "iife", platform: "browser", target: "es2022", sourcemap: false, legalComments: "inline", charset: "utf8", logLevel: "info", }); await build({ entryPoints: [path.join(sourceDir, "decode-history-worker.ts")], outfile: path.join(outputDir, "decode-history-worker.js"), bundle: true, format: "iife", platform: "browser", target: "es2022", sourcemap: false, legalComments: "inline", charset: "utf8", logLevel: "info", });