MCPcopy
hub / github.com/webpack/webpack / getFinalBinding

Function getFinalBinding

lib/optimize/ConcatenatedModule.js:333–716  ·  view source on GitHub ↗
(
	moduleGraph,
	info,
	exportName,
	moduleToInfoMap,
	runtime,
	requestShortener,
	runtimeTemplate,
	neededNamespaceObjects,
	asCall,
	depDeferred,
	strictHarmonyModule,
	asiSafe,
	alreadyVisited
)

Source from the content-addressed store, hash-verified

331 * @returns {Binding} the final variable
332 */
333const getFinalBinding = (
334 moduleGraph,
335 info,
336 exportName,
337 moduleToInfoMap,
338 runtime,
339 requestShortener,
340 runtimeTemplate,
341 neededNamespaceObjects,
342 asCall,
343 depDeferred,
344 strictHarmonyModule,
345 asiSafe,
346 alreadyVisited
347) => {
348 const exportsType = getExportsType(moduleGraph, info, strictHarmonyModule);
349 const moduleDeferred =
350 info.type === "external" &&
351 info.deferred &&
352 !(/** @type {BuildMeta} */ (info.module.buildMeta).async);
353 const deferred = depDeferred && moduleDeferred;
354 if (exportName.length === 0) {
355 switch (exportsType) {
356 case "default-only":
357 if (deferred) info.deferredNamespaceObjectUsed = true;
358 else info.interopNamespaceObject2Used = true;
359 return {
360 info,
361 rawName: /** @type {string} */ (
362 deferred
363 ? info.deferredNamespaceObjectName
364 : info.interopNamespaceObject2Name
365 ),
366 ids: exportName,
367 exportName
368 };
369 case "default-with-named":
370 if (deferred) info.deferredNamespaceObjectUsed = true;
371 else info.interopNamespaceObjectUsed = true;
372 return {
373 info,
374 rawName: /** @type {string} */ (
375 deferred
376 ? info.deferredNamespaceObjectName
377 : info.interopNamespaceObjectName
378 ),
379 ids: exportName,
380 exportName
381 };
382 case "namespace":
383 case "dynamic":
384 break;
385 default:
386 throw new Error(`Unexpected exportsType ${exportsType}`);
387 }
388 } else {
389 switch (exportsType) {
390 case "namespace":

Callers 2

getFinalNameFunction · 0.85
codeGenerationMethod · 0.85

Calls 14

getExportsTypeFunction · 0.85
propertyAccessFunction · 0.85
sliceMethod · 0.80
getExportsInfoMethod · 0.80
toNormalCommentMethod · 0.80
findTargetMethod · 0.80
getTargetMethod · 0.80
addMethod · 0.45
getExportInfoMethod · 0.45
hasMethod · 0.45
getMethod · 0.45
getUsedNameMethod · 0.45

Tested by

no test coverage detected