import type { ForgeConfig } from '@electron-forge/shared-types'; import { MakerSquirrel } from '@electron-forge/maker-squirrel'; import { MakerZIP } from '@electron-forge/maker-zip'; import { MakerDeb } from '@electron-forge/maker-deb'; import { MakerRpm } from '@electron-forge/maker-rpm'; import { MakerDMG } from '@electron-forge/maker-dmg'; import { AutoUnpackNativesPlugin } from '@electron-forge/plugin-auto-unpack-natives'; import { WebpackPlugin } from '@electron-forge/plugin-webpack'; import { FusesPlugin } from '@electron-forge/plugin-fuses'; import { FuseV1Options, FuseVersion } from '@electron/fuses'; import { PublisherGithub } from '@electron-forge/publisher-github'; import { mainConfig } from './webpack.main.config'; import { rendererConfig } from './webpack.renderer.config'; import path from 'path'; const config: ForgeConfig = { packagerConfig: { osxSign: { identity: 'Ultilize.com', }, icon: path.join(process.cwd(), "public", "ultima-logo"), extraResource: [ path.join(process.cwd(), "public", "ultima-logo.icns"), path.join(process.cwd(), "public", "ultima-logo.ico"), path.join(process.cwd(), "public", "ultima-logo.png"), ], asar: true, }, rebuildConfig: {}, makers: [ // Windows maker new MakerSquirrel({ setupIcon: path.join(process.cwd(), "public", "ultima-logo.ico"), }), // macOS ZIP maker new MakerZIP({}, ['darwin']), new MakerDMG({ icon: path.join(process.cwd(), "public", "ultima-logo.icns"), }), // Linux makers new MakerDeb({ options: { icon: path.join(process.cwd(), "public", "ultima-logo.png"), }, }), new MakerRpm({ options: { icon: path.join(process.cwd(), "public", "ultima-logo.png"), }, }), ], plugins: [ new AutoUnpackNativesPlugin({}), new WebpackPlugin({ mainConfig, devContentSecurityPolicy: `default-src * self blob: data: gap:; style-src * self 'unsafe-inline' blob: data: gap:; script-src * 'self' 'unsafe-eval' 'unsafe-inline' blob: data: gap:; object-src * 'self' blob: data: gap:; img-src * self 'unsafe-inline' blob: data: gap:; connect-src self * 'unsafe-inline' blob: data: gap:; frame-src * self blob: data: gap:;`, renderer: { config: rendererConfig, entryPoints: [ { html: './public/index.html', js: './src/renderer.tsx', name: 'main_window', preload: { js: './src/preload.ts', }, nodeIntegration: false, }, ], }, }), new FusesPlugin({ version: FuseVersion.V1, [FuseV1Options.RunAsNode]: false, [FuseV1Options.EnableCookieEncryption]: true, [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false, [FuseV1Options.EnableNodeCliInspectArguments]: false, [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true, [FuseV1Options.OnlyLoadAppFromAsar]: true, }), ], publishers: [ new PublisherGithub({ repository: { owner: 'ultilize', name: 'ultima-desktop-releases', }, authToken: process.env.GITHUB_TOKEN, prerelease: false, draft: true, }), ] }; export default config;