diff --git a/app/index.ts b/app/index.ts index e6f6c7f5..01b2b16e 100644 --- a/app/index.ts +++ b/app/index.ts @@ -10,8 +10,8 @@ if (['--help', '-v', '--version'].includes(process.argv[1])) { } // Enable remote module -// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-var-requires -require('@electron/remote/main').initialize(); +import {initialize as remoteInitialize} from '@electron/remote/main'; +remoteInitialize(); // Native import {resolve} from 'path'; diff --git a/app/ui/window.ts b/app/ui/window.ts index a4de3ebb..0580c655 100644 --- a/app/ui/window.ts +++ b/app/ui/window.ts @@ -1,4 +1,4 @@ -import {app, BrowserWindow, shell, Menu, BrowserWindowConstructorOptions, Event, WebPreferences} from 'electron'; +import {app, BrowserWindow, shell, Menu, BrowserWindowConstructorOptions, Event} from 'electron'; import {isAbsolute, normalize, sep} from 'path'; import {URL, fileURLToPath} from 'url'; import {v4 as uuidv4} from 'uuid'; @@ -14,6 +14,7 @@ import contextMenuTemplate from './contextmenu'; import {execCommand} from '../commands'; import {setRendererType, unsetRendererType} from '../utils/renderer-utils'; import {decorateSessionOptions, decorateSessionClass} from '../plugins'; +import {enable as remoteEnable} from '@electron/remote/main'; export function newWindow( options_: BrowserWindowConstructorOptions, @@ -38,12 +39,15 @@ export function newWindow( webPreferences: { nodeIntegration: true, navigateOnDragDrop: true, - enableRemoteModule: true, contextIsolation: false - } as WebPreferences, + }, ...options_ }; const window = new BrowserWindow(app.plugins.getDecoratedBrowserOptions(winOpts)); + + // Enable remote module on this window + remoteEnable(window.webContents); + window.uid = classOpts.uid; app.plugins.onWindowClass(window); diff --git a/lib/command-registry.ts b/lib/command-registry.ts index 9808aad1..82f38633 100644 --- a/lib/command-registry.ts +++ b/lib/command-registry.ts @@ -1,9 +1,9 @@ -import * as remote from '@electron/remote'; +import {require as remoteRequire} from '@electron/remote'; import {HyperDispatch} from './hyper'; import {closeSearch} from './actions/sessions'; // TODO: Should be updates to new async API https://medium.com/@nornagon/electrons-remote-module-considered-harmful-70d69500f31 -const {getDecoratedKeymaps} = remote.require('./plugins') as typeof import('../app/plugins'); +const {getDecoratedKeymaps} = remoteRequire('./plugins') as typeof import('../app/plugins'); let commands: Record void> = { 'editor:search-close': (e, dispatch) => { diff --git a/lib/utils/config.ts b/lib/utils/config.ts index 18040c68..07dde205 100644 --- a/lib/utils/config.ts +++ b/lib/utils/config.ts @@ -1,8 +1,8 @@ import {ipcRenderer} from 'electron'; -import * as remote from '@electron/remote'; +import {require as remoteRequire} from '@electron/remote'; // TODO: Should be updates to new async API https://medium.com/@nornagon/electrons-remote-module-considered-harmful-70d69500f31 -const plugins = remote.require('./plugins') as typeof import('../../app/plugins'); +const plugins = remoteRequire('./plugins') as typeof import('../../app/plugins'); export function getConfig() { return plugins.getDecoratedConfig(); diff --git a/lib/utils/plugins.ts b/lib/utils/plugins.ts index 8c320c3a..c0cb60b7 100644 --- a/lib/utils/plugins.ts +++ b/lib/utils/plugins.ts @@ -1,6 +1,6 @@ // eslint-disable-next-line eslint-comments/disable-enable-pair /* eslint-disable @typescript-eslint/no-unsafe-return */ -import * as remote from '@electron/remote'; +import {require as remoteRequire} from '@electron/remote'; // TODO: Should be updates to new async API https://medium.com/@nornagon/electrons-remote-module-considered-harmful-70d69500f31 import {connect as reduxConnect, Options} from 'react-redux'; @@ -32,7 +32,7 @@ import IPCChildProcess from './ipc-child-process'; import ChildProcess from 'child_process'; // remote interface to `../plugins` -const plugins = remote.require('./plugins') as typeof import('../../app/plugins'); +const plugins = remoteRequire('./plugins') as typeof import('../../app/plugins'); // `require`d modules let modules: hyperPlugin[];