feat: expose electron/{process} typed modules (#22937)

* feat: expose electron/{process} typed modules

* chore: update imports for common modules

* chore: update typescript generator

* chore: remap electron/* to the internal packages
This commit is contained in:
Samuel Attard 2020-04-06 17:04:09 -07:00 committed by GitHub
parent 5b53f1a39c
commit 0d2e967960
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
56 changed files with 97 additions and 83 deletions

View file

@ -22,19 +22,29 @@ Module._nodeModulePaths = function (from: string) {
};
// Make a fake Electron module that we will insert into the module cache
const electronModule = new Module('electron', null);
electronModule.id = 'electron';
electronModule.loaded = true;
electronModule.filename = 'electron';
Object.defineProperty(electronModule, 'exports', {
get: () => require('electron')
});
const makeElectronModule = (name: string) => {
const electronModule = new Module('electron', null);
electronModule.id = 'electron';
electronModule.loaded = true;
electronModule.filename = name;
Object.defineProperty(electronModule, 'exports', {
get: () => require('electron')
});
Module._cache[name] = electronModule;
};
Module._cache.electron = electronModule;
makeElectronModule('electron');
makeElectronModule('electron/common');
if (process.type === 'browser') {
makeElectronModule('electron/main');
}
if (process.type === 'renderer') {
makeElectronModule('electron/renderer');
}
const originalResolveFilename = Module._resolveFilename;
Module._resolveFilename = function (request: string, parent: NodeModule, isMain: boolean) {
if (request === 'electron') {
if (request === 'electron' || request.startsWith('electron/')) {
return 'electron';
} else {
return originalResolveFilename(request, parent, isMain);