MCPcopy
hub / github.com/webpack/webpack / _findTarget

Method _findTarget

lib/ExportsInfo.js:1591–1633  ·  view source on GitHub ↗

* Returns the target, undefined when there is no target, false when no target is valid. * @param {ModuleGraph} moduleGraph the module graph * @param {ValidTargetModuleFilter} validTargetModuleFilter a valid target module * @param {AlreadyVisitedExportInfo} alreadyVisited set of already visited

(moduleGraph, validTargetModuleFilter, alreadyVisited)

Source from the content-addressed store, hash-verified

1589 * @returns {TargetItemWithoutConnection | null | undefined | false} the target, undefined when there is no target, false when no target is valid
1590 */
1591 _findTarget(moduleGraph, validTargetModuleFilter, alreadyVisited) {
1592 if (!this._target || this._target.size === 0) return;
1593 const rawTarget =
1594 /** @type {Target} */
1595 (this._getMaxTarget()).values().next().value;
1596 if (!rawTarget) return;
1597 /** @type {TargetItemWithoutConnection} */
1598 let target = {
1599 module: rawTarget.connection.module,
1600 export: rawTarget.export,
1601 deferred: Boolean(
1602 rawTarget.connection.dependency &&
1603 ImportPhaseUtils.isDefer(
1604 /** @type {HarmonyImportDependency} */ (
1605 rawTarget.connection.dependency
1606 ).phase
1607 )
1608 )
1609 };
1610 for (;;) {
1611 if (validTargetModuleFilter(target.module)) return target;
1612 const exportsInfo = moduleGraph.getExportsInfo(target.module);
1613 const exportInfo = exportsInfo.getExportInfo(target.export[0]);
1614 if (alreadyVisited.has(exportInfo)) return null;
1615 const newTarget = exportInfo._findTarget(
1616 moduleGraph,
1617 validTargetModuleFilter,
1618 alreadyVisited
1619 );
1620 if (!newTarget) return false;
1621 if (target.export.length === 1) {
1622 target = newTarget;
1623 } else {
1624 target = {
1625 module: newTarget.module,
1626 export: newTarget.export
1627 ? [...newTarget.export, ...target.export.slice(1)]
1628 : target.export.slice(1),
1629 deferred: newTarget.deferred
1630 };
1631 }
1632 }
1633 }
1634
1635 /**
1636 * Returns the target.

Callers 1

findTargetMethod · 0.95

Calls 7

_getMaxTargetMethod · 0.95
getExportsInfoMethod · 0.80
sliceMethod · 0.80
nextMethod · 0.45
valuesMethod · 0.45
getExportInfoMethod · 0.45
hasMethod · 0.45

Tested by

no test coverage detected