Refactor electron exports to keep module list in separate files

This commit is contained in:
Thiago de Arruda 2017-03-06 11:58:10 -03:00
parent 14b548f27a
commit 44bd93589a
8 changed files with 79 additions and 236 deletions

View file

@ -1,38 +1,12 @@
const common = require('../../../common/api/exports/electron')
const moduleList = require('../module-list')
// Import common modules.
common.defineProperties(exports)
Object.defineProperties(exports, {
// Renderer side modules, please sort with alphabet order.
desktopCapturer: {
enumerable: true,
get: function () {
return require('../desktop-capturer')
}
},
ipcRenderer: {
enumerable: true,
get: function () {
return require('../ipc-renderer')
}
},
remote: {
enumerable: true,
get: function () {
return require('../remote')
}
},
screen: {
enumerable: true,
get: function () {
return require('../screen')
}
},
webFrame: {
enumerable: true,
get: function () {
return require('../web-frame')
}
}
})
for (const module of moduleList) {
Object.defineProperty(exports, module.name, {
enumerable: !module.private,
get: () => require(`../${module.file}`)
})
}

View file

@ -0,0 +1,8 @@
// Renderer side modules, please sort alphabetically.
module.exports = [
{name: 'desktopCapturer', file: 'desktop-capturer'},
{name: 'ipcRenderer', file: 'ipc-renderer'},
{name: 'remote', file: 'remote'},
{name: 'screen', file: 'screen'},
{name: 'webFrame', file: 'web-frame'}
]

View file

@ -340,32 +340,12 @@ const addBuiltinProperty = (name) => {
})
}
// Add each browser module name as a property
// This list should match the exports in browser/api/exports/electron.js
const browserModules = [
'app',
'autoUpdater',
'BrowserWindow',
'contentTracing',
'dialog',
'globalShortcut',
'ipcMain',
'Menu',
'MenuItem',
'net',
'powerMonitor',
'powerSaveBlocker',
'protocol',
'screen',
'session',
'systemPreferences',
'TouchBar',
'Tray',
'webContents'
]
browserModules.forEach(addBuiltinProperty)
const browserModules =
require('../../common/api/module-list').concat(
require('../../browser/api/module-list'))
// Add each common module name as a property
const commonModules = {}
require('../../common/api/exports/electron').defineProperties(commonModules)
Object.getOwnPropertyNames(commonModules).forEach(addBuiltinProperty)
// And add a helper receiver for each one.
browserModules
.filter((m) => !m.private)
.map((m) => m.name)
.forEach(addBuiltinProperty)