2023-07-18 21:59:54 +03:00
|
|
|
import * as path from 'node:path';
|
2022-08-05 17:24:14 +03:00
|
|
|
|
2023-07-26 22:42:23 +03:00
|
|
|
import { FuseV1Options, FuseVersion } from '@electron/fuses';
|
|
|
|
import { FusesPlugin } from '@electron-forge/plugin-fuses';
|
2023-07-18 21:59:54 +03:00
|
|
|
import type { ForgeConfig } from '@electron-forge/shared-types';
|
|
|
|
|
|
|
|
import packageJson from './package.json';
|
|
|
|
import { maybeFetchContributors } from './tools/contributors';
|
|
|
|
import { populateReleases } from './tools/fetch-releases';
|
|
|
|
import { mainConfig } from './tools/webpack/webpack.main.config';
|
|
|
|
import { rendererConfig } from './tools/webpack/webpack.renderer.config';
|
2018-06-07 14:49:57 +03:00
|
|
|
|
2020-08-06 00:14:33 +03:00
|
|
|
const { version } = packageJson;
|
|
|
|
const iconDir = path.resolve(__dirname, 'assets', 'icons');
|
2022-07-12 01:38:10 +03:00
|
|
|
const root = process.cwd();
|
2018-12-12 10:53:04 +03:00
|
|
|
|
2021-09-04 00:04:12 +03:00
|
|
|
const commonLinuxConfig = {
|
2023-07-17 23:33:20 +03:00
|
|
|
categories: ['Development', 'Utility'],
|
2021-09-04 00:04:12 +03:00
|
|
|
icon: {
|
2023-07-17 23:33:20 +03:00
|
|
|
'1024x1024': path.resolve(iconDir, 'fiddle.png'),
|
2021-09-04 00:04:12 +03:00
|
|
|
scalable: path.resolve(iconDir, 'fiddle.svg'),
|
|
|
|
},
|
|
|
|
mimeType: ['x-scheme-handler/electron-fiddle'],
|
|
|
|
};
|
|
|
|
|
2023-12-02 02:51:55 +03:00
|
|
|
const requirements = path.resolve(__dirname, 'tools/certs/requirements.txt');
|
|
|
|
|
2023-07-18 21:59:54 +03:00
|
|
|
const config: ForgeConfig = {
|
2018-06-07 15:07:40 +03:00
|
|
|
hooks: {
|
2022-07-12 01:38:10 +03:00
|
|
|
generateAssets: async () => {
|
2023-04-18 03:24:03 +03:00
|
|
|
await Promise.all([populateReleases(), maybeFetchContributors(true)]);
|
2022-07-12 01:38:10 +03:00
|
|
|
},
|
2018-06-07 15:07:40 +03:00
|
|
|
},
|
2022-07-12 01:38:10 +03:00
|
|
|
plugins: [
|
2023-01-14 07:46:28 +03:00
|
|
|
{
|
|
|
|
name: '@electron-forge/plugin-webpack',
|
|
|
|
config: {
|
2022-07-12 01:38:10 +03:00
|
|
|
devContentSecurityPolicy:
|
|
|
|
"default-src 'none'; img-src 'self' https: data:; media-src 'none'; child-src 'self'; object-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; connect-src 'self' https:; font-src 'self' https:;",
|
|
|
|
devServer: {
|
|
|
|
// Disallow browser from opening/reloading with HMR in development mode.
|
|
|
|
open: false,
|
|
|
|
liveReload: false,
|
|
|
|
hot: 'only',
|
|
|
|
},
|
2023-07-18 21:59:54 +03:00
|
|
|
mainConfig: mainConfig,
|
2022-07-12 01:38:10 +03:00
|
|
|
renderer: {
|
2023-07-18 21:59:54 +03:00
|
|
|
config: rendererConfig,
|
2022-07-12 01:38:10 +03:00
|
|
|
entryPoints: [
|
|
|
|
{
|
|
|
|
html: path.join(root, './static/index.html'),
|
|
|
|
js: path.join(root, './src/renderer/main.tsx'),
|
|
|
|
name: 'main_window',
|
|
|
|
preload: {
|
|
|
|
js: path.join(root, 'src/preload/preload.ts'),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
},
|
2023-01-14 07:46:28 +03:00
|
|
|
},
|
2023-07-26 22:42:23 +03:00
|
|
|
new FusesPlugin({
|
|
|
|
version: FuseVersion.V1,
|
|
|
|
[FuseV1Options.RunAsNode]: false,
|
|
|
|
[FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false,
|
|
|
|
[FuseV1Options.EnableNodeCliInspectArguments]: false,
|
|
|
|
[FuseV1Options.OnlyLoadAppFromAsar]: true,
|
|
|
|
}),
|
2022-07-12 01:38:10 +03:00
|
|
|
],
|
2018-06-07 19:01:01 +03:00
|
|
|
packagerConfig: {
|
|
|
|
name: 'Electron Fiddle',
|
2018-06-14 16:53:16 +03:00
|
|
|
executableName: 'electron-fiddle',
|
|
|
|
asar: true,
|
2018-08-09 22:46:40 +03:00
|
|
|
icon: path.resolve(__dirname, 'assets', 'icons', 'fiddle'),
|
2018-06-14 16:53:16 +03:00
|
|
|
appBundleId: 'com.electron.fiddle',
|
2020-07-01 22:49:39 +03:00
|
|
|
usageDescription: {
|
2020-08-06 00:14:33 +03:00
|
|
|
Camera:
|
|
|
|
'Access is needed by certain built-in fiddles in addition to any custom fiddles that use the Camera',
|
|
|
|
Microphone:
|
|
|
|
'Access is needed by certain built-in fiddles in addition to any custom fiddles that use the Microphone',
|
2022-03-21 21:08:31 +03:00
|
|
|
Calendars:
|
|
|
|
'Access is needed by certain built-in fiddles in addition to any custom fiddles that may access Calendars',
|
|
|
|
Contacts:
|
|
|
|
'Access is needed by certain built-in fiddles in addition to any custom fiddles that may access Contacts',
|
|
|
|
Reminders:
|
|
|
|
'Access is needed by certain built-in fiddles in addition to any custom fiddles that may access Reminders',
|
2020-07-01 22:49:39 +03:00
|
|
|
},
|
2018-06-14 16:53:16 +03:00
|
|
|
appCategoryType: 'public.app-category.developer-tools',
|
2020-08-06 00:14:33 +03:00
|
|
|
protocols: [
|
|
|
|
{
|
|
|
|
name: 'Electron Fiddle Launch Protocol',
|
|
|
|
schemes: ['electron-fiddle'],
|
|
|
|
},
|
|
|
|
],
|
2018-06-14 16:53:16 +03:00
|
|
|
win32metadata: {
|
2018-08-10 02:27:07 +03:00
|
|
|
CompanyName: 'Electron Community',
|
2018-06-14 16:53:16 +03:00
|
|
|
OriginalFilename: 'Electron Fiddle',
|
|
|
|
},
|
2018-07-06 22:45:42 +03:00
|
|
|
osxSign: {
|
2024-01-17 03:57:12 +03:00
|
|
|
identity:
|
|
|
|
'Developer ID Application: OpenJS Foundation, Inc. (UY52UFTVTM)',
|
2023-01-14 07:46:28 +03:00
|
|
|
optionsForFile: (filePath) =>
|
|
|
|
['(Plugin).app', '(GPU).app', '(Renderer).app'].some((helper) =>
|
|
|
|
filePath.includes(helper),
|
|
|
|
)
|
2023-12-02 02:51:55 +03:00
|
|
|
? { requirements }
|
2023-01-14 07:46:28 +03:00
|
|
|
: {
|
|
|
|
entitlements: 'static/entitlements.plist',
|
2023-12-02 02:51:55 +03:00
|
|
|
requirements,
|
2023-01-14 07:46:28 +03:00
|
|
|
},
|
2020-08-06 00:14:33 +03:00
|
|
|
},
|
2018-06-07 19:01:01 +03:00
|
|
|
},
|
2018-06-06 19:41:04 +03:00
|
|
|
makers: [
|
|
|
|
{
|
2018-06-14 16:53:16 +03:00
|
|
|
name: '@electron-forge/maker-squirrel',
|
|
|
|
platforms: ['win32'],
|
2023-07-18 21:59:54 +03:00
|
|
|
config: (arch: string) => ({
|
2022-03-15 19:52:28 +03:00
|
|
|
name: 'electron-fiddle',
|
|
|
|
authors: 'Electron Community',
|
|
|
|
exe: 'electron-fiddle.exe',
|
|
|
|
iconUrl:
|
|
|
|
'https://raw.githubusercontent.com/electron/fiddle/0119f0ce697f5ff7dec4fe51f17620c78cfd488b/assets/icons/fiddle.ico',
|
|
|
|
loadingGif: './assets/loading.gif',
|
|
|
|
noMsi: true,
|
|
|
|
setupExe: `electron-fiddle-${version}-win32-${arch}-setup.exe`,
|
|
|
|
setupIcon: path.resolve(iconDir, 'fiddle.ico'),
|
2023-11-06 20:30:34 +03:00
|
|
|
signWithParams: `/sha1 ${process.env.CERT_FINGERPRINT} /tr http://timestamp.digicert.com /td SHA256 /fd SHA256`,
|
2022-03-15 19:52:28 +03:00
|
|
|
}),
|
2018-06-06 19:41:04 +03:00
|
|
|
},
|
|
|
|
{
|
2018-06-14 16:53:16 +03:00
|
|
|
name: '@electron-forge/maker-zip',
|
2020-08-06 00:14:33 +03:00
|
|
|
platforms: ['darwin'],
|
2023-07-18 21:59:54 +03:00
|
|
|
config: {},
|
2018-06-06 19:41:04 +03:00
|
|
|
},
|
|
|
|
{
|
2018-06-14 16:53:16 +03:00
|
|
|
name: '@electron-forge/maker-deb',
|
2018-12-12 10:53:04 +03:00
|
|
|
platforms: ['linux'],
|
2021-09-04 00:04:12 +03:00
|
|
|
config: commonLinuxConfig,
|
2018-06-06 19:41:04 +03:00
|
|
|
},
|
|
|
|
{
|
2018-06-14 16:53:16 +03:00
|
|
|
name: '@electron-forge/maker-rpm',
|
2020-08-06 00:14:33 +03:00
|
|
|
platforms: ['linux'],
|
2021-09-04 00:04:12 +03:00
|
|
|
config: commonLinuxConfig,
|
2020-08-06 00:14:33 +03:00
|
|
|
},
|
2023-07-03 12:06:05 +03:00
|
|
|
{
|
|
|
|
name: '@reforged/maker-appimage',
|
|
|
|
platforms: ['linux'],
|
2023-07-17 23:33:20 +03:00
|
|
|
config: {
|
|
|
|
options: {
|
|
|
|
categories: commonLinuxConfig.categories,
|
|
|
|
},
|
|
|
|
},
|
2023-07-03 12:06:05 +03:00
|
|
|
},
|
2018-06-07 14:49:57 +03:00
|
|
|
],
|
2018-06-07 14:13:28 +03:00
|
|
|
publishers: [
|
|
|
|
{
|
|
|
|
name: '@electron-forge/publisher-github',
|
|
|
|
config: {
|
|
|
|
repository: {
|
|
|
|
owner: 'electron',
|
2020-08-06 00:14:33 +03:00
|
|
|
name: 'fiddle',
|
2018-06-07 14:13:28 +03:00
|
|
|
},
|
2018-12-24 09:25:30 +03:00
|
|
|
draft: true,
|
2020-08-06 00:14:33 +03:00
|
|
|
prerelease: false,
|
2024-03-21 04:34:14 +03:00
|
|
|
generateReleaseNotes: true,
|
2020-08-06 00:14:33 +03:00
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
};
|
2019-12-04 21:44:13 +03:00
|
|
|
|
|
|
|
function notarizeMaybe() {
|
|
|
|
if (process.platform !== 'darwin') {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2023-11-28 20:30:52 +03:00
|
|
|
if (!process.env.CI && !process.env.FORCE_NOTARIZATION) {
|
2023-01-14 07:46:28 +03:00
|
|
|
// Not in CI, skipping notarization
|
2023-11-28 20:30:52 +03:00
|
|
|
console.log('Not in CI, skipping notarization');
|
2019-12-04 21:44:13 +03:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!process.env.APPLE_ID || !process.env.APPLE_ID_PASSWORD) {
|
2020-08-06 00:14:33 +03:00
|
|
|
console.warn(
|
|
|
|
'Should be notarizing, but environment variables APPLE_ID or APPLE_ID_PASSWORD are missing!',
|
|
|
|
);
|
2019-12-04 21:44:13 +03:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2023-07-28 22:07:06 +03:00
|
|
|
config.packagerConfig!.osxNotarize = {
|
2019-12-04 21:44:13 +03:00
|
|
|
appleId: process.env.APPLE_ID,
|
|
|
|
appleIdPassword: process.env.APPLE_ID_PASSWORD,
|
2024-01-17 03:57:12 +03:00
|
|
|
teamId: 'UY52UFTVTM',
|
2020-08-06 00:14:33 +03:00
|
|
|
};
|
2019-12-04 21:44:13 +03:00
|
|
|
}
|
|
|
|
|
2020-08-06 00:14:33 +03:00
|
|
|
notarizeMaybe();
|
2019-12-04 21:44:13 +03:00
|
|
|
|
|
|
|
// Finally, export it
|
2023-07-18 21:59:54 +03:00
|
|
|
export default config;
|