MCPcopy Index your code
hub / github.com/vercel/hyper / optimizeResolutions

Method optimizeResolutions

bin/yarn-standalone.js:77284–77324  ·  view source on GitHub ↗
(name)

Source from the content-addressed store, hash-verified

77282
77283 // for a given package, see if a single manifest can satisfy all ranges
77284 optimizeResolutions(name) {
77285 const patterns = this.dedupePatterns(this.patternsByPackage[name] || []);
77286
77287 // don't optimize things that already have a lockfile entry:
77288 // https://github.com/yarnpkg/yarn/issues/79
77289 const collapsablePatterns = patterns.filter(pattern => {
77290 const remote = this.patterns[pattern]._remote;
77291 return !this.lockfile.getLocked(pattern) && (!remote || remote.type !== 'workspace');
77292 });
77293 if (collapsablePatterns.length < 2) {
77294 return;
77295 }
77296
77297 // reverse sort, so we'll find the maximum satisfying version first
77298 const availableVersions = this.getAllInfoForPatterns(collapsablePatterns).map(manifest => manifest.version);
77299 availableVersions.sort(semver.rcompare);
77300
77301 const ranges = collapsablePatterns.map(pattern => (0, (_normalizePattern2 || _load_normalizePattern()).normalizePattern)(pattern).range);
77302
77303 // find the most recent version that satisfies all patterns (if one exists), and
77304 // collapse to that version.
77305 for (var _iterator17 = availableVersions, _isArray17 = Array.isArray(_iterator17), _i17 = 0, _iterator17 = _isArray17 ? _iterator17 : _iterator17[Symbol.iterator]();;) {
77306 var _ref18;
77307
77308 if (_isArray17) {
77309 if (_i17 >= _iterator17.length) break;
77310 _ref18 = _iterator17[_i17++];
77311 } else {
77312 _i17 = _iterator17.next();
77313 if (_i17.done) break;
77314 _ref18 = _i17.value;
77315 }
77316
77317 const version = _ref18;
77318
77319 if (ranges.every(range => semver.satisfies(version, range))) {
77320 this.collapsePackageVersions(name, version, collapsablePatterns);
77321 return;
77322 }
77323 }
77324 }
77325
77326 /**
77327 * Called by the package requester for packages that this resolver already had

Callers 1

initMethod · 0.80

Calls 7

dedupePatternsMethod · 0.95
getAllInfoForPatternsMethod · 0.95
_load_normalizePatternFunction · 0.85
filterMethod · 0.80
getLockedMethod · 0.45
nextMethod · 0.45

Tested by

no test coverage detected