Skip to content

Commit 0d2e967

Browse files
feat: expose electron/{process} typed modules (electron#22937)
* feat: expose electron/{process} typed modules * chore: update imports for common modules * chore: update typescript generator * chore: remap electron/* to the internal packages
1 parent 5b53f1a commit 0d2e967

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+97
-83
lines changed

docs/api/process.md

Lines changed: 5 additions & 1 deletion

lib/common/reset-search-paths.ts

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,29 @@ Module._nodeModulePaths = function (from: string) {
2222
};
2323

2424
// Make a fake Electron module that we will insert into the module cache
25-
const electronModule = new Module('electron', null);
26-
electronModule.id = 'electron';
27-
electronModule.loaded = true;
28-
electronModule.filename = 'electron';
29-
Object.defineProperty(electronModule, 'exports', {
30-
get: () => require('electron')
31-
});
25+
const makeElectronModule = (name: string) => {
26+
const electronModule = new Module('electron', null);
27+
electronModule.id = 'electron';
28+
electronModule.loaded = true;
29+
electronModule.filename = name;
30+
Object.defineProperty(electronModule, 'exports', {
31+
get: () => require('electron')
32+
});
33+
Module._cache[name] = electronModule;
34+
};
3235

33-
Module._cache.electron = electronModule;
36+
makeElectronModule('electron');
37+
makeElectronModule('electron/common');
38+
if (process.type === 'browser') {
39+
makeElectronModule('electron/main');
40+
}
41+
if (process.type === 'renderer') {
42+
makeElectronModule('electron/renderer');
43+
}
3444

3545
const originalResolveFilename = Module._resolveFilename;
3646
Module._resolveFilename = function (request: string, parent: NodeModule, isMain: boolean) {
37-
if (request === 'electron') {
47+
if (request === 'electron' || request.startsWith('electron/')) {
3848
return 'electron';
3949
} else {
4050
return originalResolveFilename(request, parent, isMain);

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"description": "Build cross platform desktop apps with JavaScript, HTML, and CSS",
66
"devDependencies": {
77
"@electron/docs-parser": "^0.7.2",
8-
"@electron/typescript-definitions": "^8.6.4",
8+
"@electron/typescript-definitions": "^8.7.2",
99
"@octokit/rest": "^16.3.2",
1010
"@primer/octicons": "^9.1.1",
1111
"@types/basic-auth": "^1.1.3",

spec-main/ambient.d.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ declare namespace Electron {
2929
class WebContentsView {
3030
constructor(webContents: WebContents)
3131
}
32+
33+
namespace Main {
34+
class TopLevelWindow extends Electron.TopLevelWindow {}
35+
class View extends Electron.View {}
36+
class WebContentsView extends Electron.WebContentsView {}
37+
}
3238
}
3339

3440
declare module 'dbus-native';

spec-main/api-app-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import * as http from 'http';
55
import * as net from 'net';
66
import * as fs from 'fs';
77
import * as path from 'path';
8-
import { app, BrowserWindow, Menu, session } from 'electron';
8+
import { app, BrowserWindow, Menu, session } from 'electron/main';
99
import { emittedOnce } from './events-helpers';
1010
import { closeWindow, closeAllWindows } from './window-helpers';
1111
import { ifdescribe } from './spec-helpers';

spec-main/api-auto-updater-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { autoUpdater } from 'electron';
1+
import { autoUpdater } from 'electron/main';
22
import { expect } from 'chai';
33
import { ifit, ifdescribe } from './spec-helpers';
44

spec-main/api-browser-view-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { expect } from 'chai';
22
import * as ChildProcess from 'child_process';
33
import * as path from 'path';
44
import { emittedOnce } from './events-helpers';
5-
import { BrowserView, BrowserWindow } from 'electron';
5+
import { BrowserView, BrowserWindow } from 'electron/main';
66
import { closeWindow } from './window-helpers';
77

88
describe('BrowserView module', () => {

spec-main/api-browser-window-affinity-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { expect } from 'chai';
22
import * as path from 'path';
33

4-
import { ipcMain, BrowserWindow, WebPreferences, app } from 'electron';
4+
import { ipcMain, BrowserWindow, WebPreferences, app } from 'electron/main';
55
import { closeWindow } from './window-helpers';
66

77
describe('BrowserWindow with affinity module', () => {

spec-main/api-browser-window-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import * as os from 'os';
55
import * as qs from 'querystring';
66
import * as http from 'http';
77
import { AddressInfo } from 'net';
8-
import { app, BrowserWindow, BrowserView, ipcMain, OnBeforeSendHeadersListenerDetails, protocol, screen, webContents, session, WebContents } from 'electron';
8+
import { app, BrowserWindow, BrowserView, ipcMain, OnBeforeSendHeadersListenerDetails, protocol, screen, webContents, session, WebContents } from 'electron/main';
99

1010
import { emittedOnce } from './events-helpers';
1111
import { ifit, ifdescribe } from './spec-helpers';

spec-main/api-content-tracing-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect } from 'chai';
2-
import { app, contentTracing, TraceConfig, TraceCategoriesAndOptions } from 'electron';
2+
import { app, contentTracing, TraceConfig, TraceCategoriesAndOptions } from 'electron/main';
33
import * as fs from 'fs';
44
import * as path from 'path';
55
import { ifdescribe } from './spec-helpers';

spec-main/api-context-bridge-spec.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { contextBridge, BrowserWindow, ipcMain } from 'electron';
1+
import { BrowserWindow, ipcMain } from 'electron/main';
2+
import { contextBridge } from 'electron/renderer';
23
import { expect } from 'chai';
34
import * as fs from 'fs-extra';
45
import * as os from 'os';
@@ -45,10 +46,10 @@ describe('contextBridge', () => {
4546
const generateTests = (useSandbox: boolean) => {
4647
describe(`with sandbox=${useSandbox}`, () => {
4748
const makeBindingWindow = async (bindingCreator: Function) => {
48-
const preloadContent = `const electron_1 = require('electron');
49+
const preloadContent = `const renderer_1 = require('electron');
4950
${useSandbox ? '' : `require('v8').setFlagsFromString('--expose_gc');
5051
const gc=require('vm').runInNewContext('gc');
51-
electron_1.contextBridge.exposeInMainWorld('GCRunner', {
52+
renderer_1.contextBridge.exposeInMainWorld('GCRunner', {
5253
run: () => gc()
5354
});`}
5455
(${bindingCreator.toString()})();`;

spec-main/api-crash-reporter-spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import * as path from 'path';
77
import { ifdescribe, ifit } from './spec-helpers';
88
import * as temp from 'temp';
99
import * as url from 'url';
10-
import { ipcMain, app, BrowserWindow, crashReporter, BrowserWindowConstructorOptions } from 'electron';
10+
import { ipcMain, app, BrowserWindow, BrowserWindowConstructorOptions } from 'electron/main';
11+
import { crashReporter } from 'electron/common';
1112
import { AddressInfo } from 'net';
1213
import { closeWindow, closeAllWindows } from './window-helpers';
1314
import { EventEmitter } from 'events';

spec-main/api-debugger-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { expect } from 'chai';
22
import * as http from 'http';
33
import * as path from 'path';
44
import { AddressInfo } from 'net';
5-
import { BrowserWindow } from 'electron';
5+
import { BrowserWindow } from 'electron/main';
66
import { closeAllWindows } from './window-helpers';
77
import { emittedOnce } from './events-helpers';
88

spec-main/api-deprecate-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect } from 'chai';
2-
import { deprecate } from 'electron';
2+
import { deprecate } from 'electron/main';
33

44
describe('deprecate', () => {
55
let throwing: boolean;

spec-main/api-desktop-capturer-spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { expect } from 'chai';
2-
import { desktopCapturer, screen, BrowserWindow, SourcesOptions } from 'electron';
2+
import { screen, BrowserWindow, SourcesOptions } from 'electron/main';
3+
import { desktopCapturer } from 'electron/renderer';
34
import { emittedOnce } from './events-helpers';
45
import { ifdescribe, ifit } from './spec-helpers';
56
import { closeAllWindows } from './window-helpers';

spec-main/api-dialog-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect } from 'chai';
2-
import { dialog, BrowserWindow } from 'electron';
2+
import { dialog, BrowserWindow } from 'electron/main';
33
import { closeAllWindows } from './window-helpers';
44
import { ifit } from './spec-helpers';
55

spec-main/api-global-shortcut-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect } from 'chai';
2-
import { globalShortcut } from 'electron';
2+
import { globalShortcut } from 'electron/main';
33
import { ifdescribe } from './spec-helpers';
44

55
ifdescribe(process.platform !== 'win32')('globalShortcut module', () => {

spec-main/api-in-app-purchase-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect } from 'chai';
2-
import { inAppPurchase } from 'electron';
2+
import { inAppPurchase } from 'electron/main';
33

44
describe('inAppPurchase module', function () {
55
if (process.platform !== 'darwin') return;

spec-main/api-ipc-main-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import * as path from 'path';
33
import * as cp from 'child_process';
44
import { closeAllWindows } from './window-helpers';
55
import { emittedOnce } from './events-helpers';
6-
import { ipcMain, BrowserWindow } from 'electron';
6+
import { ipcMain, BrowserWindow } from 'electron/main';
77

88
describe('ipc main module', () => {
99
const fixtures = path.join(__dirname, 'fixtures');

spec-main/api-ipc-renderer-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { expect } from 'chai';
22
import * as path from 'path';
3-
import { ipcMain, BrowserWindow, WebContents, WebPreferences, webContents } from 'electron';
3+
import { ipcMain, BrowserWindow, WebContents, WebPreferences, webContents } from 'electron/main';
44
import { emittedOnce } from './events-helpers';
55
import { closeWindow } from './window-helpers';
66

spec-main/api-ipc-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { EventEmitter } from 'events';
22
import { expect } from 'chai';
3-
import { BrowserWindow, ipcMain, IpcMainInvokeEvent, MessageChannelMain } from 'electron';
3+
import { BrowserWindow, ipcMain, IpcMainInvokeEvent, MessageChannelMain } from 'electron/main';
44
import { closeAllWindows } from './window-helpers';
55
import { emittedOnce } from './events-helpers';
66

spec-main/api-menu-item-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { BrowserWindow, app, Menu, MenuItem, MenuItemConstructorOptions } from 'electron';
1+
import { BrowserWindow, app, Menu, MenuItem, MenuItemConstructorOptions } from 'electron/main';
22
import { expect } from 'chai';
33
import { closeAllWindows } from './window-helpers';
44
const { roleList, execute } = require('../lib/browser/api/menu-item-roles');

spec-main/api-menu-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as cp from 'child_process';
22
import * as path from 'path';
33
import { expect } from 'chai';
4-
import { BrowserWindow, Menu, MenuItem } from 'electron';
4+
import { BrowserWindow, Menu, MenuItem } from 'electron/main';
55
import { sortMenuItems } from '../lib/browser/api/menu-utils';
66
import { emittedOnce } from './events-helpers';
77
import { ifit } from './spec-helpers';

spec-main/api-native-theme-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect } from 'chai';
2-
import { nativeTheme, systemPreferences, BrowserWindow } from 'electron';
2+
import { nativeTheme, systemPreferences, BrowserWindow } from 'electron/main';
33
import * as os from 'os';
44
import * as path from 'path';
55
import * as semver from 'semver';

spec-main/api-net-log-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as fs from 'fs';
44
import * as os from 'os';
55
import * as path from 'path';
66
import * as ChildProcess from 'child_process';
7-
import { session, net } from 'electron';
7+
import { session, net } from 'electron/main';
88
import { Socket, AddressInfo } from 'net';
99
import { ifit } from './spec-helpers';
1010
import { emittedOnce } from './events-helpers';

spec-main/api-net-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect } from 'chai';
2-
import { net, session, ClientRequest, BrowserWindow } from 'electron';
2+
import { net, session, ClientRequest, BrowserWindow } from 'electron/main';
33
import * as http from 'http';
44
import * as url from 'url';
55
import { AddressInfo, Socket } from 'net';

spec-main/api-notification-dbus-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import { expect } from 'chai';
1010
import * as dbus from 'dbus-native';
11-
import { app } from 'electron';
11+
import { app } from 'electron/main';
1212
import { ifdescribe } from './spec-helpers';
1313
import { promisify } from 'util';
1414

spec-main/api-notification-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect } from 'chai';
2-
import { Notification } from 'electron';
2+
import { Notification } from 'electron/main';
33
import { emittedOnce } from './events-helpers';
44
import { ifit } from './spec-helpers';
55

spec-main/api-power-save-blocker-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect } from 'chai';
2-
import { powerSaveBlocker } from 'electron';
2+
import { powerSaveBlocker } from 'electron/main';
33

44
describe('powerSaveBlocker module', () => {
55
it('can be started and stopped', () => {

spec-main/api-protocol-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect } from 'chai';
2-
import { protocol, webContents, WebContents, session, BrowserWindow, ipcMain } from 'electron';
2+
import { protocol, webContents, WebContents, session, BrowserWindow, ipcMain } from 'electron/main';
33
import { promisify } from 'util';
44
import { AddressInfo } from 'net';
55
import * as ChildProcess from 'child_process';

spec-main/api-remote-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { expect } from 'chai';
33
import { closeAllWindows } from './window-helpers';
44
import { ifdescribe } from './spec-helpers';
55

6-
import { ipcMain, BrowserWindow } from 'electron';
6+
import { ipcMain, BrowserWindow } from 'electron/main';
77
import { emittedOnce } from './events-helpers';
88

99
const features = process.electronBinding('features');

spec-main/api-screen-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect } from 'chai';
2-
import { screen } from 'electron';
2+
import { screen } from 'electron/main';
33

44
describe('screen module', () => {
55
describe('screen.getCursorScreenPoint()', () => {

spec-main/api-service-workers-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as fs from 'fs';
22
import * as http from 'http';
33
import * as path from 'path';
4-
import { session, BrowserWindow } from 'electron';
4+
import { session, BrowserWindow } from 'electron/main';
55
import { expect } from 'chai';
66
import { v4 } from 'uuid';
77
import { AddressInfo } from 'net';

spec-main/api-session-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as https from 'https';
44
import * as path from 'path';
55
import * as fs from 'fs';
66
import * as ChildProcess from 'child_process';
7-
import { session, BrowserWindow, net, ipcMain, Session } from 'electron';
7+
import { session, BrowserWindow, net, ipcMain, Session } from 'electron/main';
88
import * as send from 'send';
99
import * as auth from 'basic-auth';
1010
import { closeAllWindows } from './window-helpers';

spec-main/api-shell-spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { BrowserWindow, shell } from 'electron';
1+
import { BrowserWindow } from 'electron/main';
2+
import { shell } from 'electron/common';
23
import { closeAllWindows } from './window-helpers';
34
import { emittedOnce } from './events-helpers';
45
import * as http from 'http';

spec-main/api-subframe-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import * as path from 'path';
33
import * as http from 'http';
44
import { emittedNTimes, emittedOnce } from './events-helpers';
55
import { closeWindow } from './window-helpers';
6-
import { app, BrowserWindow, ipcMain } from 'electron';
6+
import { app, BrowserWindow, ipcMain } from 'electron/main';
77
import { AddressInfo } from 'net';
88
import { ifdescribe } from './spec-helpers';
99

spec-main/api-system-preferences-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect } from 'chai';
2-
import { systemPreferences } from 'electron';
2+
import { systemPreferences } from 'electron/main';
33
import { ifdescribe } from './spec-helpers';
44

55
describe('systemPreferences module', () => {

spec-main/api-touch-bar-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as path from 'path';
2-
import { BrowserWindow, TouchBar } from 'electron';
2+
import { BrowserWindow, TouchBar } from 'electron/main';
33
import { closeWindow } from './window-helpers';
44
import { expect } from 'chai';
55

spec-main/api-tray-spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { expect } from 'chai';
2-
import { Menu, Tray, nativeImage } from 'electron';
2+
import { Menu, Tray } from 'electron/main';
3+
import { nativeImage } from 'electron/common';
34
import { ifdescribe, ifit } from './spec-helpers';
45
import * as path from 'path';
56

spec-main/api-view-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { closeWindow } from './window-helpers';
2-
import { TopLevelWindow, View } from 'electron';
2+
import { TopLevelWindow, View } from 'electron/main';
33

44
describe('View', () => {
55
let w: TopLevelWindow;

spec-main/api-web-contents-spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import * as path from 'path';
44
import * as fs from 'fs';
55
import * as http from 'http';
66
import * as ChildProcess from 'child_process';
7-
import { BrowserWindow, ipcMain, webContents, session, WebContents, app, clipboard } from 'electron';
7+
import { BrowserWindow, ipcMain, webContents, session, WebContents, app } from 'electron/main';
8+
import { clipboard } from 'electron/common';
89
import { emittedOnce } from './events-helpers';
910
import { closeAllWindows } from './window-helpers';
1011
import { ifdescribe, ifit } from './spec-helpers';

spec-main/api-web-contents-view-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as path from 'path';
44
import { emittedOnce } from './events-helpers';
55
import { closeWindow } from './window-helpers';
66

7-
import { webContents, TopLevelWindow, WebContentsView } from 'electron';
7+
import { webContents, TopLevelWindow, WebContentsView } from 'electron/main';
88

99
describe('WebContentsView', () => {
1010
let w: TopLevelWindow;

spec-main/api-web-frame-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { expect } from 'chai';
22
import * as path from 'path';
3-
import { BrowserWindow, ipcMain } from 'electron';
3+
import { BrowserWindow, ipcMain } from 'electron/main';
44
import { closeAllWindows } from './window-helpers';
55

66
describe('webFrame module', () => {

0 commit comments

Comments
 (0)