12345678910111213141516171819202122232425262728293031323334353637 |
- 'use strict';
- const moduleList = require('@electron/internal/common/api/module-list');
- exports.handleESModule = (loader) => () => {
- const value = loader();
- if (value.__esModule && value.default) return value.default;
- return value;
- };
- 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.handleESModule(module.loader)
- };
- }
- return Object.defineProperties(targetExports, descriptors);
- };
|