MCPcopy
hub / github.com/webpack/webpack / mergeExports

Function mergeExports

lib/index.js:132–157  ·  view source on GitHub ↗
(obj, exports)

Source from the content-addressed store, hash-verified

130 * @returns {A & B} merged
131 */
132const mergeExports = (obj, exports) => {
133 const descriptors = Object.getOwnPropertyDescriptors(exports);
134 for (const name of Object.keys(descriptors)) {
135 const descriptor = descriptors[name];
136 if (descriptor.get) {
137 const fn = descriptor.get;
138 Object.defineProperty(obj, name, {
139 configurable: false,
140 enumerable: true,
141 get: memoize(fn)
142 });
143 } else if (typeof descriptor.value === "object") {
144 Object.defineProperty(obj, name, {
145 configurable: false,
146 enumerable: true,
147 writable: false,
148 value: mergeExports({}, descriptor.value)
149 });
150 } else {
151 throw new Error(
152 "Exposed values must be either a getter or an nested object"
153 );
154 }
155 }
156 return /** @type {A & B} */ (Object.freeze(obj));
157};
158
159const fn = lazyFunction(() => require("./webpack"));
160

Callers 3

index.jsFile · 0.85
mergeExportsMethod · 0.85
processExportsSpecMethod · 0.85

Calls 3

memoizeFunction · 0.85
freezeMethod · 0.80
keysMethod · 0.65

Tested by

no test coverage detected