40 lines
1.4 KiB
TypeScript
40 lines
1.4 KiB
TypeScript
import {app} from "electron"
|
|
import {createCapacitorElectronApp} from "@capawesome/capacitor-electron"
|
|
|
|
const devServerUrl = process.env.FLOTILLA_DESKTOP_DEV_URL
|
|
|
|
// Capawesome 0.1.1 has no public option to force local assets over an inherited dev URL.
|
|
if (app.isPackaged || process.argv.includes("--desktop-local") || !devServerUrl) {
|
|
delete process.env.CAPACITOR_ELECTRON_DEV_SERVER_URL
|
|
} else {
|
|
const url = new URL(devServerUrl)
|
|
if (
|
|
url.protocol !== "http:" ||
|
|
url.hostname !== "127.0.0.1" ||
|
|
devServerUrl !== `${url.origin}/` ||
|
|
process.env.CAPACITOR_ELECTRON_DEV_SERVER_URL !== devServerUrl
|
|
) {
|
|
throw new Error("Desktop development requires the matching loopback URL from cap run.")
|
|
}
|
|
}
|
|
|
|
createCapacitorElectronApp({
|
|
window: {width: 1200, height: 800},
|
|
csp: {
|
|
// SvelteKit's meta CSP owns scripts; the platform default would block its hashed bootstrap.
|
|
policy: "base-uri 'self'; object-src 'none'",
|
|
// Capawesome 0.1.1's dev policy, plus Flotilla's analytics origin and blob workers.
|
|
devPolicy: [
|
|
"default-src 'self'",
|
|
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://plausible.coracle.social",
|
|
"style-src 'self' 'unsafe-inline'",
|
|
"img-src 'self' data: blob:",
|
|
"font-src 'self' data:",
|
|
"media-src 'self' blob:",
|
|
"connect-src 'self' https: wss: ws: http:",
|
|
"worker-src 'self' blob:",
|
|
"object-src 'none'",
|
|
"base-uri 'self'",
|
|
].join("; "),
|
|
},
|
|
})
|