import { defineConfig } from "vite"; import { fastPublicAssets } from "./tools/fast-public-assets.ts"; const isolationHeaders = { "Cross-Origin-Opener-Policy": "same-origin", "Cross-Origin-Embedder-Policy": "require-corp", }; export default defineConfig({ server: { headers: isolationHeaders }, preview: { headers: isolationHeaders }, plugins: [...(process.env.FREECAD_WEB_FAST_LINK === "ON" ? [fastPublicAssets()] : []), { name: "freecad-web-csp", transformIndexHtml(html) { const policy = "default-src 'self'; script-src 'self' 'unsafe-inline' 'wasm-unsafe-eval' blob:; worker-src 'self' blob:; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; connect-src 'self'; object-src 'none'; base-uri 'self'"; return { html, tags: [ { tag: "meta", attrs: { "http-equiv": "Content-Security-Policy", content: policy }, injectTo: "head" }, { tag: "script", attrs: { type: "module", src: "/module-preload.js" }, injectTo: "head-prepend" }, ], }; }, }], build: { rollupOptions: { input: { main: "index.html", core: "core.html", document: "document.html", "main-chain": "main-chain.html", project: "project.html", full: "full.html", workbench: "workbench.html", python: "python.html", assembly: "assembly.html", bim: "bim.html", cam: "cam.html", cloud: "cloud.html", draft: "draft.html", fem: "fem.html", help: "help.html", import: "import.html", inspection: "inspection.html", jtreader: "jtreader.html", material: "material.html", measure: "measure.html", mesh: "mesh.html", meshpart: "meshpart.html", openscad: "openscad.html", part: "part.html", "part-io": "part-io.html", "part-inspect": "part-inspect.html", "part-python": "part-python.html", "part-save": "part-save.html", "partdesign-save": "partdesign-save.html", partdesign: "partdesign.html", "partdesign-inspect": "partdesign-inspect.html", "partdesign-python": "partdesign-python.html", "points-save": "points-save.html", points: "points.html", sandbox: "sandbox.html", "sandbox-inspect": "sandbox-inspect.html", "sandbox-python": "sandbox-python.html", "sandbox-save": "sandbox-save.html", sketcher: "sketcher.html", "sketcher-persistence": "sketcher-persistence.html", "plot-python": "plot-python.html", "reverseengineering-inspect": "reverseengineering-inspect.html", "reverseengineering-python": "reverseengineering-python.html", "reverseengineering-save": "reverseengineering-save.html", "reverseengineering-create": "reverseengineering-create.html", "robot-create": "robot-create.html", "robot-save": "robot-save.html", "robot-inspect": "robot-inspect.html", "robot-python": "robot-python.html", spreadsheet: "spreadsheet.html", "spreadsheet-inspect": "spreadsheet-inspect.html", "spreadsheet-python": "spreadsheet-python.html", "spreadsheet-save": "spreadsheet-save.html", "surface-save": "surface-save.html", start: "start.html", "start-inspect": "start-inspect.html", "start-python": "start-python.html", templatepymod: "templatepymod.html", "templatepymod-python": "templatepymod-python.html", web: "web.html", test: "test.html", "web-action-03": "web-persistence.html", tux: "tux.html", techdraw: "techdraw.html", "techdraw-native": "techdraw-native.html", "techdraw-inspect": "techdraw-inspect.html", "techdraw-python": "techdraw-python.html", "techdraw-save": "techdraw-save.html", surface: "surface.html", "surface-inspect": "surface-inspect.html", "surface-python": "surface-python.html", "show-inspect": "show-inspect.html", "show-python": "show-python.html", "sketcher-inspect": "sketcher-inspect.html", "sketcher-python": "sketcher-python.html", "points-inspect": "points-inspect.html", "points-python": "points-python.html", }, }, }, });