import { mkdir, readFile } from "node:fs/promises"; import path from "node:path"; import { fileURLToPath } from "node:url"; import composition from "./compose.cjs"; import output from "./write-output.cjs"; const rootDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); const distDir = path.join(rootDir, "dist"); const contentScript = composition.composeScript("content"); const backgroundScript = composition.composeScript("background"); const checkOnly = process.argv.includes("--check"); const baseManifest = { manifest_version: 3, name: "Opportunities Extension", description: "Adiciona um atalho de Opportunities Extension nas paginas Oracle Fusion permitidas.", version: "1.0.2", permissions: [ "cookies", "storage" ], host_permissions: [ "https://eeho.fa.us2.oraclecloud.com/*", "https://spa.oracle.com/*", "https://comcipapic-oalprod.integration.ocp.oraclecloud.com/*" ], content_scripts: [ { matches: [ "https://eeho.fa.us2.oraclecloud.com/hcmUI/faces/FuseWelcome*", "https://eeho.fa.us2.oraclecloud.com/fscmUI/faces/FuseWelcome*" ], js: ["content.js"], all_frames: true, run_at: "document_idle" } ] }; const targets = [ { name: "chromium", manifest: { ...baseManifest, background: { service_worker: "background.js" } } }, { name: "firefox", manifest: { ...baseManifest, background: { scripts: ["background.js"] }, browser_specific_settings: { gecko: { id: "opportunities-extension@local.dev" } } } } ]; for (const target of targets) { const manifestJson = `${JSON.stringify(target.manifest, null, 2)}\n`; JSON.parse(manifestJson); if (checkOnly) { const expected = { "manifest.json": manifestJson, "content.js": contentScript, "background.js": backgroundScript }; for (const [file, contents] of Object.entries(expected)) { const actual = await readFile(path.join(distDir, target.name, file), "utf8"); if (actual !== contents) throw new Error(`Stale output: dist/${target.name}/${file}. Run npm run build.`); } continue; } const outputDir = path.join(distDir, target.name); await mkdir(outputDir, { recursive: true }); await output.writeOutput(path.join(outputDir, "content.js"), contentScript); await output.writeOutput(path.join(outputDir, "background.js"), backgroundScript); await output.writeOutput(path.join(outputDir, "manifest.json"), manifestJson); } if (!checkOnly) { console.log("Build gerado em dist/chromium e dist/firefox."); } else { console.log("Build check ok."); }