34 lines
1.2 KiB
JavaScript
34 lines
1.2 KiB
JavaScript
|
'use strict';
|
||
|
const moduleList = require('@electron/internal/common/api/module-list');
|
||
|
exports.memoizedGetter = (getter) => {
|
||
|
/*
|
||
|
* It's ok to leak this value as it would be leaked by the global
|
||
|
* node module cache anyway at `Module._cache`. This memoization
|
||
|
* is dramatically faster than relying on nodes module cache however
|
||
|
*/
|
||
|
let memoizedValue = null;
|
||
|
return () => {
|
||
|
if (memoizedValue === null) {
|
||
|
memoizedValue = getter();
|
||
|
}
|
||
|
return memoizedValue;
|
||
|
};
|
||
|
};
|
||
|
// Attaches properties to |targetExports|.
|
||
|
exports.defineProperties = function (targetExports) {
|
||
|
const descriptors = {};
|
||
|
for (const module of moduleList) {
|
||
|
descriptors[module.name] = {
|
||
|
enumerable: !module.private,
|
||
|
get: exports.memoizedGetter(() => {
|
||
|
const value = require(`@electron/internal/common/api/${module.file}.js`);
|
||
|
// Handle Typescript modules with an "export default X" statement
|
||
|
if (value.__esModule)
|
||
|
return value.default;
|
||
|
return value;
|
||
|
})
|
||
|
};
|
||
|
}
|
||
|
return Object.defineProperties(targetExports, descriptors);
|
||
|
};
|
||
|
//# sourceMappingURL=electron.js.map
|